@pine-ds/core 4.5.0 → 4.7.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 (478) hide show
  1. package/components/attributes.js +1 -1
  2. package/components/mock-pds-modal.js +1 -1
  3. package/components/pds-combobox.js +1 -1
  4. package/components/pds-container.js +1 -1
  5. package/components/pds-copytext.js +1 -1
  6. package/components/pds-datepicker.js +1 -1
  7. package/components/pds-divider.js +1 -1
  8. package/components/pds-drawer-content.js +1 -1
  9. package/components/pds-drawer-footer.js +1 -1
  10. package/components/pds-drawer-header.js +1 -1
  11. package/components/pds-drawer.js +1 -1
  12. package/components/pds-dropdown-menu-item.js +1 -1
  13. package/components/pds-dropdown-menu-separator.js +1 -1
  14. package/components/pds-dropdown-menu.js +1 -1
  15. package/components/pds-filter.js +1 -1
  16. package/components/pds-filters.js +1 -1
  17. package/components/pds-icon2.js +1 -1
  18. package/components/pds-image.js +1 -1
  19. package/components/pds-input2.js +1 -1
  20. package/components/pds-link2.js +1 -1
  21. package/components/pds-loader2.js +1 -1
  22. package/components/pds-modal-content.js +1 -1
  23. package/components/pds-modal-footer.js +1 -1
  24. package/components/pds-modal-header.js +1 -1
  25. package/components/pds-modal2.js +1 -1
  26. package/components/pds-multiselect.js +1 -1
  27. package/components/pds-popover.js +1 -1
  28. package/components/pds-progress.js +1 -1
  29. package/components/pds-property.js +1 -1
  30. package/components/pds-radio-group.js +1 -1
  31. package/components/pds-radio.js +1 -1
  32. package/components/pds-row.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 +1 -1
  36. package/components/pds-switch.js +1 -1
  37. package/components/pds-tab.js +1 -1
  38. package/components/pds-table-body.js +1 -1
  39. package/components/pds-table-cell2.js +1 -1
  40. package/components/pds-table-head-cell2.js +1 -1
  41. package/components/pds-table-head.js +1 -1
  42. package/components/pds-table-row.js +1 -1
  43. package/components/pds-tabpanel.js +1 -1
  44. package/components/pds-tabs.js +1 -1
  45. package/components/pds-text2.js +1 -1
  46. package/components/pds-textarea.js +1 -1
  47. package/components/pds-toast.js +1 -1
  48. package/components/pds-tooltip.js +1 -1
  49. package/dist/cjs/{attributes-DXvaSETR.js → attributes-BJ7KBHql.js} +18 -11
  50. package/dist/cjs/{index-D-QQKB0y.js → index-5Azb8EQG.js} +1 -1
  51. package/dist/cjs/{index-BQjWfQXw.js → index-jl_Q819j.js} +1 -1
  52. package/dist/cjs/index.cjs.js +1 -1
  53. package/dist/cjs/keep-hydrated-CiXgkEYd.js +196 -0
  54. package/dist/cjs/loader.cjs.js +3 -3
  55. package/dist/cjs/mock-pds-modal.cjs.entry.js +3 -3
  56. package/dist/cjs/pds-accordion.cjs.entry.js +3 -3
  57. package/dist/cjs/pds-alert.cjs.entry.js +2 -2
  58. package/dist/cjs/pds-avatar.cjs.entry.js +3 -3
  59. package/dist/cjs/pds-box.cjs.entry.js +3 -3
  60. package/dist/cjs/pds-button.cjs.entry.js +3 -3
  61. package/dist/cjs/pds-checkbox.cjs.entry.js +4 -4
  62. package/dist/cjs/pds-chip.cjs.entry.js +4 -4
  63. package/dist/cjs/pds-combobox.cjs.entry.js +187 -28
  64. package/dist/cjs/pds-container.cjs.entry.js +3 -3
  65. package/dist/cjs/pds-copytext.cjs.entry.js +5 -5
  66. package/dist/cjs/pds-datepicker.cjs.entry.js +5 -5
  67. package/dist/cjs/pds-divider.cjs.entry.js +3 -3
  68. package/dist/cjs/pds-drawer-content.cjs.entry.js +3 -3
  69. package/dist/cjs/pds-drawer-footer.cjs.entry.js +3 -3
  70. package/dist/cjs/pds-drawer-header.cjs.entry.js +3 -3
  71. package/dist/cjs/pds-drawer.cjs.entry.js +25 -12
  72. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +3 -3
  73. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +3 -3
  74. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +24 -12
  75. package/dist/cjs/pds-filter.cjs.entry.js +4 -4
  76. package/dist/cjs/pds-filters.cjs.entry.js +3 -3
  77. package/dist/cjs/pds-icon.cjs.entry.js +27 -4
  78. package/dist/cjs/pds-image.cjs.entry.js +4 -4
  79. package/dist/cjs/pds-input.cjs.entry.js +6 -6
  80. package/dist/cjs/pds-link.cjs.entry.js +5 -5
  81. package/dist/cjs/pds-loader.cjs.entry.js +4 -4
  82. package/dist/cjs/pds-modal-content.cjs.entry.js +4 -4
  83. package/dist/cjs/pds-modal-footer.cjs.entry.js +3 -3
  84. package/dist/cjs/pds-modal-header.cjs.entry.js +3 -3
  85. package/dist/cjs/pds-modal.cjs.entry.js +118 -33
  86. package/dist/cjs/pds-multiselect.cjs.entry.js +9 -8
  87. package/dist/cjs/pds-popover.cjs.entry.js +227 -37
  88. package/dist/cjs/pds-progress.cjs.entry.js +4 -4
  89. package/dist/cjs/pds-property.cjs.entry.js +3 -3
  90. package/dist/cjs/pds-radio-group.cjs.entry.js +6 -6
  91. package/dist/cjs/pds-radio.cjs.entry.js +7 -7
  92. package/dist/cjs/pds-row.cjs.entry.js +4 -4
  93. package/dist/cjs/pds-select.cjs.entry.js +5 -5
  94. package/dist/cjs/pds-sortable-item.cjs.entry.js +5 -5
  95. package/dist/cjs/pds-sortable.cjs.entry.js +4 -4
  96. package/dist/cjs/pds-switch.cjs.entry.js +7 -7
  97. package/dist/cjs/pds-tab.cjs.entry.js +13 -2
  98. package/dist/cjs/pds-table-body.cjs.entry.js +3 -3
  99. package/dist/cjs/pds-table-cell.cjs.entry.js +4 -4
  100. package/dist/cjs/pds-table-head-cell.cjs.entry.js +5 -5
  101. package/dist/cjs/pds-table-head.cjs.entry.js +3 -3
  102. package/dist/cjs/pds-table-row.cjs.entry.js +3 -3
  103. package/dist/cjs/pds-table.cjs.entry.js +2 -2
  104. package/dist/cjs/pds-tabpanel.cjs.entry.js +15 -3
  105. package/dist/cjs/pds-tabs.cjs.entry.js +111 -7
  106. package/dist/cjs/pds-text.cjs.entry.js +3 -3
  107. package/dist/cjs/pds-textarea.cjs.entry.js +8 -8
  108. package/dist/cjs/pds-toast.cjs.entry.js +5 -5
  109. package/dist/cjs/pds-tooltip.cjs.entry.js +4 -4
  110. package/dist/cjs/pine-core.cjs.js +3 -3
  111. package/dist/collection/components/pds-combobox/grouped-options-panel.js +21 -3
  112. package/dist/collection/components/pds-combobox/pds-combobox.css +42 -13
  113. package/dist/collection/components/pds-combobox/pds-combobox.js +166 -23
  114. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +45 -0
  115. package/dist/collection/components/pds-container/pds-container.js +1 -1
  116. package/dist/collection/components/pds-copytext/pds-copytext.js +1 -1
  117. package/dist/collection/components/pds-datepicker/pds-datepicker.js +2 -2
  118. package/dist/collection/components/pds-divider/pds-divider.js +1 -1
  119. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.js +1 -1
  120. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.js +1 -1
  121. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.js +1 -1
  122. package/dist/collection/components/pds-drawer/pds-drawer.css +4 -1
  123. package/dist/collection/components/pds-drawer/pds-drawer.js +54 -17
  124. package/dist/collection/components/pds-drawer/stories/pds-drawer.stories.js +6 -1
  125. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +1 -1
  126. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +1 -1
  127. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +19 -5
  128. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +30 -9
  129. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +1 -1
  130. package/dist/collection/components/pds-filters/pds-filters.js +1 -1
  131. package/dist/collection/components/pds-image/pds-image.js +2 -2
  132. package/dist/collection/components/pds-input/pds-input.js +2 -2
  133. package/dist/collection/components/pds-link/pds-link.js +2 -2
  134. package/dist/collection/components/pds-loader/pds-loader.js +1 -1
  135. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
  136. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
  137. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
  138. package/dist/collection/components/pds-modal/pds-modal.js +117 -32
  139. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
  140. package/dist/collection/components/pds-multiselect/pds-multiselect.js +8 -7
  141. package/dist/collection/components/pds-popover/pds-popover.js +185 -35
  142. package/dist/collection/components/pds-progress/pds-progress.js +1 -1
  143. package/dist/collection/components/pds-property/pds-property.js +1 -1
  144. package/dist/collection/components/pds-radio/pds-radio.js +3 -3
  145. package/dist/collection/components/pds-radio-group/pds-radio-group.js +3 -3
  146. package/dist/collection/components/pds-row/pds-row.js +1 -1
  147. package/dist/collection/components/pds-select/pds-select.js +1 -1
  148. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
  149. package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
  150. package/dist/collection/components/pds-switch/pds-switch.js +3 -3
  151. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
  152. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +2 -2
  153. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
  154. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +2 -2
  155. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
  156. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +11 -0
  157. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +13 -1
  158. package/dist/collection/components/pds-tabs/pds-tabs.js +111 -7
  159. package/dist/collection/components/pds-text/pds-text.js +1 -1
  160. package/dist/collection/components/pds-textarea/pds-textarea.js +4 -4
  161. package/dist/collection/components/pds-toast/pds-toast.js +3 -3
  162. package/dist/collection/components/pds-tooltip/pds-tooltip.js +2 -2
  163. package/dist/collection/utils/attributes.js +18 -11
  164. package/dist/collection/utils/css.js +41 -0
  165. package/dist/collection/utils/keep-hydrated.js +133 -6
  166. package/dist/docs.json +56 -12
  167. package/dist/esm/{attributes-CF5K2pxn.js → attributes-WXw_I_uJ.js} +18 -11
  168. package/dist/esm/{index-DxI-61GK.js → index-BJXk71tO.js} +1 -1
  169. package/dist/esm/{index-2HMD-zUO.js → index-Cw9J31qd.js} +1 -1
  170. package/dist/esm/index.js +1 -1
  171. package/dist/esm/keep-hydrated-BLG6RDBt.js +190 -0
  172. package/dist/esm/loader.js +4 -4
  173. package/dist/esm/mock-pds-modal.entry.js +3 -3
  174. package/dist/esm/pds-accordion.entry.js +3 -3
  175. package/dist/esm/pds-alert.entry.js +2 -2
  176. package/dist/esm/pds-avatar.entry.js +3 -3
  177. package/dist/esm/pds-box.entry.js +3 -3
  178. package/dist/esm/pds-button.entry.js +3 -3
  179. package/dist/esm/pds-checkbox.entry.js +4 -4
  180. package/dist/esm/pds-chip.entry.js +4 -4
  181. package/dist/esm/pds-combobox.entry.js +187 -28
  182. package/dist/esm/pds-container.entry.js +3 -3
  183. package/dist/esm/pds-copytext.entry.js +5 -5
  184. package/dist/esm/pds-datepicker.entry.js +5 -5
  185. package/dist/esm/pds-divider.entry.js +3 -3
  186. package/dist/esm/pds-drawer-content.entry.js +3 -3
  187. package/dist/esm/pds-drawer-footer.entry.js +3 -3
  188. package/dist/esm/pds-drawer-header.entry.js +3 -3
  189. package/dist/esm/pds-drawer.entry.js +25 -12
  190. package/dist/esm/pds-dropdown-menu-item.entry.js +3 -3
  191. package/dist/esm/pds-dropdown-menu-separator.entry.js +3 -3
  192. package/dist/esm/pds-dropdown-menu.entry.js +24 -12
  193. package/dist/esm/pds-filter.entry.js +4 -4
  194. package/dist/esm/pds-filters.entry.js +3 -3
  195. package/dist/esm/pds-icon.entry.js +27 -4
  196. package/dist/esm/pds-image.entry.js +4 -4
  197. package/dist/esm/pds-input.entry.js +6 -6
  198. package/dist/esm/pds-link.entry.js +5 -5
  199. package/dist/esm/pds-loader.entry.js +4 -4
  200. package/dist/esm/pds-modal-content.entry.js +4 -4
  201. package/dist/esm/pds-modal-footer.entry.js +3 -3
  202. package/dist/esm/pds-modal-header.entry.js +3 -3
  203. package/dist/esm/pds-modal.entry.js +118 -33
  204. package/dist/esm/pds-multiselect.entry.js +9 -8
  205. package/dist/esm/pds-popover.entry.js +228 -38
  206. package/dist/esm/pds-progress.entry.js +4 -4
  207. package/dist/esm/pds-property.entry.js +3 -3
  208. package/dist/esm/pds-radio-group.entry.js +6 -6
  209. package/dist/esm/pds-radio.entry.js +7 -7
  210. package/dist/esm/pds-row.entry.js +4 -4
  211. package/dist/esm/pds-select.entry.js +5 -5
  212. package/dist/esm/pds-sortable-item.entry.js +5 -5
  213. package/dist/esm/pds-sortable.entry.js +4 -4
  214. package/dist/esm/pds-switch.entry.js +7 -7
  215. package/dist/esm/pds-tab.entry.js +13 -2
  216. package/dist/esm/pds-table-body.entry.js +3 -3
  217. package/dist/esm/pds-table-cell.entry.js +4 -4
  218. package/dist/esm/pds-table-head-cell.entry.js +5 -5
  219. package/dist/esm/pds-table-head.entry.js +3 -3
  220. package/dist/esm/pds-table-row.entry.js +3 -3
  221. package/dist/esm/pds-table.entry.js +2 -2
  222. package/dist/esm/pds-tabpanel.entry.js +15 -3
  223. package/dist/esm/pds-tabs.entry.js +111 -7
  224. package/dist/esm/pds-text.entry.js +3 -3
  225. package/dist/esm/pds-textarea.entry.js +8 -8
  226. package/dist/esm/pds-toast.entry.js +5 -5
  227. package/dist/esm/pds-tooltip.entry.js +4 -4
  228. package/dist/esm/pine-core.js +4 -4
  229. package/dist/esm-es5/attributes-WXw_I_uJ.js +1 -0
  230. package/dist/esm-es5/{index-2HMD-zUO.js → index-Cw9J31qd.js} +2 -2
  231. package/dist/esm-es5/index.js +1 -1
  232. package/dist/esm-es5/keep-hydrated-BLG6RDBt.js +1 -0
  233. package/dist/esm-es5/loader.js +1 -1
  234. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  235. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  236. package/dist/esm-es5/pds-alert.entry.js +1 -1
  237. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  238. package/dist/esm-es5/pds-box.entry.js +1 -1
  239. package/dist/esm-es5/pds-button.entry.js +1 -1
  240. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  241. package/dist/esm-es5/pds-chip.entry.js +1 -1
  242. package/dist/esm-es5/pds-combobox.entry.js +2 -2
  243. package/dist/esm-es5/pds-container.entry.js +1 -1
  244. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  245. package/dist/esm-es5/pds-datepicker.entry.js +1 -1
  246. package/dist/esm-es5/pds-divider.entry.js +1 -1
  247. package/dist/esm-es5/pds-drawer-content.entry.js +1 -1
  248. package/dist/esm-es5/pds-drawer-footer.entry.js +1 -1
  249. package/dist/esm-es5/pds-drawer-header.entry.js +1 -1
  250. package/dist/esm-es5/pds-drawer.entry.js +1 -1
  251. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  252. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  253. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  254. package/dist/esm-es5/pds-filter.entry.js +1 -1
  255. package/dist/esm-es5/pds-filters.entry.js +1 -1
  256. package/dist/esm-es5/pds-icon.entry.js +1 -1
  257. package/dist/esm-es5/pds-image.entry.js +1 -1
  258. package/dist/esm-es5/pds-input.entry.js +1 -1
  259. package/dist/esm-es5/pds-link.entry.js +1 -1
  260. package/dist/esm-es5/pds-loader.entry.js +1 -1
  261. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  262. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  263. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  264. package/dist/esm-es5/pds-modal.entry.js +1 -1
  265. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  266. package/dist/esm-es5/pds-popover.entry.js +1 -1
  267. package/dist/esm-es5/pds-progress.entry.js +1 -1
  268. package/dist/esm-es5/pds-property.entry.js +1 -1
  269. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  270. package/dist/esm-es5/pds-radio.entry.js +1 -1
  271. package/dist/esm-es5/pds-row.entry.js +1 -1
  272. package/dist/esm-es5/pds-select.entry.js +1 -1
  273. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  274. package/dist/esm-es5/pds-sortable.entry.js +2 -2
  275. package/dist/esm-es5/pds-switch.entry.js +1 -1
  276. package/dist/esm-es5/pds-tab.entry.js +1 -1
  277. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  278. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  279. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  280. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  281. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  282. package/dist/esm-es5/pds-table.entry.js +1 -1
  283. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  284. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  285. package/dist/esm-es5/pds-text.entry.js +1 -1
  286. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  287. package/dist/esm-es5/pds-toast.entry.js +1 -1
  288. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  289. package/dist/esm-es5/pine-core.js +1 -1
  290. package/dist/pine-core/index.esm.js +1 -1
  291. package/dist/pine-core/{p-9a7ee7cb.system.entry.js → p-0092444c.system.entry.js} +1 -1
  292. package/dist/pine-core/{p-d576e542.system.entry.js → p-01aa382c.system.entry.js} +1 -1
  293. package/dist/pine-core/{p-d69cfaa4.entry.js → p-02088776.entry.js} +1 -1
  294. package/dist/pine-core/p-049f126a.entry.js +1 -0
  295. package/dist/pine-core/{p-8b9d8fb5.system.entry.js → p-080cb087.system.entry.js} +1 -1
  296. package/dist/pine-core/{p-99317375.system.entry.js → p-0913f696.system.entry.js} +1 -1
  297. package/dist/pine-core/{p-5737182f.entry.js → p-0a84d220.entry.js} +1 -1
  298. package/dist/pine-core/{p-4c9cccdb.system.entry.js → p-0b71ecb6.system.entry.js} +2 -2
  299. package/dist/pine-core/{p-37d73369.system.entry.js → p-1437585e.system.entry.js} +1 -1
  300. package/dist/pine-core/p-153ba77b.entry.js +1 -0
  301. package/dist/pine-core/{p-22f041ee.system.entry.js → p-1ee86d87.system.entry.js} +1 -1
  302. package/dist/pine-core/{p-5decd81f.entry.js → p-208c7dbf.entry.js} +1 -1
  303. package/dist/pine-core/p-21fe6ee1.system.entry.js +1 -0
  304. package/dist/pine-core/p-24fbbb74.system.entry.js +1 -0
  305. package/dist/pine-core/{p-51dff046.system.entry.js → p-258770cf.system.entry.js} +1 -1
  306. package/dist/pine-core/{p-1f2e5958.entry.js → p-258d5e83.entry.js} +1 -1
  307. package/dist/pine-core/{p-4e05a4f0.entry.js → p-26642718.entry.js} +1 -1
  308. package/dist/pine-core/{p-1b13f69c.system.entry.js → p-2ac2457b.system.entry.js} +1 -1
  309. package/dist/pine-core/p-2cb5483a.system.entry.js +1 -0
  310. package/dist/pine-core/{p-1f263c0b.system.entry.js → p-341c38f1.system.entry.js} +1 -1
  311. package/dist/pine-core/{p-bd7da23e.system.entry.js → p-3a959459.system.entry.js} +1 -1
  312. package/dist/pine-core/{p-1e464117.entry.js → p-432d5ec7.entry.js} +1 -1
  313. package/dist/pine-core/{p-0de74105.entry.js → p-4849fda7.entry.js} +1 -1
  314. package/dist/pine-core/{p-f30d6192.system.entry.js → p-4d03d1e2.system.entry.js} +1 -1
  315. package/dist/pine-core/{p-2cb02706.entry.js → p-4de8f333.entry.js} +1 -1
  316. package/dist/pine-core/{p-152245fa.system.entry.js → p-4f94b4f1.system.entry.js} +1 -1
  317. package/dist/pine-core/{p-66cfef6d.system.entry.js → p-4fa63723.system.entry.js} +1 -1
  318. package/dist/pine-core/p-4fd454f6.entry.js +1 -0
  319. package/dist/pine-core/{p-70c6f0ed.system.entry.js → p-5442d983.system.entry.js} +1 -1
  320. package/dist/pine-core/{p-8027db25.entry.js → p-550c2fd3.entry.js} +1 -1
  321. package/dist/pine-core/{p-7d01e719.entry.js → p-55224683.entry.js} +1 -1
  322. package/dist/pine-core/{p-65e30a4c.entry.js → p-57a2f927.entry.js} +1 -1
  323. package/dist/pine-core/{p-721297b5.system.entry.js → p-5870b092.system.entry.js} +1 -1
  324. package/dist/pine-core/p-5a10784e.system.entry.js +3 -0
  325. package/dist/pine-core/{p-6d83ad2d.system.entry.js → p-5c90091e.system.entry.js} +1 -1
  326. package/dist/pine-core/p-602c197f.entry.js +1 -0
  327. package/dist/pine-core/{p-45fcc5b7.entry.js → p-6bf853c9.entry.js} +1 -1
  328. package/dist/pine-core/{p-5d014059.entry.js → p-6d3610f9.entry.js} +1 -1
  329. package/dist/pine-core/{p-343546b1.system.entry.js → p-6eec23a7.system.entry.js} +1 -1
  330. package/dist/pine-core/{p-5132b8a1.entry.js → p-72865997.entry.js} +1 -1
  331. package/dist/pine-core/p-74a05bcc.entry.js +1 -0
  332. package/dist/pine-core/p-75ee0403.entry.js +1 -0
  333. package/dist/pine-core/p-77395d62.system.entry.js +1 -0
  334. package/dist/pine-core/p-7a287635.system.entry.js +1 -0
  335. package/dist/pine-core/p-7a5b21d2.system.entry.js +1 -0
  336. package/dist/pine-core/{p-a83a6618.system.entry.js → p-7bf6563a.system.entry.js} +1 -1
  337. package/dist/pine-core/{p-71e3a89e.system.entry.js → p-8191498f.system.entry.js} +1 -1
  338. package/dist/pine-core/{p-0166c620.entry.js → p-82cf4ec6.entry.js} +1 -1
  339. package/dist/pine-core/{p-16c2aa63.entry.js → p-84e9b7da.entry.js} +1 -1
  340. package/dist/pine-core/{p-bdf68e53.system.entry.js → p-86040cac.system.entry.js} +1 -1
  341. package/dist/pine-core/p-875b0436.system.entry.js +1 -0
  342. package/dist/pine-core/{p-87f91e02.system.entry.js → p-8c8cc079.system.entry.js} +1 -1
  343. package/dist/pine-core/{p-ba1b79c7.system.entry.js → p-8cc302aa.system.entry.js} +1 -1
  344. package/dist/pine-core/{p-5b7f7760.entry.js → p-8d292b48.entry.js} +1 -1
  345. package/dist/pine-core/{p-650ccffb.entry.js → p-8f531063.entry.js} +1 -1
  346. package/dist/pine-core/p-9109b90a.entry.js +1 -0
  347. package/dist/pine-core/p-92ae6082.entry.js +1 -0
  348. package/dist/pine-core/p-94593f20.system.entry.js +1 -0
  349. package/dist/pine-core/p-945fb0b1.entry.js +1 -0
  350. package/dist/pine-core/{p-04fe5da7.system.entry.js → p-9880d251.system.entry.js} +1 -1
  351. package/dist/pine-core/p-99459e27.entry.js +1 -0
  352. package/dist/pine-core/{p-9835c74b.entry.js → p-9ab95438.entry.js} +1 -1
  353. package/dist/pine-core/{p-a6d09102.system.entry.js → p-9af131d6.system.entry.js} +1 -1
  354. package/dist/pine-core/{p-59491f98.entry.js → p-9dcd2cdb.entry.js} +1 -1
  355. package/dist/pine-core/{p-c00e46a5.system.entry.js → p-9e0f920a.system.entry.js} +1 -1
  356. package/dist/pine-core/p-BGLP3keB.js +1 -0
  357. package/dist/pine-core/p-BLG6RDBt.js +1 -0
  358. package/dist/pine-core/p-BR5nujVX.system.js +1 -0
  359. package/dist/pine-core/{p-BJlg6wq7.system.js → p-CGRdQc49.system.js} +2 -2
  360. package/dist/pine-core/{p-DeIDZHrg.js → p-CmSJytt1.js} +2 -2
  361. package/dist/pine-core/p-CuSNnuFu.system.js +1 -0
  362. package/dist/pine-core/{p-YQa3CeL9.system.js → p-Cy8cvR7I.system.js} +1 -1
  363. package/dist/pine-core/p-XW4H0W6i.system.js +1 -0
  364. package/dist/pine-core/p-a0344e30.entry.js +2 -0
  365. package/dist/pine-core/p-a0960b3d.system.entry.js +1 -0
  366. package/dist/pine-core/p-a1230a74.system.entry.js +1 -0
  367. package/dist/pine-core/{p-fbea5703.entry.js → p-a19cd59c.entry.js} +1 -1
  368. package/dist/pine-core/p-a787b34a.system.entry.js +1 -0
  369. package/dist/pine-core/p-a826f290.entry.js +1 -0
  370. package/dist/pine-core/{p-1ec4eeaf.system.entry.js → p-a85a6ab9.system.entry.js} +1 -1
  371. package/dist/pine-core/p-acce8eb2.entry.js +1 -0
  372. package/dist/pine-core/p-b1548a20.entry.js +1 -0
  373. package/dist/pine-core/p-b60ac7eb.system.entry.js +1 -0
  374. package/dist/pine-core/{p-93877d4a.entry.js → p-b69f04b7.entry.js} +1 -1
  375. package/dist/pine-core/p-b75b0d09.system.entry.js +1 -0
  376. package/dist/pine-core/{p-02857936.entry.js → p-b8e8a4ce.entry.js} +1 -1
  377. package/dist/pine-core/{p-622e91e3.entry.js → p-b914dde8.entry.js} +2 -2
  378. package/dist/pine-core/{p-5bc670be.system.entry.js → p-ba1f65c2.system.entry.js} +1 -1
  379. package/dist/pine-core/p-bb68431a.entry.js +1 -0
  380. package/dist/pine-core/{p-c8e89b61.system.entry.js → p-bd67156b.system.entry.js} +1 -1
  381. package/dist/pine-core/{p-db4319fd.entry.js → p-beb23781.entry.js} +1 -1
  382. package/dist/pine-core/p-bf30dec0.entry.js +1 -0
  383. package/dist/pine-core/p-bf5887e8.system.entry.js +1 -0
  384. package/dist/pine-core/{p-91f712f4.system.entry.js → p-bf7ee3b7.system.entry.js} +1 -1
  385. package/dist/pine-core/{p-b5838211.system.entry.js → p-c5c9ed36.system.entry.js} +1 -1
  386. package/dist/pine-core/{p-21115986.system.entry.js → p-cb6a3e4c.system.entry.js} +1 -1
  387. package/dist/pine-core/{p-1cf1fced.entry.js → p-cde8eb81.entry.js} +1 -1
  388. package/dist/pine-core/{p-1d75a9b1.system.entry.js → p-cf08a6dd.system.entry.js} +1 -1
  389. package/dist/pine-core/p-cfd012d4.entry.js +1 -0
  390. package/dist/pine-core/{p-5e8d73d4.entry.js → p-d2c91e7a.entry.js} +1 -1
  391. package/dist/pine-core/{p-7bbfb965.system.entry.js → p-db17c626.system.entry.js} +1 -1
  392. package/dist/pine-core/p-e0917a26.entry.js +1 -0
  393. package/dist/pine-core/p-e21ff692.entry.js +1 -0
  394. package/dist/pine-core/p-e5420660.entry.js +1 -0
  395. package/dist/pine-core/{p-585832b1.entry.js → p-e800a2b1.entry.js} +1 -1
  396. package/dist/pine-core/{p-8b0fbeb3.entry.js → p-e836a041.entry.js} +1 -1
  397. package/dist/pine-core/{p-506d3e80.entry.js → p-e8cb76e8.entry.js} +1 -1
  398. package/dist/pine-core/p-ea4d4741.system.entry.js +1 -0
  399. package/dist/pine-core/{p-419f57c9.entry.js → p-eb5465ce.entry.js} +1 -1
  400. package/dist/pine-core/{p-63119d23.entry.js → p-ebd0bff2.entry.js} +1 -1
  401. package/dist/pine-core/p-f029b7da.system.entry.js +1 -0
  402. package/dist/pine-core/{p-e337f32c.system.entry.js → p-f0d24298.system.entry.js} +1 -1
  403. package/dist/pine-core/{p-9b9f66b7.entry.js → p-f1702281.entry.js} +1 -1
  404. package/dist/pine-core/{p-238e5171.system.entry.js → p-f25e4731.system.entry.js} +1 -1
  405. package/dist/pine-core/{p-37d95be9.entry.js → p-f2c253d8.entry.js} +1 -1
  406. package/dist/pine-core/{p-a22091c4.system.entry.js → p-f77905aa.system.entry.js} +1 -1
  407. package/dist/pine-core/{p-bef04e15.system.entry.js → p-fc25b956.system.entry.js} +1 -1
  408. package/dist/pine-core/{p-f06ca8df.entry.js → p-ff3de72e.entry.js} +1 -1
  409. package/dist/pine-core/pine-core.esm.js +1 -1
  410. package/dist/pine-core/pine-core.js +1 -1
  411. package/dist/types/components/pds-combobox/combobox-interface.d.ts +8 -1
  412. package/dist/types/components/pds-combobox/grouped-options-panel.d.ts +7 -1
  413. package/dist/types/components/pds-combobox/pds-combobox.d.ts +32 -0
  414. package/dist/types/components/pds-drawer/pds-drawer.d.ts +21 -9
  415. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +5 -0
  416. package/dist/types/components/pds-modal/pds-modal.d.ts +10 -3
  417. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +2 -1
  418. package/dist/types/components/pds-popover/pds-popover.d.ts +31 -1
  419. package/dist/types/components/pds-tabs/pds-tab/pds-tab.d.ts +3 -0
  420. package/dist/types/components/pds-tabs/pds-tabpanel/pds-tabpanel.d.ts +3 -0
  421. package/dist/types/components/pds-tabs/pds-tabs.d.ts +14 -2
  422. package/dist/types/components.d.ts +50 -35
  423. package/dist/types/utils/attributes.d.ts +2 -2
  424. package/dist/types/utils/css.d.ts +7 -0
  425. package/dist/types/utils/keep-hydrated.d.ts +29 -2
  426. package/dist/vscode.html-data.json +13 -6
  427. package/hydrate/index.js +961 -213
  428. package/hydrate/index.mjs +961 -213
  429. package/package.json +2 -2
  430. package/dist/cjs/keep-hydrated-iLS88j1Z.js +0 -67
  431. package/dist/esm/keep-hydrated-Dv7ssOTc.js +0 -63
  432. package/dist/esm-es5/attributes-CF5K2pxn.js +0 -1
  433. package/dist/esm-es5/keep-hydrated-Dv7ssOTc.js +0 -1
  434. package/dist/pine-core/p-1cd0acf0.system.entry.js +0 -1
  435. package/dist/pine-core/p-207c94da.entry.js +0 -1
  436. package/dist/pine-core/p-2357758d.system.entry.js +0 -1
  437. package/dist/pine-core/p-281efc69.entry.js +0 -1
  438. package/dist/pine-core/p-2ac9e90a.system.entry.js +0 -1
  439. package/dist/pine-core/p-2f539379.system.entry.js +0 -3
  440. package/dist/pine-core/p-347ae53c.system.entry.js +0 -1
  441. package/dist/pine-core/p-34b575b6.entry.js +0 -2
  442. package/dist/pine-core/p-3b1d8fae.entry.js +0 -1
  443. package/dist/pine-core/p-4414d442.system.entry.js +0 -1
  444. package/dist/pine-core/p-4e67e68e.entry.js +0 -1
  445. package/dist/pine-core/p-539ef98c.entry.js +0 -1
  446. package/dist/pine-core/p-56576b6e.entry.js +0 -1
  447. package/dist/pine-core/p-5ac84b2f.entry.js +0 -1
  448. package/dist/pine-core/p-63854c10.system.entry.js +0 -1
  449. package/dist/pine-core/p-73bc6e9f.system.entry.js +0 -1
  450. package/dist/pine-core/p-798839f7.system.entry.js +0 -1
  451. package/dist/pine-core/p-7e115d33.system.entry.js +0 -1
  452. package/dist/pine-core/p-834c678e.system.entry.js +0 -1
  453. package/dist/pine-core/p-912487fa.entry.js +0 -1
  454. package/dist/pine-core/p-969488f5.system.entry.js +0 -1
  455. package/dist/pine-core/p-9bcdfac2.entry.js +0 -1
  456. package/dist/pine-core/p-9d33bb05.entry.js +0 -1
  457. package/dist/pine-core/p-BMFBF3sJ.system.js +0 -1
  458. package/dist/pine-core/p-D2MUS7JO.js +0 -1
  459. package/dist/pine-core/p-D2yHYrxQ.system.js +0 -1
  460. package/dist/pine-core/p-Dv7ssOTc.js +0 -1
  461. package/dist/pine-core/p-TyevV8iv.system.js +0 -1
  462. package/dist/pine-core/p-afd5e2d7.entry.js +0 -1
  463. package/dist/pine-core/p-bde53290.system.entry.js +0 -1
  464. package/dist/pine-core/p-bf1aea9f.system.entry.js +0 -1
  465. package/dist/pine-core/p-c9395f43.system.entry.js +0 -1
  466. package/dist/pine-core/p-d5dd5599.entry.js +0 -1
  467. package/dist/pine-core/p-dc81ffff.entry.js +0 -1
  468. package/dist/pine-core/p-e46f7541.system.entry.js +0 -1
  469. package/dist/pine-core/p-e7ba30dd.system.entry.js +0 -1
  470. package/dist/pine-core/p-ed3dd3d2.entry.js +0 -1
  471. package/dist/pine-core/p-eee4f146.entry.js +0 -1
  472. package/dist/pine-core/p-f01e35e2.entry.js +0 -1
  473. package/dist/pine-core/p-f2e0da9a.entry.js +0 -1
  474. package/dist/pine-core/p-fc6ac917.entry.js +0 -1
  475. package/dist/pine-core/p-ffe276ef.entry.js +0 -1
  476. /package/dist/esm-es5/{index-DxI-61GK.js → index-BJXk71tO.js} +0 -0
  477. /package/dist/pine-core/{p-DxI-61GK.js → p-BJXk71tO.js} +0 -0
  478. /package/dist/pine-core/{p-CnO10OxH.system.js → p-n3_ytl_p.system.js} +0 -0
@@ -1,11 +1,63 @@
1
- import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-2HMD-zUO.js';
2
- import { c as containsComposed } from './closest-DHPzKMVS.js';
1
+ import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-Cw9J31qd.js';
2
+ import { c as containsComposed, a as closest } from './closest-DHPzKMVS.js';
3
3
  import { r as restoreReflectedDefault } from './reflected-attribute-default-t3idJwV0.js';
4
- import { s as setAttributesIfChanged } from './attributes-CF5K2pxn.js';
5
- import './keep-hydrated-Dv7ssOTc.js';
4
+ import { s as setAttributesIfChanged } from './attributes-WXw_I_uJ.js';
5
+ import { l as limitRestores } from './keep-hydrated-BLG6RDBt.js';
6
+
7
+ /**
8
+ * Escapes a string so it's safe to interpolate into a CSS identifier (an id selector like `#${id}`)
9
+ * or into CSS text (a stylesheet rule referencing that id). Equivalent to the native `CSS.escape`,
10
+ * reimplemented because Stencil's unit-test DOM (`newSpecPage`'s mock-doc) doesn't provide it.
11
+ * @param value - The string to escape, e.g. a consumer-supplied id
12
+ */
13
+ const cssEscape = (value) => {
14
+ const string = String(value);
15
+ const length = string.length;
16
+ const firstCodeUnit = string.charCodeAt(0);
17
+ let result = '';
18
+ for (let index = 0; index < length; index++) {
19
+ const codeUnit = string.charCodeAt(index);
20
+ if (codeUnit === 0x0000) {
21
+ result += '�';
22
+ continue;
23
+ }
24
+ if ((codeUnit >= 0x0001 && codeUnit <= 0x001f) ||
25
+ codeUnit === 0x007f ||
26
+ (index === 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||
27
+ (index === 1 && codeUnit >= 0x0030 && codeUnit <= 0x0039 && firstCodeUnit === 0x002d)) {
28
+ result += `\\${codeUnit.toString(16)} `;
29
+ continue;
30
+ }
31
+ if (index === 0 && length === 1 && codeUnit === 0x002d) {
32
+ result += `\\${string.charAt(index)}`;
33
+ continue;
34
+ }
35
+ if (codeUnit >= 0x0080 ||
36
+ codeUnit === 0x002d ||
37
+ codeUnit === 0x005f ||
38
+ (codeUnit >= 0x0030 && codeUnit <= 0x0039) ||
39
+ (codeUnit >= 0x0041 && codeUnit <= 0x005a) ||
40
+ (codeUnit >= 0x0061 && codeUnit <= 0x007a)) {
41
+ result += string.charAt(index);
42
+ continue;
43
+ }
44
+ result += `\\${string.charAt(index)}`;
45
+ }
46
+ return result;
47
+ };
6
48
 
7
49
  const pdsPopoverCss = () => `:host{--sizing-max-width-default:352px;display:inline-block}:host .pds-popover__trigger-wrapper{display:inline-block}:host .pds-popover__content-slot-wrapper{display:none}`;
8
50
 
51
+ /** Open auto popovers, in the order they opened: Escape goes to the last one it applies to. */
52
+ const openAutoPopovers = [];
53
+ /** The focused element, followed down through shadow roots to the control that has focus. */
54
+ function deepActiveElement() {
55
+ var _a;
56
+ let active = document.activeElement;
57
+ while ((_a = active === null || active === void 0 ? void 0 : active.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement)
58
+ active = active.shadowRoot.activeElement;
59
+ return active;
60
+ }
9
61
  const PdsPopover = class {
10
62
  constructor(hostRef) {
11
63
  registerInstance(this, hostRef);
@@ -37,7 +89,7 @@ const PdsPopover = class {
37
89
  */
38
90
  this.triggerObserver = null;
39
91
  /**
40
- * Portal element rendered in document.body
92
+ * Portal element: in document.body, or in the open dialog the popover is in
41
93
  */
42
94
  this.portalEl = null;
43
95
  /**
@@ -133,6 +185,26 @@ const PdsPopover = class {
133
185
  break;
134
186
  }
135
187
  };
188
+ /** The focus style copied into a shadow root the panel opened in, which `document.head` can't reach. */
189
+ this.shadowFocusStyle = null;
190
+ /** The dialog the panel was opened in, closed along with it. */
191
+ this.watchedDialog = null;
192
+ this.onDialogClose = () => {
193
+ this.hide();
194
+ };
195
+ /**
196
+ * Inside a dialog, the panel can sit in a form that wraps the dialog, which a body portal never
197
+ * did. A submit from the panel (a button in it, or Enter in a field in it) is stopped, so the
198
+ * panel behaves as it does in the body.
199
+ */
200
+ this.handleSubmitFromPanel = (event) => {
201
+ if (!this.portalEl || !containsComposed(event.target, this.portalEl))
202
+ return;
203
+ if (containsComposed(this.portalEl, event.submitter) || containsComposed(this.portalEl, deepActiveElement())) {
204
+ event.preventDefault();
205
+ event.stopPropagation();
206
+ }
207
+ };
136
208
  }
137
209
  restorePlacementDefault(newValue) {
138
210
  this.placement = restoreReflectedDefault(this.el, 'placement', newValue, 'right');
@@ -169,7 +241,8 @@ const PdsPopover = class {
169
241
  this.triggerObserver = null;
170
242
  if (this.triggerEl == null || typeof MutationObserver === 'undefined')
171
243
  return;
172
- this.triggerObserver = new MutationObserver(() => this.linkTriggerToPortal());
244
+ // Capped against a script that keeps undoing it; opening and closing still write it directly.
245
+ this.triggerObserver = new MutationObserver(limitRestores(() => this.linkTriggerToPortal(), 'pds-popover: stopped restoring its trigger ARIA, as another script keeps changing it. It may be wrong until the popover opens or closes.', this.triggerEl));
173
246
  this.triggerObserver.observe(this.triggerEl, {
174
247
  attributes: true,
175
248
  attributeFilter: ['aria-expanded', 'aria-controls'],
@@ -179,9 +252,9 @@ const PdsPopover = class {
179
252
  // This mirrors the native Popover API's accessibility behavior
180
253
  linkTriggerToPortal() {
181
254
  if (this.triggerEl == null || this.portalEl == null)
182
- return;
255
+ return false;
183
256
  // Skips values already in place, so the trigger observer's own callback doesn't loop.
184
- setAttributesIfChanged(this.triggerEl, { 'aria-expanded': String(this.active), 'aria-controls': this.portalEl.id });
257
+ return setAttributesIfChanged(this.triggerEl, { 'aria-expanded': String(this.active), 'aria-controls': this.portalEl.id });
185
258
  }
186
259
  // componentDidLoad doesn't run again when a popover comes back, so rebuild whatever
187
260
  // disconnectedCallback tore down. Each step is a no-op when nothing was.
@@ -194,19 +267,23 @@ const PdsPopover = class {
194
267
  (_a = this.triggerEl) === null || _a === void 0 ? void 0 : _a.addEventListener('click', this.handleTriggerClick);
195
268
  this.observeTrigger();
196
269
  this.linkTriggerToPortal();
197
- // Still open after a move: the trigger moved, so the portal follows it.
270
+ // Still open after a move: the trigger moved, so the portal follows it, into the dialog it
271
+ // is in now, if any.
198
272
  if (this.active) {
273
+ this.placePortal();
199
274
  requestAnimationFrame(() => this.handlePopoverPositioning());
200
275
  }
201
276
  }
202
277
  disconnectedCallback() {
203
278
  var _a;
204
279
  // Moved in one operation (a DOM morph, or a framework reparenting it), the popover is
205
- // already back in the page. Its portal is in <body>, untouched, so it stays open, with focus
206
- // where it was.
280
+ // already back in the page. Its portal is outside the popover, so it stays open, with focus
281
+ // where it was; connectedCallback moves it to follow the popover.
207
282
  if (this.el.isConnected)
208
283
  return;
209
284
  this.isComponentMounted = false;
285
+ this.unwatchDialogClose();
286
+ this.forgetOpen();
210
287
  // Open, the content sits in the portal; put it back before the portal goes. Only listeners on
211
288
  // the popover itself hear the close event now, but those are the ones mirroring its state.
212
289
  if (this.active) {
@@ -227,6 +304,7 @@ const PdsPopover = class {
227
304
  // Clean up all event listeners
228
305
  this.removeLightDismissListeners();
229
306
  this.removeScrollAndResizeListeners();
307
+ document.removeEventListener('submit', this.handleSubmitFromPanel, true);
230
308
  // Clear any pending debounce timers
231
309
  this.clearDebounceTimers();
232
310
  // Remove portal from DOM
@@ -271,9 +349,6 @@ const PdsPopover = class {
271
349
  else {
272
350
  this.portalEl.id = `${this.componentId}-portal`;
273
351
  }
274
- // Add accessibility attributes for screen readers
275
- // Note: Native Popover API doesn't add a specific role, keeping semantic HTML
276
- this.portalEl.setAttribute('aria-modal', 'false'); // Not a modal, can interact with rest of page
277
352
  // Append to body
278
353
  document.body.appendChild(this.portalEl);
279
354
  // Add global focus styles to match Pine design system
@@ -288,22 +363,25 @@ const PdsPopover = class {
288
363
  if (!this.portalEl)
289
364
  return;
290
365
  const portalId = this.portalEl.id;
366
+ // componentId comes from the consumer, so it can carry characters cssEscape needs to
367
+ // neutralize before the id is used as a selector or interpolated into stylesheet text.
368
+ const escapedPortalId = cssEscape(portalId);
291
369
  // Check if style element already exists
292
- const existingStyle = document.querySelector(`style[data-pds-popover-focus="${portalId}"]`);
370
+ const existingStyle = document.querySelector(`style[data-pds-popover-focus="${escapedPortalId}"]`);
293
371
  if (existingStyle)
294
372
  return;
295
373
  // Create style element with Pine's focus ring styles and dark mode border
296
374
  const styleEl = document.createElement('style');
297
375
  styleEl.setAttribute('data-pds-popover-focus', portalId);
298
376
  styleEl.textContent = `
299
- #${portalId}:focus {
377
+ #${escapedPortalId}:focus {
300
378
  outline: var(--pine-outline-focus, 2px solid var(--pine-color-focus-ring, #6366f1)) !important;
301
379
  outline-offset: var(--pine-border-width, 1px);
302
380
  }
303
- #${portalId}:focus:not(:focus-visible) {
381
+ #${escapedPortalId}:focus:not(:focus-visible) {
304
382
  outline: none;
305
383
  }
306
- [data-theme="dark"] #${portalId} {
384
+ [data-theme="dark"] #${escapedPortalId} {
307
385
  border: var(--pine-border);
308
386
  }
309
387
  `;
@@ -354,7 +432,27 @@ const PdsPopover = class {
354
432
  // Clear tracking array
355
433
  this.movedNodes = [];
356
434
  }
435
+ copyFocusStylesInto(root) {
436
+ var _a, _b, _c;
437
+ // Outside a shadow root the document's own style applies, so drop a copy left in one.
438
+ if (!(root instanceof ShadowRoot)) {
439
+ (_a = this.shadowFocusStyle) === null || _a === void 0 ? void 0 : _a.remove();
440
+ this.shadowFocusStyle = null;
441
+ return;
442
+ }
443
+ if (((_b = this.shadowFocusStyle) === null || _b === void 0 ? void 0 : _b.parentNode) === root || !this.portalEl)
444
+ return;
445
+ const source = document.querySelector(`style[data-pds-popover-focus="${cssEscape(this.portalEl.id)}"]`);
446
+ if (!source)
447
+ return;
448
+ (_c = this.shadowFocusStyle) === null || _c === void 0 ? void 0 : _c.remove();
449
+ this.shadowFocusStyle = source.cloneNode(true);
450
+ root.appendChild(this.shadowFocusStyle);
451
+ }
357
452
  removePortal() {
453
+ var _a;
454
+ (_a = this.shadowFocusStyle) === null || _a === void 0 ? void 0 : _a.remove();
455
+ this.shadowFocusStyle = null;
358
456
  if (this.portalEl) {
359
457
  // Remove the portal element from DOM
360
458
  if (this.portalEl.parentNode) {
@@ -362,7 +460,7 @@ const PdsPopover = class {
362
460
  }
363
461
  // Remove the associated focus style element
364
462
  const portalId = this.portalEl.id;
365
- const styleEl = document.querySelector(`style[data-pds-popover-focus="${portalId}"]`);
463
+ const styleEl = document.querySelector(`style[data-pds-popover-focus="${cssEscape(portalId)}"]`);
366
464
  if (styleEl && styleEl.parentNode) {
367
465
  styleEl.parentNode.removeChild(styleEl);
368
466
  }
@@ -379,9 +477,13 @@ const PdsPopover = class {
379
477
  // Record open timestamp to prevent immediate close from opening click
380
478
  this.openTimestamp = Date.now();
381
479
  this.linkTriggerToPortal();
480
+ this.placePortal();
382
481
  // Update portal content with latest slot content
383
482
  this.updatePortalContent();
384
- // Show portal
483
+ // Show portal. The attribute tells a modal around it that this popover takes Escape first; only
484
+ // an auto popover listens for Escape.
485
+ if (this.popoverType === 'auto')
486
+ this.portalEl.setAttribute('data-pds-popover-open', '');
385
487
  this.portalEl.style.display = 'block';
386
488
  this.portalEl.style.opacity = '1';
387
489
  this.portalEl.style.visibility = 'visible';
@@ -393,8 +495,10 @@ const PdsPopover = class {
393
495
  });
394
496
  // Add scroll and resize listeners for repositioning (always)
395
497
  this.addScrollAndResizeListeners();
498
+ document.addEventListener('submit', this.handleSubmitFromPanel, true);
396
499
  // Add document listeners for light dismiss and escape key (auto type only)
397
500
  if (this.popoverType === 'auto') {
501
+ openAutoPopovers.push(this);
398
502
  this.addLightDismissListeners();
399
503
  }
400
504
  // Emit open event
@@ -410,12 +514,16 @@ const PdsPopover = class {
410
514
  if (!this.active || !this.portalEl)
411
515
  return;
412
516
  this.active = false;
413
- // Restoring the content drops its focus to the body, so check where focus is first.
414
- const focusWasInside = this.portalEl.contains(document.activeElement);
517
+ this.unwatchDialogClose();
518
+ // Restoring the content drops its focus to the body, so check where focus is first. In a
519
+ // shadow root, document.activeElement is only its host.
520
+ const focusWasInside = containsComposed(this.portalEl, deepActiveElement());
415
521
  this.linkTriggerToPortal();
416
522
  // Restore content back to original slot positions
417
523
  this.restorePortalContent();
418
- // Hide portal
524
+ // Hide portal. The dark-mode border set in a shadow root is worked out again on the next open.
525
+ this.portalEl.style.border = '';
526
+ this.portalEl.removeAttribute('data-pds-popover-open');
419
527
  this.portalEl.style.display = 'none';
420
528
  this.portalEl.style.opacity = '0';
421
529
  this.portalEl.style.visibility = 'hidden';
@@ -425,8 +533,10 @@ const PdsPopover = class {
425
533
  this.returnFocusToTrigger();
426
534
  }
427
535
  // Remove all listeners
536
+ this.forgetOpen();
428
537
  this.removeLightDismissListeners();
429
538
  this.removeScrollAndResizeListeners();
539
+ document.removeEventListener('submit', this.handleSubmitFromPanel, true);
430
540
  // Clear any pending timers
431
541
  this.clearDebounceTimers();
432
542
  // Emit close event
@@ -446,6 +556,59 @@ const PdsPopover = class {
446
556
  this.show();
447
557
  }
448
558
  }
559
+ /**
560
+ * Puts the panel where it shows above everything around the popover. In an open dialog, it goes
561
+ * inside it: a modal dialog sits in the top layer above the body and makes the rest of the page
562
+ * inert, and a non-modal one sits above it by z-index. Right after the popover, it's next in the
563
+ * Tab order. In another component's slot, though, it would have no slot to render in, and in a
564
+ * form its buttons would submit it, so there it goes at the end of the dialog.
565
+ */
566
+ placePortal() {
567
+ var _a, _b;
568
+ if (!this.portalEl)
569
+ return;
570
+ const dialog = closest('dialog[open]', this.el);
571
+ if (!dialog) {
572
+ this.unwatchDialogClose();
573
+ this.portalEl.style.border = '';
574
+ if (this.portalEl.parentElement !== document.body)
575
+ document.body.appendChild(this.portalEl);
576
+ this.copyFocusStylesInto(document);
577
+ return;
578
+ }
579
+ const form = closest('form', this.el);
580
+ const besidePopover = !((_a = this.el.parentElement) === null || _a === void 0 ? void 0 : _a.shadowRoot) && !(form && containsComposed(dialog, form));
581
+ if (besidePopover) {
582
+ if (this.el.nextElementSibling !== this.portalEl)
583
+ (_b = this.el.parentNode) === null || _b === void 0 ? void 0 : _b.insertBefore(this.portalEl, this.el.nextSibling);
584
+ }
585
+ else if (this.portalEl.parentNode !== dialog) {
586
+ dialog.appendChild(this.portalEl);
587
+ }
588
+ this.watchDialogClose(dialog);
589
+ const root = this.portalEl.getRootNode();
590
+ this.copyFocusStylesInto(root);
591
+ // In a shadow root, the copied dark-mode rule can't see a [data-theme="dark"] on the page.
592
+ this.portalEl.style.border = root instanceof ShadowRoot && closest('[data-theme="dark"]', this.el) ? 'var(--pine-border)' : '';
593
+ }
594
+ forgetOpen() {
595
+ const index = openAutoPopovers.indexOf(this);
596
+ if (index >= 0)
597
+ openAutoPopovers.splice(index, 1);
598
+ }
599
+ /**
600
+ * Whether an Escape is this popover's. One from a dialog the popover isn't in belongs to that
601
+ * dialog when it's above it: a top-layer dialog or a pds-modal. A plain non-modal dialog inside
602
+ * the popover's modal doesn't close on Escape, so the popover takes it.
603
+ */
604
+ takesEscapeFrom(event) {
605
+ var _a, _b;
606
+ const origin = ((_b = (_a = event.composedPath) === null || _a === void 0 ? void 0 : _a.call(event)[0]) !== null && _b !== void 0 ? _b : event.target);
607
+ const dialog = closest('dialog[open]', origin);
608
+ if (!dialog || containsComposed(dialog, this.portalEl))
609
+ return true;
610
+ return !(dialog.classList.contains('pds-modal__backdrop') || dialog.matches(':modal'));
611
+ }
449
612
  /**
450
613
  * Adds light dismiss listeners (click outside and escape key)
451
614
  */
@@ -454,6 +617,19 @@ const PdsPopover = class {
454
617
  document.addEventListener('click', this.boundClickOutsideHandler, true);
455
618
  document.addEventListener('keydown', this.boundEscapeKeyHandler);
456
619
  }
620
+ /** Closes the popover when the dialog it opened in closes, so it isn't left open inside. */
621
+ watchDialogClose(dialog) {
622
+ if (this.watchedDialog === dialog)
623
+ return;
624
+ this.unwatchDialogClose();
625
+ this.watchedDialog = dialog;
626
+ dialog.addEventListener('close', this.onDialogClose);
627
+ }
628
+ unwatchDialogClose() {
629
+ var _a;
630
+ (_a = this.watchedDialog) === null || _a === void 0 ? void 0 : _a.removeEventListener('close', this.onDialogClose);
631
+ this.watchedDialog = null;
632
+ }
457
633
  /**
458
634
  * Removes light dismiss listeners
459
635
  */
@@ -479,7 +655,7 @@ const PdsPopover = class {
479
655
  * Handles clicks outside the popover for light dismiss (auto type only)
480
656
  */
481
657
  handleClickOutside(event) {
482
- var _a, _b, _c, _d;
658
+ var _a, _b;
483
659
  // Ignore events that occurred at or before the popover opened
484
660
  // This prevents the opening click from immediately closing the popover
485
661
  // Convert event.timeStamp (DOMHighResTimeStamp from performance.now()) to epoch time
@@ -490,16 +666,18 @@ const PdsPopover = class {
490
666
  if (eventTime <= this.openTimestamp) {
491
667
  return;
492
668
  }
493
- const target = event.target;
669
+ // In a shadow root, event.target is only its host.
670
+ const target = ((_b = (_a = event.composedPath) === null || _a === void 0 ? void 0 : _a.call(event)[0]) !== null && _b !== void 0 ? _b : event.target);
494
671
  // A datepicker's calendar is portaled to the body: a click in the calendar of a datepicker
495
- // inside this popover, in its content or its trigger, isn't outside it.
496
- const calendar = (_b = (_a = target).closest) === null || _b === void 0 ? void 0 : _b.call(_a, '.pds-datepicker-calendar-portal');
672
+ // inside this popover, in its content or its trigger, isn't outside it. The target can be
673
+ // inside the calendar's shadow root, so look up across it.
674
+ const calendar = closest('.pds-datepicker-calendar-portal', target);
497
675
  const owner = calendar === null || calendar === void 0 ? void 0 : calendar.pdsDatepicker;
498
676
  if (owner && (containsComposed(this.portalEl, owner) || containsComposed(this.triggerEl, owner)))
499
677
  return;
500
678
  // Check if click is outside both the popover portal and the trigger
501
- const clickedInsidePopover = (_c = this.portalEl) === null || _c === void 0 ? void 0 : _c.contains(target);
502
- const clickedInsideTrigger = (_d = this.triggerEl) === null || _d === void 0 ? void 0 : _d.contains(target);
679
+ const clickedInsidePopover = containsComposed(this.portalEl, target);
680
+ const clickedInsideTrigger = containsComposed(this.triggerEl, target);
503
681
  if (!clickedInsidePopover && !clickedInsideTrigger) {
504
682
  this.hide();
505
683
  }
@@ -520,14 +698,19 @@ const PdsPopover = class {
520
698
  * Mirrors native Popover API: Escape closes and returns focus to trigger
521
699
  */
522
700
  handleEscapeKey(event) {
523
- if (event.key === 'Escape') {
524
- // Prevent default Escape behavior and stop propagation
525
- // This mirrors native Popover API which handles Escape exclusively
526
- event.preventDefault();
527
- event.stopPropagation();
528
- // Close popover and return focus to trigger
529
- this.hide();
530
- }
701
+ // A control inside that closes on Escape (a datepicker, a combobox) has handled it already.
702
+ if (event.key !== 'Escape' || event.defaultPrevented)
703
+ return;
704
+ // Like the native Popover API, Escape closes only the top popover: the last one opened that
705
+ // it applies to. Every open popover hears it, so each checks whether it's that one.
706
+ const top = [...openAutoPopovers].reverse().find(popover => popover.takesEscapeFrom(event));
707
+ if (top !== this)
708
+ return;
709
+ // Take the key, so the dialog or modal around it doesn't close too.
710
+ event.preventDefault();
711
+ event.stopPropagation();
712
+ // Close popover and return focus to trigger
713
+ this.hide();
531
714
  }
532
715
  /**
533
716
  * Handles scroll events to reposition the popover (debounced for performance)
@@ -632,13 +815,20 @@ const PdsPopover = class {
632
815
  }
633
816
  this.portalEl.style.top = `${top}px`;
634
817
  this.portalEl.style.left = `${left}px`;
818
+ // `position: fixed` measures from the viewport unless an ancestor becomes its containing block,
819
+ // as a modal dialog does with its backdrop filter. Shift by however far it landed from the spot.
820
+ const placed = this.portalEl.getBoundingClientRect();
821
+ if (Math.abs(placed.top - top) > 0.5 || Math.abs(placed.left - left) > 0.5) {
822
+ this.portalEl.style.top = `${2 * top - placed.top}px`;
823
+ this.portalEl.style.left = `${2 * left - placed.left}px`;
824
+ }
635
825
  // Reset the repositioning guard after a short delay
636
826
  setTimeout(() => {
637
827
  this.isRepositioning = false;
638
828
  }, 16); // ~1 frame at 60fps
639
829
  }
640
830
  render() {
641
- return (h(Host, { key: '66347d4922274d25504e5be134b36f05a3f12fdc', id: this.componentId }, h("span", { key: '8f29d54d58cf0c66f86470c77c676716f1ab056f', class: "pds-popover__trigger-wrapper" }, h("slot", { key: '5c89b687cfc01e67d3c11835e77755de88f03584', name: "trigger", onSlotchange: this.handleTriggerSlotChange })), h("div", { key: '0ca9aff3021720098d86ec29eb69cbf149ef79a9', class: "pds-popover__content-slot-wrapper" }, h("slot", { key: 'b73c3324d3322c41c68161e9ada51499c0e49cb0', onSlotchange: this.handleContentSlotChange }))));
831
+ return (h(Host, { key: 'da8a0c715df1199231b1265085f3f9ae0234032d', id: this.componentId }, h("span", { key: 'f35023492399420829cec2e88556462f5ac1663e', class: "pds-popover__trigger-wrapper" }, h("slot", { key: '38ebe92eebb87665467b3f92ff94dc8095450063', name: "trigger", onSlotchange: this.handleTriggerSlotChange })), h("div", { key: '8917930f4520544d14bbd68b4c7936dd60af19e3', class: "pds-popover__content-slot-wrapper" }, h("slot", { key: '28d3f9112256edd95721a79a7072a9e35a3712bf', onSlotchange: this.handleContentSlotChange }))));
642
832
  }
643
833
  get el() { return getElement(this); }
644
834
  static get watchers() { return {
@@ -1,7 +1,7 @@
1
- import { r as registerInstance, h, H as Host, a as getElement } from './index-2HMD-zUO.js';
2
- import { H as HostStylingKeeper } from './attributes-CF5K2pxn.js';
1
+ import { r as registerInstance, h, H as Host, a as getElement } from './index-Cw9J31qd.js';
2
+ import { H as HostStylingKeeper } from './attributes-WXw_I_uJ.js';
3
3
  import { n as normalizeColorValue } from './utils-OYK5-nwe.js';
4
- import './keep-hydrated-Dv7ssOTc.js';
4
+ import './keep-hydrated-BLG6RDBt.js';
5
5
 
6
6
  const pdsProgressCss = () => `:host{--color-progress-fill:var(--pine-color-primary);--sizing-progress-bar-width:100%;-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;width:var(--sizing-progress-bar-width)}@-webkit-keyframes progressBar{0%{width:0}100%{width:var(--sizing-progress-bar-width)}}@keyframes progressBar{0%{width:0}100%{width:var(--sizing-progress-bar-width)}}.pds-progress{-ms-flex-align:center;align-items:center;background-color:var(--pine-color-background-muted);border-radius:var(--pine-dimension-2xs);display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;height:var(--pine-dimension-xs);position:relative;width:100%}:host(.is-animated) progress,:host(.is-animated) progress::-webkit-progress-bar{-webkit-animation:progressBar 3s ease;animation:progressBar 3s ease;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}progress,progress::-webkit-progress-bar{background-color:transparent;border:0;height:var(--pine-dimension-xs);width:100%}progress::-webkit-progress-value{background:var(--color-progress-fill, var(--pine-color-primary));border-radius:var(--pine-dimension-2xs)}progress::-moz-progress-bar{background:var(--color-progress-fill, var(--pine-color-primary));border-radius:var(--pine-dimension-2xs)}.pds-progress__label{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.pds-progress__percentage{font-weight:var(--pine-font-weight-medium);-webkit-margin-start:calc(var(--pine-dimension-md) / 2);margin-inline-start:calc(var(--pine-dimension-md) / 2)}`;
7
7
 
@@ -35,7 +35,7 @@ const PdsProgress = class {
35
35
  const normalizedFillColor = normalizeColorValue(this.fillColor);
36
36
  const hostClass = this.animated ? { 'is-animated': this.animated } : '';
37
37
  this.hostKeeper.record(hostClass);
38
- return (h(Host, { key: '5573a5c48eee2f7968835db92afdaebb73c1b85e', class: hostClass }, h("div", { key: 'bb5cf260495be798f4272673884336022c28441e', class: "pds-progress" }, h("label", { key: '017efa649ada73ec724b930e06bbf1ab19a18f61', class: "pds-progress__label", htmlFor: this.componentId }, this.label), h("progress", { key: 'e648d910b072b7b2ca1c4a92c0832bf6e2ef5406', id: this.componentId, max: "100", style: normalizedFillColor ? { '--color-progress-fill': normalizedFillColor } : {}, value: this.percent })), this.showPercent && h("div", { key: '1f9f1733ff2cd6e2ec81e9a46759ff451cf158f7', class: "pds-progress__percentage" }, this.percent, "%")));
38
+ return (h(Host, { key: 'a224e1e9bc50433553ab8bf4b0d772f01148ee76', class: hostClass }, h("div", { key: '261742044f3d68c204cbf640cc4447eb6d74df11', class: "pds-progress" }, h("label", { key: 'd686bdc6ab450bf8c14dd56077525a3139593f46', class: "pds-progress__label", htmlFor: this.componentId }, this.label), h("progress", { key: 'c716e977a952a628aec600fa680aa9c3b8d0e996', id: this.componentId, max: "100", style: normalizedFillColor ? { '--color-progress-fill': normalizedFillColor } : {}, value: this.percent })), this.showPercent && h("div", { key: '44176a580b435f69993be4a60ee2e888b87e10fb', class: "pds-progress__percentage" }, this.percent, "%")));
39
39
  }
40
40
  get el() { return getElement(this); }
41
41
  };
@@ -1,5 +1,5 @@
1
- import { r as registerInstance, h, H as Host } from './index-2HMD-zUO.js';
2
- import './keep-hydrated-Dv7ssOTc.js';
1
+ import { r as registerInstance, h, H as Host } from './index-Cw9J31qd.js';
2
+ import './keep-hydrated-BLG6RDBt.js';
3
3
 
4
4
  const pdsPropertyCss = () => `:host{color:var(--pine-color-text-message);font:var(--pine-typography-body-medium)}`;
5
5
 
@@ -12,7 +12,7 @@ const PdsProperty = class {
12
12
  this.icon = 'star';
13
13
  }
14
14
  render() {
15
- return (h(Host, { key: '0f6195faaaf3adb11ad14f09a36c78f94e2bdf65', id: this.componentId }, h("pds-box", { key: '0a9670c0e38065f5fbe035b81703e21155396ff8', "align-items": "center", gap: "xs" }, h("pds-icon", { key: '13b497e8670bc5210a752b8c24b9fd6397b1a8c9', icon: this.icon, size: "var(--pine-dimension-sm)", "aria-hidden": "true" }), h("slot", { key: 'a9b3cf5fd830b7551f68866a62341670f8b61b34' }))));
15
+ return (h(Host, { key: 'd599b62be4bacf1d89afcc26b14fc93bdc9bb3a4', id: this.componentId }, h("pds-box", { key: 'd7f80f6598615c761d672893c8acab09bd9ea33f', "align-items": "center", gap: "xs" }, h("pds-icon", { key: '15a6a6545c2cd2332bd830451106b7b08adc39ff', icon: this.icon, size: "var(--pine-dimension-sm)", "aria-hidden": "true" }), h("slot", { key: '4e5661563b99ec56189447faabcdd1ae631159b2' }))));
16
16
  }
17
17
  };
18
18
  PdsProperty.style = pdsPropertyCss();
@@ -1,7 +1,7 @@
1
- import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-2HMD-zUO.js';
1
+ import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-Cw9J31qd.js';
2
2
  import { m as messageId } from './form-BuRbS7Hp.js';
3
- import { b as danger } from './index-DxI-61GK.js';
4
- import './keep-hydrated-Dv7ssOTc.js';
3
+ import { b as danger } from './index-BJXk71tO.js';
4
+ import './keep-hydrated-BLG6RDBt.js';
5
5
 
6
6
  const pdsRadioGroupCss = () => `.sc-pds-radio-group-h{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--pine-dimension-sm)}.is-invalid.sc-pds-radio-group-h .pds-radio-group__message--error.sc-pds-radio-group{color:var(--pine-color-text-message-danger)}.pds-radio-group__label.sc-pds-radio-group{color:var(--pine-color-text-label);font:var(--pine-typography-heading-6);font-weight:var(--pine-font-weight-medium);letter-spacing:var(--pine-letter-spacing-heading-6)}.pds-radio-group__radios.sc-pds-radio-group{display:-ms-flexbox;display:flex;gap:var(--pds-radio-group-gap, var(--pine-dimension-xs))}.pds-radio-group__radios--row.sc-pds-radio-group{-ms-flex-align:start;align-items:flex-start;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.pds-radio-group__radios--column.sc-pds-radio-group{-ms-flex-direction:column;flex-direction:column}.pds-radio-group__message.sc-pds-radio-group{color:var(--pine-color-text-message);font:var(--pine-typography-body);width:100%}.pds-radio-group__message--error.sc-pds-radio-group{display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}.pds-radio-group__message--error.sc-pds-radio-group pds-icon.sc-pds-radio-group{-webkit-margin-before:var(--pine-dimension-050);margin-block-start:var(--pine-dimension-050)}`;
7
7
 
@@ -163,13 +163,13 @@ const PdsRadioGroup = class {
163
163
  render() {
164
164
  const gapValue = this.getGapValue();
165
165
  const ariaDescribedBy = this.getAriaDescribedBy();
166
- return (h(Host, { key: '9dc78eb36bbc1b872f4320203dbbc64e43816ebf', class: this.classNames(), id: this._groupId, role: "group", "aria-describedby": ariaDescribedBy, style: {
166
+ return (h(Host, { key: 'bf8063c1a99e272bb3f6bc647998a6ef103f8a71', class: this.classNames(), id: this._groupId, role: "group", "aria-describedby": ariaDescribedBy, style: {
167
167
  '--pds-radio-group-gap': gapValue,
168
- } }, this.groupLabel && (h("div", { key: '7b6f95608dcf356b141ef5d590ff3070f83b5975', class: "pds-radio-group__label" }, this.groupLabel)), h("div", { key: '6e1a634c9b81ca3f3bbbe9c6590bcd4efc97e6ea', class: {
168
+ } }, this.groupLabel && (h("div", { key: '8564ed3f8f99cdc1a0e5b189aacc6960923eb5f7', class: "pds-radio-group__label" }, this.groupLabel)), h("div", { key: '2309c9373790182cde030c1dbda88fa3bdcaaf12', class: {
169
169
  'pds-radio-group__radios': true,
170
170
  'pds-radio-group__radios--row': this.direction === 'row',
171
171
  'pds-radio-group__radios--column': this.direction === 'column',
172
- } }, h("slot", { key: 'b5b16148f3c77d425a50b7ada8a822e9919ef5c5', onSlotchange: () => this.updateChildRadios() })), this.helperMessage && (h("div", { key: 'ca6b98f926b8d7a53fda630170ac037c99f5ee85', class: "pds-radio-group__message", id: messageId(this._groupId, 'helper') }, this.helperMessage)), this.errorMessage && (h("div", { key: '37b57e2622370364e619ea090712a7b79fe79501', class: "pds-radio-group__message pds-radio-group__message--error", id: messageId(this._groupId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: '6a362d048a67312b1b227f71cc4b8f821ae0817e', icon: danger, size: "small" }), this.errorMessage))));
172
+ } }, h("slot", { key: 'd88dde3c631e25c01bc7b6d3ef5d517255fabd1a', onSlotchange: () => this.updateChildRadios() })), this.helperMessage && (h("div", { key: 'a229214ed01663b0fc34f35e27c7148b4eb412ab', class: "pds-radio-group__message", id: messageId(this._groupId, 'helper') }, this.helperMessage)), this.errorMessage && (h("div", { key: 'dc092f2e6dbef0cb369cf00a6eccf9a095a0313d', class: "pds-radio-group__message pds-radio-group__message--error", id: messageId(this._groupId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: 'd242da328731e55fa52d8e624fdfc750bfa6cce4', icon: danger, size: "small" }), this.errorMessage))));
173
173
  }
174
174
  get el() { return getElement(this); }
175
175
  static get watchers() { return {
@@ -1,8 +1,8 @@
1
- import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-2HMD-zUO.js';
2
- import { H as HostStylingKeeper } from './attributes-CF5K2pxn.js';
1
+ import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-Cw9J31qd.js';
2
+ import { H as HostStylingKeeper } from './attributes-WXw_I_uJ.js';
3
3
  import { e as exposeTypeProperty, a as assignDescription, m as messageId } from './form-BuRbS7Hp.js';
4
- import { b as danger } from './index-DxI-61GK.js';
5
- import './keep-hydrated-Dv7ssOTc.js';
4
+ import { b as danger } from './index-BJXk71tO.js';
5
+ import './keep-hydrated-BLG6RDBt.js';
6
6
 
7
7
  const labelCss = () => `.sc-pds-radio-h{display:inline-block}[aria-disabled=true].sc-pds-radio-h label.sc-pds-radio{color:var(--pine-color-text-label-disabled)}[aria-readonly=true].sc-pds-radio-h label.sc-pds-radio{color:var(--pine-color-text-label-readonly)}label.sc-pds-radio{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing)}`;
8
8
 
@@ -102,13 +102,13 @@ const PdsRadio = class {
102
102
  }
103
103
  render() {
104
104
  const renderLabelAndMessages = () => [
105
- h("label", { htmlFor: this.componentId, key: `${this.componentId}-label` }, h("input", { key: 'add893cd82f79b9398589bd5c0a72d5ae4a90475', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, type: "radio", id: this.componentId, name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onChange: this.handleRadioChange, class: this.hasImage() ? 'visually-hidden' : '' }), h("span", { key: 'b58eed8681d1932397d38ffe82515987e6486e08', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)),
105
+ h("label", { htmlFor: this.componentId, key: `${this.componentId}-label` }, h("input", { key: 'ccd618855831bcee309e815f2cd2712fd4e8fe1f', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, type: "radio", id: this.componentId, name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onChange: this.handleRadioChange, class: this.hasImage() ? 'visually-hidden' : '' }), h("span", { key: '2e372a880c28f48fb804bac2518208082c141fad', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)),
106
106
  this.helperMessage && (h("div", { key: `${this.componentId}-helper`, class: 'pds-radio__message', id: messageId(this.componentId, 'helper') }, this.helperMessage)),
107
- this.errorMessage && (h("div", { key: `${this.componentId}-error`, class: `pds-radio__message pds-radio__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: '7374924219e59eab46a7ced9e7062c3e674b4451', icon: danger, size: "small" }), this.errorMessage))
107
+ this.errorMessage && (h("div", { key: `${this.componentId}-error`, class: `pds-radio__message pds-radio__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: '889d502575f6a162f450b6b58d76a6f6f1c74e4b', icon: danger, size: "small" }), this.errorMessage))
108
108
  ];
109
109
  const hostClass = this.classNames();
110
110
  this.hostKeeper.record(hostClass);
111
- return (h(Host, { key: '24269923f168d1d39ebfc1994619736f0dc8087a', class: hostClass }, this.hasImage() && (h("div", { key: '74a72bef89aa012047cbf3a1744fcd33f13bb464', class: "pds-radio__image-container", part: "image-container" }, h("slot", { key: '99dbcfdac86cb7c012fd44eab607217e21304bab', name: "image", onSlotchange: () => (this._hasImage = this.hasImageSlot()) }))), this.hasImage() ? (h("div", { class: "pds-radio__content-wrapper" }, renderLabelAndMessages())) : (renderLabelAndMessages())));
111
+ return (h(Host, { key: '374003032b28407581a55f1fb0a304c49acf3c16', class: hostClass }, this.hasImage() && (h("div", { key: '7eeb516267de1afcfa85fc7567999db488c2f4f5', class: "pds-radio__image-container", part: "image-container" }, h("slot", { key: 'a312fea06f0c015bffab3bb392ff04d4913fd1c0', name: "image", onSlotchange: () => (this._hasImage = this.hasImageSlot()) }))), this.hasImage() ? (h("div", { class: "pds-radio__content-wrapper" }, renderLabelAndMessages())) : (renderLabelAndMessages())));
112
112
  }
113
113
  get el() { return getElement(this); }
114
114
  };
@@ -1,6 +1,6 @@
1
- import { r as registerInstance, h, H as Host, a as getElement } from './index-2HMD-zUO.js';
2
- import { H as HostStylingKeeper } from './attributes-CF5K2pxn.js';
3
- import './keep-hydrated-Dv7ssOTc.js';
1
+ import { r as registerInstance, h, H as Host, a as getElement } from './index-Cw9J31qd.js';
2
+ import { H as HostStylingKeeper } from './attributes-WXw_I_uJ.js';
3
+ import './keep-hydrated-BLG6RDBt.js';
4
4
 
5
5
  const pdsRowCss = () => `:host{--row-gap-y:var(--pine-dimension-125);--row-gap-x:var(--pine-dimension-125);display:block;-webkit-margin-after:calc(var(--row-gap-y) * -1);margin-block-end:calc(var(--row-gap-y) * -1);-webkit-margin-before:calc(var(--row-gap-y) * -1);margin-block-start:calc(var(--row-gap-y) * -1);-webkit-margin-end:calc(var(--row-gap-x) * -0.5);margin-inline-end:calc(var(--row-gap-x) * -0.5);-webkit-margin-start:calc(var(--row-gap-x) * -0.5);margin-inline-start:calc(var(--row-gap-x) * -0.5)}.pds-row{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-margin-after:calc(var(--row-gap-y) * -1);margin-block-end:calc(var(--row-gap-y) * -1);-webkit-margin-before:calc(var(--row-gap-y) * -1);margin-block-start:calc(var(--row-gap-y) * -1);-webkit-margin-end:calc(var(--row-gap-x) * -1);margin-inline-end:calc(var(--row-gap-x) * -1);-webkit-margin-start:calc(var(--row-gap-x) * -1);margin-inline-start:calc(var(--row-gap-x) * -1)}@layer layout{.pds-row>*{-webkit-padding-after:calc(var(--row-gap-y));padding-block-end:calc(var(--row-gap-y));-webkit-padding-before:calc(var(--row-gap-y));padding-block-start:calc(var(--row-gap-y));-webkit-padding-end:calc(var(--row-gap-x));padding-inline-end:calc(var(--row-gap-x));-webkit-padding-start:calc(var(--row-gap-x));padding-inline-start:calc(var(--row-gap-x))}}.pds-row--no-wrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.pds-row--border{border:var(--pine-border)}.pds-justify-content-start{-ms-flex-pack:start;justify-content:start}.pds-justify-content-center{-ms-flex-pack:center;justify-content:center}.pds-justify-content-end{-ms-flex-pack:end;justify-content:end}.pds-justify-content-space-between{-ms-flex-pack:justify;justify-content:space-between}.pds-justify-content-space-around{-ms-flex-pack:distribute;justify-content:space-around}.pds-justify-content-space-evenly{-ms-flex-pack:space-evenly;justify-content:space-evenly}.pds-align-items-start{-ms-flex-align:start;align-items:start}.pds-align-items-center{-ms-flex-align:center;align-items:center}.pds-align-items-end{-ms-flex-align:end;align-items:end}.pds-align-items-stretch{-ms-flex-align:stretch;align-items:stretch}.pds-align-items-baseline{-ms-flex-align:baseline;align-items:baseline}`;
6
6
 
@@ -69,7 +69,7 @@ const PdsRow = class {
69
69
  'min-height': this.minHeight,
70
70
  }));
71
71
  this.hostKeeper.record(`pds-row ${rowClasses}`, rowInlineStyles);
72
- return h(Host, { key: 'ee3a32ae1376919c7c2d1fcf186a1b7c272ee085', class: `pds-row ${rowClasses}`, style: rowInlineStyles });
72
+ return h(Host, { key: '78a505fef7132f9545916155d2485a6d2df8f4a5', class: `pds-row ${rowClasses}`, style: rowInlineStyles });
73
73
  }
74
74
  get el() { return getElement(this); }
75
75
  };
@@ -1,8 +1,8 @@
1
- import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-2HMD-zUO.js';
2
- import { H as HostStylingKeeper } from './attributes-CF5K2pxn.js';
1
+ import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-Cw9J31qd.js';
2
+ import { H as HostStylingKeeper } from './attributes-WXw_I_uJ.js';
3
3
  import { e as exposeTypeProperty, m as messageId, i as isSpecTest, a as assignDescription } from './form-BuRbS7Hp.js';
4
- import { b as danger, e as enlarge } from './index-DxI-61GK.js';
5
- import './keep-hydrated-Dv7ssOTc.js';
4
+ import { b as danger, e as enlarge } from './index-BJXk71tO.js';
5
+ import './keep-hydrated-BLG6RDBt.js';
6
6
 
7
7
  const pdsSelectTokensCss = () => `:host{--pine-select-color-background-danger:var(--pine-color-red-050)}`;
8
8
 
@@ -249,7 +249,7 @@ const PdsSelect = class {
249
249
  'has-action': hasAction && !this.hideLabel ? 'true' : null,
250
250
  };
251
251
  this.hostKeeper.record(hostClass, {}, hostAttributes);
252
- return (h(Host, Object.assign({ key: 'c99bfc000ad351298e154554a8b22635b1abb718', class: hostClass }, hostAttributes), h("div", { key: '35374b150cbef745c6a6068ba5a2fde0803c0314', class: "pds-select" }, !this.hideLabel && (h("div", { key: 'a3b9bae451c5c384606790a29bf8ab5fc70427c0', class: "pds-select__label-wrapper" }, h("label", { key: '80d7740a05a6d3cce6d51224169eb6c2501c4896', htmlFor: this.componentId }, h("span", { key: 'a51c02d7c84f75bb168889dab50cae807271c63d', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), hasAction && this.renderAction())), h("select", { key: '11444dad795bd02c008252a60e701125861e4af0', "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-label": this.hideLabel ? this.label : undefined, autocomplete: this.autocomplete || undefined, class: "pds-select__field", disabled: this.disabled, id: this.componentId, multiple: this.multiple, name: this.name, onBlur: this.onBlur, onChange: this.onSelectUpdate, onFocus: this.onFocus, onKeyDown: this.onKeyDown, part: "select", required: this.required, ref: (el) => (this.selectEl = el) }), h("div", { key: 'ce54fa1df287d96a7503bb19cd2ba6c74a6da638', "aria-hidden": "true", class: "hidden", ref: (el) => (this.slotContainer = el) }, h("slot", { key: '22c55e78999076a37d43fb708dabc7379dd4cee3', onSlotchange: this.handleSlotChange })), this.renderMessages(), !this.multiple && h("pds-icon", { key: '45628074fbcdb259b8bba42299082423309a6968', "aria-hidden": "true", class: "pds-select__select-icon", icon: enlarge }))));
252
+ return (h(Host, Object.assign({ key: '343ed671e67dd1d6f9eb284b07e06d59877c64e9', class: hostClass }, hostAttributes), h("div", { key: '650aed0869b02f658feb16ee99f17e1cd22e5a8e', class: "pds-select" }, !this.hideLabel && (h("div", { key: '74739461acbea33c92279ec8ec9042d6af1773c1', class: "pds-select__label-wrapper" }, h("label", { key: '1ad96ffd243000358edfbd79054ee770e1ba97d3', htmlFor: this.componentId }, h("span", { key: 'b832868db4f9cd4fd2f8313054d2e96e106189ab', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), hasAction && this.renderAction())), h("select", { key: 'e83c1a1a0a5646fc8abf9e50bc374f52b56be773', "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-label": this.hideLabel ? this.label : undefined, autocomplete: this.autocomplete || undefined, class: "pds-select__field", disabled: this.disabled, id: this.componentId, multiple: this.multiple, name: this.name, onBlur: this.onBlur, onChange: this.onSelectUpdate, onFocus: this.onFocus, onKeyDown: this.onKeyDown, part: "select", required: this.required, ref: (el) => (this.selectEl = el) }), h("div", { key: 'a34880120b88124b5122350856d023368f96abf7', "aria-hidden": "true", class: "hidden", ref: (el) => (this.slotContainer = el) }, h("slot", { key: 'df6abaf6a630761a32b263813181ff3453757e0d', onSlotchange: this.handleSlotChange })), this.renderMessages(), !this.multiple && h("pds-icon", { key: 'f9197284ef9965d693242a652b583f48bc3d7097', "aria-hidden": "true", class: "pds-select__select-icon", icon: enlarge }))));
253
253
  }
254
254
  static get formAssociated() { return true; }
255
255
  get el() { return getElement(this); }