@pine-ds/core 4.7.2 → 4.8.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 (224) hide show
  1. package/components/pds-avatar.js +1 -1
  2. package/components/pds-button2.js +1 -1
  3. package/components/pds-checkbox2.js +1 -1
  4. package/components/pds-chip2.js +1 -1
  5. package/components/pds-combobox.js +1 -1
  6. package/components/pds-dropdown-menu-item.js +1 -1
  7. package/components/pds-dropdown-menu.js +1 -1
  8. package/components/pds-modal-content.js +1 -1
  9. package/components/pds-modal2.js +1 -1
  10. package/components/pds-multiselect.js +1 -1
  11. package/components/pds-popover.js +1 -1
  12. package/components/pds-radio-group.js +1 -1
  13. package/components/pds-radio.js +1 -1
  14. package/components/pds-switch.js +1 -1
  15. package/components/pds-table-head-cell2.js +1 -1
  16. package/components/pds-textarea.js +1 -1
  17. package/components/pds-toast.js +1 -1
  18. package/components/truncation-tooltip.js +1 -1
  19. package/dist/cjs/{index-5Azb8EQG.js → index-Do70atou.js} +1 -1
  20. package/dist/cjs/loader.cjs.js +1 -1
  21. package/dist/cjs/pds-accordion.cjs.entry.js +1 -1
  22. package/dist/cjs/pds-avatar.cjs.entry.js +3 -3
  23. package/dist/cjs/pds-button.cjs.entry.js +24 -21
  24. package/dist/cjs/pds-checkbox.cjs.entry.js +2 -2
  25. package/dist/cjs/pds-chip.cjs.entry.js +4 -4
  26. package/dist/cjs/pds-combobox.cjs.entry.js +4 -4
  27. package/dist/cjs/pds-copytext.cjs.entry.js +2 -2
  28. package/dist/cjs/pds-datepicker.cjs.entry.js +1 -1
  29. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +31 -2
  30. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +4 -4
  31. package/dist/cjs/pds-filter.cjs.entry.js +1 -1
  32. package/dist/cjs/pds-input.cjs.entry.js +1 -1
  33. package/dist/cjs/pds-link.cjs.entry.js +1 -1
  34. package/dist/cjs/pds-modal-content.cjs.entry.js +32 -30
  35. package/dist/cjs/pds-modal.cjs.entry.js +4 -4
  36. package/dist/cjs/pds-multiselect.cjs.entry.js +6 -6
  37. package/dist/cjs/pds-popover.cjs.entry.js +187 -11
  38. package/dist/cjs/pds-radio-group.cjs.entry.js +2 -2
  39. package/dist/cjs/pds-radio.cjs.entry.js +3 -3
  40. package/dist/cjs/pds-select.cjs.entry.js +1 -1
  41. package/dist/cjs/pds-sortable-item.cjs.entry.js +1 -1
  42. package/dist/cjs/pds-switch.cjs.entry.js +2 -2
  43. package/dist/cjs/pds-table-cell.cjs.entry.js +1 -1
  44. package/dist/cjs/pds-table-head-cell.cjs.entry.js +2 -2
  45. package/dist/cjs/pds-text.cjs.entry.js +1 -1
  46. package/dist/cjs/pds-textarea.cjs.entry.js +2 -2
  47. package/dist/cjs/pds-toast.cjs.entry.js +1 -1
  48. package/dist/cjs/pine-core.cjs.js +1 -1
  49. package/dist/cjs/{truncation-tooltip-DO9xli2e.js → truncation-tooltip-BtuiXLV0.js} +31 -6
  50. package/dist/collection/components/pds-avatar/pds-avatar.js +2 -2
  51. package/dist/collection/components/pds-button/pds-button.js +24 -22
  52. package/dist/collection/components/pds-button/stories/pds-button.stories.js +3 -3
  53. package/dist/collection/components/pds-checkbox/pds-checkbox.js +1 -1
  54. package/dist/collection/components/pds-chip/pds-chip.js +2 -2
  55. package/dist/collection/components/pds-combobox/pds-combobox.js +4 -4
  56. package/dist/collection/components/pds-datepicker/stories/pds-datepicker.stories.js +1 -1
  57. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.css +8 -0
  58. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +58 -6
  59. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +4 -4
  60. package/dist/collection/components/pds-dropdown-menu/stories/pds-dropdown-menu.stories.js +39 -0
  61. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +32 -30
  62. package/dist/collection/components/pds-modal/pds-modal.js +4 -4
  63. package/dist/collection/components/pds-multiselect/pds-multiselect.js +5 -5
  64. package/dist/collection/components/pds-popover/pds-popover.js +240 -11
  65. package/dist/collection/components/pds-popover/stories/pds-popover.stories.js +31 -0
  66. package/dist/collection/components/pds-radio/pds-radio.js +2 -2
  67. package/dist/collection/components/pds-radio-group/pds-radio-group.js +1 -1
  68. package/dist/collection/components/pds-switch/pds-switch.js +1 -1
  69. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +1 -1
  70. package/dist/collection/components/pds-table/stories/pds-table.stories.js +1 -1
  71. package/dist/collection/components/pds-text/stories/pds-text.stories.js +1 -1
  72. package/dist/collection/components/pds-textarea/pds-textarea.js +1 -1
  73. package/dist/collection/components/pds-toast/pds-toast.js +1 -1
  74. package/dist/collection/utils/truncation-tooltip.js +31 -6
  75. package/dist/docs.json +124 -7
  76. package/dist/esm/{index-BJXk71tO.js → index-BWDu62Mo.js} +1 -1
  77. package/dist/esm/loader.js +1 -1
  78. package/dist/esm/pds-accordion.entry.js +1 -1
  79. package/dist/esm/pds-avatar.entry.js +3 -3
  80. package/dist/esm/pds-button.entry.js +24 -21
  81. package/dist/esm/pds-checkbox.entry.js +2 -2
  82. package/dist/esm/pds-chip.entry.js +4 -4
  83. package/dist/esm/pds-combobox.entry.js +4 -4
  84. package/dist/esm/pds-copytext.entry.js +2 -2
  85. package/dist/esm/pds-datepicker.entry.js +1 -1
  86. package/dist/esm/pds-dropdown-menu-item.entry.js +31 -2
  87. package/dist/esm/pds-dropdown-menu.entry.js +4 -4
  88. package/dist/esm/pds-filter.entry.js +1 -1
  89. package/dist/esm/pds-input.entry.js +1 -1
  90. package/dist/esm/pds-link.entry.js +1 -1
  91. package/dist/esm/pds-modal-content.entry.js +32 -30
  92. package/dist/esm/pds-modal.entry.js +4 -4
  93. package/dist/esm/pds-multiselect.entry.js +6 -6
  94. package/dist/esm/pds-popover.entry.js +187 -11
  95. package/dist/esm/pds-radio-group.entry.js +2 -2
  96. package/dist/esm/pds-radio.entry.js +3 -3
  97. package/dist/esm/pds-select.entry.js +1 -1
  98. package/dist/esm/pds-sortable-item.entry.js +1 -1
  99. package/dist/esm/pds-switch.entry.js +2 -2
  100. package/dist/esm/pds-table-cell.entry.js +1 -1
  101. package/dist/esm/pds-table-head-cell.entry.js +2 -2
  102. package/dist/esm/pds-text.entry.js +1 -1
  103. package/dist/esm/pds-textarea.entry.js +2 -2
  104. package/dist/esm/pds-toast.entry.js +1 -1
  105. package/dist/esm/pine-core.js +1 -1
  106. package/dist/esm/{truncation-tooltip-DRXsdKk1.js → truncation-tooltip-FaW67DiY.js} +31 -6
  107. package/dist/esm-es5/loader.js +1 -1
  108. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  109. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  110. package/dist/esm-es5/pds-button.entry.js +1 -1
  111. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  112. package/dist/esm-es5/pds-chip.entry.js +1 -1
  113. package/dist/esm-es5/pds-combobox.entry.js +1 -1
  114. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  115. package/dist/esm-es5/pds-datepicker.entry.js +1 -1
  116. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  117. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  118. package/dist/esm-es5/pds-filter.entry.js +1 -1
  119. package/dist/esm-es5/pds-input.entry.js +1 -1
  120. package/dist/esm-es5/pds-link.entry.js +1 -1
  121. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  122. package/dist/esm-es5/pds-modal.entry.js +1 -1
  123. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  124. package/dist/esm-es5/pds-popover.entry.js +1 -1
  125. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  126. package/dist/esm-es5/pds-radio.entry.js +1 -1
  127. package/dist/esm-es5/pds-select.entry.js +1 -1
  128. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  129. package/dist/esm-es5/pds-switch.entry.js +1 -1
  130. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  131. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  132. package/dist/esm-es5/pds-text.entry.js +1 -1
  133. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  134. package/dist/esm-es5/pds-toast.entry.js +1 -1
  135. package/dist/esm-es5/pine-core.js +1 -1
  136. package/dist/esm-es5/truncation-tooltip-FaW67DiY.js +1 -0
  137. package/dist/pine-core/{p-e836f3ec.system.entry.js → p-00a50de5.system.entry.js} +2 -2
  138. package/dist/pine-core/{p-1437585e.system.entry.js → p-047433a4.system.entry.js} +1 -1
  139. package/dist/pine-core/{p-7fa66cad.entry.js → p-089c3e60.entry.js} +1 -1
  140. package/dist/pine-core/{p-341c38f1.system.entry.js → p-0af0d752.system.entry.js} +1 -1
  141. package/dist/pine-core/{p-3a959459.system.entry.js → p-121612a7.system.entry.js} +1 -1
  142. package/dist/pine-core/{p-cde8eb81.entry.js → p-138b278b.entry.js} +1 -1
  143. package/dist/pine-core/{p-cfd012d4.entry.js → p-158b2f51.entry.js} +1 -1
  144. package/dist/pine-core/p-17f97f1a.entry.js +1 -0
  145. package/dist/pine-core/{p-5c90091e.system.entry.js → p-19ba2788.system.entry.js} +1 -1
  146. package/dist/pine-core/{p-355e4cf9.entry.js → p-25ea48d1.entry.js} +1 -1
  147. package/dist/pine-core/{p-c81d8ac8.entry.js → p-295f64ea.entry.js} +1 -1
  148. package/dist/pine-core/{p-576cf904.system.entry.js → p-29cd4113.system.entry.js} +1 -1
  149. package/dist/pine-core/{p-1ee86d87.system.entry.js → p-332590c7.system.entry.js} +1 -1
  150. package/dist/pine-core/p-36cb4bf6.entry.js +1 -0
  151. package/dist/pine-core/{p-080cb087.system.entry.js → p-3c977d8d.system.entry.js} +1 -1
  152. package/dist/pine-core/p-3d51891a.entry.js +1 -0
  153. package/dist/pine-core/{p-72865997.entry.js → p-44f546ae.entry.js} +1 -1
  154. package/dist/pine-core/{p-b60ac7eb.system.entry.js → p-4bfc8b3e.system.entry.js} +1 -1
  155. package/dist/pine-core/p-5833a072.system.entry.js +1 -0
  156. package/dist/pine-core/p-5cfd4d41.system.entry.js +1 -0
  157. package/dist/pine-core/{p-f2c253d8.entry.js → p-62433f32.entry.js} +1 -1
  158. package/dist/pine-core/{p-ebd0bff2.entry.js → p-631f5bcc.entry.js} +1 -1
  159. package/dist/pine-core/p-717323e4.entry.js +1 -0
  160. package/dist/pine-core/{p-e7a95a49.system.entry.js → p-719542e1.system.entry.js} +1 -1
  161. package/dist/pine-core/p-73f931a1.entry.js +1 -0
  162. package/dist/pine-core/{p-f77905aa.system.entry.js → p-884cb31d.system.entry.js} +1 -1
  163. package/dist/pine-core/{p-4435fff6.system.entry.js → p-8987fd45.system.entry.js} +1 -1
  164. package/dist/pine-core/{p-02088776.entry.js → p-8c588ca0.entry.js} +1 -1
  165. package/dist/pine-core/p-8e3ff75d.entry.js +1 -0
  166. package/dist/pine-core/{p-bd26a5e8.entry.js → p-90d5edc6.entry.js} +1 -1
  167. package/dist/pine-core/p-91f60173.entry.js +1 -0
  168. package/dist/pine-core/{p-258770cf.system.entry.js → p-9265497e.system.entry.js} +1 -1
  169. package/dist/pine-core/p-99fdf70f.entry.js +1 -0
  170. package/dist/pine-core/{p-0a84d220.entry.js → p-9aaedded.entry.js} +1 -1
  171. package/dist/pine-core/p-9df5e204.entry.js +1 -0
  172. package/dist/pine-core/p-CuSNnuFu.system.js +1 -1
  173. package/dist/pine-core/p-D04W0cAO.system.js +1 -0
  174. package/dist/pine-core/{p-6d603d16.system.entry.js → p-acca5f7b.system.entry.js} +1 -1
  175. package/dist/pine-core/{p-a19cd59c.entry.js → p-aff411d0.entry.js} +1 -1
  176. package/dist/pine-core/{p-bb73ad66.entry.js → p-b182f806.entry.js} +1 -1
  177. package/dist/pine-core/{p-01aa382c.system.entry.js → p-b9d145f8.system.entry.js} +1 -1
  178. package/dist/pine-core/p-bdac8f2b.entry.js +1 -0
  179. package/dist/pine-core/{p-aa032a5e.system.entry.js → p-be9b6e63.system.entry.js} +1 -1
  180. package/dist/pine-core/{p-ff3de72e.entry.js → p-c483997a.entry.js} +1 -1
  181. package/dist/pine-core/p-c4e12f0a.entry.js +1 -0
  182. package/dist/pine-core/{p-e8cb76e8.entry.js → p-c97bfac9.entry.js} +1 -1
  183. package/dist/pine-core/{p-bd67156b.system.entry.js → p-ca4ee736.system.entry.js} +1 -1
  184. package/dist/pine-core/p-cccfe60f.system.entry.js +1 -0
  185. package/dist/pine-core/{p-c5c9ed36.system.entry.js → p-d3d69ca4.system.entry.js} +1 -1
  186. package/dist/pine-core/{p-f0d24298.system.entry.js → p-ea340c55.system.entry.js} +1 -1
  187. package/dist/pine-core/{p-88ff1604.entry.js → p-ea8f5d29.entry.js} +1 -1
  188. package/dist/pine-core/{p-d8570b4b.system.entry.js → p-eaf85be6.system.entry.js} +1 -1
  189. package/dist/pine-core/{p-fc25b956.system.entry.js → p-ecc7a531.system.entry.js} +1 -1
  190. package/dist/pine-core/{p-cfc52b95.system.entry.js → p-ee0e30bf.system.entry.js} +1 -1
  191. package/dist/pine-core/{p-e803f629.system.entry.js → p-ef13f665.system.entry.js} +1 -1
  192. package/dist/pine-core/{p-97d0b89e.system.entry.js → p-f3067d90.system.entry.js} +1 -1
  193. package/dist/pine-core/{p-JtdHT_W5.js → p-jrkGLEPe.js} +1 -1
  194. package/dist/pine-core/pine-core.esm.js +1 -1
  195. package/dist/types/components/pds-button/pds-button.d.ts +3 -4
  196. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.d.ts +13 -3
  197. package/dist/types/components/pds-modal/pds-modal-content/pds-modal-content.d.ts +2 -0
  198. package/dist/types/components/pds-popover/pds-popover.d.ts +43 -1
  199. package/dist/types/components.d.ts +43 -10
  200. package/dist/types/utils/truncation-tooltip.d.ts +4 -4
  201. package/dist/types/utils/types.d.ts +1 -0
  202. package/dist/vscode.html-data.json +50 -7
  203. package/hydrate/index.js +340 -103
  204. package/hydrate/index.mjs +340 -103
  205. package/package.json +2 -2
  206. package/dist/esm-es5/truncation-tooltip-DRXsdKk1.js +0 -1
  207. package/dist/pine-core/p-153ba77b.entry.js +0 -1
  208. package/dist/pine-core/p-645a482b.system.entry.js +0 -1
  209. package/dist/pine-core/p-7bf6563a.system.entry.js +0 -1
  210. package/dist/pine-core/p-80a698ae.entry.js +0 -1
  211. package/dist/pine-core/p-82cf4ec6.entry.js +0 -1
  212. package/dist/pine-core/p-8d292b48.entry.js +0 -1
  213. package/dist/pine-core/p-92ae6082.entry.js +0 -1
  214. package/dist/pine-core/p-993d1043.entry.js +0 -1
  215. package/dist/pine-core/p-a787b34a.system.entry.js +0 -1
  216. package/dist/pine-core/p-b69f04b7.entry.js +0 -1
  217. package/dist/pine-core/p-beb23781.entry.js +0 -1
  218. package/dist/pine-core/p-c36b490e.entry.js +0 -1
  219. package/dist/pine-core/p-ca0d48e8.entry.js +0 -1
  220. package/dist/pine-core/p-f474d7de.entry.js +0 -1
  221. package/dist/pine-core/p-qhdoK1Jp.system.js +0 -1
  222. /package/dist/esm-es5/{index-BJXk71tO.js → index-BWDu62Mo.js} +0 -0
  223. /package/dist/pine-core/{p-BJXk71tO.js → p-BWDu62Mo.js} +0 -0
  224. /package/dist/pine-core/{p-n3_ytl_p.system.js → p-ClDiSG97.system.js} +0 -0
package/hydrate/index.js CHANGED
@@ -5754,7 +5754,7 @@ class MockPdsModal {
5754
5754
  }; }
5755
5755
  }
5756
5756
 
5757
- /* pds-icons v10.6.0, ES Modules */
5757
+ /* pds-icons v10.7.0, ES Modules */
5758
5758
 
5759
5759
  const addCircle = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m11-5a1 1 0 0 1 1 1v3h3a1 1 0 1 1 0 2h-3v3a1 1 0 1 1-2 0v-3H8a1 1 0 1 1 0-2h3V8a1 1 0 0 1 1-1'/></svg>";
5760
5760
  const calendarSimple = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M8 1a1 1 0 0 1 1 1v1h6V2a1 1 0 1 1 2 0v1.002c.476.003.891.013 1.252.042.562.046 1.079.145 1.564.392a4 4 0 0 1 1.748 1.748c.247.485.346 1.002.392 1.564C22 7.29 22 7.954 22 8.758v8.483c0 .805 0 1.47-.044 2.01-.046.563-.145 1.08-.392 1.565a4 4 0 0 1-1.748 1.748c-.485.247-1.002.346-1.564.392-.541.044-1.206.044-2.01.044H7.758c-.805 0-1.47 0-2.01-.044-.563-.046-1.08-.145-1.565-.392a4 4 0 0 1-1.748-1.748c-.247-.485-.346-1.002-.392-1.564C2 18.71 2 18.046 2 17.242V8.758c0-.805 0-1.47.044-2.01.046-.563.145-1.08.392-1.565a4 4 0 0 1 1.748-1.748c.485-.247 1.002-.346 1.564-.392.361-.03.777-.04 1.252-.042V2a1 1 0 0 1 1-1M7 5.002c-.446.003-.795.012-1.089.036-.438.035-.663.1-.819.18a2 2 0 0 0-.874.874c-.08.156-.145.38-.18.819C4 7.361 4 7.943 4 8.8V9h16v-.2c0-.857 0-1.439-.038-1.889-.035-.438-.1-.663-.18-.819a2 2 0 0 0-.874-.874c-.156-.08-.38-.145-.819-.18A15 15 0 0 0 17 5.002V6a1 1 0 1 1-2 0V5H9v1a1 1 0 1 1-2 0zM20 11H4v6.2c0 .857 0 1.439.038 1.889.035.438.1.663.18.819a2 2 0 0 0 .874.874c.156.08.38.145.819.18C6.361 21 6.943 21 7.8 21h8.4c.857 0 1.439 0 1.889-.038.438-.035.663-.1.819-.18a2 2 0 0 0 .874-.874c.08-.156.145-.38.18-.819.037-.45.038-1.032.038-1.889z'/></svg>";
@@ -6072,7 +6072,7 @@ class PdsAvatar {
6072
6072
  // Percentage is average size of icon in relation to total avatar size
6073
6073
  // of all preset sizes found in Figma.
6074
6074
  // Used to allow icons to scale to container size
6075
- return hAsync("pds-icon", { color: "var(--pine-color-brand)", icon: userFilled, size: "33.53%" });
6075
+ return hAsync("pds-icon", { color: "var(--pine-color-brand)", icon: userFilled, size: "33.53%", "aria-hidden": "true" });
6076
6076
  };
6077
6077
  this.classNames = () => ({
6078
6078
  'pds-avatar': true,
@@ -6104,7 +6104,7 @@ class PdsAvatar {
6104
6104
  }
6105
6105
  }
6106
6106
  render() {
6107
- return (hAsync(Host, { key: '2cfbbe25504088ba2cbb3dc923680365fa78a170', id: this.componentId, class: Object.assign({}, this.classNames()) }, this.renderAvatar()));
6107
+ return (hAsync(Host, { key: 'bd60a3273eaa4e2f5fa4d0f5d0d27babd7674e09', id: this.componentId, class: Object.assign({}, this.classNames()) }, this.renderAvatar()));
6108
6108
  }
6109
6109
  get el() { return getElement(this); }
6110
6110
  static get watchers() { return {
@@ -6723,6 +6723,7 @@ class PdsBox {
6723
6723
 
6724
6724
  const pdsButtonCss = () => `:host{--pds-button-background:var(--pds-button-color-background-default);--pds-button-border:var(--pine-border);--pds-button-border-radius:var(--pine-border-radius-full);--pds-button-border-radius-start-end:var(--pine-border-radius-full);--pds-button-border-radius-start-start:var(--pine-border-radius-full);--pds-button-border-radius-end-end:var(--pine-border-radius-full);--pds-button-border-radius-end-start:var(--pine-border-radius-full);--pds-button-min-height:var(--pine-dimension-450);--pds-button-outline-offset:var(--pine-border-width);--pds-button-color-border-default:transparent;--pds-button-color-border-disabled:transparent;--pds-button-color-border-focus:transparent;--pds-button-color-border-hover:transparent;--button-loader-color:var(--pds-button-color-text-default);display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}:host([full-width=true]){display:-ms-flexbox;display:flex;width:100%}:host([full-width=true]) a,:host([full-width=true]) button{-ms-flex-pack:center;justify-content:center;width:100%}:host([full-width=true]) .pds-button__content{-ms-flex-pack:center;justify-content:center;text-align:center}:host([loading=true]){cursor:wait;pointer-events:none}:host([aria-disabled=true]){pointer-events:none}.pds-button{--pds-loader-color:var(--pds-button-color-text-default);-ms-flex-align:center;align-items:center;background-color:var(--pds-button-background, var(--pds-button-color-background-default));border:var(--pds-button-border);border-color:var(--pds-button-color-border-default);border-radius:var(--pds-button-border-radius);border-end-end-radius:var(--pds-button-border-radius-end-end, var(--pds-button-border-radius));border-end-start-radius:var(--pds-button-border-radius-end-start, var(--pds-button-border-radius));border-start-end-radius:var(--pds-button-border-radius-start-end, var(--pds-button-border-radius));border-start-start-radius:var(--pds-button-border-radius-start-start, var(--pds-button-border-radius));-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--pds-button-color-text-default);cursor:pointer;display:-ms-flexbox;display:flex;font:var(--pine-typography-body-brand-label);letter-spacing:var(--pine-letter-spacing);min-height:var(--pds-button-min-height);padding:calc(var(--pine-dimension-xs) - var(--pine-border-width)) var(--pine-dimension-sm);position:relative;text-decoration:none}.pds-button pds-icon{color:currentColor;fill:currentColor}.pds-button:hover{background-color:var(--pds-button-color-background-hover);border-color:var(--pds-button-color-border-hover)}.pds-button:focus-visible{border-color:var(--pds-button-color-border-focus);-webkit-box-shadow:var(--pds-button-box-shadow-focus, none);box-shadow:var(--pds-button-box-shadow-focus, none);outline:var(--pds-button-outline-focus, var(--pine-outline-focus));outline-offset:var(--pds-button-outline-offset)}.pds-button:disabled{background-color:var(--pds-button-color-background-disabled);border-color:var(--pds-button-color-border-disabled);color:var(--pds-button-color-text-disabled);pointer-events:none}.pds-button--primary{--pds-button-color-background-default:var(--pine-color-primary);--pds-button-color-background-hover:var(--pine-color-primary-hover);--pds-button-color-background-disabled:var(--pine-color-primary-disabled);--pds-button-color-border-default:var(--pine-color-primary);--pds-button-color-border-hover:var(--pine-color-primary-hover);--pds-button-color-text-default:var(--pine-color-text-primary);--pds-button-color-text-disabled:var(--pine-color-text-primary-disabled);--pds-button-color-outline:var(--pine-color-focus-ring);--button-loader-color:var(--pine-color-text-primary)}.pds-button--accent{--pds-button-color-background-default:var(--pine-color-accent);--pds-button-color-background-hover:var(--pine-color-accent-hover);--pds-button-color-background-disabled:var(--pine-color-accent-disabled);--pds-button-color-border-default:var(--pine-color-accent);--pds-button-color-border-hover:var(--pine-color-accent-hover);--pds-button-color-text-default:var(--pine-color-text-primary);--pds-button-color-text-disabled:var(--pine-color-text-accent-disabled);--pds-button-color-outline:var(--pine-color-focus-ring);--button-loader-color:var(--pine-color-text-primary)}.pds-button--destructive{--pds-button-color-background-default:var(--pine-color-danger);--pds-button-color-background-hover:var(--pine-color-danger-hover);--pds-button-color-background-disabled:var(--pine-color-danger-disabled);--pds-button-color-border-default:var(--pine-color-danger);--pds-button-color-border-hover:var(--pine-color-danger-hover);--pds-button-color-text-default:var(--pine-color-white);--pds-button-color-text-disabled:var(--pine-color-text-danger-disabled);--pds-button-color-outline:var(--pine-color-focus-ring-danger);--button-loader-color:var(--pine-color-text-primary)}.pds-button--destructive:focus-visible{outline-color:var(--pine-color-focus-ring-danger)}.pds-button--secondary,.pds-button--disclosure{--pds-button-color-background-default:var(--pine-color-secondary);--pds-button-color-background-hover:var(--pine-color-secondary-hover);--pds-button-color-background-disabled:var(--pine-color-secondary-disabled);--pds-button-color-border-disabled:var(--pine-color-border-disabled);--pds-button-color-border-focus:var(--pine-color-border);--pds-button-color-border-hover:var(--pine-color-border-hover);--pds-button-color-border-default:var(--pine-color-border);--pds-button-color-text-default:var(--pine-color-text-secondary);--pds-button-color-text-disabled:var(--pine-color-text-secondary-disabled);--pds-button-color-outline:var(--pine-color-focus-ring);--button-loader-color:var(--pine-color-text-secondary)}.pds-button--secondary:hover,.pds-button--disclosure:hover{background-color:var(--pine-color-secondary-hover)}.pds-button--tertiary{--pds-button-color-background-default:transparent;--pds-button-color-background-hover:var(--pine-color-background-muted);--pds-button-color-background-disabled:transparent;--pds-button-color-border-default:transparent;--pds-button-color-border-hover:var(--pine-color-background-muted);--pds-button-color-border-disabled:transparent;--pds-button-color-text-default:var(--pine-color-text-secondary);--pds-button-color-text-disabled:var(--pine-color-text-secondary-disabled);--pds-button-color-outline:var(--pine-color-focus-ring);--button-loader-color:var(--pine-color-text-secondary)}.pds-button--filter{--pds-button-color-background-default:var(--pine-color-background-container);--pds-button-color-background-hover:var(--pine-color-background-subtle);--pds-button-color-background-disabled:var(--pine-color-white);--pds-button-color-border-default:transparent;--pds-button-color-border-hover:transparent;--pds-button-color-border-focus:transparent;--pds-button-color-text-default:var(--pine-color-text-secondary);--pds-button-color-text-hover:var(--pine-color-text-hover);--pds-button-color-text-disabled:var(--pine-color-text-disabled);--pds-button-color-outline:var(--pine-color-focus-ring);--button-loader-color:var(--pine-color-text-secondary);--pds-button-border-radius:var(--pine-dimension-125);--pds-button-border-radius-start-end:var(--pine-dimension-125);--pds-button-border-radius-start-start:var(--pine-dimension-125);--pds-button-border-radius-end-end:var(--pine-dimension-125);--pds-button-border-radius-end-start:var(--pine-dimension-125);padding:var(--pine-dimension-xs) var(--pine-dimension-sm)}.pds-button--filter:disabled{background-color:var(--pine-color-background-container)}.pds-button--filter:hover{color:var(--pds-button-color-text-hover)}.pds-button--unstyled{--pds-button-color-background-default:transparent;--pds-button-color-background-hover:transparent;--pds-button-color-background-disabled:transparent;--pds-button-color-text-default:var(--pine-color-text);--button-loader-color:var(--pine-color-text);border-width:var(--pine-dimension-none);margin:var(--pine-dimension-none);min-height:auto;padding:var(--pine-dimension-none);width:inherit}.pds-button__content{-ms-flex-align:center;align-items:center;display:-ms-inline-flexbox;display:inline-flex;gap:var(--pine-dimension-xs);position:relative;width:100%}.pds-button__icon{display:-ms-inline-flexbox;display:inline-flex}.pds-button__icon--empty{display:none}.pds-button__text{-ms-flex-align:center;align-items:center;display:-ms-inline-flexbox;display:inline-flex;white-space:nowrap}.pds-button__icon--hidden,.pds-button__text--hidden{opacity:0}.pds-button__loader{height:var(--pine-dimension-250);left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);width:var(--pine-dimension-250)}.pds-button--loading{cursor:wait;pointer-events:none}.pds-button--loading .pds-button__loader pds-loader{--loader-color:var(--button-loader-color)}.pds-button--small{min-height:var(--pine-dimension-400);padding:calc(var(--pine-dimension-2xs) - var(--pine-border-width)) var(--pine-dimension-sm)}.pds-button--micro{font-size:var(--pine-font-size-085);min-height:var(--pine-dimension-300);padding:var(--pine-dimension-025) var(--pine-dimension-xs)}.pds-button--icon-only{-ms-flex-align:center;align-items:center;border-radius:var(--pine-border-radius-full);height:var(--button-dimension);-ms-flex-pack:center;justify-content:center;min-height:var(--button-dimension);min-width:var(--button-dimension);padding:var(--pine-dimension-xs);width:var(--button-dimension)}.pds-button--icon-only .pds-button__content{height:100%;-ms-flex-pack:center;justify-content:center;width:100%}.pds-button--icon-only .pds-button__text--hidden{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pds-button--icon-only.pds-button--small{height:var(--pine-dimension-400);min-height:var(--pine-dimension-400);min-width:var(--pine-dimension-400);padding:var(--pine-dimension-2xs);width:var(--pine-dimension-400)}.pds-button--icon-only.pds-button--micro{height:var(--pine-dimension-300);min-height:var(--pine-dimension-300);min-width:var(--pine-dimension-300);padding:var(--pine-dimension-3xs);width:var(--pine-dimension-300)}`;
6725
6725
 
6726
+ const FORWARDED_ARIA_ATTRIBUTES = ['aria-current', 'aria-expanded', 'aria-haspopup', 'aria-label', 'aria-pressed'];
6726
6727
  /**
6727
6728
  * @part button - Exposes the underlying button (or anchor) element for styling, including custom size, shape, or surface on icon-only placements (e.g. a compact square or inverse icon button).
6728
6729
  * @part button-content - Exposes the button content for styling.
@@ -6781,11 +6782,16 @@ class PdsButton {
6781
6782
  this.variant = 'primary';
6782
6783
  this.hasStartContent = false;
6783
6784
  this.hasEndContent = false;
6784
- this.triggerExpanded = null;
6785
- this.triggerHasPopup = null;
6786
- this.syncTriggerAria = () => {
6787
- this.triggerExpanded = this.el.getAttribute('aria-expanded');
6788
- this.triggerHasPopup = this.el.getAttribute('aria-haspopup');
6785
+ this.forwardedAria = {};
6786
+ // Copied rather than moved: frameworks and DOM morphs put host attributes back on every update,
6787
+ // so taking them off the host would fight each one.
6788
+ this.syncHostAria = () => {
6789
+ const forwarded = {};
6790
+ FORWARDED_ARIA_ATTRIBUTES.forEach((name) => (forwarded[name] = this.el.getAttribute(name)));
6791
+ // A new object always re-renders, and frameworks re-set unchanged attributes on every render of their own.
6792
+ if (FORWARDED_ARIA_ATTRIBUTES.some((name) => forwarded[name] !== this.forwardedAria[name])) {
6793
+ this.forwardedAria = forwarded;
6794
+ }
6789
6795
  this.forwardAriaControls();
6790
6796
  };
6791
6797
  this.handleStartSlotChange = (event) => {
@@ -6823,19 +6829,19 @@ class PdsButton {
6823
6829
  };
6824
6830
  }
6825
6831
  connectedCallback() {
6826
- this.syncTriggerAria();
6832
+ this.syncHostAria();
6827
6833
  if (typeof MutationObserver === 'undefined')
6828
6834
  return;
6829
- // Popovers and menus set these on the host after render, but only the inner element is announced.
6830
- this.triggerAriaObserver = new MutationObserver(this.syncTriggerAria);
6831
- this.triggerAriaObserver.observe(this.el, {
6832
- attributeFilter: ['aria-controls', 'aria-expanded', 'aria-haspopup'],
6835
+ // Consumers, popovers and menus set these on the host, often after render, but only the inner element is announced.
6836
+ this.hostAriaObserver = new MutationObserver(this.syncHostAria);
6837
+ this.hostAriaObserver.observe(this.el, {
6838
+ attributeFilter: FORWARDED_ARIA_ATTRIBUTES.concat('aria-controls'),
6833
6839
  });
6834
6840
  }
6835
6841
  disconnectedCallback() {
6836
6842
  var _a;
6837
- (_a = this.triggerAriaObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
6838
- this.triggerAriaObserver = undefined;
6843
+ (_a = this.hostAriaObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
6844
+ this.hostAriaObserver = undefined;
6839
6845
  }
6840
6846
  componentDidRender() {
6841
6847
  this.forwardAriaControls();
@@ -6953,16 +6959,13 @@ class PdsButton {
6953
6959
  }
6954
6960
  render() {
6955
6961
  // Common props for both button and anchor elements
6956
- const commonProps = {
6957
- 'aria-expanded': this.triggerExpanded,
6958
- 'aria-haspopup': this.triggerHasPopup,
6959
- class: this.classNames(),
6960
- part: 'button',
6961
- ref: (el) => (this.contentEl = el),
6962
- };
6962
+ const commonProps = Object.assign(Object.assign({}, this.forwardedAria), { class: this.classNames(), part: 'button', ref: (el) => (this.contentEl = el) });
6963
6963
  const attributes = () => {
6964
6964
  if (this.href) {
6965
- return Object.assign(Object.assign({}, commonProps), { download: this.download, href: this.disabled ? null : this.href, target: this.target });
6965
+ return Object.assign(Object.assign({}, commonProps), {
6966
+ // ARIA allows aria-pressed only on buttons, so a link never gets it.
6967
+ 'aria-pressed': null, download: this.download, href: this.disabled ? null : this.href, target: this.target
6968
+ });
6966
6969
  }
6967
6970
  return Object.assign(Object.assign({}, commonProps), { 'aria-busy': this.loading ? 'true' : null, 'aria-live': this.loading ? 'polite' : null, 'disabled': this.disabled, 'name': this.name, 'type': this.type, 'value': this.value });
6968
6971
  };
@@ -6995,8 +6998,7 @@ class PdsButton {
6995
6998
  "variant": [1],
6996
6999
  "hasStartContent": [32],
6997
7000
  "hasEndContent": [32],
6998
- "triggerExpanded": [32],
6999
- "triggerHasPopup": [32]
7001
+ "forwardedAria": [32]
7000
7002
  },
7001
7003
  "$listeners$": [[16, "keydown", "handleFormKeyDown"]],
7002
7004
  "$lazyBundleId$": "-",
@@ -7189,7 +7191,7 @@ class PdsCheckbox {
7189
7191
  this.hostKeeper.record(hostClass);
7190
7192
  return (hAsync(Host, { key: 'bbe09a5e9eb55f62b2921b09a04ddc9476a871ae', class: hostClass }, hAsync("label", { key: 'fa1856d9306eb8c0c19618ea5e2619ea20c3c51d', htmlFor: this.componentId }, hAsync("input", Object.assign({ key: '8537d97a8e69a17d0d563306dac179e393885dda', type: "checkbox", "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, id: this.componentId, indeterminate: this.indeterminate, name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onChange: this.handleCheckboxChange, onInput: this.handleInput }, this.inheritedAttributes)), hAsync("span", { key: 'e523922889c80a2d18243cb560cd855bab95803d', class: this.hideLabel ? 'visually-hidden' : '' }, hAsync("slot", { key: 'b6ff34ecbc346d254a0211bfa610823feedb486b', name: "label", onSlotchange: this.updateHasLabelSlot }), !this.hasLabelSlot && this.label)), this.helperMessage &&
7191
7193
  hAsync("div", { key: '55dcca850dff0aa93d9ba63d6827d9155ac35dab', class: 'pds-checkbox__message', id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
7192
- hAsync("div", { key: '5af843679994d29f084d41e90e41e0939c951063', class: `pds-checkbox__message pds-checkbox__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: '10f7efe5d4b252d9dea6f398eff973ba32506898', icon: danger, size: "small" }), this.errorMessage)));
7194
+ hAsync("div", { key: '5af843679994d29f084d41e90e41e0939c951063', class: `pds-checkbox__message pds-checkbox__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: '88a46a17abc1c7b3b3e90543ce8dcf38a14c878c', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage)));
7193
7195
  }
7194
7196
  static get formAssociated() { return true; }
7195
7197
  get el() { return getElement(this); }
@@ -8988,12 +8990,24 @@ function injectStyles() {
8988
8990
  function isOverflowing(el) {
8989
8991
  return el.scrollWidth > el.clientWidth;
8990
8992
  }
8993
+ /**
8994
+ * Engines without `:focus-visible` throw on the selector, so there every
8995
+ * focus counts as visible rather than none.
8996
+ */
8997
+ function isFocusVisible(el) {
8998
+ try {
8999
+ return el.matches(':focus-visible');
9000
+ }
9001
+ catch (_a) {
9002
+ return true;
9003
+ }
9004
+ }
8991
9005
  /**
8992
9006
  * Sets up automatic tooltip behavior for a truncated element.
8993
9007
  *
8994
- * When the element's text overflows, hovering or focusing the host element
8995
- * will display a tooltip showing the full text content. The tooltip is
8996
- * rendered as a portal on document.body and positioned with Floating UI.
9008
+ * When the element's text overflows, hovering the host element or giving it
9009
+ * keyboard focus will display a tooltip showing the full text content. The
9010
+ * tooltip is rendered as a portal on document.body and positioned with Floating UI.
8997
9011
  *
8998
9012
  * Also owns the element's `tabindex` while it is clipped — see syncTabIndex.
8999
9013
  *
@@ -9184,18 +9198,30 @@ function setupTruncationTooltip(options) {
9184
9198
  isHoveringPortal = false;
9185
9199
  scheduleHide();
9186
9200
  }
9187
- function handleFocusIn() {
9201
+ // Keyboard focus only: focus from a click would pin the tooltip open after the pointer leaves.
9202
+ // Events from inside a shadow root arrive retargeted to its host, so test the innermost target.
9203
+ function showForVisibleFocus(event) {
9204
+ if (!isFocusVisible(event.composedPath()[0]))
9205
+ return;
9188
9206
  isFocused = true;
9189
9207
  showTooltip();
9190
9208
  }
9209
+ // A key press after a click makes focus visible in place, with no new focusin. keyup, not
9210
+ // keydown, so Tab's focus move lands first; Escape asks to dismiss, never to reveal.
9211
+ function handleKeyUp(event) {
9212
+ if (isFocused || event.key === 'Escape')
9213
+ return;
9214
+ showForVisibleFocus(event);
9215
+ }
9191
9216
  function handleFocusOut() {
9192
9217
  isFocused = false;
9193
9218
  scheduleHide();
9194
9219
  }
9195
9220
  hostEl.addEventListener('mouseenter', handleMouseEnter);
9196
9221
  hostEl.addEventListener('mouseleave', handleMouseLeave);
9197
- focusEl.addEventListener('focusin', handleFocusIn);
9222
+ focusEl.addEventListener('focusin', showForVisibleFocus);
9198
9223
  focusEl.addEventListener('focusout', handleFocusOut);
9224
+ focusEl.addEventListener('keyup', handleKeyUp);
9199
9225
  // Return cleanup function
9200
9226
  return () => {
9201
9227
  disposed = true;
@@ -9215,8 +9241,9 @@ function setupTruncationTooltip(options) {
9215
9241
  }
9216
9242
  hostEl.removeEventListener('mouseenter', handleMouseEnter);
9217
9243
  hostEl.removeEventListener('mouseleave', handleMouseLeave);
9218
- focusEl.removeEventListener('focusin', handleFocusIn);
9244
+ focusEl.removeEventListener('focusin', showForVisibleFocus);
9219
9245
  focusEl.removeEventListener('focusout', handleFocusOut);
9246
+ focusEl.removeEventListener('keyup', handleKeyUp);
9220
9247
  removePortal();
9221
9248
  };
9222
9249
  }
@@ -9458,13 +9485,13 @@ class PdsChip {
9458
9485
  'aria-label': this.dismissLabel,
9459
9486
  };
9460
9487
  };
9461
- return (hAsync(CloseElement, Object.assign({}, closeAttributes(), { onClick: this.handleCloseClick }), hAsync("pds-icon", { icon: remove, size: this.iconSize })));
9488
+ return (hAsync(CloseElement, Object.assign({}, closeAttributes(), { onClick: this.handleCloseClick }), hAsync("pds-icon", { icon: remove, size: this.iconSize, "aria-hidden": "true" })));
9462
9489
  }
9463
9490
  render() {
9464
9491
  const hostClass = this.classNames();
9465
9492
  const hostStyles = this.hostStyles;
9466
9493
  this.hostKeeper.record(hostClass, hostStyles);
9467
- return (hAsync(Host, { key: 'f82d84a7f0a4f1c980d47bf75cd4ffeef042607d', class: hostClass, id: this.componentId, style: hostStyles }, this.setChipContent(), this.effectiveVariant === 'tag' && this.renderCloseButton()));
9494
+ return (hAsync(Host, { key: 'fa432fa987afb5b856e5e7d3894a88be043805d2', class: hostClass, id: this.componentId, style: hostStyles }, this.setChipContent(), this.effectiveVariant === 'tag' && this.renderCloseButton()));
9468
9495
  }
9469
9496
  get el() { return getElement(this); }
9470
9497
  static get style() { return pdsChipTokensCss() + pdsChipCss(); }
@@ -13471,7 +13498,7 @@ class PdsCombobox {
13471
13498
  'pds-combobox__option--layout': isLayout,
13472
13499
  'pds-combobox__option--chip': isChip,
13473
13500
  'pds-combobox__option--disabled': isDisabled,
13474
- }, "data-option-index": index, onMouseDown: this.onOptionMouseDown, onClick: this.onOptionClick, onMouseEnter: this.onOptionMouseEnter, onKeyDown: this.onOptionKeyDown }, isLayout ? (hAsync("pds-box", { class: "pds-combobox__option-layout-wrapper", innerHTML: this.getOptionLayoutContent(option) })) : isChip ? (this.renderOptionChip(option)) : (this.renderOptionLabel(option)), isSelected && hAsync("pds-icon", { icon: "check", size: "regular", class: "pds-combobox__option-check" })));
13501
+ }, "data-option-index": index, onMouseDown: this.onOptionMouseDown, onClick: this.onOptionClick, onMouseEnter: this.onOptionMouseEnter, onKeyDown: this.onOptionKeyDown }, isLayout ? (hAsync("pds-box", { class: "pds-combobox__option-layout-wrapper", innerHTML: this.getOptionLayoutContent(option) })) : isChip ? (this.renderOptionChip(option)) : (this.renderOptionLabel(option)), isSelected && hAsync("pds-icon", { icon: "check", size: "regular", "aria-hidden": "true", class: "pds-combobox__option-check" })));
13475
13502
  }
13476
13503
  /** An option's text, after its `data-icon` when it has one. */
13477
13504
  renderOptionLabel(option) {
@@ -13670,7 +13697,7 @@ class PdsCombobox {
13670
13697
  }
13671
13698
  // Helper method to render chip trigger default content
13672
13699
  renderChipTriggerDefaultContent() {
13673
- return (hAsync("span", { class: "pds-combobox__chip-trigger-label" }, this.selectedChipIcon && hAsync("pds-icon", { icon: this.selectedChipIcon, class: "pds-combobox__chip-trigger-icon" }), this.selectedLabel || this.placeholder));
13700
+ return (hAsync("span", { class: "pds-combobox__chip-trigger-label" }, this.selectedChipIcon && hAsync("pds-icon", { icon: this.selectedChipIcon, "aria-hidden": "true", class: "pds-combobox__chip-trigger-icon" }), this.selectedLabel || this.placeholder));
13674
13701
  }
13675
13702
  // Helper method to render option as chip (new automatic approach)
13676
13703
  renderOptionChip(option) {
@@ -13701,13 +13728,13 @@ class PdsCombobox {
13701
13728
  ]
13702
13729
  .filter(Boolean)
13703
13730
  .join(' ');
13704
- return (hAsync(Host, { key: 'ead770a3b7ba531a1cfdc6b02aef6d7159481ed0', "aria-disabled": this.disabled ? 'true' : null }, hAsync("div", { key: '3ca6fd299acd1db8a0e476eee5f7606bc6153625', class: "pds-combobox", tabIndex: -1, onFocusout: this.onComboboxFocusOut, part: "combobox" }, this.hasVisibleLabel && (hAsync("label", { key: '44c72d099c5ccddce18400b9d3c66158f485de05', htmlFor: this.trigger === 'input' ? this.componentId : undefined, id: this.labelId, class: "pds-combobox__label", onClick: this.onLabelClick }, this.label)), this.trigger === 'input' ? (hAsync("div", { class: "pds-combobox__input-wrapper", style: { width: this.triggerWidth } }, hAsync("input", { ref: el => {
13731
+ return (hAsync(Host, { key: 'c4bc64f28f6f8f2170d199bd89ba02b3fbe41bad', "aria-disabled": this.disabled ? 'true' : null }, hAsync("div", { key: '7648c513d133e11376e50a9a15bc9a227b8fe1d2', class: "pds-combobox", tabIndex: -1, onFocusout: this.onComboboxFocusOut, part: "combobox" }, this.hasVisibleLabel && (hAsync("label", { key: '1be4dce04b943119265b99c2b14002e5faba337f', htmlFor: this.trigger === 'input' ? this.componentId : undefined, id: this.labelId, class: "pds-combobox__label", onClick: this.onLabelClick }, this.label)), this.trigger === 'input' ? (hAsync("div", { class: "pds-combobox__input-wrapper", style: { width: this.triggerWidth } }, hAsync("input", { ref: el => {
13705
13732
  this.inputEl = el;
13706
13733
  this.triggerEl = el;
13707
13734
  }, class: {
13708
13735
  'pds-combobox__input': true,
13709
13736
  'pds-combobox__input--invalid': this.isInvalid(),
13710
- }, type: "text", role: "combobox", "aria-autocomplete": "list", "aria-haspopup": this.inputPopupRole === 'tree' ? 'tree' : undefined, "aria-controls": this.listboxId, "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-activedescendant": this.usesPanelSearch ? undefined : this.activeDescendantId, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, value: this.displayText, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onClick: this.handleInputClick, onKeyDown: this.handleKeyDown, autocomplete: "off", part: "input" }), hAsync("pds-icon", { icon: "enlarge", "aria-hidden": "true", class: "pds-combobox__input-icon" }))) : this.trigger === 'chip' ? (hAsync("div", { class: this.getChipTriggerClass(), style: { width: this.triggerWidth }, role: this.usesPanelSearch ? 'button' : 'combobox', "aria-haspopup": this.triggerPopupRole, "aria-controls": this.listboxId, "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-activedescendant": this.usesPanelSearch ? undefined : this.activeDescendantId, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.triggerAriaLabel, "aria-labelledby": this.triggerLabelledBy, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "chip-trigger" }, this.renderChipTriggerContent())) : (hAsync("div", { class: triggerClass, style: { width: this.triggerWidth }, role: this.usesPanelSearch ? 'button' : 'combobox', "aria-haspopup": this.triggerPopupRole, "aria-controls": this.listboxId, "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-activedescendant": this.usesPanelSearch ? undefined : this.activeDescendantId, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.triggerAriaLabel, "aria-labelledby": this.triggerLabelledBy, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "button-trigger" }, this.renderButtonTriggerContent())), this.renderMessages(), hAsync("div", { key: '349af9dc6fdae018d4443b178e21b1627fcc85ca', style: { display: 'none' } }, hAsync("slot", { key: '9af42db6d08f148b7d7b5e4b3199f7c9af7699a4', onSlotchange: () => this.updateOptions() })), this.renderDropdown(), this.groupDisplay !== 'inline' && [
13737
+ }, type: "text", role: "combobox", "aria-autocomplete": "list", "aria-haspopup": this.inputPopupRole === 'tree' ? 'tree' : undefined, "aria-controls": this.listboxId, "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-activedescendant": this.usesPanelSearch ? undefined : this.activeDescendantId, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, value: this.displayText, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onClick: this.handleInputClick, onKeyDown: this.handleKeyDown, autocomplete: "off", part: "input" }), hAsync("pds-icon", { icon: "enlarge", "aria-hidden": "true", class: "pds-combobox__input-icon" }))) : this.trigger === 'chip' ? (hAsync("div", { class: this.getChipTriggerClass(), style: { width: this.triggerWidth }, role: this.usesPanelSearch ? 'button' : 'combobox', "aria-haspopup": this.triggerPopupRole, "aria-controls": this.listboxId, "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-activedescendant": this.usesPanelSearch ? undefined : this.activeDescendantId, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.triggerAriaLabel, "aria-labelledby": this.triggerLabelledBy, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "chip-trigger" }, this.renderChipTriggerContent())) : (hAsync("div", { class: triggerClass, style: { width: this.triggerWidth }, role: this.usesPanelSearch ? 'button' : 'combobox', "aria-haspopup": this.triggerPopupRole, "aria-controls": this.listboxId, "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-activedescendant": this.usesPanelSearch ? undefined : this.activeDescendantId, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.triggerAriaLabel, "aria-labelledby": this.triggerLabelledBy, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "button-trigger" }, this.renderButtonTriggerContent())), this.renderMessages(), hAsync("div", { key: 'f9aca483c67dd0cdf2fcbdc651a13cfb8fcfe7f1', style: { display: 'none' } }, hAsync("slot", { key: '7a0dc5718ccf377b41bd1716030f16a135700518', onSlotchange: () => this.updateOptions() })), this.renderDropdown(), this.groupDisplay !== 'inline' && [
13711
13738
  hAsync("span", { key: "drill-status", class: "visually-hidden", role: "status", "aria-live": "polite" }, this.isOpen && this.effectiveGroupDisplay === 'drill-in' && this.openGroup !== null ? this.openGroup.label : ''),
13712
13739
  // Its own region: sharing one, revealing a row then opening it would leave the text the
13713
13740
  // same, and opening the group would go unannounced.
@@ -16636,11 +16663,11 @@ class PdsDropdownMenu {
16636
16663
  if (tagName === 'pds-dropdown-menu-item') {
16637
16664
  // For pds-dropdown-menu-item, focus the inner element
16638
16665
  const menuItem = item;
16639
- const innerButton = (_a = menuItem.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('button');
16666
+ const innerControl = (_a = menuItem.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('button, [role="menuitem"]');
16640
16667
  const innerLink = ((_d = (_c = (_b = menuItem.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('pds-link')) === null || _c === void 0 ? void 0 : _c.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('a'))
16641
16668
  || ((_e = menuItem.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('a'));
16642
- if (innerButton) {
16643
- innerButton.focus();
16669
+ if (innerControl) {
16670
+ innerControl.focus();
16644
16671
  }
16645
16672
  else if (innerLink) {
16646
16673
  innerLink.focus();
@@ -16792,7 +16819,7 @@ class PdsDropdownMenu {
16792
16819
  }
16793
16820
  }
16794
16821
  render() {
16795
- return (hAsync(Host, { key: '18dac4d59ea236fe171f4c16f6571cb1547059c6', id: this.componentId }, hAsync("slot", { key: '95201a75a33ccb70dbd51a5cf9d78c76ebf26f65', name: "trigger", onSlotchange: this.handleTriggerSlotChange }), hAsync("pds-box", { key: '7fc588f40f607ad81ad70bf74a525d078d32a80b', "border-radius": "sm", display: "flex", direction: "column", class: "pds-dropdown-menu--panel is-hidden", shadow: "100", part: "menu-panel" }, hAsync("div", { key: '73d13d94edccb68db7b703f930b50f729334efa8', class: { 'pds-dropdown-menu__header': true, 'is-hidden': !this.hasHeader } }, hAsync("slot", { key: '7066f3a6f71c8961326f38f0509f1c0cc17098ae', name: "header", onSlotchange: this.handleHeaderSlotChange })), hAsync("div", { key: '9f07ec488b688c58c6422b575015ccd364075fe8', class: "pds-dropdown-menu__items", role: "menu", "aria-orientation": "vertical" }, hAsync("slot", { key: 'd0aad3f9ac3b58779669411523adbb8878dec61c', onSlotchange: this.handleSlotChange })))));
16822
+ return (hAsync(Host, { key: '1765909c8c3c140e52dc3f6b50693c97d6bcc003', id: this.componentId }, hAsync("slot", { key: '0b566cd288428a0694a2d61d4a73bd79def4bfad', name: "trigger", onSlotchange: this.handleTriggerSlotChange }), hAsync("pds-box", { key: '16cdfc208cfe7f6e074289c30aa0e1188a34876d', "border-radius": "sm", display: "flex", direction: "column", class: "pds-dropdown-menu--panel is-hidden", shadow: "100", part: "menu-panel" }, hAsync("div", { key: 'a28c1736ad02e8ac3d82c0fe1933606a7216989b', class: { 'pds-dropdown-menu__header': true, 'is-hidden': !this.hasHeader } }, hAsync("slot", { key: '9c6dfddefb266083f68aa27d6cc01127a69cd1cf', name: "header", onSlotchange: this.handleHeaderSlotChange })), hAsync("div", { key: '8cfe85c10f92d4a4ec6b5d2d0264d054a74ba29b', class: "pds-dropdown-menu__items", role: "menu", "aria-orientation": "vertical" }, hAsync("slot", { key: '1a5b4aa406d2706ca8cef49deb05140a5763be1c', onSlotchange: this.handleSlotChange })))));
16796
16823
  }
16797
16824
  get host() { return getElement(this); }
16798
16825
  static get style() { return pdsDropdownMenuCss(); }
@@ -16811,10 +16838,10 @@ class PdsDropdownMenu {
16811
16838
  }; }
16812
16839
  }
16813
16840
 
16814
- const pdsDropdownMenuItemCss = () => `:host{cursor:pointer;display:-ms-flexbox;display:flex;width:100%;}:host(.is-disabled){cursor:not-allowed !important;opacity:0.5 !important}:host(.is-disabled) .pds-dropdown-menu-item__content{cursor:not-allowed !important;pointer-events:none !important}.pds-dropdown-menu-item__content{-ms-flex-align:center;align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;border-radius:var(--pine-dimension-xs);color:var(--pine-color-text);display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;font:var(--pine-typography-body-medium);gap:var(--pine-dimension-xs);margin:calc(var(--pine-border-width) + 2px);padding:var(--pine-dimension-xs);text-align:start;width:100%;}.pds-dropdown-menu-item__content:hover{background-color:var(--pine-color-background-muted);color:var(--pine-color-text-hover)}.pds-dropdown-menu-item__content{}.pds-dropdown-menu-item__content:focus,.pds-dropdown-menu-item__content:focus-visible,.pds-dropdown-menu-item__content.has-focus{outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}:host(.destructive) .pds-dropdown-menu-item__content{--pds-context-link-color:var(--pine-color-danger);--pds-context-link-color-hover:var(--pine-color-danger-hover);-ms-flex-align:center;align-items:center;color:var(--pine-color-danger)}:host(.destructive) .pds-dropdown-menu-item__content:hover{background-color:var(--pine-color-danger-disabled);color:var(--pine-color-danger-hover)}:host(.destructive) .pds-dropdown-menu-item__content:focus,:host(.destructive) .pds-dropdown-menu-item__content:focus-visible,:host(.destructive) .pds-dropdown-menu-item__content.has-focus{background-color:var(--pine-color-danger-disabled);outline:var(--pine-outline-focus-danger);outline-offset:var(--pine-border-width)}pds-link::part(link):focus,pds-link::part(link):focus-visible{-webkit-box-shadow:none;box-shadow:none;outline:none}pds-link::part(link){-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);margin:calc(var(--pine-dimension-xs) * -1);padding:var(--pine-dimension-xs);text-decoration:none;width:calc(100% + var(--pine-dimension-xs) * 2)}`;
16841
+ const pdsDropdownMenuItemCss = () => `:host{cursor:pointer;display:-ms-flexbox;display:flex;width:100%;}:host(.is-disabled){cursor:not-allowed !important;opacity:0.5 !important}:host(.is-disabled) .pds-dropdown-menu-item__content{cursor:not-allowed !important;pointer-events:none !important}.pds-dropdown-menu-item__content{-ms-flex-align:center;align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;border-radius:var(--pine-dimension-xs);color:var(--pine-color-text);display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;font:var(--pine-typography-body-medium);gap:var(--pine-dimension-xs);margin:calc(var(--pine-border-width) + 2px);padding:var(--pine-dimension-xs);text-align:start;width:100%;}.pds-dropdown-menu-item__content:hover{background-color:var(--pine-color-background-muted);color:var(--pine-color-text-hover)}.pds-dropdown-menu-item__content{}.pds-dropdown-menu-item__content:focus,.pds-dropdown-menu-item__content:focus-visible,.pds-dropdown-menu-item__content.has-focus{outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}:host(.is-informational){cursor:default}:host(.is-informational) .pds-dropdown-menu-item__content:hover{background-color:transparent;color:var(--pine-color-text)}:host(.destructive) .pds-dropdown-menu-item__content{--pds-context-link-color:var(--pine-color-danger);--pds-context-link-color-hover:var(--pine-color-danger-hover);-ms-flex-align:center;align-items:center;color:var(--pine-color-danger)}:host(.destructive) .pds-dropdown-menu-item__content:hover{background-color:var(--pine-color-danger-disabled);color:var(--pine-color-danger-hover)}:host(.destructive) .pds-dropdown-menu-item__content:focus,:host(.destructive) .pds-dropdown-menu-item__content:focus-visible,:host(.destructive) .pds-dropdown-menu-item__content.has-focus{background-color:var(--pine-color-danger-disabled);outline:var(--pine-outline-focus-danger);outline-offset:var(--pine-border-width)}pds-link::part(link):focus,pds-link::part(link):focus-visible{-webkit-box-shadow:none;box-shadow:none;outline:none}pds-link::part(link){-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);margin:calc(var(--pine-dimension-xs) * -1);padding:var(--pine-dimension-xs);text-decoration:none;width:calc(100% + var(--pine-dimension-xs) * 2)}`;
16815
16842
 
16816
16843
  /**
16817
- * @part button
16844
+ * @part button - Exposes the item's inner element for styling. Appears on button and informational items, not on links.
16818
16845
  */
16819
16846
  class PdsDropdownMenuItem {
16820
16847
  constructor(hostRef) {
@@ -16830,9 +16857,17 @@ class PdsDropdownMenuItem {
16830
16857
  * @defaultValue false
16831
16858
  */
16832
16859
  this.disabled = false;
16860
+ /**
16861
+ * It determines whether or not the dropdown-item is informational: text that the arrow keys
16862
+ * reach but that can't be activated. Takes precedence over `href` and `destructive`.
16863
+ * Screen readers announce it as dimmed or unavailable, the same way as a disabled item.
16864
+ * @defaultValue false
16865
+ */
16866
+ this.informational = false;
16833
16867
  /**
16834
16868
  * Determines whether the link should open in a new tab and display an external icon.
16835
16869
  * This is a simpler alternative to using `target="_blank"` for the common case.
16870
+ * Ignored when `informational` is set.
16836
16871
  * @defaultValue false
16837
16872
  */
16838
16873
  this.external = false;
@@ -16843,6 +16878,12 @@ class PdsDropdownMenuItem {
16843
16878
  this.handleBlur = () => {
16844
16879
  this.hasFocus = false;
16845
16880
  };
16881
+ // Space would otherwise scroll the page, since nothing in the item takes the key.
16882
+ this.handleInformationalKeyDown = (event) => {
16883
+ if (event.key === ' ') {
16884
+ event.preventDefault();
16885
+ }
16886
+ };
16846
16887
  this.handleKeyDown = (event) => {
16847
16888
  // Handle keyboard events
16848
16889
  if (!this.disabled && (event.key === 'Enter')) {
@@ -16864,6 +16905,8 @@ class PdsDropdownMenuItem {
16864
16905
  ;
16865
16906
  handleClick() {
16866
16907
  var _a;
16908
+ if (this.informational)
16909
+ return;
16867
16910
  // Filter only pds-dropdown-menu-item elements and find the index of the current item
16868
16911
  const menuItems = Array.from(this.host.parentNode.children).filter((child) => child.tagName.toLowerCase() === 'pds-dropdown-menu-item');
16869
16912
  const itemIndex = menuItems.indexOf(this.host);
@@ -16876,6 +16919,12 @@ class PdsDropdownMenuItem {
16876
16919
  });
16877
16920
  }
16878
16921
  renderElement() {
16922
+ if (this.informational) {
16923
+ return (hAsync("div", { class: {
16924
+ 'pds-dropdown-menu-item__content': true,
16925
+ 'has-focus': this.hasFocus
16926
+ }, role: "menuitem", "aria-disabled": "true", part: "button", tabIndex: this.disabled ? -1 : 0, onKeyDown: this.handleInformationalKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur }, hAsync("slot", null)));
16927
+ }
16879
16928
  if (this.href != null) {
16880
16929
  return (hAsync("pds-link", { download: this.download, href: this.disabled ? null : this.href, external: this.external, target: this.target, class: {
16881
16930
  'pds-dropdown-menu-item__content': true,
@@ -16888,7 +16937,14 @@ class PdsDropdownMenuItem {
16888
16937
  }, tabIndex: this.disabled ? -1 : 0, type: "button", part: "button", onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, disabled: this.disabled, "aria-disabled": this.disabled ? 'true' : null }, hAsync("slot", null)));
16889
16938
  }
16890
16939
  render() {
16891
- return (hAsync(Host, { key: '2d499a06768bdc4b9a34774d16c1f1e10804b3d5', id: this.componentId, class: { 'is-disabled': this.disabled, 'destructive': !this.disabled && this.destructive }, onClick: () => !this.disabled && this.handleClick(), role: "none", tabIndex: -1, "aria-disabled": this.disabled ? 'true' : null }, this.renderElement()));
16940
+ return (hAsync(Host, { key: '47a62550fde33f892d7af4f4e71b67ebf7aa2c3f', id: this.componentId, class: {
16941
+ 'is-disabled': this.disabled,
16942
+ 'is-informational': this.informational,
16943
+ 'destructive': !this.disabled && !this.informational && this.destructive
16944
+ }, onClick: () => !this.disabled && this.handleClick(), role: "none",
16945
+ // ARIA ignores role="none" on focusable elements, so a focusable host would sit between
16946
+ // the menu and the informational menuitem as an unexpected child.
16947
+ tabIndex: this.informational ? null : -1, "aria-disabled": this.disabled && !this.informational ? 'true' : null }, this.renderElement()));
16892
16948
  }
16893
16949
  get host() { return getElement(this); }
16894
16950
  static get style() { return pdsDropdownMenuItemCss(); }
@@ -16901,6 +16957,7 @@ class PdsDropdownMenuItem {
16901
16957
  "disabled": [516],
16902
16958
  "download": [1],
16903
16959
  "href": [1],
16960
+ "informational": [516],
16904
16961
  "external": [516],
16905
16962
  "target": [513],
16906
16963
  "hasFocus": [32],
@@ -16908,7 +16965,7 @@ class PdsDropdownMenuItem {
16908
16965
  },
16909
16966
  "$listeners$": undefined,
16910
16967
  "$lazyBundleId$": "-",
16911
- "$attrsToReflect$": [["disabled", "disabled"], ["external", "external"], ["target", "target"]]
16968
+ "$attrsToReflect$": [["disabled", "disabled"], ["informational", "informational"], ["external", "external"], ["target", "target"]]
16912
16969
  }; }
16913
16970
  }
16914
16971
 
@@ -18695,7 +18752,7 @@ function containsComposed(ancestor, node) {
18695
18752
  */
18696
18753
  const openModals = new Map();
18697
18754
  let openSequence = 0;
18698
- /** Whether an open auto popover's panel sits in `root`, including inside shadow roots under it. */
18755
+ /** Whether the panel of an open popover that takes Escape sits in `root`, including inside shadow roots under it. */
18699
18756
  function hasOpenPopover(root) {
18700
18757
  if (root.querySelector('[data-pds-popover-open]'))
18701
18758
  return true;
@@ -19242,14 +19299,14 @@ class PdsModal {
19242
19299
  }
19243
19300
  render() {
19244
19301
  const [sizeClass = 'md', customSize] = this.resolveSize();
19245
- return (hAsync("dialog", { key: '0b187f36910a859afe57b891f1ebffd1d2d49ab7', class: {
19302
+ return (hAsync("dialog", { key: '0a3ea92246b5ae704bc7dcbadf4f4e0d5a54e9e6', class: {
19246
19303
  'pds-modal__backdrop': true,
19247
19304
  'open': this.open
19248
- }, "aria-modal": this.disableTopLayer ? 'false' : 'true', "aria-labelledby": `${this.componentId}-heading`, onClick: this.handleBackdropClick, onCancel: this.handleCancel }, hAsync("div", { key: 'f5e652d4dae0e7c272b37b63eb9c65f04c69536a', class: {
19305
+ }, "aria-modal": this.disableTopLayer ? 'false' : 'true', "aria-labelledby": `${this.componentId}-heading`, onClick: this.handleBackdropClick, onCancel: this.handleCancel }, hAsync("div", { key: 'a38029c2284ed345bec2ce7638fc3415818cd609', class: {
19249
19306
  'pds-modal': true,
19250
19307
  [`pds-modal--${sizeClass}`]: true,
19251
19308
  'pds-modal--scrollable': this.scrollable
19252
- }, style: customSize !== undefined ? { '--pds-modal-max-width': customSize } : undefined, part: "modal" }, hAsync("slot", { key: 'a954e1694741f78230599c476b270079797a263e' }))));
19309
+ }, style: customSize !== undefined ? { '--pds-modal-max-width': customSize } : undefined, part: "modal" }, hAsync("slot", { key: '396da81af42685f5c083f853afa207a6844e444e' }))));
19253
19310
  }
19254
19311
  get el() { return getElement(this); }
19255
19312
  static get watchers() { return {
@@ -19300,6 +19357,21 @@ class PdsModalContent {
19300
19357
  * Tracks whether the border prop was explicitly set by the user
19301
19358
  */
19302
19359
  this.userSetBorder = false;
19360
+ this.hasLoaded = false;
19361
+ /**
19362
+ * Handle scroll events
19363
+ */
19364
+ this.handleScroll = () => {
19365
+ this.updateBorders();
19366
+ };
19367
+ /**
19368
+ * Handle resize events
19369
+ */
19370
+ this.handleResize = () => {
19371
+ this.calculateMaxHeight();
19372
+ // Update borders after resize as content scrollability might change
19373
+ setTimeout(() => this.updateBorders(), 50);
19374
+ };
19303
19375
  }
19304
19376
  // Unwraps a nested .pds-modal-content left by a page-cache (Turbo, bfcache) reconnect.
19305
19377
  componentDidRender() {
@@ -19313,43 +19385,30 @@ class PdsModalContent {
19313
19385
  this.userSetBorder = hasBorderAttribute || this.border !== 'none';
19314
19386
  }
19315
19387
  componentDidLoad() {
19388
+ this.hasLoaded = true;
19316
19389
  this.calculateMaxHeight();
19317
- // Set up resize listener
19318
- window.addEventListener('resize', this.handleResize.bind(this));
19319
- // Only set up scroll listener for border updates if borders are managed automatically
19320
19390
  if (!this.userSetBorder) {
19321
- setTimeout(() => {
19322
- // The scroll happens on the component element itself (this.el), not the inner div
19323
- this.el.addEventListener('scroll', this.handleScroll.bind(this));
19324
- // Initial border update after everything is set up
19325
- setTimeout(() => this.updateBorders(), 100);
19326
- }, 100);
19391
+ // Initial border update after everything is set up
19392
+ setTimeout(() => this.updateBorders(), 200);
19327
19393
  }
19328
19394
  }
19395
+ // Here rather than in componentDidLoad, which runs once: content taken out of the page and put
19396
+ // back (a DOM morph or a framework moving it) gets its listeners and header/footer observer back.
19397
+ connectedCallback() {
19398
+ window.addEventListener('resize', this.handleResize);
19399
+ // The scroll happens on the component element itself (this.el), not the inner div
19400
+ this.el.addEventListener('scroll', this.handleScroll);
19401
+ if (this.hasLoaded)
19402
+ this.calculateMaxHeight();
19403
+ }
19329
19404
  disconnectedCallback() {
19330
- window.removeEventListener('resize', this.handleResize.bind(this));
19331
- // Clean up scroll listener only if it was set up
19332
- if (!this.userSetBorder) {
19333
- this.el.removeEventListener('scroll', this.handleScroll.bind(this));
19334
- }
19405
+ window.removeEventListener('resize', this.handleResize);
19406
+ this.el.removeEventListener('scroll', this.handleScroll);
19335
19407
  if (this.mutationObserver) {
19336
19408
  this.mutationObserver.disconnect();
19409
+ this.mutationObserver = undefined;
19337
19410
  }
19338
19411
  }
19339
- /**
19340
- * Handle scroll events
19341
- */
19342
- handleScroll() {
19343
- this.updateBorders();
19344
- }
19345
- /**
19346
- * Handle resize events
19347
- */
19348
- handleResize() {
19349
- this.calculateMaxHeight();
19350
- // Update borders after resize as content scrollability might change
19351
- setTimeout(() => this.updateBorders(), 50);
19352
- }
19353
19412
  /**
19354
19413
  * Updates border visibility based on scroll state (only if not user-defined)
19355
19414
  */
@@ -19466,10 +19525,10 @@ class PdsModalContent {
19466
19525
  render() {
19467
19526
  // Only apply max-height style if it's not 'none'
19468
19527
  const styleObj = this.contentMaxHeight !== 'none' ? { maxHeight: this.contentMaxHeight } : {};
19469
- return (hAsync(Host, { key: 'd41d5632eb6a2dafe921546af60f835d3545cc4f' }, hAsync("div", { key: '741ac9f28149039ecf5051142a939ab62ef26a87', class: {
19528
+ return (hAsync(Host, { key: 'c83e230d23444e3d5358d995170e2b8386884fe8' }, hAsync("div", { key: 'b91de2c71e693b5a1ba2b257d741e7b0418c2d76', class: {
19470
19529
  'pds-modal-content': true,
19471
19530
  [`pds-modal-content--border-${this.border}`]: true
19472
- }, style: styleObj, tabindex: "-1" }, hAsync("slot", { key: '090a52e9425d4df61c2d8216cc19f0925babdffe' }))));
19531
+ }, style: styleObj, tabindex: "-1" }, hAsync("slot", { key: '971cbd44ffeac4bb13a651948a119c603bed9e4f' }))));
19473
19532
  }
19474
19533
  get el() { return getElement(this); }
19475
19534
  static get style() { return pdsModalContentCss(); }
@@ -20725,7 +20784,7 @@ class PdsMultiselect {
20725
20784
  'pds-multiselect__option--selected': isSelected,
20726
20785
  'pds-multiselect__option--create': isCreateOption,
20727
20786
  'pds-multiselect__option--disabled': isDisabled || isCreateDisabled,
20728
- }, role: "option", "aria-selected": isSelected ? 'true' : 'false', "aria-disabled": isDisabled || isCreateDisabled ? 'true' : undefined, "aria-label": isCreateOption ? formatMessage(this.createOptionAriaLabel, { text: option.text }) : undefined, "aria-describedby": hasAction ? `${optionId}-action-description` : undefined, "data-index": index, onMouseDown: this.handleOptionMouseDown(option), onClick: this.handleOptionClick, onMouseEnter: this.handleOptionMouseEnter(index, option) }, isCreateOption ? (hAsync("pds-box", { class: "pds-multiselect__create-option", "align-items": "center", gap: "xs" }, hAsync("pds-icon", { name: "add", size: "small" }), hAsync("pds-text", null, formatMessage(this.createOptionLabel, { text: option.text })))) : (hAsync("pds-checkbox", { componentId: `${this.componentId}-checkbox-${index}`, checked: isSelected, label: option.text, disabled: isDisabled, style: { pointerEvents: 'none' } }, this.optionDisplay === 'chip' && (hAsync("pds-chip", { slot: "label", sentiment: "subtle", dot: !!option.dotColor, "dot-color": option.dotColor, "max-width": "100%" }, option.text)))), hasAction && this.renderOptionAction(option, optionId, isHighlighted)));
20787
+ }, role: "option", "aria-selected": isSelected ? 'true' : 'false', "aria-disabled": isDisabled || isCreateDisabled ? 'true' : undefined, "aria-label": isCreateOption ? formatMessage(this.createOptionAriaLabel, { text: option.text }) : undefined, "aria-describedby": hasAction ? `${optionId}-action-description` : undefined, "data-index": index, onMouseDown: this.handleOptionMouseDown(option), onClick: this.handleOptionClick, onMouseEnter: this.handleOptionMouseEnter(index, option) }, isCreateOption ? (hAsync("pds-box", { class: "pds-multiselect__create-option", "align-items": "center", gap: "xs" }, hAsync("pds-icon", { name: "add", size: "small", "aria-hidden": "true" }), hAsync("pds-text", null, formatMessage(this.createOptionLabel, { text: option.text })))) : (hAsync("pds-checkbox", { componentId: `${this.componentId}-checkbox-${index}`, checked: isSelected, label: option.text, disabled: isDisabled, style: { pointerEvents: 'none' } }, this.optionDisplay === 'chip' && (hAsync("pds-chip", { slot: "label", sentiment: "subtle", dot: !!option.dotColor, "dot-color": option.dotColor, "max-width": "100%" }, option.text)))), hasAction && this.renderOptionAction(option, optionId, isHighlighted)));
20729
20788
  }
20730
20789
  renderOptionAction(option, optionId, isHighlighted) {
20731
20790
  var _a;
@@ -20748,7 +20807,7 @@ class PdsMultiselect {
20748
20807
  const hasSlottedEmpty = !!this.el.querySelector('[slot="empty"]');
20749
20808
  const hasSlottedLoading = !!this.el.querySelector('[slot="loading"]');
20750
20809
  const hasSlottedFooter = !!this.el.querySelector('[slot="footer"]');
20751
- return (hAsync("div", { class: "pds-multiselect__panel", ref: el => (this.panelEl = el), style: { minWidth: this.minWidth } }, hAsync("div", { class: "pds-multiselect__search" }, hAsync("pds-icon", { name: "search", size: "small" }), hAsync("input", { ref: el => (this.searchInputEl = el), type: "text", class: "pds-multiselect__search-input", placeholder: this.searchPlaceholder, value: this.searchQuery, "aria-label": this.searchOptionsLabel, "aria-controls": `${this.componentId}-listbox`, "aria-activedescendant": this.highlightedIndex >= 0 ? `${this.componentId}-option-${this.highlightedIndex}` : undefined, role: "combobox", "aria-haspopup": "listbox", "aria-expanded": "true", "aria-autocomplete": "list", autocomplete: "off", onInput: this.handleSearchInputChange, onKeyDown: this.handleSearchInputKeyDown })), this.renderSelectedItemsList(), hAsync("ul", { class: "pds-multiselect__listbox", role: "listbox", "aria-multiselectable": "true", "aria-label": this.label || this.optionsLabel, id: `${this.componentId}-listbox`, ref: el => (this.listboxEl = el), style: { maxHeight: this.maxHeight }, onScroll: this.handleScroll }, this.loading && (hAsync("li", { class: "pds-multiselect__loading", role: "presentation" }, hasSlottedLoading ? (hAsync("slot", { name: "loading" })) : (hAsync("pds-loader", { size: "small" })))), !this.loading && filteredOptions.length === 0 && (hAsync("li", { class: "pds-multiselect__empty", role: "presentation" }, hasSlottedEmpty ? (hAsync("slot", { name: "empty" })) : (hAsync("span", null, this.noOptionsFoundLabel)))), this.getGroupedRenderItems(filteredOptions).map((item, itemIndex) => {
20810
+ return (hAsync("div", { class: "pds-multiselect__panel", ref: el => (this.panelEl = el), style: { minWidth: this.minWidth } }, hAsync("div", { class: "pds-multiselect__search" }, hAsync("pds-icon", { name: "search", size: "small", "aria-hidden": "true" }), hAsync("input", { ref: el => (this.searchInputEl = el), type: "text", class: "pds-multiselect__search-input", placeholder: this.searchPlaceholder, value: this.searchQuery, "aria-label": this.searchOptionsLabel, "aria-controls": `${this.componentId}-listbox`, "aria-activedescendant": this.highlightedIndex >= 0 ? `${this.componentId}-option-${this.highlightedIndex}` : undefined, role: "combobox", "aria-haspopup": "listbox", "aria-expanded": "true", "aria-autocomplete": "list", autocomplete: "off", onInput: this.handleSearchInputChange, onKeyDown: this.handleSearchInputKeyDown })), this.renderSelectedItemsList(), hAsync("ul", { class: "pds-multiselect__listbox", role: "listbox", "aria-multiselectable": "true", "aria-label": this.label || this.optionsLabel, id: `${this.componentId}-listbox`, ref: el => (this.listboxEl = el), style: { maxHeight: this.maxHeight }, onScroll: this.handleScroll }, this.loading && (hAsync("li", { class: "pds-multiselect__loading", role: "presentation" }, hasSlottedLoading ? (hAsync("slot", { name: "loading" })) : (hAsync("pds-loader", { size: "small" })))), !this.loading && filteredOptions.length === 0 && (hAsync("li", { class: "pds-multiselect__empty", role: "presentation" }, hasSlottedEmpty ? (hAsync("slot", { name: "empty" })) : (hAsync("span", null, this.noOptionsFoundLabel)))), this.getGroupedRenderItems(filteredOptions).map((item, itemIndex) => {
20752
20811
  if (item.type === 'group') {
20753
20812
  return (hAsync("li", { key: `group-${itemIndex}`, role: "group", "aria-label": item.group, class: "pds-multiselect__group" }, hAsync("span", { class: "pds-multiselect__group-header", "aria-hidden": "true" }, item.group), hAsync("ul", { class: "pds-multiselect__group-list", role: "presentation" }, item.options.map(({ option, index }) => this.renderOption(option, index, valueArray)))));
20754
20813
  }
@@ -20807,10 +20866,10 @@ class PdsMultiselect {
20807
20866
  }
20808
20867
  render() {
20809
20868
  const hasSelections = this.selectedItems.length > 0;
20810
- return (hAsync(Host, { key: 'a7806379c53598d41af91be63ee5bd300cc87755', "aria-disabled": this.disabled ? 'true' : null }, hAsync("div", { key: '0213d40953f1735b84c038e0e0afd1bc289d45ad', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (hAsync("label", { key: 'fa91c2337cdc9f5dea62173aeaa6b56e118a1316', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
20869
+ return (hAsync(Host, { key: 'd0879469e6ff943374c2f035c0a8d6d57c25dc5f', "aria-disabled": this.disabled ? 'true' : null }, hAsync("div", { key: '80caa694099218561b85c93d547ec9208def0ec7', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (hAsync("label", { key: 'b4eaa2c9e2901c28ecb0b8f55e63e33ad899e945', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
20811
20870
  'pds-multiselect__label': true,
20812
20871
  'visually-hidden': this.hideLabel,
20813
- } }, this.label)), hAsync("div", { key: '54209b3edfb3583ab1bcecd2b1df973955abfcc3', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), style: { width: this.triggerWidth } }, this.slottedTriggerEl ? (hAsync("slot", { name: "trigger" })) : this.selectedDisplay === 'pill' && this.pillPosition === 'inline' ? (hAsync("div", { ref: el => (this.pillInlineTriggerEl = el || undefined), part: "trigger", class: {
20872
+ } }, this.label)), hAsync("div", { key: '404ed58aa6bfb2248ffad5e56ebabfe65149b9a4', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), style: { width: this.triggerWidth } }, this.slottedTriggerEl ? (hAsync("slot", { name: "trigger" })) : this.selectedDisplay === 'pill' && this.pillPosition === 'inline' ? (hAsync("div", { ref: el => (this.pillInlineTriggerEl = el || undefined), part: "trigger", class: {
20814
20873
  'pds-multiselect__trigger': true,
20815
20874
  'pds-multiselect__trigger--open': this.isOpen,
20816
20875
  'pds-multiselect__trigger--disabled': this.disabled,
@@ -20826,7 +20885,7 @@ class PdsMultiselect {
20826
20885
  }, id: this.componentId, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, hAsync("span", { class: {
20827
20886
  'pds-multiselect__trigger-text': true,
20828
20887
  'pds-multiselect__trigger-text--placeholder': !hasSelections || (this.selectedDisplay === 'pill' && this.pillPosition === 'below'),
20829
- } }, this.getTriggerText()), hAsync("pds-icon", { "aria-hidden": "true", class: "pds-multiselect__icon", icon: enlarge }))), this.renderDropdown()), this.selectedDisplay === 'pill' && this.pillPosition === 'below' && this.renderBelowPills(), hAsync("span", { key: 'e3c1bb5c484d851b332e994cd2a528ae95cbfc4d', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (hAsync("p", { key: '2009f6487118252ef1ec14170ddd0c6853ad279f', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (hAsync("p", { key: 'c740f4845ff0c1ccff4633810c1d9d92fb2e8a78', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, hAsync("pds-icon", { key: 'b2406ab3b0957a440593b4b986c98476258349be', icon: danger, size: "small" }), this.errorMessage)), hAsync("div", { key: '6d2db6563864c71ab92ed9a8d4133efca23b1c55', style: { display: 'none' } }, hAsync("slot", { key: '2af0e0a7e2410b9850fd15ef524fb388c32dc320' })))));
20888
+ } }, this.getTriggerText()), hAsync("pds-icon", { "aria-hidden": "true", class: "pds-multiselect__icon", icon: enlarge }))), this.renderDropdown()), this.selectedDisplay === 'pill' && this.pillPosition === 'below' && this.renderBelowPills(), hAsync("span", { key: '73f17916a37722fefebd6b5a184a7b3dca6f4a9d', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (hAsync("p", { key: '1a987562b21da6f8d2f8c9f94e93e8c99a7abd74', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (hAsync("p", { key: 'ce1f7f48d6f8dee320d87cb7088f084e68cb3ab5', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, hAsync("pds-icon", { key: '8347dfdec6ef1b81d4cf9f72cba3d9ec965dcf08', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage)), hAsync("div", { key: '74cd840e102ad635d2f4bc23cf3bcfaa61d5cea1', style: { display: 'none' } }, hAsync("slot", { key: 'c2fd9e71363a9661062c8d88be0dd78fc98b964d' })))));
20830
20889
  }
20831
20890
  static get formAssociated() { return true; }
20832
20891
  get el() { return getElement(this); }
@@ -20966,8 +21025,12 @@ const cssEscape = (value) => {
20966
21025
 
20967
21026
  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}`;
20968
21027
 
20969
- /** Open auto popovers, in the order they opened: Escape goes to the last one it applies to. */
20970
- const openAutoPopovers = [];
21028
+ /** Open popovers that close on Escape, in the order they opened: Escape goes to the last one it applies to. */
21029
+ const popoversTakingEscape = [];
21030
+ /** Hovering the trigger waits this long before opening, so a pointer passing over it doesn't open it. */
21031
+ const HOVER_OPEN_DELAY_MS = 120;
21032
+ /** Leaving the trigger and panel waits this long before closing, which covers the gap between them. */
21033
+ const HOVER_CLOSE_DELAY_MS = 200;
20971
21034
  /** The focused element, followed down through shadow roots to the control that has focus. */
20972
21035
  function deepActiveElement() {
20973
21036
  var _a;
@@ -21031,11 +21094,29 @@ class PdsPopover {
21031
21094
  * Timestamp when popover was opened (for preventing immediate close)
21032
21095
  */
21033
21096
  this.openTimestamp = 0;
21097
+ /**
21098
+ * Set while hover holds the popover open, until a click pins it or it closes
21099
+ */
21100
+ this.hoverOpened = false;
21101
+ /**
21102
+ * Set when the pointer left while focus was in the panel, so focus leaving it closes it instead
21103
+ */
21104
+ this.closeWhenFocusLeaves = false;
21105
+ /**
21106
+ * How far the pointer was from the panel at its last move after leaving the trigger
21107
+ */
21108
+ this.panelDistance = Infinity;
21034
21109
  /**
21035
21110
  * Determines the action that triggers the popover. For manual popovers, the consumer is responsible for toggling this value.
21036
21111
  * @defaultValue "show"
21037
21112
  */
21038
21113
  this.popoverTargetAction = 'show';
21114
+ /**
21115
+ * Determines how the popover opens. With `hover`, it also opens when the pointer rests on the trigger and closes
21116
+ * when the pointer leaves, until a click on the trigger keeps it open. Enter or Space on the trigger opens it either way.
21117
+ * @defaultValue "click"
21118
+ */
21119
+ this.openOn = 'click';
21039
21120
  /**
21040
21121
  * Determines the type of popover. Auto popovers can be "light dismissed" by clicking outside of the popover.
21041
21122
  * Manual popovers require the consumer to handle the visibility of the popover.
@@ -21046,6 +21127,11 @@ class PdsPopover {
21046
21127
  * @defaultValue 352
21047
21128
  */
21048
21129
  this.maxWidth = 352;
21130
+ /**
21131
+ * Sets the padding of the popover content
21132
+ * @defaultValue "md"
21133
+ */
21134
+ this.padding = 'md';
21049
21135
  /**
21050
21136
  * Determines the preferred position of the popover
21051
21137
  * @defaultValue "right"
@@ -21060,6 +21146,7 @@ class PdsPopover {
21060
21146
  // Clean up previous trigger's event listener if it exists
21061
21147
  if (this.triggerEl != null) {
21062
21148
  this.triggerEl.removeEventListener('click', this.handleTriggerClick);
21149
+ this.stopListeningForHover(this.triggerEl);
21063
21150
  }
21064
21151
  if (assignedElements.length > 0) {
21065
21152
  // Use the first assigned element as the trigger
@@ -21067,6 +21154,7 @@ class PdsPopover {
21067
21154
  this.linkTriggerToPortal();
21068
21155
  // Attach click listener to handle popover visibility
21069
21156
  this.triggerEl.addEventListener('click', this.handleTriggerClick);
21157
+ this.listenForHover(this.triggerEl);
21070
21158
  }
21071
21159
  else {
21072
21160
  this.triggerEl = null;
@@ -21093,6 +21181,13 @@ class PdsPopover {
21093
21181
  if (!anchorWithHref) {
21094
21182
  event.preventDefault();
21095
21183
  }
21184
+ if (this.openOn === 'hover' && this.popoverTargetAction !== 'hide') {
21185
+ const heldByHover = this.hoverOpened;
21186
+ this.pin();
21187
+ // Pinning, not toggling: the hover before a click has already opened it.
21188
+ if (heldByHover)
21189
+ return;
21190
+ }
21096
21191
  // Execute the appropriate action based on popoverTargetAction prop
21097
21192
  switch (this.popoverTargetAction) {
21098
21193
  case 'show':
@@ -21107,6 +21202,60 @@ class PdsPopover {
21107
21202
  break;
21108
21203
  }
21109
21204
  };
21205
+ // A tap sends touch pointer events and then a click, so touch takes the click path alone.
21206
+ this.handleHoverEnter = (event) => {
21207
+ if (event.pointerType === 'touch')
21208
+ return;
21209
+ this.clearHoverTimers();
21210
+ if (this.active)
21211
+ return;
21212
+ this.hoverOpenTimer = setTimeout(() => {
21213
+ this.hoverOpenTimer = undefined;
21214
+ if (this.active || this.portalEl == null)
21215
+ return;
21216
+ this.hoverOpened = true;
21217
+ this.show();
21218
+ }, HOVER_OPEN_DELAY_MS);
21219
+ };
21220
+ this.handleHoverLeave = (event) => {
21221
+ if (event.pointerType === 'touch')
21222
+ return;
21223
+ this.clearHoverTimers();
21224
+ if (!this.hoverOpened)
21225
+ return;
21226
+ this.hoverCloseTimer = setTimeout(this.closeFromHover, HOVER_CLOSE_DELAY_MS);
21227
+ if (event.currentTarget !== this.triggerEl)
21228
+ return;
21229
+ this.panelDistance = this.distanceToPanel(event);
21230
+ document.addEventListener('pointermove', this.handleMoveTowardPanel);
21231
+ };
21232
+ // A slow diagonal from the trigger to a panel shorter than it runs beside the panel for longer
21233
+ // than the close delay, so each move that brings the pointer closer starts the delay again.
21234
+ this.handleMoveTowardPanel = (event) => {
21235
+ const distance = this.distanceToPanel(event);
21236
+ if (distance < this.panelDistance) {
21237
+ clearTimeout(this.hoverCloseTimer);
21238
+ this.hoverCloseTimer = setTimeout(this.closeFromHover, HOVER_CLOSE_DELAY_MS);
21239
+ }
21240
+ this.panelDistance = distance;
21241
+ };
21242
+ this.handleHoverFocusOut = (event) => {
21243
+ if (!this.closeWhenFocusLeaves || containsComposed$1(this.portalEl, event.relatedTarget))
21244
+ return;
21245
+ this.closeWhenFocusLeaves = false;
21246
+ this.hoverCloseTimer = setTimeout(this.closeFromHover, HOVER_CLOSE_DELAY_MS);
21247
+ };
21248
+ this.closeFromHover = () => {
21249
+ this.clearHoverTimers();
21250
+ if (!this.hoverOpened)
21251
+ return;
21252
+ // Content shown on hover stays while focus is in it (WCAG 1.4.13).
21253
+ if (containsComposed$1(this.portalEl, deepActiveElement())) {
21254
+ this.closeWhenFocusLeaves = true;
21255
+ return;
21256
+ }
21257
+ this.hide();
21258
+ };
21110
21259
  /** The focus style copied into a shadow root the panel opened in, which `document.head` can't reach. */
21111
21260
  this.shadowFocusStyle = null;
21112
21261
  /** The dialog the panel was opened in, closed along with it. */
@@ -21128,6 +21277,32 @@ class PdsPopover {
21128
21277
  }
21129
21278
  };
21130
21279
  }
21280
+ openOnChanged() {
21281
+ this.pin();
21282
+ this.stopListeningForHover(this.triggerEl);
21283
+ this.stopListeningForHover(this.portalEl);
21284
+ // Out of the page, connectedCallback binds them when it comes back.
21285
+ if (!this.isComponentMounted)
21286
+ return;
21287
+ this.listenForHover(this.triggerEl);
21288
+ this.listenForHover(this.portalEl);
21289
+ }
21290
+ applyPadding() {
21291
+ if (this.portalEl != null)
21292
+ this.portalEl.style.padding = this.paddingToken();
21293
+ }
21294
+ paddingToken() {
21295
+ switch (this.padding) {
21296
+ case 'none':
21297
+ return 'var(--pine-dimension-none)';
21298
+ case 'xs':
21299
+ return 'var(--pine-dimension-xs)';
21300
+ case 'sm':
21301
+ return 'var(--pine-dimension-sm)';
21302
+ default:
21303
+ return 'var(--pine-dimension-md)';
21304
+ }
21305
+ }
21131
21306
  restorePlacementDefault(newValue) {
21132
21307
  this.placement = restoreReflectedDefault(this.el, 'placement', newValue, 'right');
21133
21308
  }
@@ -21178,6 +21353,48 @@ class PdsPopover {
21178
21353
  // Skips values already in place, so the trigger observer's own callback doesn't loop.
21179
21354
  return setAttributesIfChanged(this.triggerEl, { 'aria-expanded': String(this.active), 'aria-controls': this.portalEl.id });
21180
21355
  }
21356
+ listenForHover(el) {
21357
+ if (this.openOn !== 'hover' || el == null)
21358
+ return;
21359
+ el.addEventListener('pointerenter', this.handleHoverEnter);
21360
+ el.addEventListener('pointerleave', this.handleHoverLeave);
21361
+ el.addEventListener('focusout', this.handleHoverFocusOut);
21362
+ }
21363
+ stopListeningForHover(el) {
21364
+ if (el == null)
21365
+ return;
21366
+ el.removeEventListener('pointerenter', this.handleHoverEnter);
21367
+ el.removeEventListener('pointerleave', this.handleHoverLeave);
21368
+ el.removeEventListener('focusout', this.handleHoverFocusOut);
21369
+ }
21370
+ distanceToPanel({ clientX, clientY }) {
21371
+ const panel = this.portalEl.getBoundingClientRect();
21372
+ return Math.hypot(Math.max(panel.left - clientX, 0, clientX - panel.right), Math.max(panel.top - clientY, 0, clientY - panel.bottom));
21373
+ }
21374
+ /**
21375
+ * Keeps a popover that hover opened open, closing from then on as one opened by a click does. A
21376
+ * manual one gives up Escape again, which it took only while hover held it.
21377
+ */
21378
+ pin() {
21379
+ var _a;
21380
+ this.clearHoverTimers();
21381
+ if (!this.hoverOpened)
21382
+ return;
21383
+ this.hoverOpened = false;
21384
+ if (this.popoverType === 'auto')
21385
+ return;
21386
+ this.forgetOpen();
21387
+ (_a = this.portalEl) === null || _a === void 0 ? void 0 : _a.removeAttribute('data-pds-popover-open');
21388
+ document.removeEventListener('keydown', this.boundEscapeKeyHandler);
21389
+ }
21390
+ clearHoverTimers() {
21391
+ clearTimeout(this.hoverOpenTimer);
21392
+ clearTimeout(this.hoverCloseTimer);
21393
+ this.hoverOpenTimer = undefined;
21394
+ this.hoverCloseTimer = undefined;
21395
+ this.closeWhenFocusLeaves = false;
21396
+ document.removeEventListener('pointermove', this.handleMoveTowardPanel);
21397
+ }
21181
21398
  // componentDidLoad doesn't run again when a popover comes back, so rebuild whatever
21182
21399
  // disconnectedCallback tore down. Each step is a no-op when nothing was.
21183
21400
  connectedCallback() {
@@ -21187,6 +21404,7 @@ class PdsPopover {
21187
21404
  this.isComponentMounted = true;
21188
21405
  this.createPortal();
21189
21406
  (_a = this.triggerEl) === null || _a === void 0 ? void 0 : _a.addEventListener('click', this.handleTriggerClick);
21407
+ this.listenForHover(this.triggerEl);
21190
21408
  this.observeTrigger();
21191
21409
  this.linkTriggerToPortal();
21192
21410
  // Still open after a move: the trigger moved, so the portal follows it, into the dialog it
@@ -21221,6 +21439,7 @@ class PdsPopover {
21221
21439
  if (this.triggerEl != null) {
21222
21440
  this.triggerEl.removeEventListener('click', this.handleTriggerClick);
21223
21441
  }
21442
+ this.stopListeningForHover(this.triggerEl);
21224
21443
  (_a = this.triggerObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
21225
21444
  this.triggerObserver = null;
21226
21445
  // Clean up all event listeners
@@ -21229,6 +21448,8 @@ class PdsPopover {
21229
21448
  document.removeEventListener('submit', this.handleSubmitFromPanel, true);
21230
21449
  // Clear any pending debounce timers
21231
21450
  this.clearDebounceTimers();
21451
+ this.clearHoverTimers();
21452
+ this.hoverOpened = false;
21232
21453
  // Remove portal from DOM
21233
21454
  this.removePortal();
21234
21455
  }
@@ -21262,7 +21483,7 @@ class PdsPopover {
21262
21483
  this.portalEl.style.borderRadius = 'var(--pine-dimension-125)';
21263
21484
  this.portalEl.style.boxShadow = 'var(--pine-box-shadow-200)';
21264
21485
  this.portalEl.style.margin = 'var(--pine-dimension-none)';
21265
- this.portalEl.style.padding = 'var(--pine-dimension-md)';
21486
+ this.portalEl.style.padding = this.paddingToken();
21266
21487
  // Generate unique ID
21267
21488
  if (!this.componentId) {
21268
21489
  (_a = this.generatedPortalId) !== null && _a !== void 0 ? _a : (this.generatedPortalId = `pds-popover-portal-${PdsPopover.instanceCounter++}`);
@@ -21276,6 +21497,7 @@ class PdsPopover {
21276
21497
  // Add global focus styles to match Pine design system
21277
21498
  // This is done after appending to ensure it's part of the document and can access CSS variables
21278
21499
  this.addPortalFocusStyles();
21500
+ this.listenForHover(this.portalEl);
21279
21501
  }
21280
21502
  /**
21281
21503
  * Adds Pine design system focus styles and dark mode border to the portal element
@@ -21403,8 +21625,8 @@ class PdsPopover {
21403
21625
  // Update portal content with latest slot content
21404
21626
  this.updatePortalContent();
21405
21627
  // Show portal. The attribute tells a modal around it that this popover takes Escape first; only
21406
- // an auto popover listens for Escape.
21407
- if (this.popoverType === 'auto')
21628
+ // an auto popover, or one hover opened, listens for Escape.
21629
+ if (this.popoverType === 'auto' || this.hoverOpened)
21408
21630
  this.portalEl.setAttribute('data-pds-popover-open', '');
21409
21631
  this.portalEl.style.display = 'block';
21410
21632
  this.portalEl.style.opacity = '1';
@@ -21418,11 +21640,16 @@ class PdsPopover {
21418
21640
  // Add scroll and resize listeners for repositioning (always)
21419
21641
  this.addScrollAndResizeListeners();
21420
21642
  document.addEventListener('submit', this.handleSubmitFromPanel, true);
21421
- // Add document listeners for light dismiss and escape key (auto type only)
21643
+ // Add document listeners for light dismiss and escape key (auto type only), or for the escape
21644
+ // key alone while hover holds a manual popover open
21422
21645
  if (this.popoverType === 'auto') {
21423
- openAutoPopovers.push(this);
21646
+ popoversTakingEscape.push(this);
21424
21647
  this.addLightDismissListeners();
21425
21648
  }
21649
+ else if (this.hoverOpened) {
21650
+ popoversTakingEscape.push(this);
21651
+ document.addEventListener('keydown', this.boundEscapeKeyHandler);
21652
+ }
21426
21653
  // Emit open event
21427
21654
  this.pdsPopoverOpen.emit({
21428
21655
  componentId: this.componentId,
@@ -21433,9 +21660,11 @@ class PdsPopover {
21433
21660
  * Closes the popover programmatically
21434
21661
  */
21435
21662
  async hide() {
21663
+ this.clearHoverTimers();
21436
21664
  if (!this.active || !this.portalEl)
21437
21665
  return;
21438
21666
  this.active = false;
21667
+ this.hoverOpened = false;
21439
21668
  this.unwatchDialogClose();
21440
21669
  // Restoring the content drops its focus to the body, so check where focus is first. In a
21441
21670
  // shadow root, document.activeElement is only its host.
@@ -21514,9 +21743,9 @@ class PdsPopover {
21514
21743
  this.portalEl.style.border = root instanceof ShadowRoot && closest$1('[data-theme="dark"]', this.el) ? 'var(--pine-border)' : '';
21515
21744
  }
21516
21745
  forgetOpen() {
21517
- const index = openAutoPopovers.indexOf(this);
21746
+ const index = popoversTakingEscape.indexOf(this);
21518
21747
  if (index >= 0)
21519
- openAutoPopovers.splice(index, 1);
21748
+ popoversTakingEscape.splice(index, 1);
21520
21749
  }
21521
21750
  /**
21522
21751
  * Whether an Escape is this popover's. One from a dialog the popover isn't in belongs to that
@@ -21625,7 +21854,7 @@ class PdsPopover {
21625
21854
  return;
21626
21855
  // Like the native Popover API, Escape closes only the top popover: the last one opened that
21627
21856
  // it applies to. Every open popover hears it, so each checks whether it's that one.
21628
- const top = [...openAutoPopovers].reverse().find(popover => popover.takesEscapeFrom(event));
21857
+ const top = [...popoversTakingEscape].reverse().find(popover => popover.takesEscapeFrom(event));
21629
21858
  if (top !== this)
21630
21859
  return;
21631
21860
  // Take the key, so the dialog or modal around it doesn't close too.
@@ -21750,10 +21979,16 @@ class PdsPopover {
21750
21979
  }, 16); // ~1 frame at 60fps
21751
21980
  }
21752
21981
  render() {
21753
- return (hAsync(Host, { key: 'da8a0c715df1199231b1265085f3f9ae0234032d', id: this.componentId }, hAsync("span", { key: 'f35023492399420829cec2e88556462f5ac1663e', class: "pds-popover__trigger-wrapper" }, hAsync("slot", { key: '38ebe92eebb87665467b3f92ff94dc8095450063', name: "trigger", onSlotchange: this.handleTriggerSlotChange })), hAsync("div", { key: '8917930f4520544d14bbd68b4c7936dd60af19e3', class: "pds-popover__content-slot-wrapper" }, hAsync("slot", { key: '28d3f9112256edd95721a79a7072a9e35a3712bf', onSlotchange: this.handleContentSlotChange }))));
21982
+ return (hAsync(Host, { key: 'e48b897acdc9e89f2e6b1449e7a358da7da1060c', id: this.componentId }, hAsync("span", { key: 'b83b2c234b07703c2c850a9991c94939ed2fdaf7', class: "pds-popover__trigger-wrapper" }, hAsync("slot", { key: '0a7f7829ee445fd57cf824ebee1409b3c571f983', name: "trigger", onSlotchange: this.handleTriggerSlotChange })), hAsync("div", { key: '8c1fe2d4d7c4342b4bd5eb4c56e596f17b4e14fa', class: "pds-popover__content-slot-wrapper" }, hAsync("slot", { key: '4ccfce1f335acbc436f7942e497f5d360f849d48', onSlotchange: this.handleContentSlotChange }))));
21754
21983
  }
21755
21984
  get el() { return getElement(this); }
21756
21985
  static get watchers() { return {
21986
+ "openOn": [{
21987
+ "openOnChanged": 0
21988
+ }],
21989
+ "padding": [{
21990
+ "applyPadding": 0
21991
+ }],
21757
21992
  "placement": [{
21758
21993
  "restorePlacementDefault": 0
21759
21994
  }]
@@ -21764,9 +21999,11 @@ class PdsPopover {
21764
21999
  "$tagName$": "pds-popover",
21765
22000
  "$members$": {
21766
22001
  "popoverTargetAction": [1, "popover-target-action"],
22002
+ "openOn": [1, "open-on"],
21767
22003
  "popoverType": [1, "popover-type"],
21768
22004
  "componentId": [1, "component-id"],
21769
22005
  "maxWidth": [2, "max-width"],
22006
+ "padding": [1],
21770
22007
  "placement": [1537],
21771
22008
  "active": [32],
21772
22009
  "show": [64],
@@ -21971,11 +22208,11 @@ class PdsRadio {
21971
22208
  const renderLabelAndMessages = () => [
21972
22209
  hAsync("label", { htmlFor: this.componentId, key: `${this.componentId}-label` }, hAsync("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' : '' }), hAsync("span", { key: '2e372a880c28f48fb804bac2518208082c141fad', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)),
21973
22210
  this.helperMessage && (hAsync("div", { key: `${this.componentId}-helper`, class: 'pds-radio__message', id: messageId(this.componentId, 'helper') }, this.helperMessage)),
21974
- this.errorMessage && (hAsync("div", { key: `${this.componentId}-error`, class: `pds-radio__message pds-radio__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: '889d502575f6a162f450b6b58d76a6f6f1c74e4b', icon: danger, size: "small" }), this.errorMessage))
22211
+ this.errorMessage && (hAsync("div", { key: `${this.componentId}-error`, class: `pds-radio__message pds-radio__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: '08e7a2319eddc1d314ee9dddd51a5ce88cd4ae48', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage))
21975
22212
  ];
21976
22213
  const hostClass = this.classNames();
21977
22214
  this.hostKeeper.record(hostClass);
21978
- return (hAsync(Host, { key: '374003032b28407581a55f1fb0a304c49acf3c16', class: hostClass }, this.hasImage() && (hAsync("div", { key: '7eeb516267de1afcfa85fc7567999db488c2f4f5', class: "pds-radio__image-container", part: "image-container" }, hAsync("slot", { key: 'a312fea06f0c015bffab3bb392ff04d4913fd1c0', name: "image", onSlotchange: () => (this._hasImage = this.hasImageSlot()) }))), this.hasImage() ? (hAsync("div", { class: "pds-radio__content-wrapper" }, renderLabelAndMessages())) : (renderLabelAndMessages())));
22215
+ return (hAsync(Host, { key: '351376552abee90f50c3aceb03ecf8a81ae1b82b', class: hostClass }, this.hasImage() && (hAsync("div", { key: 'fd85fd36b2ebd99b12c3bb2a13cf3d3e3c26530f', class: "pds-radio__image-container", part: "image-container" }, hAsync("slot", { key: 'abe75dbe38d29340b805f70861b084c1b3836be9', name: "image", onSlotchange: () => (this._hasImage = this.hasImageSlot()) }))), this.hasImage() ? (hAsync("div", { class: "pds-radio__content-wrapper" }, renderLabelAndMessages())) : (renderLabelAndMessages())));
21979
22216
  }
21980
22217
  get el() { return getElement(this); }
21981
22218
  static get style() { return labelCss$3() + pdsRadioCss(); }
@@ -22173,7 +22410,7 @@ class PdsRadioGroup {
22173
22410
  'pds-radio-group__radios': true,
22174
22411
  'pds-radio-group__radios--row': this.direction === 'row',
22175
22412
  'pds-radio-group__radios--column': this.direction === 'column',
22176
- } }, hAsync("slot", { key: 'd88dde3c631e25c01bc7b6d3ef5d517255fabd1a', onSlotchange: () => this.updateChildRadios() })), this.helperMessage && (hAsync("div", { key: 'a229214ed01663b0fc34f35e27c7148b4eb412ab', class: "pds-radio-group__message", id: messageId(this._groupId, 'helper') }, this.helperMessage)), this.errorMessage && (hAsync("div", { key: 'dc092f2e6dbef0cb369cf00a6eccf9a095a0313d', class: "pds-radio-group__message pds-radio-group__message--error", id: messageId(this._groupId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: 'd242da328731e55fa52d8e624fdfc750bfa6cce4', icon: danger, size: "small" }), this.errorMessage))));
22413
+ } }, hAsync("slot", { key: 'd88dde3c631e25c01bc7b6d3ef5d517255fabd1a', onSlotchange: () => this.updateChildRadios() })), this.helperMessage && (hAsync("div", { key: 'a229214ed01663b0fc34f35e27c7148b4eb412ab', class: "pds-radio-group__message", id: messageId(this._groupId, 'helper') }, this.helperMessage)), this.errorMessage && (hAsync("div", { key: 'dc092f2e6dbef0cb369cf00a6eccf9a095a0313d', class: "pds-radio-group__message pds-radio-group__message--error", id: messageId(this._groupId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: '83b0129d3d45b74ef1f53acc923387b2de7f079b', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage))));
22177
22414
  }
22178
22415
  get el() { return getElement(this); }
22179
22416
  static get watchers() { return {
@@ -25525,7 +25762,7 @@ class PdsSwitch {
25525
25762
  this.hostKeeper.record(hostClass, {}, { 'aria-disabled': ariaDisabled });
25526
25763
  return (hAsync(Host, { key: 'b8bd2870be101081aa8a65cdee45397bc4c21435', class: hostClass, "aria-disabled": ariaDisabled }, hAsync("label", { key: '1e223f22f7fc6c576098353ad67dc11500def8b4', htmlFor: this.componentId }, hAsync("input", Object.assign({ key: 'edf59869e165a65b97465ea9de06f7ea82fbc9a6', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, checked: this.checked, class: "pds-switch__input", disabled: this.disabled, id: this.componentId, name: this.name ? this.name : this.componentId, onChange: this.onSwitchUpdate, required: this.required, type: "checkbox", value: this.value }, this.inheritedAttributes)), hAsync("span", { key: '1c252b9455471069f8c6ea6c13f2e88c99308b41', class: this.hideLabel ? 'visually-hidden' : '' }, hAsync("slot", { key: 'ce0d471918bd3018f5e55d0d1e6c5c2247790f81', name: "label", onSlotchange: this.updateHasLabelSlot }), !this.hasLabelSlot && this.label)), this.helperMessage &&
25527
25764
  hAsync("div", { key: '64874b15403f1f42344715ac34febdfb8d94042a', class: `pds-switch__message`, id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
25528
- hAsync("div", { key: '560ea486859124bb0ac2f75ab4bd34b0bca7efbc', class: `pds-switch__message pds-switch__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: 'f49caaba976579eb5588e442499595c7dba7ceff', icon: danger, size: "small" }), this.errorMessage)));
25765
+ hAsync("div", { key: '560ea486859124bb0ac2f75ab4bd34b0bca7efbc', class: `pds-switch__message pds-switch__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: '2ae8dc876745af26fa2418f2265248aeb8f97a2b', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage)));
25529
25766
  }
25530
25767
  static get formAssociated() { return true; }
25531
25768
  get el() { return getElement(this); }
@@ -26405,7 +26642,7 @@ class PdsTableHeadCell {
26405
26642
  this.tableRef.fixedColumn &&
26406
26643
  this.tableRef.selectable
26407
26644
  ? { '--fixed-cell-position': '40px' }
26408
- : {} }, hAsync("slot", { key: '96084d87a34d7b601a8e8325f344f1fe6601204e' }), this.sortable && this.isActive && (hAsync("pds-icon", { key: 'cba838fa029b280561676c2b57af7f8f00055511', icon: this.sortingDirection === 'asc' ? upSmall : downSmall, part: "sort-icon" }))));
26645
+ : {} }, hAsync("slot", { key: '96084d87a34d7b601a8e8325f344f1fe6601204e' }), this.sortable && this.isActive && (hAsync("pds-icon", { key: '79606519d810dc9882a91cbc3b6a199457086631', icon: this.sortingDirection === 'asc' ? upSmall : downSmall, part: "sort-icon", "aria-hidden": "true" }))));
26409
26646
  }
26410
26647
  get hostElement() { return getElement(this); }
26411
26648
  static get style() { return pdsTableHeadCellCss(); }
@@ -27407,7 +27644,7 @@ class PdsTextarea {
27407
27644
  return (hAsync(Host, { key: '5933dab0c3cd25b1cf2f6851ece8e8064bc7f3b9', "aria-disabled": this.disabled ? 'true' : null, "aria-readonly": this.readonly ? 'true' : null, "has-action": this.hasAction && !this.hideLabel ? 'true' : null }, hAsync("div", { key: '4f1752514d8e5b0f0e3439515cb9e5f043607da1', class: "pds-textarea" }, this.label &&
27408
27645
  hAsync("div", { key: 'd4e6df0b381d781b70eeae72ff2f0e9428c0d901', class: "pds-textarea__label-wrapper" }, hAsync("label", { key: '747d82067eb571d02840cfd981865821099f288b', htmlFor: this.componentId }, hAsync("span", { key: 'bfab6e8ede66d0169dd020b7dd97e125aba417b0', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), !this.hideLabel && this.renderAction()), hAsync("div", { key: 'a18611c03270e7491c1af69f931419c832192c06', class: "pds-textarea__field-wrapper" }, hAsync("textarea", Object.assign({ key: '868382c7b04a4e59c0daa9d98afcdc9048f6224f', ref: (el) => this.nativeTextarea = el, "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, autocomplete: this.autocomplete, class: this.textareaClassNames(), disabled: this.disabled, id: this.componentId, maxlength: this.maxLength, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, rows: this.rows, onBlur: this.onBlur, onChange: this.onTextareaChange, onFocus: this.onFocus, onInput: this.onInput, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value), this.renderCharacterCounter()), this.helperMessage &&
27409
27646
  hAsync("p", { key: 'dcb36f21443d2a782c25b7c29c4ce6215f3b212b', class: "pds-textarea__helper-message", id: messageId(this.componentId, 'helper') }, this.helperMessage), this.invalid &&
27410
- hAsync("p", { key: 'be30fb1a38453296e26b775955389c0ec569df67', "aria-live": "assertive", class: "pds-textarea__error-message", id: messageId(this.componentId, 'error') }, hAsync("pds-icon", { key: 'd93dce10d9d9db5815ac5f331848940aed735ba0', icon: danger, size: "small" }), this.errorMessage))));
27647
+ hAsync("p", { key: 'be30fb1a38453296e26b775955389c0ec569df67', "aria-live": "assertive", class: "pds-textarea__error-message", id: messageId(this.componentId, 'error') }, hAsync("pds-icon", { key: '853f06489ef6ca50205799659d221bd3bea7d8da', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage))));
27411
27648
  }
27412
27649
  static get formAssociated() { return true; }
27413
27650
  get el() { return getElement(this); }
@@ -27587,7 +27824,7 @@ class PdsToast {
27587
27824
  'pds-toast--animating-out': this.isAnimatingOut
27588
27825
  }, role: "alert", "aria-live": "polite" }, this.renderIcon(), hAsync("span", { key: 'eaf615d41c138e2c73088d29bac9349f49a63ba7', class: "pds-toast__message" }, hAsync("slot", { key: '33973447154d80b016f5a7954b0473db03228379' })), this.dismissible && (hAsync("button", { key: 'e189834633e1e648282ee43633fd05e53ce38869', type: "button", part: "dismiss", class: "pds-toast__button", onClick: () => {
27589
27826
  this.dismiss();
27590
- }, "aria-label": this.dismissLabel }, hAsync("pds-icon", { key: '623a0e4d56e30781fb31bcd085511c17a4777edc', name: "remove" }))))));
27827
+ }, "aria-label": this.dismissLabel }, hAsync("pds-icon", { key: '913201979e52be743ba933ff173e023b81553362', name: "remove", "aria-hidden": "true" }))))));
27591
27828
  }
27592
27829
  get el() { return getElement(this); }
27593
27830
  static get watchers() { return {