@pine-ds/core 4.10.0 → 4.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (511) hide show
  1. package/components/aria-references.js +1 -0
  2. package/components/attributes.js +1 -1
  3. package/components/index2.js +1 -1
  4. package/components/pds-alert.js +1 -1
  5. package/components/pds-avatar.js +1 -1
  6. package/components/pds-box2.js +1 -1
  7. package/components/pds-button2.js +1 -1
  8. package/components/pds-checkbox2.js +1 -1
  9. package/components/pds-chip2.js +1 -1
  10. package/components/pds-combobox.js +2 -2
  11. package/components/pds-copytext.js +1 -1
  12. package/components/pds-datepicker.js +1 -1
  13. package/components/pds-drawer-content.js +1 -1
  14. package/components/pds-drawer-footer.js +1 -1
  15. package/components/pds-drawer-header.js +1 -1
  16. package/components/pds-drawer.js +1 -1
  17. package/components/pds-dropdown-menu-item.js +1 -1
  18. package/components/pds-dropdown-menu-separator.js +1 -1
  19. package/components/pds-dropdown-menu.js +1 -1
  20. package/components/pds-filter.js +1 -1
  21. package/components/pds-image.js +1 -1
  22. package/components/pds-input2.js +1 -1
  23. package/components/pds-link2.js +1 -1
  24. package/components/pds-loader2.js +1 -1
  25. package/components/pds-modal-footer.js +1 -1
  26. package/components/pds-modal-header.js +1 -1
  27. package/components/pds-modal2.js +1 -1
  28. package/components/pds-multiselect.js +1 -1
  29. package/components/pds-popover.js +1 -1
  30. package/components/pds-progress.js +1 -1
  31. package/components/pds-radio-group.js +1 -1
  32. package/components/pds-radio.js +1 -1
  33. package/components/pds-select.js +1 -1
  34. package/components/pds-sortable-item.js +1 -1
  35. package/components/pds-sortable.js +2 -2
  36. package/components/pds-switch.js +1 -1
  37. package/components/pds-table-body.js +1 -1
  38. package/components/pds-table-cell2.js +1 -1
  39. package/components/pds-table-head-cell2.js +1 -1
  40. package/components/pds-table-head.js +1 -1
  41. package/components/pds-table-row.js +1 -1
  42. package/components/pds-table.js +1 -1
  43. package/components/pds-tabs.js +1 -1
  44. package/components/pds-text2.js +1 -1
  45. package/components/pds-textarea.js +1 -1
  46. package/components/pds-toast.js +1 -1
  47. package/components/pds-tooltip.js +1 -1
  48. package/components/sortable-label.js +1 -0
  49. package/components/truncation-tooltip.js +1 -1
  50. package/dist/cjs/aria-references-CUmqibnO.js +54 -0
  51. package/dist/cjs/{attributes-CW49XqaL.js → attributes-Cgbkw6gO.js} +3 -0
  52. package/dist/cjs/loader.cjs.js +1 -1
  53. package/dist/cjs/pds-alert.cjs.entry.js +2 -2
  54. package/dist/cjs/pds-avatar.cjs.entry.js +3 -2
  55. package/dist/cjs/pds-box.cjs.entry.js +4 -3
  56. package/dist/cjs/pds-button.cjs.entry.js +25 -45
  57. package/dist/cjs/pds-checkbox.cjs.entry.js +4 -4
  58. package/dist/cjs/pds-chip.cjs.entry.js +3 -3
  59. package/dist/cjs/pds-combobox.cjs.entry.js +246 -106
  60. package/dist/cjs/pds-copytext.cjs.entry.js +3 -3
  61. package/dist/cjs/pds-datepicker.cjs.entry.js +295 -82
  62. package/dist/cjs/pds-drawer-content.cjs.entry.js +1 -1
  63. package/dist/cjs/pds-drawer-footer.cjs.entry.js +1 -1
  64. package/dist/cjs/pds-drawer-header.cjs.entry.js +1 -1
  65. package/dist/cjs/pds-drawer.cjs.entry.js +5 -7
  66. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +85 -49
  67. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +2 -2
  68. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +83 -10
  69. package/dist/cjs/pds-filter.cjs.entry.js +24 -2
  70. package/dist/cjs/pds-image.cjs.entry.js +148 -6
  71. package/dist/cjs/pds-input.cjs.entry.js +4 -4
  72. package/dist/cjs/pds-link.cjs.entry.js +4 -5
  73. package/dist/cjs/pds-loader.cjs.entry.js +4 -3
  74. package/dist/cjs/pds-modal-footer.cjs.entry.js +1 -1
  75. package/dist/cjs/pds-modal-header.cjs.entry.js +1 -1
  76. package/dist/cjs/pds-modal.cjs.entry.js +9 -12
  77. package/dist/cjs/pds-multiselect.cjs.entry.js +64 -18
  78. package/dist/cjs/pds-popover.cjs.entry.js +8 -6
  79. package/dist/cjs/pds-progress.cjs.entry.js +3 -3
  80. package/dist/cjs/pds-radio-group.cjs.entry.js +4 -4
  81. package/dist/cjs/pds-radio.cjs.entry.js +6 -6
  82. package/dist/cjs/pds-row.cjs.entry.js +1 -1
  83. package/dist/cjs/pds-select.cjs.entry.js +2 -2
  84. package/dist/cjs/pds-sortable-item.cjs.entry.js +28 -5
  85. package/dist/cjs/pds-sortable.cjs.entry.js +356 -4
  86. package/dist/cjs/pds-switch.cjs.entry.js +92 -15
  87. package/dist/cjs/pds-tab.cjs.entry.js +1 -1
  88. package/dist/cjs/pds-table-body.cjs.entry.js +1 -1
  89. package/dist/cjs/pds-table-cell.cjs.entry.js +24 -5
  90. package/dist/cjs/pds-table-head-cell.cjs.entry.js +59 -11
  91. package/dist/cjs/pds-table-head.cjs.entry.js +1 -1
  92. package/dist/cjs/pds-table-row.cjs.entry.js +1 -1
  93. package/dist/cjs/pds-table.cjs.entry.js +260 -5
  94. package/dist/cjs/pds-tabpanel.cjs.entry.js +1 -1
  95. package/dist/cjs/pds-tabs.cjs.entry.js +3 -3
  96. package/dist/cjs/pds-text.cjs.entry.js +5 -3
  97. package/dist/cjs/pds-textarea.cjs.entry.js +8 -7
  98. package/dist/cjs/pds-toast.cjs.entry.js +8 -4
  99. package/dist/cjs/pds-tooltip.cjs.entry.js +1 -1
  100. package/dist/cjs/pine-core.cjs.js +1 -1
  101. package/dist/cjs/sortable-label-DOcJrHvA.js +37 -0
  102. package/dist/cjs/{truncation-tooltip-Bikp7n9I.js → truncation-tooltip-CM5HgRHh.js} +69 -0
  103. package/dist/collection/components/pds-alert/pds-alert.css +0 -3
  104. package/dist/collection/components/pds-alert/pds-alert.js +3 -2
  105. package/dist/collection/components/pds-avatar/pds-avatar.js +7 -6
  106. package/dist/collection/components/pds-avatar/stories/pds-avatar.stories.js +1 -1
  107. package/dist/collection/components/pds-box/pds-box.css +1273 -1189
  108. package/dist/collection/components/pds-box/pds-box.js +180 -156
  109. package/dist/collection/components/pds-box/stories/pds-box.stories.js +79 -37
  110. package/dist/collection/components/pds-button/pds-button.js +26 -4
  111. package/dist/collection/components/pds-button/stories/pds-button.stories.js +25 -11
  112. package/dist/collection/components/pds-checkbox/pds-checkbox.js +10 -10
  113. package/dist/collection/components/pds-chip/pds-chip.js +3 -3
  114. package/dist/collection/components/pds-combobox/pds-combobox.css +162 -53
  115. package/dist/collection/components/pds-combobox/pds-combobox.js +261 -121
  116. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +35 -4
  117. package/dist/collection/components/pds-copytext/pds-copytext.js +2 -2
  118. package/dist/collection/components/pds-datepicker/date-utils.js +42 -0
  119. package/dist/collection/components/pds-datepicker/pds-datepicker.js +164 -65
  120. package/dist/collection/components/pds-datepicker/presets.js +42 -7
  121. package/dist/collection/components/pds-datepicker/stories/pds-datepicker.stories.js +11 -0
  122. package/dist/collection/components/pds-datepicker/value.js +76 -18
  123. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.js +2 -5
  124. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.js +2 -1
  125. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.js +2 -1
  126. package/dist/collection/components/pds-drawer/pds-drawer.js +8 -10
  127. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.css +17 -8
  128. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +95 -62
  129. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +3 -3
  130. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +2 -0
  131. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +84 -9
  132. package/dist/collection/components/pds-dropdown-menu/stories/pds-dropdown-menu.stories.js +24 -1
  133. package/dist/collection/components/pds-filters/pds-filter/pds-filter.css +2 -1
  134. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +24 -7
  135. package/dist/collection/components/pds-image/image-interface.js +1 -0
  136. package/dist/collection/components/pds-image/pds-image.css +11 -0
  137. package/dist/collection/components/pds-image/pds-image.js +249 -8
  138. package/dist/collection/components/pds-image/stories/pds-image.stories.js +117 -1
  139. package/dist/collection/components/pds-input/pds-input.js +14 -9
  140. package/dist/collection/components/pds-link/pds-link.js +10 -14
  141. package/dist/collection/components/pds-link/stories/pds-link.stories.js +6 -2
  142. package/dist/collection/components/pds-loader/pds-loader.js +5 -4
  143. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +2 -1
  144. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +2 -1
  145. package/dist/collection/components/pds-modal/pds-modal.js +11 -13
  146. package/dist/collection/components/pds-modal/stories/pds-modal.stories.js +7 -7
  147. package/dist/collection/components/pds-multiselect/pds-multiselect.css +2 -2
  148. package/dist/collection/components/pds-multiselect/pds-multiselect.js +63 -18
  149. package/dist/collection/components/pds-popover/pds-popover.css +1 -1
  150. package/dist/collection/components/pds-popover/pds-popover.js +9 -7
  151. package/dist/collection/components/pds-progress/pds-progress.js +4 -4
  152. package/dist/collection/components/pds-radio/pds-radio.css +5 -1
  153. package/dist/collection/components/pds-radio/pds-radio.js +9 -9
  154. package/dist/collection/components/pds-radio/stories/pds-radio.stories.js +9 -9
  155. package/dist/collection/components/pds-radio-group/pds-radio-group.js +7 -7
  156. package/dist/collection/components/pds-radio-group/stories/pds-radio-group.stories.js +3 -3
  157. package/dist/collection/components/pds-row/stories/pds-row.stories.js +15 -14
  158. package/dist/collection/components/pds-select/pds-select.js +7 -4
  159. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.css +38 -0
  160. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +47 -5
  161. package/dist/collection/components/pds-sortable/pds-sortable.js +481 -5
  162. package/dist/collection/components/pds-sortable/sortable-label.js +33 -0
  163. package/dist/collection/components/pds-sortable/stories/pds-sortable.stories.js +27 -0
  164. package/dist/collection/components/pds-switch/pds-switch.js +114 -17
  165. package/dist/collection/components/pds-switch/stories/pds-switch.stories.js +79 -0
  166. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +4 -1
  167. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +47 -4
  168. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +6 -2
  169. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.css +11 -0
  170. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +98 -10
  171. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +5 -1
  172. package/dist/collection/components/pds-table/pds-table.css +8 -0
  173. package/dist/collection/components/pds-table/pds-table.js +295 -7
  174. package/dist/collection/components/pds-table/stories/pds-table.stories.js +131 -6
  175. package/dist/collection/components/pds-tabs/pds-tabs.js +3 -3
  176. package/dist/collection/components/pds-tabs/stories/pds-tabs.stories.js +1 -1
  177. package/dist/collection/components/pds-text/pds-text.js +5 -3
  178. package/dist/collection/components/pds-textarea/pds-textarea.js +16 -14
  179. package/dist/collection/components/pds-textarea/stories/pds-textarea.stories.js +2 -13
  180. package/dist/collection/components/pds-toast/pds-toast.css +4 -3
  181. package/dist/collection/components/pds-toast/pds-toast.js +9 -5
  182. package/dist/collection/components/pds-toast/stories/pds-toast.stories.js +2 -2
  183. package/dist/collection/components/pds-tooltip/pds-tooltip.css +2 -1
  184. package/dist/collection/components/pds-tooltip/stories/pds-tooltip.stories.js +17 -17
  185. package/dist/collection/utils/aria-references.js +9 -3
  186. package/dist/collection/utils/truncation-tooltip.js +67 -0
  187. package/dist/docs.json +1150 -371
  188. package/dist/esm/aria-references-CNn1lObg.js +50 -0
  189. package/dist/esm/{attributes-DkeVeN0g.js → attributes-CD8knu3a.js} +3 -0
  190. package/dist/esm/{index-DvN3tyZp.js → index-B0DXTeeV.js} +1 -1
  191. package/dist/esm/loader.js +1 -1
  192. package/dist/esm/pds-accordion.entry.js +1 -1
  193. package/dist/esm/pds-alert.entry.js +2 -2
  194. package/dist/esm/pds-avatar.entry.js +4 -3
  195. package/dist/esm/pds-box.entry.js +4 -3
  196. package/dist/esm/pds-button.entry.js +24 -44
  197. package/dist/esm/pds-checkbox.entry.js +5 -5
  198. package/dist/esm/pds-chip.entry.js +4 -4
  199. package/dist/esm/pds-combobox.entry.js +246 -106
  200. package/dist/esm/pds-copytext.entry.js +4 -4
  201. package/dist/esm/pds-datepicker.entry.js +296 -83
  202. package/dist/esm/pds-drawer-content.entry.js +1 -1
  203. package/dist/esm/pds-drawer-footer.entry.js +1 -1
  204. package/dist/esm/pds-drawer-header.entry.js +1 -1
  205. package/dist/esm/pds-drawer.entry.js +5 -7
  206. package/dist/esm/pds-dropdown-menu-item.entry.js +85 -49
  207. package/dist/esm/pds-dropdown-menu-separator.entry.js +2 -2
  208. package/dist/esm/pds-dropdown-menu.entry.js +84 -11
  209. package/dist/esm/pds-filter.entry.js +25 -3
  210. package/dist/esm/pds-image.entry.js +149 -7
  211. package/dist/esm/pds-input.entry.js +5 -5
  212. package/dist/esm/pds-link.entry.js +5 -6
  213. package/dist/esm/pds-loader.entry.js +4 -3
  214. package/dist/esm/pds-modal-footer.entry.js +1 -1
  215. package/dist/esm/pds-modal-header.entry.js +1 -1
  216. package/dist/esm/pds-modal.entry.js +9 -12
  217. package/dist/esm/pds-multiselect.entry.js +65 -19
  218. package/dist/esm/pds-popover.entry.js +8 -6
  219. package/dist/esm/pds-progress.entry.js +3 -3
  220. package/dist/esm/pds-radio-group.entry.js +5 -5
  221. package/dist/esm/pds-radio.entry.js +7 -7
  222. package/dist/esm/pds-row.entry.js +1 -1
  223. package/dist/esm/pds-select.entry.js +3 -3
  224. package/dist/esm/pds-sortable-item.entry.js +29 -6
  225. package/dist/esm/pds-sortable.entry.js +357 -5
  226. package/dist/esm/pds-switch.entry.js +94 -17
  227. package/dist/esm/pds-tab.entry.js +1 -1
  228. package/dist/esm/pds-table-body.entry.js +1 -1
  229. package/dist/esm/pds-table-cell.entry.js +24 -5
  230. package/dist/esm/pds-table-head-cell.entry.js +60 -12
  231. package/dist/esm/pds-table-head.entry.js +1 -1
  232. package/dist/esm/pds-table-row.entry.js +1 -1
  233. package/dist/esm/pds-table.entry.js +261 -6
  234. package/dist/esm/pds-tabpanel.entry.js +1 -1
  235. package/dist/esm/pds-tabs.entry.js +3 -3
  236. package/dist/esm/pds-text.entry.js +5 -3
  237. package/dist/esm/pds-textarea.entry.js +9 -8
  238. package/dist/esm/pds-toast.entry.js +8 -4
  239. package/dist/esm/pds-tooltip.entry.js +1 -1
  240. package/dist/esm/pine-core.js +1 -1
  241. package/dist/esm/sortable-label-PItnzVVR.js +35 -0
  242. package/dist/esm/{truncation-tooltip-DBcPipr9.js → truncation-tooltip-CkIWm6Z-.js} +68 -1
  243. package/dist/esm-es5/aria-references-CNn1lObg.js +1 -0
  244. package/dist/esm-es5/{attributes-DkeVeN0g.js → attributes-CD8knu3a.js} +1 -1
  245. package/dist/esm-es5/{index-DvN3tyZp.js → index-B0DXTeeV.js} +1 -1
  246. package/dist/esm-es5/loader.js +1 -1
  247. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  248. package/dist/esm-es5/pds-alert.entry.js +1 -1
  249. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  250. package/dist/esm-es5/pds-box.entry.js +1 -1
  251. package/dist/esm-es5/pds-button.entry.js +1 -1
  252. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  253. package/dist/esm-es5/pds-chip.entry.js +1 -1
  254. package/dist/esm-es5/pds-combobox.entry.js +1 -1
  255. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  256. package/dist/esm-es5/pds-datepicker.entry.js +1 -1
  257. package/dist/esm-es5/pds-drawer-content.entry.js +1 -1
  258. package/dist/esm-es5/pds-drawer-footer.entry.js +1 -1
  259. package/dist/esm-es5/pds-drawer-header.entry.js +1 -1
  260. package/dist/esm-es5/pds-drawer.entry.js +1 -1
  261. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  262. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  263. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  264. package/dist/esm-es5/pds-filter.entry.js +1 -1
  265. package/dist/esm-es5/pds-image.entry.js +1 -1
  266. package/dist/esm-es5/pds-input.entry.js +1 -1
  267. package/dist/esm-es5/pds-link.entry.js +1 -1
  268. package/dist/esm-es5/pds-loader.entry.js +1 -1
  269. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  270. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  271. package/dist/esm-es5/pds-modal.entry.js +1 -1
  272. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  273. package/dist/esm-es5/pds-popover.entry.js +1 -1
  274. package/dist/esm-es5/pds-progress.entry.js +1 -1
  275. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  276. package/dist/esm-es5/pds-radio.entry.js +1 -1
  277. package/dist/esm-es5/pds-row.entry.js +1 -1
  278. package/dist/esm-es5/pds-select.entry.js +1 -1
  279. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  280. package/dist/esm-es5/pds-sortable.entry.js +2 -2
  281. package/dist/esm-es5/pds-switch.entry.js +1 -1
  282. package/dist/esm-es5/pds-tab.entry.js +1 -1
  283. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  284. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  285. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  286. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  287. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  288. package/dist/esm-es5/pds-table.entry.js +1 -1
  289. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  290. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  291. package/dist/esm-es5/pds-text.entry.js +1 -1
  292. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  293. package/dist/esm-es5/pds-toast.entry.js +1 -1
  294. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  295. package/dist/esm-es5/pine-core.js +1 -1
  296. package/dist/esm-es5/sortable-label-PItnzVVR.js +1 -0
  297. package/dist/esm-es5/truncation-tooltip-CkIWm6Z-.js +1 -0
  298. package/dist/pine-core/{p-f834cb07.system.entry.js → p-00891b8d.system.entry.js} +1 -1
  299. package/dist/pine-core/{p-3f8bd3fb.system.entry.js → p-053ff8eb.system.entry.js} +1 -1
  300. package/dist/pine-core/p-08b9e3ad.entry.js +1 -0
  301. package/dist/pine-core/{p-4d98bc0c.system.entry.js → p-0a7570dd.system.entry.js} +1 -1
  302. package/dist/pine-core/{p-d018dc60.system.entry.js → p-0ac4262e.system.entry.js} +1 -1
  303. package/dist/pine-core/{p-89d38a82.system.entry.js → p-0e1b8bd1.system.entry.js} +1 -1
  304. package/dist/pine-core/{p-e1d1b5d8.entry.js → p-12fdc65f.entry.js} +1 -1
  305. package/dist/pine-core/{p-d48fe5a0.system.entry.js → p-16fceef6.system.entry.js} +1 -1
  306. package/dist/pine-core/p-1765a41b.system.entry.js +1 -0
  307. package/dist/pine-core/{p-a594c41f.entry.js → p-18524c25.entry.js} +1 -1
  308. package/dist/pine-core/p-1a013a5c.system.entry.js +1 -0
  309. package/dist/pine-core/{p-2b9622c1.system.entry.js → p-1ab52531.system.entry.js} +1 -1
  310. package/dist/pine-core/p-1c584a20.entry.js +1 -0
  311. package/dist/pine-core/p-1edef412.entry.js +1 -0
  312. package/dist/pine-core/{p-5946203c.entry.js → p-1f998e3e.entry.js} +1 -1
  313. package/dist/pine-core/{p-39e57657.entry.js → p-1fb1ca3d.entry.js} +1 -1
  314. package/dist/pine-core/p-2b6becc2.entry.js +1 -0
  315. package/dist/pine-core/p-2cc7c682.entry.js +1 -0
  316. package/dist/pine-core/{p-639acef8.system.entry.js → p-2ddcd845.system.entry.js} +1 -1
  317. package/dist/pine-core/{p-6a1aa8d3.entry.js → p-2f15e85f.entry.js} +1 -1
  318. package/dist/pine-core/{p-67f795d5.system.entry.js → p-33da254f.system.entry.js} +1 -1
  319. package/dist/pine-core/{p-c6a9e62c.system.entry.js → p-3fc9ef80.system.entry.js} +1 -1
  320. package/dist/pine-core/p-4125a4a6.system.entry.js +1 -0
  321. package/dist/pine-core/p-47df9e9f.system.entry.js +3 -0
  322. package/dist/pine-core/p-51680c9c.system.entry.js +1 -0
  323. package/dist/pine-core/p-55535481.system.entry.js +1 -0
  324. package/dist/pine-core/p-55a4659a.system.entry.js +1 -0
  325. package/dist/pine-core/{p-c5e1eb3c.system.entry.js → p-57af5c29.system.entry.js} +1 -1
  326. package/dist/pine-core/p-57edd301.system.entry.js +1 -0
  327. package/dist/pine-core/{p-bfa34194.entry.js → p-5d582798.entry.js} +1 -1
  328. package/dist/pine-core/p-5db87fda.system.entry.js +1 -0
  329. package/dist/pine-core/{p-19cf1d91.system.entry.js → p-5eb0c78c.system.entry.js} +1 -1
  330. package/dist/pine-core/{p-42f70f93.system.entry.js → p-6017afb5.system.entry.js} +1 -1
  331. package/dist/pine-core/{p-63f85859.system.entry.js → p-60e65fe0.system.entry.js} +1 -1
  332. package/dist/pine-core/{p-973c3ac0.entry.js → p-627a94da.entry.js} +1 -1
  333. package/dist/pine-core/{p-a9d96e22.entry.js → p-68328afc.entry.js} +1 -1
  334. package/dist/pine-core/{p-bd7dc317.system.entry.js → p-72668673.system.entry.js} +1 -1
  335. package/dist/pine-core/p-72ff5ad2.system.entry.js +1 -0
  336. package/dist/pine-core/p-736ea7dd.entry.js +7 -0
  337. package/dist/pine-core/p-765f4207.entry.js +1 -0
  338. package/dist/pine-core/{p-2a18852f.entry.js → p-77530cf2.entry.js} +1 -1
  339. package/dist/pine-core/p-77a22399.entry.js +1 -0
  340. package/dist/pine-core/p-783127bf.entry.js +1 -0
  341. package/dist/pine-core/{p-d9719e37.entry.js → p-82f7eed1.entry.js} +1 -1
  342. package/dist/pine-core/{p-124a0a24.entry.js → p-84d4ae26.entry.js} +1 -1
  343. package/dist/pine-core/p-8deeda07.entry.js +1 -0
  344. package/dist/pine-core/{p-849ec281.system.entry.js → p-8e17a6d8.system.entry.js} +1 -1
  345. package/dist/pine-core/p-8e7e7bba.entry.js +1 -0
  346. package/dist/pine-core/{p-e82f758f.system.entry.js → p-907c69e9.system.entry.js} +1 -1
  347. package/dist/pine-core/{p-1415c988.system.entry.js → p-90f83a5b.system.entry.js} +1 -1
  348. package/dist/pine-core/p-97145eee.system.entry.js +1 -0
  349. package/dist/pine-core/{p-a09c9c5e.system.entry.js → p-9d983e09.system.entry.js} +1 -1
  350. package/dist/pine-core/{p-1e3ef425.entry.js → p-9e005996.entry.js} +1 -1
  351. package/dist/pine-core/{p-DvN3tyZp.js → p-B0DXTeeV.js} +1 -1
  352. package/dist/pine-core/{p-CNXspDYs.system.js → p-BlJQebvG.system.js} +1 -1
  353. package/dist/pine-core/p-C35-349-.system.js +1 -0
  354. package/dist/pine-core/{p-vFsJv75D.system.js → p-CIe1DGXa.system.js} +1 -1
  355. package/dist/pine-core/p-CNn1lObg.js +1 -0
  356. package/dist/pine-core/p-CQJ44c6o.system.js +1 -0
  357. package/dist/pine-core/p-Dv9QBmIF.js +1 -0
  358. package/dist/pine-core/p-PItnzVVR.js +1 -0
  359. package/dist/pine-core/p-VPGVqK3P.system.js +1 -0
  360. package/dist/pine-core/p-XK45dzWR.system.js +1 -1
  361. package/dist/pine-core/p-a149af29.entry.js +1 -0
  362. package/dist/pine-core/p-a20d9eca.system.entry.js +1 -0
  363. package/dist/pine-core/{p-f6f4fd42.entry.js → p-a5782d99.entry.js} +1 -1
  364. package/dist/pine-core/p-a5e9c583.entry.js +1 -0
  365. package/dist/pine-core/{p-4d47023c.system.entry.js → p-a9eaf160.system.entry.js} +1 -1
  366. package/dist/pine-core/{p-143b33a6.entry.js → p-b00b07e3.entry.js} +1 -1
  367. package/dist/pine-core/{p-c7a53c4f.entry.js → p-b7b29392.entry.js} +1 -1
  368. package/dist/pine-core/p-b96bdff6.entry.js +1 -0
  369. package/dist/pine-core/{p-f71d71ca.entry.js → p-bbd9ab75.entry.js} +1 -1
  370. package/dist/pine-core/p-bdab6c9f.entry.js +1 -0
  371. package/dist/pine-core/p-biShcgLI.js +1 -0
  372. package/dist/pine-core/{p-548bce53.system.entry.js → p-c12b5cd7.system.entry.js} +1 -1
  373. package/dist/pine-core/p-c1dc7692.entry.js +1 -0
  374. package/dist/pine-core/p-c76d8b9e.system.entry.js +1 -0
  375. package/dist/pine-core/{p-590df41a.entry.js → p-c89ea2d3.entry.js} +1 -1
  376. package/dist/pine-core/{p-d920d759.system.entry.js → p-c9630934.system.entry.js} +1 -1
  377. package/dist/pine-core/{p-6f4ab1ea.system.entry.js → p-cb9227f6.system.entry.js} +1 -1
  378. package/dist/pine-core/p-ceef0eb1.entry.js +1 -0
  379. package/dist/pine-core/p-d1283e8d.entry.js +1 -0
  380. package/dist/pine-core/p-d676926d.system.entry.js +1 -0
  381. package/dist/pine-core/{p-61cfdbb2.entry.js → p-d7d7a4e1.entry.js} +1 -1
  382. package/dist/pine-core/p-d85d50cb.entry.js +1 -0
  383. package/dist/pine-core/p-daa802f1.entry.js +2 -0
  384. package/dist/pine-core/p-ddf4b9b5.system.entry.js +1 -0
  385. package/dist/pine-core/p-de3b319e.system.entry.js +8 -0
  386. package/dist/pine-core/{p-cb9baf78.system.entry.js → p-e00777da.system.entry.js} +1 -1
  387. package/dist/pine-core/p-e2541eeb.entry.js +1 -0
  388. package/dist/pine-core/{p-01f1cdaf.system.entry.js → p-e2a1a49a.system.entry.js} +1 -1
  389. package/dist/pine-core/p-e4ebea88.system.entry.js +1 -0
  390. package/dist/pine-core/{p-947582e1.entry.js → p-e554bd64.entry.js} +1 -1
  391. package/dist/pine-core/{p-dd7ded84.entry.js → p-e6427c87.entry.js} +1 -1
  392. package/dist/pine-core/{p-50ddadbf.entry.js → p-e72e8b8f.entry.js} +1 -1
  393. package/dist/pine-core/p-e92d0f0f.system.entry.js +1 -0
  394. package/dist/pine-core/{p-9b32727a.system.entry.js → p-eab165b9.system.entry.js} +1 -1
  395. package/dist/pine-core/p-eabc4bd8.entry.js +1 -0
  396. package/dist/pine-core/p-ef9f84f2.system.entry.js +1 -0
  397. package/dist/pine-core/{p-c9ae7964.entry.js → p-f026af73.entry.js} +1 -1
  398. package/dist/pine-core/{p-99530cb5.entry.js → p-f0509c8e.entry.js} +1 -1
  399. package/dist/pine-core/p-f1252e72.system.entry.js +1 -0
  400. package/dist/pine-core/p-f3496fd1.entry.js +1 -0
  401. package/dist/pine-core/{p-eecd9ad8.system.entry.js → p-f90f4be7.system.entry.js} +1 -1
  402. package/dist/pine-core/p-f9bdaadd.system.entry.js +1 -0
  403. package/dist/pine-core/{p-128c04e7.entry.js → p-fda791df.entry.js} +1 -1
  404. package/dist/pine-core/p-fea4296d.entry.js +1 -0
  405. package/dist/pine-core/pine-core.esm.js +1 -1
  406. package/dist/types/components/pds-alert/pds-alert.d.ts +2 -1
  407. package/dist/types/components/pds-avatar/pds-avatar.d.ts +5 -4
  408. package/dist/types/components/pds-box/pds-box.d.ts +68 -57
  409. package/dist/types/components/pds-button/pds-button.d.ts +14 -3
  410. package/dist/types/components/pds-checkbox/pds-checkbox.d.ts +15 -8
  411. package/dist/types/components/pds-chip/pds-chip.d.ts +2 -2
  412. package/dist/types/components/pds-combobox/pds-combobox.d.ts +48 -11
  413. package/dist/types/components/pds-copytext/pds-copytext.d.ts +3 -1
  414. package/dist/types/components/pds-datepicker/date-utils.d.ts +19 -0
  415. package/dist/types/components/pds-datepicker/datepicker-interface.d.ts +22 -5
  416. package/dist/types/components/pds-datepicker/pds-datepicker.d.ts +33 -7
  417. package/dist/types/components/pds-datepicker/presets.d.ts +3 -2
  418. package/dist/types/components/pds-datepicker/value.d.ts +14 -2
  419. package/dist/types/components/pds-drawer/pds-drawer-content/pds-drawer-content.d.ts +1 -4
  420. package/dist/types/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.d.ts +1 -0
  421. package/dist/types/components/pds-drawer/pds-drawer-header/pds-drawer-header.d.ts +1 -0
  422. package/dist/types/components/pds-drawer/pds-drawer.d.ts +4 -6
  423. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.d.ts +20 -16
  424. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.d.ts +1 -1
  425. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +7 -0
  426. package/dist/types/components/pds-filters/pds-filter/pds-filter.d.ts +6 -5
  427. package/dist/types/components/pds-image/image-interface.d.ts +12 -0
  428. package/dist/types/components/pds-image/pds-image.d.ts +69 -9
  429. package/dist/types/components/pds-input/pds-input.d.ts +17 -7
  430. package/dist/types/components/pds-link/pds-link.d.ts +8 -8
  431. package/dist/types/components/pds-loader/pds-loader.d.ts +3 -2
  432. package/dist/types/components/pds-modal/pds-modal-footer/pds-modal-footer.d.ts +1 -0
  433. package/dist/types/components/pds-modal/pds-modal-header/pds-modal-header.d.ts +1 -0
  434. package/dist/types/components/pds-modal/pds-modal.d.ts +7 -9
  435. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +14 -8
  436. package/dist/types/components/pds-popover/pds-popover.d.ts +2 -2
  437. package/dist/types/components/pds-progress/pds-progress.d.ts +2 -2
  438. package/dist/types/components/pds-radio/pds-radio.d.ts +6 -5
  439. package/dist/types/components/pds-radio-group/pds-radio-group.d.ts +5 -4
  440. package/dist/types/components/pds-select/pds-select.d.ts +9 -3
  441. package/dist/types/components/pds-sortable/pds-sortable-item/pds-sortable-item.d.ts +8 -2
  442. package/dist/types/components/pds-sortable/pds-sortable.d.ts +82 -1
  443. package/dist/types/components/pds-sortable/sortable-label.d.ts +7 -0
  444. package/dist/types/components/pds-switch/pds-switch.d.ts +17 -2
  445. package/dist/types/components/pds-table/pds-table-body/pds-table-body.d.ts +3 -0
  446. package/dist/types/components/pds-table/pds-table-cell/pds-table-cell.d.ts +10 -0
  447. package/dist/types/components/pds-table/pds-table-head/pds-table-head.d.ts +5 -1
  448. package/dist/types/components/pds-table/pds-table-head-cell/pds-table-head-cell.d.ts +21 -0
  449. package/dist/types/components/pds-table/pds-table-row/pds-table-row.d.ts +4 -0
  450. package/dist/types/components/pds-table/pds-table.d.ts +76 -2
  451. package/dist/types/components/pds-tabs/pds-tabs.d.ts +1 -1
  452. package/dist/types/components/pds-textarea/pds-textarea.d.ts +15 -13
  453. package/dist/types/components/pds-toast/pds-toast.d.ts +5 -1
  454. package/dist/types/components.d.ts +505 -335
  455. package/dist/types/utils/aria-references.d.ts +4 -0
  456. package/dist/types/utils/truncation-tooltip.d.ts +39 -0
  457. package/dist/types/utils/types.d.ts +3 -0
  458. package/dist/vscode.html-data.json +350 -137
  459. package/hydrate/index.js +2054 -427
  460. package/hydrate/index.mjs +2054 -427
  461. package/package.json +3 -3
  462. package/readme.md +26 -55
  463. package/dist/esm-es5/truncation-tooltip-DBcPipr9.js +0 -1
  464. package/dist/pine-core/p-07323107.entry.js +0 -1
  465. package/dist/pine-core/p-08b8e941.entry.js +0 -1
  466. package/dist/pine-core/p-0b7b3fc2.system.entry.js +0 -3
  467. package/dist/pine-core/p-0d5f0ab5.system.entry.js +0 -1
  468. package/dist/pine-core/p-14dedf01.system.entry.js +0 -1
  469. package/dist/pine-core/p-1ca8d183.entry.js +0 -1
  470. package/dist/pine-core/p-1f62bb71.entry.js +0 -7
  471. package/dist/pine-core/p-2dd30d12.entry.js +0 -1
  472. package/dist/pine-core/p-35s7h-dk.js +0 -1
  473. package/dist/pine-core/p-3610cb3b.entry.js +0 -1
  474. package/dist/pine-core/p-39276663.entry.js +0 -1
  475. package/dist/pine-core/p-3a1dc752.system.entry.js +0 -1
  476. package/dist/pine-core/p-42d43c3f.system.entry.js +0 -1
  477. package/dist/pine-core/p-4a90b9c8.system.entry.js +0 -1
  478. package/dist/pine-core/p-4cfe922b.entry.js +0 -1
  479. package/dist/pine-core/p-5f181694.system.entry.js +0 -1
  480. package/dist/pine-core/p-60a30975.system.entry.js +0 -1
  481. package/dist/pine-core/p-62aa6a78.system.entry.js +0 -1
  482. package/dist/pine-core/p-64bcb378.entry.js +0 -1
  483. package/dist/pine-core/p-724baba3.system.entry.js +0 -1
  484. package/dist/pine-core/p-72659a0e.system.entry.js +0 -1
  485. package/dist/pine-core/p-8436cbfb.entry.js +0 -1
  486. package/dist/pine-core/p-8ade17ce.entry.js +0 -1
  487. package/dist/pine-core/p-8e7f75e6.entry.js +0 -1
  488. package/dist/pine-core/p-8fb520df.entry.js +0 -1
  489. package/dist/pine-core/p-92115e88.entry.js +0 -1
  490. package/dist/pine-core/p-94c9b7d1.system.entry.js +0 -1
  491. package/dist/pine-core/p-97356d4b.entry.js +0 -1
  492. package/dist/pine-core/p-97653e60.entry.js +0 -1
  493. package/dist/pine-core/p-97b73359.entry.js +0 -1
  494. package/dist/pine-core/p-BZVUD2on.js +0 -1
  495. package/dist/pine-core/p-Dj-z_ugg.system.js +0 -1
  496. package/dist/pine-core/p-ad5208a4.system.entry.js +0 -1
  497. package/dist/pine-core/p-afc2f165.entry.js +0 -1
  498. package/dist/pine-core/p-bcc378ba.system.entry.js +0 -8
  499. package/dist/pine-core/p-c8a0b562.system.entry.js +0 -1
  500. package/dist/pine-core/p-d47b2a6a.system.entry.js +0 -1
  501. package/dist/pine-core/p-d6f338e0.entry.js +0 -1
  502. package/dist/pine-core/p-da8b864a.entry.js +0 -2
  503. package/dist/pine-core/p-db7fb5a3.entry.js +0 -1
  504. package/dist/pine-core/p-de455073.system.entry.js +0 -1
  505. package/dist/pine-core/p-e3de6a1d.entry.js +0 -1
  506. package/dist/pine-core/p-e84fa9ed.entry.js +0 -1
  507. package/dist/pine-core/p-eb4f0daa.system.entry.js +0 -1
  508. package/dist/pine-core/p-eb56af4a.system.entry.js +0 -1
  509. package/dist/pine-core/p-ef0eba9b.system.entry.js +0 -1
  510. package/dist/pine-core/p-f11cce27.system.entry.js +0 -1
  511. package/dist/pine-core/p-f354dbac.entry.js +0 -1
@@ -1,5 +1,7 @@
1
- import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-4_RRPJTO.js';
2
- import { H as HostStylingKeeper } from './attributes-DkeVeN0g.js';
1
+ import { r as registerInstance, c as createEvent, f as forceUpdate, h, H as Host, a as getElement } from './index-4_RRPJTO.js';
2
+ import { s as sortableItemLabel } from './sortable-label-PItnzVVR.js';
3
+ import { H as HostStylingKeeper } from './attributes-CD8knu3a.js';
4
+ import { f as formatMessage } from './i18n-format-BJgZHCWe.js';
3
5
  import './keep-hydrated-BgNaWLoS.js';
4
6
 
5
7
  /**!
@@ -2653,6 +2655,9 @@ Sortable.mount(Remove, Revert);
2653
2655
 
2654
2656
  const pdsSortableCss = () => `.pds-sortable.sc-pds-sortable-h{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.pds-sortable.pds-sortable--bordered.sc-pds-sortable-h{border:var(--pine-border);border-radius:var(--pine-dimension-2xs)}`;
2655
2657
 
2658
+ const LIVE_REGION_CLASS = 'pds-sortable__live-region';
2659
+ const GRABBED_CLASS = 'pds-sortable-item--grabbed';
2660
+ const HANDLE_SELECTOR = '.pds-sortable-item__handle';
2656
2661
  const PdsSortable = class {
2657
2662
  constructor(hostRef) {
2658
2663
  registerInstance(this, hostRef);
@@ -2675,11 +2680,155 @@ const PdsSortable = class {
2675
2680
  * Determines the grabbable area for the `pds-sortable-item`.
2676
2681
  */
2677
2682
  this.handleType = 'row';
2683
+ /**
2684
+ * Accessible label for each item's reorder handle, the button the keyboard reorders with. Pass a translated string to localize it; `{item}` is interpolated.
2685
+ * @defaultValue 'Reorder {item}'
2686
+ */
2687
+ this.handleLabel = 'Reorder {item}';
2688
+ /**
2689
+ * Screen-reader announcement when an item is picked up from the keyboard. Pass a translated string to localize it; `{item}`, `{position}` and `{total}` are interpolated.
2690
+ * @defaultValue '{item}, picked up. Position {position} of {total}. Press the arrow keys to move, Space or Enter to drop, Escape to cancel.'
2691
+ */
2692
+ this.itemPickedUpLabel = '{item}, picked up. Position {position} of {total}. Press the arrow keys to move, Space or Enter to drop, Escape to cancel.';
2693
+ /**
2694
+ * Screen-reader announcement when a picked-up item is moved. Pass a translated string to localize it; `{item}`, `{position}` and `{total}` are interpolated.
2695
+ * @defaultValue '{item}, moved to position {position} of {total}'
2696
+ */
2697
+ this.itemMovedLabel = '{item}, moved to position {position} of {total}';
2698
+ /**
2699
+ * Screen-reader announcement when a picked-up item is dropped. Pass a translated string to localize it; `{item}`, `{position}` and `{total}` are interpolated.
2700
+ * @defaultValue '{item}, dropped at position {position} of {total}'
2701
+ */
2702
+ this.itemDroppedLabel = '{item}, dropped at position {position} of {total}';
2703
+ /**
2704
+ * Screen-reader announcement when a keyboard reorder is canceled and the item goes back. Pass a translated string to localize it; `{item}`, `{position}` and `{total}` are interpolated.
2705
+ * @defaultValue 'Reorder canceled. {item} returned to position {position} of {total}'
2706
+ */
2707
+ this.reorderCanceledLabel = 'Reorder canceled. {item} returned to position {position} of {total}';
2708
+ /** The item picked up from the keyboard, and where it started. */
2709
+ this.grabbed = null;
2710
+ this.liveRegion = null;
2678
2711
  this.hostKeeper = new HostStylingKeeper();
2712
+ // Set only when a `pointerdown` here drops a picked-up item, and only until the `click` that
2713
+ // follows it, if one does: a screen reader's browse-mode Enter or Space synthesizes both for
2714
+ // the same press, and that click must not re-pick-up what its own pointerdown just dropped.
2715
+ this.droppedByPointerDown = null;
2716
+ this.handleFocusIn = () => {
2717
+ this.ensureLiveRegion();
2718
+ };
2719
+ /**
2720
+ * Focus leaving a picked-up item drops it where it is, unless the whole window lost focus (the user
2721
+ * switched apps), when the item stays picked up for their return. A real window blur does not move
2722
+ * `document.activeElement` away from the handle that's losing focus (some browsers reset it to `body`
2723
+ * instead, but never to a different element), so it's told apart from focus moving into an iframe or
2724
+ * another embedded document that way: an iframe becomes a genuinely different active element, while a
2725
+ * window blur leaves `activeElement` as the handle itself, `null`, or `body`.
2726
+ */
2727
+ this.handleFocusOut = (ev) => {
2728
+ var _a;
2729
+ if (!this.isGrabbing() || ev.target !== this.focusTarget(this.grabbed.item))
2730
+ return;
2731
+ const nothingElseFocused = document.activeElement === null || document.activeElement === document.body || document.activeElement === ev.target;
2732
+ if (ev.relatedTarget === null && ((_a = document.hasFocus) === null || _a === void 0 ? void 0 : _a.call(document)) === false && nothingElseFocused)
2733
+ return;
2734
+ this.drop(ev);
2735
+ };
2736
+ /**
2737
+ * Screen readers in browse mode turn Enter and Space on a button into a click with no key events,
2738
+ * so a click that isn't from a pointer (`detail` is 0) picks up or drops too.
2739
+ */
2740
+ this.handleClick = (ev) => {
2741
+ if (this.disabled || ev.detail !== 0)
2742
+ return;
2743
+ const item = this.targetItem(ev.target);
2744
+ if (!item)
2745
+ return;
2746
+ // NVDA and JAWS in Chromium fire this click's capture-phase `pointerdown` first, for the
2747
+ // same Enter or Space press. If that pointerdown found the item already grabbed and dropped
2748
+ // it, this click is that same press's drop, already handled -- picking the item back up here
2749
+ // would leave it stuck grabbed, since Escape and the arrow keys don't reach the handle in
2750
+ // browse mode.
2751
+ if (this.droppedByPointerDown === item) {
2752
+ this.droppedByPointerDown = null;
2753
+ return;
2754
+ }
2755
+ if (!this.isGrabbing()) {
2756
+ this.pickUp(item);
2757
+ }
2758
+ else if (this.grabbed.item === item) {
2759
+ this.drop(ev);
2760
+ }
2761
+ };
2762
+ this.handleKeyDown = (ev) => {
2763
+ if (this.disabled || ev.altKey || ev.ctrlKey || ev.metaKey)
2764
+ return;
2765
+ const item = this.targetItem(ev.target);
2766
+ if (!item)
2767
+ return;
2768
+ if (!this.isGrabbing()) {
2769
+ if ((ev.key === ' ' || ev.key === 'Enter') && !ev.repeat) {
2770
+ ev.preventDefault();
2771
+ this.pickUp(item);
2772
+ }
2773
+ return;
2774
+ }
2775
+ if (this.grabbed.item !== item)
2776
+ return;
2777
+ const items = this.items();
2778
+ const index = items.indexOf(item);
2779
+ switch (ev.key) {
2780
+ case 'ArrowUp':
2781
+ ev.preventDefault();
2782
+ this.moveTo(item, index - 1);
2783
+ break;
2784
+ case 'ArrowDown':
2785
+ ev.preventDefault();
2786
+ this.moveTo(item, index + 1);
2787
+ break;
2788
+ case 'Home':
2789
+ ev.preventDefault();
2790
+ this.moveTo(item, 0);
2791
+ break;
2792
+ case 'End':
2793
+ ev.preventDefault();
2794
+ this.moveTo(item, items.length - 1);
2795
+ break;
2796
+ case ' ':
2797
+ case 'Enter':
2798
+ ev.preventDefault();
2799
+ if (!ev.repeat)
2800
+ this.drop(ev);
2801
+ break;
2802
+ case 'Escape':
2803
+ // Keep an enclosing modal or drawer from closing too.
2804
+ ev.preventDefault();
2805
+ ev.stopPropagation();
2806
+ this.cancel();
2807
+ break;
2808
+ }
2809
+ };
2679
2810
  }
2680
2811
  handleDisabledChange() {
2681
2812
  var _a;
2682
2813
  (_a = this.sortableInstance) === null || _a === void 0 ? void 0 : _a.option('disabled', this.disabled);
2814
+ if (this.disabled && this.isGrabbing())
2815
+ this.cancel();
2816
+ this.updateItems();
2817
+ }
2818
+ handleHandleTypeChange() {
2819
+ var _a;
2820
+ if (this.isGrabbing())
2821
+ this.cancel();
2822
+ // `null`, not `undefined`: SortableJS treats `option(name, undefined)` as a read, which would
2823
+ // leave a previous handle restriction in place.
2824
+ (_a = this.sortableInstance) === null || _a === void 0 ? void 0 : _a.option('handle', this.handleType === 'handle' ? HANDLE_SELECTOR : null);
2825
+ this.updateItems();
2826
+ }
2827
+ updateItems() {
2828
+ this.items().forEach((item) => {
2829
+ if (item.tagName === 'PDS-SORTABLE-ITEM')
2830
+ forceUpdate(item);
2831
+ });
2683
2832
  }
2684
2833
  classNames() {
2685
2834
  const classNames = ['pds-sortable'];
@@ -2701,11 +2850,19 @@ const PdsSortable = class {
2701
2850
  this.hostKeeper.connect(this.el);
2702
2851
  }
2703
2852
  disconnectedCallback() {
2853
+ var _a;
2704
2854
  this.hostKeeper.disconnect();
2855
+ // Put the order back: a move that was never dropped was never emitted.
2856
+ if (this.isGrabbing())
2857
+ this.cancel(false);
2858
+ (_a = this.liveRegion) === null || _a === void 0 ? void 0 : _a.remove();
2859
+ this.liveRegion = null;
2705
2860
  }
2706
2861
  componentDidLoad() {
2862
+ var _a;
2863
+ const reduceMotion = typeof window !== 'undefined' && ((_a = window.matchMedia) === null || _a === void 0 ? void 0 : _a.call(window, '(prefers-reduced-motion: reduce)').matches);
2707
2864
  let sortableOptions = {
2708
- animation: 150,
2865
+ animation: reduceMotion ? 0 : 150,
2709
2866
  disabled: this.disabled,
2710
2867
  ghostClass: 'pds-sortable-item--ghost',
2711
2868
  dragClass: 'pds-sortable-item--drag',
@@ -2714,19 +2871,214 @@ const PdsSortable = class {
2714
2871
  },
2715
2872
  };
2716
2873
  if (this.handleType === 'handle') {
2717
- sortableOptions = Object.assign(Object.assign({}, sortableOptions), { handle: '.pds-sortable-item__handle' });
2874
+ sortableOptions = Object.assign(Object.assign({}, sortableOptions), { handle: HANDLE_SELECTOR });
2718
2875
  }
2719
2876
  this.sortableInstance = Sortable.create(this.el, sortableOptions);
2877
+ // In place before the first announcement, as a region that's created with its text isn't read.
2878
+ this.ensureLiveRegion();
2879
+ // Items that rendered before this list was defined have no handle yet.
2880
+ this.updateItems();
2881
+ }
2882
+ /** The children that can be reordered, counted as SortableJS counts them. */
2883
+ items() {
2884
+ return Array.from(this.el.children).filter((child) => child.tagName !== 'TEMPLATE');
2885
+ }
2886
+ /**
2887
+ * The live region sits right after the list, not in it, so it's never counted as an item, by
2888
+ * SortableJS or by a consumer reading the list's children, and it's still in the same modal. A
2889
+ * morph that removes it gets it put back on the next focus.
2890
+ */
2891
+ ensureLiveRegion() {
2892
+ if (!this.liveRegion) {
2893
+ // A page-cache (bfcache, Turbo) restore brings back a DOM snapshot that can already have
2894
+ // this list's own live region sitting right after it -- adopted here instead of making
2895
+ // another, which would leave the stale one behind with its last message still in it.
2896
+ const existing = this.el.nextElementSibling;
2897
+ if (existing === null || existing === void 0 ? void 0 : existing.classList.contains(LIVE_REGION_CLASS)) {
2898
+ this.liveRegion = existing;
2899
+ return;
2900
+ }
2901
+ const region = document.createElement('span');
2902
+ region.className = LIVE_REGION_CLASS;
2903
+ region.setAttribute('role', 'status');
2904
+ region.setAttribute('aria-live', 'polite');
2905
+ region.setAttribute('aria-atomic', 'true');
2906
+ // Created here, not rendered, so the scoped stylesheet can't reach it. With no inset, an
2907
+ // absolutely positioned element sits at its static position -- the end of the list, here --
2908
+ // rather than collapsing to (0, 0), which can grow a scrollable ancestor's scroll area.
2909
+ Object.assign(region.style, {
2910
+ position: 'absolute',
2911
+ width: '1px',
2912
+ height: '1px',
2913
+ margin: '-1px',
2914
+ padding: '0',
2915
+ overflow: 'hidden',
2916
+ clipPath: 'inset(50%)',
2917
+ whiteSpace: 'nowrap',
2918
+ border: '0',
2919
+ });
2920
+ this.liveRegion = region;
2921
+ }
2922
+ if (!this.liveRegion.isConnected && this.el.parentNode) {
2923
+ // The host may itself be slotted into a named slot (e.g. inside a modal); stay in it rather
2924
+ // than falling back to the default slot, which a consumer's template may not render.
2925
+ const hostSlot = this.el.getAttribute('slot');
2926
+ if (hostSlot !== null) {
2927
+ this.liveRegion.setAttribute('slot', hostSlot);
2928
+ }
2929
+ else {
2930
+ this.liveRegion.removeAttribute('slot');
2931
+ }
2932
+ this.el.parentNode.insertBefore(this.liveRegion, this.el.nextSibling);
2933
+ }
2934
+ }
2935
+ announce(template, item) {
2936
+ this.ensureLiveRegion();
2937
+ const items = this.items();
2938
+ const message = formatMessage(template, {
2939
+ item: sortableItemLabel(item),
2940
+ position: items.indexOf(item) + 1,
2941
+ total: items.length,
2942
+ });
2943
+ // A repeat of the same text isn't announced again, so tell the two apart.
2944
+ this.liveRegion.textContent = message === this.liveRegion.textContent ? `${message} ` : message;
2945
+ }
2946
+ handlePointerDown(ev) {
2947
+ // A drag takes over from a keyboard reorder: keep the moves so far, so the drag starts from them.
2948
+ // Only the primary button (or a touch/pen contact, same value) can start that drag -- a
2949
+ // right-click or a secondary pointer does something else (a context menu, typically) and
2950
+ // must not drop the item out from under it.
2951
+ if (ev.button !== 0 || !this.isGrabbing())
2952
+ return;
2953
+ const item = this.grabbed.item;
2954
+ this.drop(ev);
2955
+ this.droppedByPointerDown = item;
2956
+ window.setTimeout(() => {
2957
+ if (this.droppedByPointerDown === item)
2958
+ this.droppedByPointerDown = null;
2959
+ }, 0);
2960
+ }
2961
+ /**
2962
+ * Whether an item is picked up. One that's been taken out of the list meanwhile (a re-render, a
2963
+ * stream update) is let go, as there's nothing left to move.
2964
+ */
2965
+ isGrabbing() {
2966
+ if (this.grabbed && this.grabbed.item.parentElement !== this.el)
2967
+ this.release();
2968
+ return this.grabbed !== null;
2969
+ }
2970
+ /** The item whose handle `target` is, if it is one. */
2971
+ targetItem(target) {
2972
+ const item = this.items().find((candidate) => candidate.contains(target));
2973
+ return item && this.focusTarget(item) === target ? item : undefined;
2974
+ }
2975
+ /** The item's handle, the button the keyboard reorders with. */
2976
+ focusTarget(item) {
2977
+ var _a;
2978
+ return ((_a = Array.from(item.children).find((child) => child.matches(HANDLE_SELECTOR))) !== null && _a !== void 0 ? _a : null);
2979
+ }
2980
+ // SortableJS tells `index` (among all children) and `draggableIndex` (among draggable ones)
2981
+ // apart for a list that also holds non-draggable children. This list doesn't -- the live
2982
+ // region that once lived among `this.el`'s children now sits outside it as a sibling -- so
2983
+ // `items()` already is every child, and the two counts are always the same.
2984
+ indexes(item) {
2985
+ const index = this.items().indexOf(item);
2986
+ return { index, draggableIndex: index };
2987
+ }
2988
+ pickUp(item) {
2989
+ var _a;
2990
+ const { index, draggableIndex } = this.indexes(item);
2991
+ this.grabbed = { item, oldIndex: index, oldDraggableIndex: draggableIndex };
2992
+ item.classList.add(GRABBED_CLASS);
2993
+ (_a = this.focusTarget(item)) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-pressed', 'true');
2994
+ this.announce(this.itemPickedUpLabel, item);
2995
+ }
2996
+ /**
2997
+ * Moves the other items around `item` rather than `item` itself, so it never leaves the DOM and
2998
+ * keeps focus.
2999
+ */
3000
+ moveTo(item, to, announce = true) {
3001
+ var _a;
3002
+ const items = this.items();
3003
+ const from = items.indexOf(item);
3004
+ if (to < 0 || to >= items.length || to === from) {
3005
+ // At the first or last position, an out-of-range attempt (ArrowUp at the top, ArrowDown at
3006
+ // the bottom) or a no-op one (Home already first, End already last) would otherwise leave
3007
+ // a screen reader user with no sign the key landed at all. Repeating the current position
3008
+ // confirms it without implying a move that didn't happen -- `cancel()`'s own call here
3009
+ // passes `announce: false` and gets its own, different announcement instead.
3010
+ if (announce)
3011
+ this.announce(this.itemMovedLabel, item);
3012
+ return;
3013
+ }
3014
+ if (to < from) {
3015
+ const next = item.nextSibling;
3016
+ items.slice(to, from).forEach((sibling) => this.el.insertBefore(sibling, next));
3017
+ }
3018
+ else {
3019
+ items.slice(from + 1, to + 1).forEach((sibling) => this.el.insertBefore(sibling, item));
3020
+ }
3021
+ // Focus doesn't move, so the browser won't scroll the item into view itself.
3022
+ (_a = item.scrollIntoView) === null || _a === void 0 ? void 0 : _a.call(item, { block: 'nearest' });
3023
+ if (announce)
3024
+ this.announce(this.itemMovedLabel, item);
3025
+ }
3026
+ drop(originalEvent) {
3027
+ const { item, oldIndex, oldDraggableIndex } = this.grabbed;
3028
+ this.release();
3029
+ this.announce(this.itemDroppedLabel, item);
3030
+ const { index, draggableIndex } = this.indexes(item);
3031
+ // A keyboard drop happens more often than a drag: tabbing away from a picked-up row, a click
3032
+ // elsewhere in the list, or the second press of a screen reader's browse-mode Enter all drop
3033
+ // it too. Emitting unconditionally would have a consumer that saves on every event send a
3034
+ // no-op request each time nothing actually moved.
3035
+ if (draggableIndex === oldDraggableIndex)
3036
+ return;
3037
+ // The same shape SortableJS gives `onEnd`, with the event that ended the move as
3038
+ // `originalEvent` -- not always a `KeyboardEvent`: a `FocusEvent` when focus leaves the row,
3039
+ // a `PointerEvent` for a pointerdown, or a `MouseEvent` for a browse-mode click.
3040
+ const detail = Object.assign(new CustomEvent('end', { bubbles: true, cancelable: true }), {
3041
+ item,
3042
+ from: this.el,
3043
+ to: this.el,
3044
+ oldIndex,
3045
+ newIndex: index,
3046
+ oldDraggableIndex,
3047
+ newDraggableIndex: draggableIndex,
3048
+ originalEvent,
3049
+ pullMode: undefined,
3050
+ });
3051
+ this.pdsSortableItemMoved.emit(detail);
3052
+ }
3053
+ cancel(announce = true) {
3054
+ const { item, oldDraggableIndex } = this.grabbed;
3055
+ this.release();
3056
+ // Items may have come or gone meanwhile, so go back as near the start as the list allows.
3057
+ this.moveTo(item, Math.min(oldDraggableIndex, this.items().length - 1), false);
3058
+ if (announce)
3059
+ this.announce(this.reorderCanceledLabel, item);
3060
+ }
3061
+ release() {
3062
+ var _a;
3063
+ this.grabbed.item.classList.remove(GRABBED_CLASS);
3064
+ (_a = this.focusTarget(this.grabbed.item)) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-pressed', 'false');
3065
+ this.grabbed = null;
2720
3066
  }
2721
3067
  render() {
2722
3068
  const classNames = this.classNames();
2723
3069
  this.hostKeeper.record(classNames);
2724
- return (h(Host, { key: '6e9e7b769f57ebfd81541fbecbe17b3fb4ad3e47', class: classNames, id: this.componentId }, h("slot", { key: 'c9466a216862c0a3e578f3fcfc1ac1e26146722b' })));
3070
+ return (h(Host, { key: 'a1fb28574e3aa92a923c4baeecec690d4052601f', class: classNames, id: this.componentId, onFocusin: this.handleFocusIn, onFocusout: this.handleFocusOut, onKeyDown: this.handleKeyDown, onClick: this.handleClick }, h("slot", { key: 'b9a255d4f94a6b9976a4cac7e142e45210125828' })));
2725
3071
  }
2726
3072
  get el() { return getElement(this); }
2727
3073
  static get watchers() { return {
2728
3074
  "disabled": [{
2729
3075
  "handleDisabledChange": 0
3076
+ }],
3077
+ "handleType": [{
3078
+ "handleHandleTypeChange": 0
3079
+ }],
3080
+ "handleLabel": [{
3081
+ "updateItems": 0
2730
3082
  }]
2731
3083
  }; }
2732
3084
  };
@@ -1,7 +1,8 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-4_RRPJTO.js';
2
- import { e as exposeTypeProperty, i as isSpecTest, m as messageId, a as assignDescription } from './form-BuRbS7Hp.js';
3
- import { b as danger } from './index-DvN3tyZp.js';
4
- import { H as HostStylingKeeper, i as inheritAriaAttributes } from './attributes-DkeVeN0g.js';
2
+ import { e as exposeTypeProperty, i as isSpecTest, a as assignDescription, m as messageId } from './form-BuRbS7Hp.js';
3
+ import { b as danger } from './index-B0DXTeeV.js';
4
+ import { H as HostStylingKeeper, i as inheritAriaAttributes } from './attributes-CD8knu3a.js';
5
+ import { r as referencedElements } from './aria-references-CNn1lObg.js';
5
6
  import './keep-hydrated-BgNaWLoS.js';
6
7
 
7
8
  const labelCss = () => `:host{display:inline-block}:host([aria-disabled=true]) label{color:var(--pine-color-text-label-disabled)}:host([aria-readonly=true]) label{color:var(--pine-color-text-label-readonly)}label{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing)}`;
@@ -14,8 +15,11 @@ const PdsSwitch = class {
14
15
  this.pdsSwitchChange = createEvent(this, "pdsSwitchChange");
15
16
  this.inheritedAttributes = {};
16
17
  this._type = 'checkbox';
18
+ this.forwardsDescription = false;
17
19
  this.hostKeeper = new HostStylingKeeper();
18
20
  this.hasLabelSlot = false;
21
+ // Kept apart from the `disabled` prop so a fieldset never overwrites what the consumer set.
22
+ this.fieldsetDisabled = false;
19
23
  /**
20
24
  * Determines the input 'checked' state.
21
25
  */
@@ -33,7 +37,7 @@ const PdsSwitch = class {
33
37
  */
34
38
  this.required = false;
35
39
  this.onSwitchUpdate = (e) => {
36
- if (this.disabled)
40
+ if (this.isDisabled())
37
41
  return;
38
42
  const input = e.target;
39
43
  this.checked = input.checked;
@@ -53,10 +57,40 @@ const PdsSwitch = class {
53
57
  }
54
58
  return switchClasses;
55
59
  };
60
+ // An ID on the host can't reach into the shadow root, so the input is pointed at the elements the host's
61
+ // aria-describedby names, followed by its own helper or error message. A browser without ARIA element
62
+ // reflection keeps the input's own message only.
63
+ this.forwardDescription = () => {
64
+ var _a;
65
+ const input = this.inputEl;
66
+ if (input === undefined || !('ariaDescribedByElements' in input))
67
+ return;
68
+ const ownId = this.ownDescriptionId();
69
+ const referenced = referencedElements(this.el, 'aria-describedby');
70
+ if (referenced.length === 0) {
71
+ if (!this.forwardsDescription)
72
+ return;
73
+ this.forwardsDescription = false;
74
+ // Setting the element property cleared the attribute render wrote, so put that back.
75
+ if (ownId !== undefined) {
76
+ input.setAttribute('aria-describedby', ownId);
77
+ }
78
+ else {
79
+ input.removeAttribute('aria-describedby');
80
+ }
81
+ return;
82
+ }
83
+ const own = ownId === undefined ? null : (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById(ownId);
84
+ input.ariaDescribedByElements = own == null ? referenced : [...referenced, own];
85
+ this.forwardsDescription = true;
86
+ };
56
87
  this.updateHasLabelSlot = () => {
57
88
  this.hasLabelSlot = Array.from(this.el.children).some((child) => child.getAttribute('slot') === 'label');
58
89
  };
59
90
  }
91
+ isDisabled() {
92
+ return this.disabled || this.fieldsetDisabled;
93
+ }
60
94
  connectedCallback() {
61
95
  this.hostKeeper.connect(this.el);
62
96
  // Initialize ElementInternals for form association (only once per element instance)
@@ -65,28 +99,58 @@ const PdsSwitch = class {
65
99
  }
66
100
  // Expose type property on the element instance to match native form element behavior
67
101
  exposeTypeProperty(this.el, () => this._type);
102
+ // A reconnected switch may sit in a different tree, where its description IDs name other elements.
103
+ this.forwardDescription();
104
+ if (typeof MutationObserver === 'undefined')
105
+ return;
106
+ // Consumers set aria-describedby on the host, sometimes after render, but only the inner input is announced.
107
+ this.hostDescriptionObserver = new MutationObserver(this.forwardDescription);
108
+ this.hostDescriptionObserver.observe(this.el, { attributeFilter: ['aria-describedby'] });
68
109
  }
69
110
  disconnectedCallback() {
111
+ var _a;
70
112
  this.hostKeeper.disconnect();
113
+ (_a = this.hostDescriptionObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
114
+ this.hostDescriptionObserver = undefined;
115
+ }
116
+ componentDidRender() {
117
+ this.forwardDescription();
71
118
  }
72
119
  componentDidLoad() {
73
120
  this.updateFormValue();
74
121
  }
75
- checkedChanged() {
122
+ syncFormValue() {
76
123
  this.updateFormValue();
77
124
  }
78
125
  updateFormValue() {
79
126
  if (isSpecTest())
80
127
  return;
81
128
  if (this.internals && this.internals.setFormValue) {
82
- // For switches, only send the value when checked, otherwise send null
83
- const formValue = this.checked ? (this.value || 'on') : null;
84
- this.internals.setFormValue(formValue);
129
+ // The restoration state always carries the checked value, even while disabled, so a bfcache or
130
+ // back-forward restore can bring back a checked-then-disabled switch instead of losing it to a null state.
131
+ this.internals.setFormValue(this.formValue(), this.checkedValue());
85
132
  }
86
133
  if (this.internals && this.internals.setValidity) {
87
134
  this.internals.setValidity({});
88
135
  }
89
136
  }
137
+ // Unchecked sends uncheckedValue when set, even an empty string, otherwise nothing. Disabled sends nothing, like a
138
+ // native checkbox: the platform only leaves out a host with the disabled attribute present, which is also how
139
+ // React's own custom-element attribute serialization writes it.
140
+ formValue() {
141
+ if (this.isDisabled())
142
+ return null;
143
+ return this.checkedValue();
144
+ }
145
+ checkedValue() {
146
+ var _a;
147
+ if (this.checked)
148
+ return this.value || 'on';
149
+ return (_a = this.uncheckedValue) !== null && _a !== void 0 ? _a : null;
150
+ }
151
+ ownDescriptionId() {
152
+ return assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage);
153
+ }
90
154
  formStateRestoreCallback(state) {
91
155
  if (state instanceof FormData) {
92
156
  // For switches, restore if the value exists in FormData
@@ -106,27 +170,40 @@ const PdsSwitch = class {
106
170
  // literal string "false" (a consumer's or React's attribute serialization can write that) —
107
171
  // the platform treats any value as disabled, independent of fieldset state. A real disabled
108
172
  // fieldset ancestor confirms this is genuinely that, not this element's own attribute.
109
- if (disabled && !this.el.closest('fieldset[disabled]'))
110
- return;
111
- this.disabled = disabled;
173
+ this.fieldsetDisabled = disabled && this.el.closest('fieldset[disabled]') !== null;
112
174
  }
113
175
  componentWillLoad() {
114
- this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
176
+ this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el, ['aria-describedby']));
115
177
  this.updateHasLabelSlot();
116
178
  }
117
179
  render() {
118
180
  const hostClass = this.switchClassNames();
119
- const ariaDisabled = this.disabled ? 'true' : null;
181
+ const ariaDisabled = this.isDisabled() ? 'true' : null;
120
182
  this.hostKeeper.record(hostClass, {}, { 'aria-disabled': ariaDisabled });
121
- return (h(Host, { key: '0fa5beb83232b381ea5cdfa82d143afcb69eb4e1', class: hostClass, "aria-disabled": ariaDisabled }, h("label", { key: 'df5d08344d11cb334ef69a432d1c02557caacc96', htmlFor: this.componentId }, h("input", Object.assign({ key: '6908b328f0e2da2085ffbffe0d1e4d09f2c6fd86', "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)), h("span", { key: '1108ab3eae63a371f9e9b80f011211cba8287b67', class: this.hideLabel ? 'visually-hidden' : '' }, h("slot", { key: '8aac1d9b81deab92e1e27c06debf2b87bc697874', name: "label", onSlotchange: this.updateHasLabelSlot }), !this.hasLabelSlot && this.label)), this.helperMessage &&
122
- h("div", { key: 'ef829fb6bc66060805a144995f60e2bebb915615', class: `pds-switch__message`, id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
123
- h("div", { key: '42ad678cc2179b4a26ed09151de41c2293b98011', class: `pds-switch__message pds-switch__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: '8dc0b29b522247762010edb3b1e8e5fc8c8788fa', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage)));
183
+ return (h(Host, { key: 'e5100ae3ecfac3bb556582507cc628b2455ae6cc', class: hostClass, "aria-disabled": ariaDisabled }, h("label", { key: 'c337b8c4dc381c3a745100c707792c11711c01a1', htmlFor: this.componentId }, h("input", Object.assign({ key: 'f18ae27e7c91ef4d54b0192a04130420b991c9ff', "aria-describedby": this.ownDescriptionId(), "aria-invalid": this.invalid ? "true" : undefined, checked: this.checked, class: "pds-switch__input", disabled: this.isDisabled(), id: this.componentId, name: this.name ? this.name : this.componentId, onChange: this.onSwitchUpdate,
184
+ // A description added after the switch, or replaced by a framework or a DOM morph, is picked up by the
185
+ // time focus reaches the switch and it's announced.
186
+ onFocus: this.forwardDescription, ref: (el) => (this.inputEl = el), required: this.required, type: "checkbox", value: this.value }, this.inheritedAttributes)), h("span", { key: '4bddfc080db7fee6fa8080e890918757dacde3fb', class: this.hideLabel ? 'visually-hidden' : '' }, h("slot", { key: 'c9302409719113e12f6debb426c78dd0caaee88a', name: "label", onSlotchange: this.updateHasLabelSlot }), !this.hasLabelSlot && this.label)), this.helperMessage &&
187
+ h("div", { key: '60785b9779cb2d50e6f0f2b32179106256f55ebf', class: `pds-switch__message`, id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
188
+ h("div", { key: '9b258e9302c5ef959e8c06bee780d7d43144359b', class: `pds-switch__message pds-switch__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: 'f8df779a8c65a6f0b6ea139ff3c31cca76eb48fa', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage)));
124
189
  }
125
190
  static get formAssociated() { return true; }
126
191
  get el() { return getElement(this); }
127
192
  static get watchers() { return {
128
193
  "checked": [{
129
- "checkedChanged": 0
194
+ "syncFormValue": 0
195
+ }],
196
+ "disabled": [{
197
+ "syncFormValue": 0
198
+ }],
199
+ "fieldsetDisabled": [{
200
+ "syncFormValue": 0
201
+ }],
202
+ "uncheckedValue": [{
203
+ "syncFormValue": 0
204
+ }],
205
+ "value": [{
206
+ "syncFormValue": 0
130
207
  }]
131
208
  }; }
132
209
  };
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h, F as Fragment, H as Host, a as getElement } from './index-4_RRPJTO.js';
2
- import { H as HostStylingKeeper } from './attributes-DkeVeN0g.js';
2
+ import { H as HostStylingKeeper } from './attributes-CD8knu3a.js';
3
3
  import { u as unwrapReconnectedContent } from './reconnected-content-RFpTWV6r.js';
4
4
  import './keep-hydrated-BgNaWLoS.js';
5
5
 
@@ -8,7 +8,7 @@ const PdsTableBody = class {
8
8
  registerInstance(this, hostRef);
9
9
  }
10
10
  render() {
11
- return (h(Host, { key: '4f1cba9505f56ff1ab0a19f9a88318d66a02eacc', role: "rowgroup", part: "body" }, h("slot", { key: 'ea0c620a15fcbe2915189e870d0815c5cbffdf8c' })));
11
+ return (h(Host, { key: '4b4da65979e3d3557d05cb9aff8d257d29e2c0a5', role: "rowgroup", part: "body" }, h("slot", { key: '70dcd401a705a430c54c57bf994a410a636c4a53' })));
12
12
  }
13
13
  };
14
14
  PdsTableBody.style = pdsTableBodyCss();