@pine-ds/core 3.14.2 → 3.15.1

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 (568) hide show
  1. package/components/index2.js +1 -1
  2. package/components/index2.js.map +1 -1
  3. package/components/mock-pds-modal.js +1 -1
  4. package/components/pds-chip2.js +50 -3
  5. package/components/pds-chip2.js.map +1 -1
  6. package/components/pds-combobox.js +245 -12
  7. package/components/pds-combobox.js.map +1 -1
  8. package/components/pds-copytext.js +1 -1
  9. package/components/pds-divider.js +1 -1
  10. package/components/pds-dropdown-menu-item.js +10 -2
  11. package/components/pds-dropdown-menu-item.js.map +1 -1
  12. package/components/pds-dropdown-menu-separator.js +1 -1
  13. package/components/pds-dropdown-menu.js +1 -1
  14. package/components/pds-filter.js +1 -1
  15. package/components/pds-filters.js +1 -1
  16. package/components/pds-image.js +2 -2
  17. package/components/pds-input.js +1 -1
  18. package/components/pds-link2.js +7 -2
  19. package/components/pds-link2.js.map +1 -1
  20. package/components/pds-loader2.js +1 -1
  21. package/components/pds-modal-content.js +2 -2
  22. package/components/pds-modal-footer.js +1 -1
  23. package/components/pds-modal-header.js +1 -1
  24. package/components/pds-modal.js +3 -3
  25. package/components/pds-multiselect.js +204 -37
  26. package/components/pds-multiselect.js.map +1 -1
  27. package/components/pds-popover.js +1 -1
  28. package/components/pds-progress.js +1 -1
  29. package/components/pds-property.js +1 -1
  30. package/components/pds-radio-group.js +3 -3
  31. package/components/pds-radio.js +3 -3
  32. package/components/pds-row.js +1 -1
  33. package/components/pds-select.js +1 -1
  34. package/components/pds-sortable-item.js +1 -1
  35. package/components/pds-sortable.js +1 -1
  36. package/components/pds-switch.js +3 -3
  37. package/components/pds-tab.js +3 -3
  38. package/components/pds-table-body.js +1 -1
  39. package/components/pds-table-cell2.js +3 -3
  40. package/components/pds-table-cell2.js.map +1 -1
  41. package/components/pds-table-head-cell2.js +2 -2
  42. package/components/pds-table-head.js +1 -1
  43. package/components/pds-table-row.js +2 -2
  44. package/components/pds-table-row.js.map +1 -1
  45. package/components/pds-tabpanel.js +1 -1
  46. package/components/pds-tabs.js +1 -1
  47. package/components/pds-text2.js +1 -1
  48. package/components/pds-textarea.js +4 -4
  49. package/components/pds-toast.js +3 -3
  50. package/components/pds-tooltip.js +2 -2
  51. package/dist/cjs/{index-BA--jsiy.js → index-DkQebouX.js} +3 -3
  52. package/dist/cjs/index-DkQebouX.js.map +1 -0
  53. package/dist/cjs/loader.cjs.js +1 -1
  54. package/dist/cjs/mock-pds-modal.cjs.entry.js +1 -1
  55. package/dist/cjs/pds-accordion.cjs.entry.js +1 -1
  56. package/dist/cjs/pds-avatar.cjs.entry.js +1 -1
  57. package/dist/cjs/pds-button.cjs.entry.js +1 -1
  58. package/dist/cjs/pds-checkbox.cjs.entry.js +1 -1
  59. package/dist/cjs/pds-chip.cjs.entry.js +47 -3
  60. package/dist/cjs/pds-chip.entry.cjs.js.map +1 -1
  61. package/dist/cjs/pds-combobox.cjs.entry.js +221 -6
  62. package/dist/cjs/pds-combobox.entry.cjs.js.map +1 -1
  63. package/dist/cjs/pds-copytext.cjs.entry.js +2 -2
  64. package/dist/cjs/pds-divider.cjs.entry.js +1 -1
  65. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +8 -2
  66. package/dist/cjs/pds-dropdown-menu-item.entry.cjs.js.map +1 -1
  67. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +1 -1
  68. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +1 -1
  69. package/dist/cjs/pds-filter.cjs.entry.js +2 -2
  70. package/dist/cjs/pds-filters.cjs.entry.js +1 -1
  71. package/dist/cjs/pds-image.cjs.entry.js +2 -2
  72. package/dist/cjs/pds-input.cjs.entry.js +2 -2
  73. package/dist/cjs/pds-link.cjs.entry.js +7 -3
  74. package/dist/cjs/pds-link.entry.cjs.js.map +1 -1
  75. package/dist/cjs/pds-loader.cjs.entry.js +1 -1
  76. package/dist/cjs/pds-modal-content.cjs.entry.js +2 -2
  77. package/dist/cjs/pds-modal-footer.cjs.entry.js +1 -1
  78. package/dist/cjs/pds-modal-header.cjs.entry.js +1 -1
  79. package/dist/cjs/pds-modal.cjs.entry.js +3 -3
  80. package/dist/cjs/pds-multiselect.cjs.entry.js +183 -32
  81. package/dist/cjs/pds-multiselect.entry.cjs.js.map +1 -1
  82. package/dist/cjs/pds-popover.cjs.entry.js +1 -1
  83. package/dist/cjs/pds-progress.cjs.entry.js +1 -1
  84. package/dist/cjs/pds-property.cjs.entry.js +1 -1
  85. package/dist/cjs/pds-radio-group.cjs.entry.js +4 -4
  86. package/dist/cjs/pds-radio.cjs.entry.js +4 -4
  87. package/dist/cjs/pds-row.cjs.entry.js +1 -1
  88. package/dist/cjs/pds-select.cjs.entry.js +2 -2
  89. package/dist/cjs/pds-sortable-item.cjs.entry.js +2 -2
  90. package/dist/cjs/pds-sortable.cjs.entry.js +1 -1
  91. package/dist/cjs/pds-switch.cjs.entry.js +4 -4
  92. package/dist/cjs/pds-tab.cjs.entry.js +3 -3
  93. package/dist/cjs/pds-table-body.cjs.entry.js +1 -1
  94. package/dist/cjs/pds-table-cell.cjs.entry.js +3 -3
  95. package/dist/cjs/pds-table-cell.entry.cjs.js.map +1 -1
  96. package/dist/cjs/pds-table-head-cell.cjs.entry.js +3 -3
  97. package/dist/cjs/pds-table-head.cjs.entry.js +1 -1
  98. package/dist/cjs/pds-table-row.cjs.entry.js +2 -2
  99. package/dist/cjs/pds-table-row.entry.cjs.js.map +1 -1
  100. package/dist/cjs/pds-tabpanel.cjs.entry.js +1 -1
  101. package/dist/cjs/pds-tabs.cjs.entry.js +1 -1
  102. package/dist/cjs/pds-text.cjs.entry.js +1 -1
  103. package/dist/cjs/pds-textarea.cjs.entry.js +5 -5
  104. package/dist/cjs/pds-toast.cjs.entry.js +3 -3
  105. package/dist/cjs/pds-tooltip.cjs.entry.js +2 -2
  106. package/dist/cjs/pine-core.cjs.js +1 -1
  107. package/dist/collection/components/pds-chip/pds-chip.css +4 -3
  108. package/dist/collection/components/pds-chip/pds-chip.js +102 -1
  109. package/dist/collection/components/pds-chip/pds-chip.js.map +1 -1
  110. package/dist/collection/components/pds-chip/stories/pds-chip.stories.js +38 -0
  111. package/dist/collection/components/pds-combobox/combobox-interface.js +2 -0
  112. package/dist/collection/components/pds-combobox/combobox-interface.js.map +1 -0
  113. package/dist/collection/components/pds-combobox/pds-combobox.css +20 -0
  114. package/dist/collection/components/pds-combobox/pds-combobox.js +415 -6
  115. package/dist/collection/components/pds-combobox/pds-combobox.js.map +1 -1
  116. package/dist/collection/components/pds-copytext/pds-copytext.js +1 -1
  117. package/dist/collection/components/pds-divider/pds-divider.js +1 -1
  118. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +53 -2
  119. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js.map +1 -1
  120. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +1 -1
  121. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +1 -1
  122. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +1 -1
  123. package/dist/collection/components/pds-filters/pds-filters.js +1 -1
  124. package/dist/collection/components/pds-image/pds-image.js +2 -2
  125. package/dist/collection/components/pds-input/pds-input.js +1 -1
  126. package/dist/collection/components/pds-link/pds-link.js +34 -2
  127. package/dist/collection/components/pds-link/pds-link.js.map +1 -1
  128. package/dist/collection/components/pds-loader/pds-loader.js +1 -1
  129. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
  130. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
  131. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
  132. package/dist/collection/components/pds-modal/pds-modal.js +3 -3
  133. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
  134. package/dist/collection/components/pds-multiselect/multiselect-interface.js.map +1 -1
  135. package/dist/collection/components/pds-multiselect/pds-multiselect.css +9 -0
  136. package/dist/collection/components/pds-multiselect/pds-multiselect.js +261 -31
  137. package/dist/collection/components/pds-multiselect/pds-multiselect.js.map +1 -1
  138. package/dist/collection/components/pds-multiselect/stories/pds-multiselect.stories.js +41 -0
  139. package/dist/collection/components/pds-popover/pds-popover.js +1 -1
  140. package/dist/collection/components/pds-progress/pds-progress.js +1 -1
  141. package/dist/collection/components/pds-property/pds-property.js +1 -1
  142. package/dist/collection/components/pds-radio/pds-radio.js +3 -3
  143. package/dist/collection/components/pds-radio-group/pds-radio-group.js +3 -3
  144. package/dist/collection/components/pds-row/pds-row.js +1 -1
  145. package/dist/collection/components/pds-select/pds-select.js +1 -1
  146. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
  147. package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
  148. package/dist/collection/components/pds-switch/pds-switch.js +3 -3
  149. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
  150. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.css +1 -1
  151. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +2 -2
  152. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
  153. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +2 -2
  154. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.css +1 -1
  155. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
  156. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +3 -3
  157. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +1 -1
  158. package/dist/collection/components/pds-tabs/pds-tabs.js +1 -1
  159. package/dist/collection/components/pds-text/pds-text.js +1 -1
  160. package/dist/collection/components/pds-textarea/pds-textarea.js +4 -4
  161. package/dist/collection/components/pds-toast/pds-toast.js +3 -3
  162. package/dist/collection/components/pds-tooltip/pds-tooltip.js +2 -2
  163. package/dist/docs.json +615 -7
  164. package/dist/esm/{index-DY8eSueV.js → index-D094LgxJ.js} +3 -3
  165. package/dist/esm/index-D094LgxJ.js.map +1 -0
  166. package/dist/esm/loader.js +1 -1
  167. package/dist/esm/mock-pds-modal.entry.js +1 -1
  168. package/dist/esm/pds-accordion.entry.js +1 -1
  169. package/dist/esm/pds-avatar.entry.js +1 -1
  170. package/dist/esm/pds-button.entry.js +1 -1
  171. package/dist/esm/pds-checkbox.entry.js +1 -1
  172. package/dist/esm/pds-chip.entry.js +47 -3
  173. package/dist/esm/pds-chip.entry.js.map +1 -1
  174. package/dist/esm/pds-combobox.entry.js +221 -6
  175. package/dist/esm/pds-combobox.entry.js.map +1 -1
  176. package/dist/esm/pds-copytext.entry.js +2 -2
  177. package/dist/esm/pds-divider.entry.js +1 -1
  178. package/dist/esm/pds-dropdown-menu-item.entry.js +8 -2
  179. package/dist/esm/pds-dropdown-menu-item.entry.js.map +1 -1
  180. package/dist/esm/pds-dropdown-menu-separator.entry.js +1 -1
  181. package/dist/esm/pds-dropdown-menu.entry.js +1 -1
  182. package/dist/esm/pds-filter.entry.js +2 -2
  183. package/dist/esm/pds-filters.entry.js +1 -1
  184. package/dist/esm/pds-image.entry.js +2 -2
  185. package/dist/esm/pds-input.entry.js +2 -2
  186. package/dist/esm/pds-link.entry.js +7 -3
  187. package/dist/esm/pds-link.entry.js.map +1 -1
  188. package/dist/esm/pds-loader.entry.js +1 -1
  189. package/dist/esm/pds-modal-content.entry.js +2 -2
  190. package/dist/esm/pds-modal-footer.entry.js +1 -1
  191. package/dist/esm/pds-modal-header.entry.js +1 -1
  192. package/dist/esm/pds-modal.entry.js +3 -3
  193. package/dist/esm/pds-multiselect.entry.js +183 -32
  194. package/dist/esm/pds-multiselect.entry.js.map +1 -1
  195. package/dist/esm/pds-popover.entry.js +1 -1
  196. package/dist/esm/pds-progress.entry.js +1 -1
  197. package/dist/esm/pds-property.entry.js +1 -1
  198. package/dist/esm/pds-radio-group.entry.js +4 -4
  199. package/dist/esm/pds-radio.entry.js +4 -4
  200. package/dist/esm/pds-row.entry.js +1 -1
  201. package/dist/esm/pds-select.entry.js +2 -2
  202. package/dist/esm/pds-sortable-item.entry.js +2 -2
  203. package/dist/esm/pds-sortable.entry.js +1 -1
  204. package/dist/esm/pds-switch.entry.js +4 -4
  205. package/dist/esm/pds-tab.entry.js +3 -3
  206. package/dist/esm/pds-table-body.entry.js +1 -1
  207. package/dist/esm/pds-table-cell.entry.js +3 -3
  208. package/dist/esm/pds-table-cell.entry.js.map +1 -1
  209. package/dist/esm/pds-table-head-cell.entry.js +3 -3
  210. package/dist/esm/pds-table-head.entry.js +1 -1
  211. package/dist/esm/pds-table-row.entry.js +2 -2
  212. package/dist/esm/pds-table-row.entry.js.map +1 -1
  213. package/dist/esm/pds-tabpanel.entry.js +1 -1
  214. package/dist/esm/pds-tabs.entry.js +1 -1
  215. package/dist/esm/pds-text.entry.js +1 -1
  216. package/dist/esm/pds-textarea.entry.js +5 -5
  217. package/dist/esm/pds-toast.entry.js +3 -3
  218. package/dist/esm/pds-tooltip.entry.js +2 -2
  219. package/dist/esm/pine-core.js +1 -1
  220. package/dist/esm-es5/{index-DY8eSueV.js → index-D094LgxJ.js} +1 -1
  221. package/dist/esm-es5/index-D094LgxJ.js.map +1 -0
  222. package/dist/esm-es5/loader.js +1 -1
  223. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  224. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  225. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  226. package/dist/esm-es5/pds-button.entry.js +1 -1
  227. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  228. package/dist/esm-es5/pds-chip.entry.js +1 -1
  229. package/dist/esm-es5/pds-chip.entry.js.map +1 -1
  230. package/dist/esm-es5/pds-combobox.entry.js +2 -2
  231. package/dist/esm-es5/pds-combobox.entry.js.map +1 -1
  232. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  233. package/dist/esm-es5/pds-divider.entry.js +1 -1
  234. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  235. package/dist/esm-es5/pds-dropdown-menu-item.entry.js.map +1 -1
  236. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  237. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  238. package/dist/esm-es5/pds-filter.entry.js +1 -1
  239. package/dist/esm-es5/pds-filters.entry.js +1 -1
  240. package/dist/esm-es5/pds-image.entry.js +1 -1
  241. package/dist/esm-es5/pds-input.entry.js +1 -1
  242. package/dist/esm-es5/pds-link.entry.js +1 -1
  243. package/dist/esm-es5/pds-link.entry.js.map +1 -1
  244. package/dist/esm-es5/pds-loader.entry.js +1 -1
  245. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  246. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  247. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  248. package/dist/esm-es5/pds-modal.entry.js +1 -1
  249. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  250. package/dist/esm-es5/pds-multiselect.entry.js.map +1 -1
  251. package/dist/esm-es5/pds-popover.entry.js +1 -1
  252. package/dist/esm-es5/pds-progress.entry.js +1 -1
  253. package/dist/esm-es5/pds-property.entry.js +1 -1
  254. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  255. package/dist/esm-es5/pds-radio.entry.js +1 -1
  256. package/dist/esm-es5/pds-row.entry.js +1 -1
  257. package/dist/esm-es5/pds-select.entry.js +1 -1
  258. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  259. package/dist/esm-es5/pds-sortable.entry.js +1 -1
  260. package/dist/esm-es5/pds-switch.entry.js +1 -1
  261. package/dist/esm-es5/pds-tab.entry.js +1 -1
  262. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  263. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  264. package/dist/esm-es5/pds-table-cell.entry.js.map +1 -1
  265. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  266. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  267. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  268. package/dist/esm-es5/pds-table-row.entry.js.map +1 -1
  269. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  270. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  271. package/dist/esm-es5/pds-text.entry.js +1 -1
  272. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  273. package/dist/esm-es5/pds-toast.entry.js +1 -1
  274. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  275. package/dist/esm-es5/pine-core.js +1 -1
  276. package/dist/pine-core/{p-d6302edd.entry.js → p-003884fd.entry.js} +2 -2
  277. package/dist/pine-core/{p-9e7cd072.system.entry.js → p-0270ebee.system.entry.js} +2 -2
  278. package/dist/pine-core/p-06046885.entry.js +3 -0
  279. package/dist/pine-core/p-06046885.entry.js.map +1 -0
  280. package/dist/pine-core/{p-063afa19.system.entry.js → p-09ff71ad.system.entry.js} +2 -2
  281. package/dist/pine-core/{p-c68bceb1.entry.js → p-0ac54273.entry.js} +2 -2
  282. package/dist/pine-core/{p-ac56273a.system.entry.js → p-0c2f13c3.system.entry.js} +2 -2
  283. package/dist/pine-core/{p-c7c00a27.entry.js → p-119ccf73.entry.js} +2 -2
  284. package/dist/pine-core/{p-87eb8d4b.system.entry.js → p-13105538.system.entry.js} +2 -2
  285. package/dist/pine-core/{p-c24d11c7.entry.js → p-1951d49e.entry.js} +2 -2
  286. package/dist/pine-core/p-1971d358.entry.js +2 -0
  287. package/dist/pine-core/{p-9c928c44.entry.js.map → p-1971d358.entry.js.map} +1 -1
  288. package/dist/pine-core/p-19fef546.system.entry.js +4 -0
  289. package/dist/pine-core/p-19fef546.system.entry.js.map +1 -0
  290. package/dist/pine-core/{p-6d2da3ca.system.entry.js → p-1e77124d.system.entry.js} +2 -2
  291. package/dist/pine-core/{p-f69d3fd6.entry.js → p-220cbe98.entry.js} +2 -2
  292. package/dist/pine-core/{p-9d6b6ff3.system.entry.js → p-226e45be.system.entry.js} +2 -2
  293. package/dist/pine-core/{p-90615423.system.entry.js → p-2883cb69.system.entry.js} +2 -2
  294. package/dist/pine-core/{p-31168da5.entry.js → p-2d21bc31.entry.js} +2 -2
  295. package/dist/pine-core/p-31bfac45.entry.js +2 -0
  296. package/dist/pine-core/{p-a3cdff85.entry.js → p-35e91ecb.entry.js} +2 -2
  297. package/dist/pine-core/{p-2537aacb.entry.js → p-3815f565.entry.js} +2 -2
  298. package/dist/pine-core/{p-a99e8caf.entry.js → p-396d4b63.entry.js} +2 -2
  299. package/dist/pine-core/{p-9bb6cc3d.entry.js → p-3b0a4abe.entry.js} +2 -2
  300. package/dist/pine-core/{p-5b9110fe.entry.js → p-3cd53462.entry.js} +2 -2
  301. package/dist/pine-core/{p-a5b24b1d.system.entry.js → p-3e45826f.system.entry.js} +2 -2
  302. package/dist/pine-core/{p-12360e47.entry.js → p-425144ae.entry.js} +2 -2
  303. package/dist/pine-core/p-425144ae.entry.js.map +1 -0
  304. package/dist/pine-core/p-48ed8147.entry.js +2 -0
  305. package/dist/pine-core/p-48ed8147.entry.js.map +1 -0
  306. package/dist/pine-core/{p-5b3ac18e.system.entry.js → p-4a42e114.system.entry.js} +2 -2
  307. package/dist/pine-core/p-4c2809cb.entry.js +2 -0
  308. package/dist/pine-core/p-4c2809cb.entry.js.map +1 -0
  309. package/dist/pine-core/p-4c82bff5.entry.js +2 -0
  310. package/dist/pine-core/{p-a07b8e45.system.entry.js → p-4e24be57.system.entry.js} +2 -2
  311. package/dist/pine-core/p-50a439b5.entry.js +2 -0
  312. package/dist/pine-core/{p-3440138d.entry.js → p-5162baee.entry.js} +2 -2
  313. package/dist/pine-core/{p-426e90cb.entry.js → p-51d2999d.entry.js} +2 -2
  314. package/dist/pine-core/{p-ba623ced.entry.js → p-563b640d.entry.js} +2 -2
  315. package/dist/pine-core/{p-d1313dd6.system.entry.js → p-599a5903.system.entry.js} +2 -2
  316. package/dist/pine-core/{p-YqHO7iPZ.system.js.map → p-5O8bhSdk.system.js.map} +1 -1
  317. package/dist/pine-core/{p-5f2865df.entry.js → p-5ef5f6b3.entry.js} +2 -2
  318. package/dist/pine-core/p-65d0032c.system.entry.js +2 -0
  319. package/dist/pine-core/{p-2f6f60d9.entry.js → p-68f97bdf.entry.js} +2 -2
  320. package/dist/pine-core/p-6918b378.system.entry.js +2 -0
  321. package/dist/pine-core/{p-5e92aa34.system.entry.js.map → p-6918b378.system.entry.js.map} +1 -1
  322. package/dist/pine-core/{p-e6dc2297.entry.js → p-694cfe69.entry.js} +2 -2
  323. package/dist/pine-core/{p-bddc9c5a.entry.js → p-6c25dfc3.entry.js} +2 -2
  324. package/dist/pine-core/{p-9ada659b.entry.js → p-6cbad264.entry.js} +2 -2
  325. package/dist/pine-core/{p-4d9eee67.system.entry.js → p-72ca815d.system.entry.js} +2 -2
  326. package/dist/pine-core/{p-63269b89.entry.js → p-766e52a3.entry.js} +2 -2
  327. package/dist/pine-core/{p-d41112ad.entry.js → p-795e1727.entry.js} +2 -2
  328. package/dist/pine-core/p-795e1727.entry.js.map +1 -0
  329. package/dist/pine-core/{p-e8cf15d7.system.entry.js → p-7a6f11bd.system.entry.js} +2 -2
  330. package/dist/pine-core/{p-c292e5da.system.entry.js → p-7d7dce2c.system.entry.js} +2 -2
  331. package/dist/pine-core/{p-137b3289.system.entry.js → p-7da176b4.system.entry.js} +2 -2
  332. package/dist/pine-core/p-8KFA3I5T.system.js.map +1 -0
  333. package/dist/pine-core/{p-757c7b80.entry.js → p-8e40c9ef.entry.js} +2 -2
  334. package/dist/pine-core/{p-rcUX-rt5.system.js.map → p-8tpU1leU.system.js.map} +1 -1
  335. package/dist/pine-core/p-93d0be59.entry.js +2 -0
  336. package/dist/pine-core/{p-9eccf7b9.entry.js.map → p-93d0be59.entry.js.map} +1 -1
  337. package/dist/pine-core/p-94a9ff2a.system.entry.js +2 -0
  338. package/dist/pine-core/{p-ccab748a.entry.js → p-957647f9.entry.js} +2 -2
  339. package/dist/pine-core/{p-02f48157.system.entry.js → p-9606f567.system.entry.js} +2 -2
  340. package/dist/pine-core/{p-475bb340.entry.js → p-9660a2c2.entry.js} +2 -2
  341. package/dist/pine-core/{p-3f0a6a75.system.entry.js → p-9ba4acdf.system.entry.js} +2 -2
  342. package/dist/pine-core/{p-7dd74fe2.system.entry.js → p-9d9a5ca8.system.entry.js} +2 -2
  343. package/dist/pine-core/{p-LM0mZTib.system.js.map → p-9eQIEVii.system.js.map} +1 -1
  344. package/dist/pine-core/{p-htODgUCV.system.js.map → p-B036z4h-.system.js.map} +1 -1
  345. package/dist/pine-core/{p-B8OHXU49.system.js.map → p-BASnRvhy.system.js.map} +1 -1
  346. package/dist/pine-core/{p-4EbKXnVN.system.js.map → p-BK1BTkTt.system.js.map} +1 -1
  347. package/dist/pine-core/{p-CI7DD4Gj.system.js.map → p-BR9M75xt.system.js.map} +1 -1
  348. package/dist/pine-core/{p-bs74TBAh.system.js.map → p-BRn0ywk1.system.js.map} +1 -1
  349. package/dist/pine-core/{p-bkQbPz-z.system.js.map → p-Be8OBmYb.system.js.map} +1 -1
  350. package/dist/pine-core/p-BpZTjdau.system.js.map +1 -0
  351. package/dist/pine-core/{p-BJtTt670.system.js.map → p-BqkabXR7.system.js.map} +1 -1
  352. package/dist/pine-core/{p-DFXWnbHE.system.js.map → p-BssHFst4.system.js.map} +1 -1
  353. package/dist/pine-core/{p-CP48ADFM.system.js → p-BxVkyfaO.system.js} +1 -1
  354. package/dist/pine-core/p-BxVkyfaO.system.js.map +1 -0
  355. package/dist/pine-core/{p-BTe59phF.system.js.map → p-CE8RZXT8.system.js.map} +1 -1
  356. package/dist/pine-core/{p-Cun139qe.system.js.map → p-CJ4Gf3Nx.system.js.map} +1 -1
  357. package/dist/pine-core/{p-Ct9csNdF.system.js.map → p-CUv9KdhN.system.js.map} +1 -1
  358. package/dist/pine-core/{p-C48G0LPH.system.js.map → p-CcDv1OdF.system.js.map} +1 -1
  359. package/dist/pine-core/{p-BHjZufAO.system.js.map → p-CjQwwLdV.system.js.map} +1 -1
  360. package/dist/pine-core/{p-BA95hFrH.system.js.map → p-ClY6yIBF.system.js.map} +1 -1
  361. package/dist/pine-core/{p-Bn36FPag.system.js.map → p-D-iLwshJ.system.js.map} +1 -1
  362. package/dist/pine-core/{p-DkNlmqjM.system.js.map → p-D02u2D7r.system.js.map} +1 -1
  363. package/dist/pine-core/{p-DY8eSueV.js → p-D094LgxJ.js} +1 -1
  364. package/dist/pine-core/p-D094LgxJ.js.map +1 -0
  365. package/dist/pine-core/{p-CR01VmO6.system.js.map → p-D3Ug1A-l.system.js.map} +1 -1
  366. package/dist/pine-core/{p-j0609tLE.system.js.map → p-DFWnxG_e.system.js.map} +1 -1
  367. package/dist/pine-core/{p-DbNPEZgc.system.js.map → p-DFY2-W9M.system.js.map} +1 -1
  368. package/dist/pine-core/{p-5L_gsODn.system.js.map → p-DKT0sVlZ.system.js.map} +1 -1
  369. package/dist/pine-core/{p-Cn_QqTXg.system.js.map → p-DXoBK65z.system.js.map} +1 -1
  370. package/dist/pine-core/{p-Civ2VHC7.system.js.map → p-DY97YDUU.system.js.map} +1 -1
  371. package/dist/pine-core/{p-ClPf_JF1.system.js.map → p-DZt6ah_A.system.js.map} +1 -1
  372. package/dist/pine-core/{p-eUcBQ_fh.system.js.map → p-De6wHGVf.system.js.map} +1 -1
  373. package/dist/pine-core/p-DgtQU13G.system.js.map +1 -0
  374. package/dist/pine-core/{p-CpyTw2IQ.system.js.map → p-DmWm26A6.system.js.map} +1 -1
  375. package/dist/pine-core/p-Dtx30lCy.system.js.map +1 -0
  376. package/dist/pine-core/{p-CP2nsJcg.system.js.map → p-GH_AtkdO.system.js.map} +1 -1
  377. package/dist/pine-core/p-JAVnELnm.system.js +1 -1
  378. package/dist/pine-core/{p-CSLo9qKS.system.js.map → p-P65hM6YU.system.js.map} +1 -1
  379. package/dist/pine-core/{p-DwQewDCV.system.js.map → p-PZw10cnm.system.js.map} +1 -1
  380. package/dist/pine-core/{p-CmquVvkz.system.js.map → p-Ri89mw0-.system.js.map} +1 -1
  381. package/dist/pine-core/p-ZUqfslIz.system.js.map +1 -0
  382. package/dist/pine-core/{p-8f2a5a4c.system.entry.js → p-a24c75c2.system.entry.js} +2 -2
  383. package/dist/pine-core/{p-5040a872.entry.js → p-ad8fe96c.entry.js} +2 -2
  384. package/dist/pine-core/p-aeb2f6ac.system.entry.js +2 -0
  385. package/dist/pine-core/{p-4c23c75b.system.entry.js.map → p-aeb2f6ac.system.entry.js.map} +1 -1
  386. package/dist/pine-core/p-af5bf21d.entry.js +2 -0
  387. package/dist/pine-core/{p-325b3b0d.system.entry.js → p-b09bde5c.system.entry.js} +2 -2
  388. package/dist/pine-core/{p-7b5c8248.system.entry.js → p-b3ee3c4c.system.entry.js} +2 -2
  389. package/dist/pine-core/{p-cac3128b.system.entry.js → p-b46f66e8.system.entry.js} +2 -2
  390. package/dist/pine-core/p-b46f66e8.system.entry.js.map +1 -0
  391. package/dist/pine-core/{p-4d85945b.system.entry.js → p-b6ede995.system.entry.js} +2 -2
  392. package/dist/pine-core/p-b98a04cd.system.entry.js +2 -0
  393. package/dist/pine-core/p-b98a04cd.system.entry.js.map +1 -0
  394. package/dist/pine-core/p-ba195382.system.entry.js +2 -0
  395. package/dist/pine-core/{p-205ec2ac.system.entry.js → p-bc4b1749.system.entry.js} +2 -2
  396. package/dist/pine-core/{p-70aa35fc.system.entry.js → p-bce9f17d.system.entry.js} +2 -2
  397. package/dist/pine-core/{p-ac240034.system.entry.js → p-bd18b9bf.system.entry.js} +2 -2
  398. package/dist/pine-core/p-bd2329cd.entry.js +2 -0
  399. package/dist/pine-core/p-bf712423.entry.js +2 -0
  400. package/dist/pine-core/{p-9f0f1389.entry.js.map → p-bf712423.entry.js.map} +1 -1
  401. package/dist/pine-core/{p-154a32f4.entry.js → p-bfac5114.entry.js} +2 -2
  402. package/dist/pine-core/{p-4f1cRPxE.system.js.map → p-bw-OZgCg.system.js.map} +1 -1
  403. package/dist/pine-core/{p-bc85016b.entry.js → p-c73ef42b.entry.js} +2 -2
  404. package/dist/pine-core/p-c91fd600.entry.js +2 -0
  405. package/dist/pine-core/{p-f47d6724.entry.js → p-caff29fb.entry.js} +2 -2
  406. package/dist/pine-core/{p-8fdb10c4.system.entry.js → p-cb8c24ad.system.entry.js} +2 -2
  407. package/dist/pine-core/{p-8c0fc8ff.entry.js → p-ccdee55a.entry.js} +2 -2
  408. package/dist/pine-core/{p-ab3b6e0c.entry.js → p-d0366fba.entry.js} +2 -2
  409. package/dist/pine-core/{p-6be19a23.system.entry.js → p-d0504aa8.system.entry.js} +2 -2
  410. package/dist/pine-core/{p-8b201c9a.system.entry.js → p-d2b2caa2.system.entry.js} +2 -2
  411. package/dist/pine-core/p-d6139188.system.entry.js +2 -0
  412. package/dist/pine-core/p-d62a5444.system.entry.js +2 -0
  413. package/dist/pine-core/{p-daa36570.system.entry.js → p-d83d6fce.system.entry.js} +2 -2
  414. package/dist/pine-core/{p-6dcd7876.system.entry.js → p-d8d796ad.system.entry.js} +2 -2
  415. package/dist/pine-core/{p-9b3794cd.entry.js → p-e1815c34.entry.js} +2 -2
  416. package/dist/pine-core/{p-811e510d.system.entry.js → p-e9eb3fc3.system.entry.js} +2 -2
  417. package/dist/pine-core/p-eT6pKhWF.system.js.map +1 -0
  418. package/dist/pine-core/{p-d9693048.entry.js → p-ea8aba18.entry.js} +2 -2
  419. package/dist/pine-core/{p-6e862168.system.entry.js → p-ef56bc80.system.entry.js} +2 -2
  420. package/dist/pine-core/p-ef56bc80.system.entry.js.map +1 -0
  421. package/dist/pine-core/{p-51114c2b.system.entry.js → p-f00f70bf.system.entry.js} +2 -2
  422. package/dist/pine-core/{p-2fe330d0.system.entry.js → p-f0df10c7.system.entry.js} +2 -2
  423. package/dist/pine-core/p-f0df10c7.system.entry.js.map +1 -0
  424. package/dist/pine-core/{p-932283cf.system.entry.js → p-fce519e3.system.entry.js} +2 -2
  425. package/dist/pine-core/{p-0sPVsRFU.system.js.map → p-g2zH2UyI.system.js.map} +1 -1
  426. package/dist/pine-core/p-h_fnwqV_.system.js.map +1 -0
  427. package/dist/pine-core/{p-ztsUkqit.system.js.map → p-igLtCO20.system.js.map} +1 -1
  428. package/dist/pine-core/{p-CboCokff.system.js.map → p-kYQszSpu.system.js.map} +1 -1
  429. package/dist/pine-core/{p-BCKPcTKX.system.js.map → p-ljGHaVPv.system.js.map} +1 -1
  430. package/dist/pine-core/{p-CijIWK3K.system.js.map → p-sgZDP7ET.system.js.map} +1 -1
  431. package/dist/pine-core/pds-chip.entry.esm.js.map +1 -1
  432. package/dist/pine-core/pds-combobox.entry.esm.js.map +1 -1
  433. package/dist/pine-core/pds-dropdown-menu-item.entry.esm.js.map +1 -1
  434. package/dist/pine-core/pds-link.entry.esm.js.map +1 -1
  435. package/dist/pine-core/pds-multiselect.entry.esm.js.map +1 -1
  436. package/dist/pine-core/pds-table-cell.entry.esm.js.map +1 -1
  437. package/dist/pine-core/pds-table-row.entry.esm.js.map +1 -1
  438. package/dist/pine-core/pine-core.esm.js +1 -1
  439. package/dist/types/components/pds-chip/pds-chip.d.ts +18 -0
  440. package/dist/types/components/pds-combobox/combobox-interface.d.ts +23 -0
  441. package/dist/types/components/pds-combobox/pds-combobox.d.ts +64 -0
  442. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.d.ts +13 -0
  443. package/dist/types/components/pds-link/pds-link.d.ts +8 -0
  444. package/dist/types/components/pds-multiselect/multiselect-interface.d.ts +10 -0
  445. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +21 -1
  446. package/dist/types/components.d.ts +167 -2
  447. package/dist/vscode.html-data.json +170 -5
  448. package/hydrate/index.js +544 -103
  449. package/hydrate/index.mjs +544 -103
  450. package/package.json +2 -2
  451. package/dist/cjs/index-BA--jsiy.js.map +0 -1
  452. package/dist/esm/index-DY8eSueV.js.map +0 -1
  453. package/dist/esm-es5/index-DY8eSueV.js.map +0 -1
  454. package/dist/pine-core/p-10dbe3e2.entry.js +0 -2
  455. package/dist/pine-core/p-10dbe3e2.entry.js.map +0 -1
  456. package/dist/pine-core/p-10e0be55.entry.js +0 -2
  457. package/dist/pine-core/p-12360e47.entry.js.map +0 -1
  458. package/dist/pine-core/p-1fa303af.entry.js +0 -2
  459. package/dist/pine-core/p-2fe330d0.system.entry.js.map +0 -1
  460. package/dist/pine-core/p-30ea3668.system.entry.js +0 -2
  461. package/dist/pine-core/p-3c04c17e.system.entry.js +0 -2
  462. package/dist/pine-core/p-3c04c17e.system.entry.js.map +0 -1
  463. package/dist/pine-core/p-4alPHnzl.system.js.map +0 -1
  464. package/dist/pine-core/p-4c23c75b.system.entry.js +0 -2
  465. package/dist/pine-core/p-5e92aa34.system.entry.js +0 -2
  466. package/dist/pine-core/p-622f1342.system.entry.js +0 -4
  467. package/dist/pine-core/p-622f1342.system.entry.js.map +0 -1
  468. package/dist/pine-core/p-6e862168.system.entry.js.map +0 -1
  469. package/dist/pine-core/p-78ee2e08.system.entry.js +0 -2
  470. package/dist/pine-core/p-8c000d7c.entry.js +0 -2
  471. package/dist/pine-core/p-8eb1c168.entry.js +0 -2
  472. package/dist/pine-core/p-9c928c44.entry.js +0 -2
  473. package/dist/pine-core/p-9eccf7b9.entry.js +0 -2
  474. package/dist/pine-core/p-9f0f1389.entry.js +0 -2
  475. package/dist/pine-core/p-B0Otb6kF.system.js.map +0 -1
  476. package/dist/pine-core/p-BSRmAvMC.system.js.map +0 -1
  477. package/dist/pine-core/p-CG5jdxoZ.system.js.map +0 -1
  478. package/dist/pine-core/p-CP48ADFM.system.js.map +0 -1
  479. package/dist/pine-core/p-DY8eSueV.js.map +0 -1
  480. package/dist/pine-core/p-DieNsvcz.system.js.map +0 -1
  481. package/dist/pine-core/p-Lk6DnEPT.system.js.map +0 -1
  482. package/dist/pine-core/p-a11c3642.system.entry.js +0 -2
  483. package/dist/pine-core/p-aPfTGFhq.system.js.map +0 -1
  484. package/dist/pine-core/p-ac186cd4.system.entry.js +0 -2
  485. package/dist/pine-core/p-b41465b8.entry.js +0 -3
  486. package/dist/pine-core/p-b41465b8.entry.js.map +0 -1
  487. package/dist/pine-core/p-bff9fb8e.entry.js +0 -2
  488. package/dist/pine-core/p-bff9fb8e.entry.js.map +0 -1
  489. package/dist/pine-core/p-cac3128b.system.entry.js.map +0 -1
  490. package/dist/pine-core/p-d41112ad.entry.js.map +0 -1
  491. package/dist/pine-core/p-e0f21c22.entry.js +0 -2
  492. package/dist/pine-core/p-eb026745.entry.js +0 -2
  493. package/dist/pine-core/p-fa21e054.system.entry.js +0 -2
  494. /package/dist/pine-core/{p-d6302edd.entry.js.map → p-003884fd.entry.js.map} +0 -0
  495. /package/dist/pine-core/{p-9e7cd072.system.entry.js.map → p-0270ebee.system.entry.js.map} +0 -0
  496. /package/dist/pine-core/{p-063afa19.system.entry.js.map → p-09ff71ad.system.entry.js.map} +0 -0
  497. /package/dist/pine-core/{p-c68bceb1.entry.js.map → p-0ac54273.entry.js.map} +0 -0
  498. /package/dist/pine-core/{p-ac56273a.system.entry.js.map → p-0c2f13c3.system.entry.js.map} +0 -0
  499. /package/dist/pine-core/{p-c7c00a27.entry.js.map → p-119ccf73.entry.js.map} +0 -0
  500. /package/dist/pine-core/{p-87eb8d4b.system.entry.js.map → p-13105538.system.entry.js.map} +0 -0
  501. /package/dist/pine-core/{p-c24d11c7.entry.js.map → p-1951d49e.entry.js.map} +0 -0
  502. /package/dist/pine-core/{p-6d2da3ca.system.entry.js.map → p-1e77124d.system.entry.js.map} +0 -0
  503. /package/dist/pine-core/{p-f69d3fd6.entry.js.map → p-220cbe98.entry.js.map} +0 -0
  504. /package/dist/pine-core/{p-9d6b6ff3.system.entry.js.map → p-226e45be.system.entry.js.map} +0 -0
  505. /package/dist/pine-core/{p-90615423.system.entry.js.map → p-2883cb69.system.entry.js.map} +0 -0
  506. /package/dist/pine-core/{p-31168da5.entry.js.map → p-2d21bc31.entry.js.map} +0 -0
  507. /package/dist/pine-core/{p-10e0be55.entry.js.map → p-31bfac45.entry.js.map} +0 -0
  508. /package/dist/pine-core/{p-a3cdff85.entry.js.map → p-35e91ecb.entry.js.map} +0 -0
  509. /package/dist/pine-core/{p-2537aacb.entry.js.map → p-3815f565.entry.js.map} +0 -0
  510. /package/dist/pine-core/{p-a99e8caf.entry.js.map → p-396d4b63.entry.js.map} +0 -0
  511. /package/dist/pine-core/{p-9bb6cc3d.entry.js.map → p-3b0a4abe.entry.js.map} +0 -0
  512. /package/dist/pine-core/{p-5b9110fe.entry.js.map → p-3cd53462.entry.js.map} +0 -0
  513. /package/dist/pine-core/{p-a5b24b1d.system.entry.js.map → p-3e45826f.system.entry.js.map} +0 -0
  514. /package/dist/pine-core/{p-5b3ac18e.system.entry.js.map → p-4a42e114.system.entry.js.map} +0 -0
  515. /package/dist/pine-core/{p-1fa303af.entry.js.map → p-4c82bff5.entry.js.map} +0 -0
  516. /package/dist/pine-core/{p-a07b8e45.system.entry.js.map → p-4e24be57.system.entry.js.map} +0 -0
  517. /package/dist/pine-core/{p-8eb1c168.entry.js.map → p-50a439b5.entry.js.map} +0 -0
  518. /package/dist/pine-core/{p-3440138d.entry.js.map → p-5162baee.entry.js.map} +0 -0
  519. /package/dist/pine-core/{p-426e90cb.entry.js.map → p-51d2999d.entry.js.map} +0 -0
  520. /package/dist/pine-core/{p-ba623ced.entry.js.map → p-563b640d.entry.js.map} +0 -0
  521. /package/dist/pine-core/{p-d1313dd6.system.entry.js.map → p-599a5903.system.entry.js.map} +0 -0
  522. /package/dist/pine-core/{p-5f2865df.entry.js.map → p-5ef5f6b3.entry.js.map} +0 -0
  523. /package/dist/pine-core/{p-78ee2e08.system.entry.js.map → p-65d0032c.system.entry.js.map} +0 -0
  524. /package/dist/pine-core/{p-2f6f60d9.entry.js.map → p-68f97bdf.entry.js.map} +0 -0
  525. /package/dist/pine-core/{p-e6dc2297.entry.js.map → p-694cfe69.entry.js.map} +0 -0
  526. /package/dist/pine-core/{p-bddc9c5a.entry.js.map → p-6c25dfc3.entry.js.map} +0 -0
  527. /package/dist/pine-core/{p-9ada659b.entry.js.map → p-6cbad264.entry.js.map} +0 -0
  528. /package/dist/pine-core/{p-4d9eee67.system.entry.js.map → p-72ca815d.system.entry.js.map} +0 -0
  529. /package/dist/pine-core/{p-63269b89.entry.js.map → p-766e52a3.entry.js.map} +0 -0
  530. /package/dist/pine-core/{p-e8cf15d7.system.entry.js.map → p-7a6f11bd.system.entry.js.map} +0 -0
  531. /package/dist/pine-core/{p-c292e5da.system.entry.js.map → p-7d7dce2c.system.entry.js.map} +0 -0
  532. /package/dist/pine-core/{p-137b3289.system.entry.js.map → p-7da176b4.system.entry.js.map} +0 -0
  533. /package/dist/pine-core/{p-757c7b80.entry.js.map → p-8e40c9ef.entry.js.map} +0 -0
  534. /package/dist/pine-core/{p-a11c3642.system.entry.js.map → p-94a9ff2a.system.entry.js.map} +0 -0
  535. /package/dist/pine-core/{p-ccab748a.entry.js.map → p-957647f9.entry.js.map} +0 -0
  536. /package/dist/pine-core/{p-02f48157.system.entry.js.map → p-9606f567.system.entry.js.map} +0 -0
  537. /package/dist/pine-core/{p-475bb340.entry.js.map → p-9660a2c2.entry.js.map} +0 -0
  538. /package/dist/pine-core/{p-3f0a6a75.system.entry.js.map → p-9ba4acdf.system.entry.js.map} +0 -0
  539. /package/dist/pine-core/{p-7dd74fe2.system.entry.js.map → p-9d9a5ca8.system.entry.js.map} +0 -0
  540. /package/dist/pine-core/{p-8f2a5a4c.system.entry.js.map → p-a24c75c2.system.entry.js.map} +0 -0
  541. /package/dist/pine-core/{p-5040a872.entry.js.map → p-ad8fe96c.entry.js.map} +0 -0
  542. /package/dist/pine-core/{p-e0f21c22.entry.js.map → p-af5bf21d.entry.js.map} +0 -0
  543. /package/dist/pine-core/{p-325b3b0d.system.entry.js.map → p-b09bde5c.system.entry.js.map} +0 -0
  544. /package/dist/pine-core/{p-7b5c8248.system.entry.js.map → p-b3ee3c4c.system.entry.js.map} +0 -0
  545. /package/dist/pine-core/{p-4d85945b.system.entry.js.map → p-b6ede995.system.entry.js.map} +0 -0
  546. /package/dist/pine-core/{p-ac186cd4.system.entry.js.map → p-ba195382.system.entry.js.map} +0 -0
  547. /package/dist/pine-core/{p-205ec2ac.system.entry.js.map → p-bc4b1749.system.entry.js.map} +0 -0
  548. /package/dist/pine-core/{p-70aa35fc.system.entry.js.map → p-bce9f17d.system.entry.js.map} +0 -0
  549. /package/dist/pine-core/{p-ac240034.system.entry.js.map → p-bd18b9bf.system.entry.js.map} +0 -0
  550. /package/dist/pine-core/{p-8c000d7c.entry.js.map → p-bd2329cd.entry.js.map} +0 -0
  551. /package/dist/pine-core/{p-154a32f4.entry.js.map → p-bfac5114.entry.js.map} +0 -0
  552. /package/dist/pine-core/{p-bc85016b.entry.js.map → p-c73ef42b.entry.js.map} +0 -0
  553. /package/dist/pine-core/{p-eb026745.entry.js.map → p-c91fd600.entry.js.map} +0 -0
  554. /package/dist/pine-core/{p-f47d6724.entry.js.map → p-caff29fb.entry.js.map} +0 -0
  555. /package/dist/pine-core/{p-8fdb10c4.system.entry.js.map → p-cb8c24ad.system.entry.js.map} +0 -0
  556. /package/dist/pine-core/{p-8c0fc8ff.entry.js.map → p-ccdee55a.entry.js.map} +0 -0
  557. /package/dist/pine-core/{p-ab3b6e0c.entry.js.map → p-d0366fba.entry.js.map} +0 -0
  558. /package/dist/pine-core/{p-6be19a23.system.entry.js.map → p-d0504aa8.system.entry.js.map} +0 -0
  559. /package/dist/pine-core/{p-8b201c9a.system.entry.js.map → p-d2b2caa2.system.entry.js.map} +0 -0
  560. /package/dist/pine-core/{p-fa21e054.system.entry.js.map → p-d6139188.system.entry.js.map} +0 -0
  561. /package/dist/pine-core/{p-30ea3668.system.entry.js.map → p-d62a5444.system.entry.js.map} +0 -0
  562. /package/dist/pine-core/{p-daa36570.system.entry.js.map → p-d83d6fce.system.entry.js.map} +0 -0
  563. /package/dist/pine-core/{p-6dcd7876.system.entry.js.map → p-d8d796ad.system.entry.js.map} +0 -0
  564. /package/dist/pine-core/{p-9b3794cd.entry.js.map → p-e1815c34.entry.js.map} +0 -0
  565. /package/dist/pine-core/{p-811e510d.system.entry.js.map → p-e9eb3fc3.system.entry.js.map} +0 -0
  566. /package/dist/pine-core/{p-d9693048.entry.js.map → p-ea8aba18.entry.js.map} +0 -0
  567. /package/dist/pine-core/{p-51114c2b.system.entry.js.map → p-f00f70bf.system.entry.js.map} +0 -0
  568. /package/dist/pine-core/{p-932283cf.system.entry.js.map → p-fce519e3.system.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"p-CR01VmO6.system.js","sources":["src/components/pds-table/pds-table-head-cell/pds-table-head-cell.scss?tag=pds-table-head-cell&encapsulation=shadow","src/components/pds-table/pds-table-head-cell/pds-table-head-cell.tsx"],"sourcesContent":[":host {\n --border-head-cell-default: var(--pine-border-width-thin) solid var(--pine-color-border-subtle);\n\n /* stylelint-disable-next-line pine-design-system/no-hardcoded-colors */\n --box-shadow-default: 3px 3px 6px -2px rgba(0, 0, 0, 0.1);\n\n border-block-end: var(--border-head-cell-default);\n color: var(--pine-color-text);\n display: table-cell;\n font-family: var(--pine-font-family-body);\n font-size: var(--pine-font-size);\n font-weight: var(--pine-font-weight-regular);\n letter-spacing: var(--pine-letter-spacing);\n line-height: var(--pine-line-height-body);\n padding: var(--pine-dimension-sm);\n position: relative;\n text-align: start;\n vertical-align: inherit;\n}\n\n:host(.is-compact) {\n padding-block: var(--pine-dimension-2xs)\n}\n\n:host(.is-fixed) {\n background: var(--pine-color-background-container);\n left: var(--pine-dimension-none);\n position: sticky;\n z-index: var(--pine-z-index-raised);\n}\n\n// When parent table-head has background, fixed cells should inherit it\n:host(.is-fixed.has-head-background) {\n background-color: var(--pine-color-background-subtle);\n}\n\n// When parent table-head has border prop, add top border (bottom already set in :host)\n:host(.has-head-border) {\n border-block-start: var(--border-head-cell-default);\n}\n\n// box shadow when table has scrolled and cell is fixed\n:host(.has-scrolled.is-fixed) {\n box-shadow: var(--box-shadow-default);\n}\n\n:host(.is-sortable) {\n cursor: pointer;\n\n pds-icon {\n margin-inline-start: var(--pine-dimension-2xs);\n padding-block-start: 2px;\n position: absolute;\n }\n}\n\n:host(.is-sortable:hover),\n:host(.is-active) {\n color: var(--pine-color-text-strong);\n}\n\n// Text Alignment\n:host(.pds-table-head-cell--align-start) {\n text-align: start;\n}\n\n:host(.pds-table-head-cell--align-center) {\n text-align: center;\n}\n\n:host(.pds-table-head-cell--align-end) {\n text-align: end;\n}\n\n:host(.pds-table-head-cell--align-justify) {\n text-align: justify;\n}\n","import { Component, Element, Host, Prop, h, Event, EventEmitter, State, Method } from '@stencil/core';\n\nimport { downSmall, upSmall } from '@pine-ds/icons/icons';\n\n@Component({\n tag: 'pds-table-head-cell',\n styleUrls: ['pds-table-head-cell.scss'],\n shadow: true,\n})\nexport class PdsTableHeadCell {\n @Element() hostElement: HTMLPdsTableHeadCellElement;\n private tableRef: HTMLPdsTableElement;\n private scrollContainer: HTMLElement | null = null;\n private setupTimer: number | undefined;\n private setupRetries: number = 0;\n private headObserver?: MutationObserver;\n\n /**\n * Sets the text alignment within the head cell.\n */\n @Prop() cellAlign?: 'start' | 'center' | 'end' | 'justify';\n\n /**\n * Determines whether the table column is sortable when set to `true`.\n */\n @Prop() sortable: boolean;\n\n /**\n * Event emitted to signal that a table column header has been sorted, providing information about the sorted column's name and sorting direction.\n */\n @Event() pdsTableSort: EventEmitter<{ column: string; direction: string }>;\n\n /**\n * The direction of sorting.\n */\n @State() private sortingDirection: 'asc' | 'desc' = 'asc';\n\n /**\n * Determines if the table is currently scrolling.\n * @defaultValue false\n */\n @State() private tableScrolling: boolean = false;\n\n /**\n * Determines if the table row is currently selected.\n * @defaultValue false\n */\n @State() isSelected: boolean = false;\n\n /**\n * Determines if the parent table-head has the border attribute.\n * @defaultValue false\n */\n @State() private hasHeadBorder: boolean = false;\n\n /**\n * Determines if the parent table-head has the background attribute.\n * @defaultValue false\n */\n @State() private hasHeadBackground: boolean = false;\n\n /**\n * Determines if this column is the currently active sorted column.\n * @defaultValue false\n */\n @State() private isActive: boolean = false;\n\n /**\n * Programmatically sets this column as the active sort column with the specified direction.\n * Used by pds-table to apply a default sort on initial load.\n * @param direction - The sort direction to apply ('asc' or 'desc')\n */\n @Method()\n async setActiveSort(direction: 'asc' | 'desc') {\n if (!this.sortable) return;\n\n this.sortingDirection = direction;\n this.isActive = true;\n this.hostElement.classList.add('is-active');\n }\n\n /**\n * Clears the active sort state from this column.\n * Used internally when another column becomes active.\n */\n @Method()\n async clearActiveSort() {\n this.isActive = false;\n this.hostElement.classList.remove('is-active');\n }\n\n componentWillLoad() {\n // Set initial references and state before first render\n this.tableRef = this.hostElement.closest('pds-table') as HTMLPdsTableElement;\n\n const tableHead = this.hostElement.closest('pds-table-head') as HTMLElement;\n if (tableHead) {\n this.hasHeadBorder = tableHead.hasAttribute('border');\n this.hasHeadBackground = tableHead.hasAttribute('background');\n }\n }\n\n componentDidLoad() {\n if (this.tableRef && this.tableRef.responsive && this.tableRef.fixedColumn) {\n // For responsive tables with fixed columns, set up scroll detection\n // This enables the first column header to show a shadow when the table is scrolled horizontally\n this.setupScrollListener();\n }\n\n // Watch for changes to the parent table-head's border and background attributes\n const tableHead = this.hostElement.closest('pds-table-head') as HTMLElement;\n if (tableHead && typeof MutationObserver !== 'undefined') {\n // Defensive guard: disconnect existing observer before creating a new one\n if (this.headObserver) {\n this.headObserver.disconnect();\n }\n\n this.headObserver = new MutationObserver(() => {\n // Update state when border or background attributes change\n this.hasHeadBorder = tableHead.hasAttribute('border');\n this.hasHeadBackground = tableHead.hasAttribute('background');\n });\n\n this.headObserver.observe(tableHead, {\n attributes: true,\n attributeFilter: ['border', 'background']\n });\n }\n }\n\n disconnectedCallback() {\n this.cleanupScrollListener();\n\n if (this.headObserver) {\n this.headObserver.disconnect();\n }\n }\n\n\n private setupScrollListener() {\n if (!this.tableRef) return;\n\n // Query shadowRoot once and cache the container\n const container = this.tableRef.shadowRoot?.querySelector('.pds-table-responsive-container') as HTMLElement;\n\n if (container) {\n // Container available immediately\n this.scrollContainer = container;\n this.scrollContainer.addEventListener('scroll', this.handleScroll, { passive: true });\n this.handleScroll(); // Initial check\n this.setupRetries = 0; // Reset counter on success\n } else {\n // Container not ready, set up timer for retry with bounds\n this.setupTimer = window.setTimeout(() => {\n if (this.scrollContainer) return; // Already found\n this.setupRetries = (this.setupRetries || 0) + 1;\n if (this.setupRetries <= 50) {\n this.setupScrollListener();\n } else {\n console.warn('Failed to find responsive container after 50 attempts');\n }\n }, 100);\n }\n }\n\n private cleanupScrollListener() {\n if (this.scrollContainer) {\n this.scrollContainer.removeEventListener('scroll', this.handleScroll);\n this.scrollContainer = null;\n }\n\n if (this.setupTimer !== undefined) {\n window.clearTimeout(this.setupTimer);\n this.setupTimer = undefined;\n }\n\n this.setupRetries = 0; // Reset retry counter\n }\n\n /**\n * Handles scroll events to update fixed column shadow state.\n * Updates the tableScrolling state to control CSS classes for fixed column shadows.\n * @private\n */\n private handleScroll = () => {\n if (!this.scrollContainer) {\n return;\n }\n\n try {\n this.tableScrolling = this.scrollContainer.scrollLeft > 0;\n } catch (error) {\n console.warn('Scroll handler error:', error);\n }\n };\n\n private toggleSort = () => {\n if (this.sortable) {\n // Guard: return early if tableRef is not available\n if (!this.tableRef) {\n return;\n }\n\n const column = this.hostElement.innerText.trim();\n \n // Always toggle the direction (preserves original behavior)\n this.sortingDirection = this.sortingDirection === 'asc' ? 'desc' : 'asc';\n \n // Reset all OTHER head cells to inactive state (skip the current one)\n this.tableRef.querySelectorAll('pds-table-head-cell').forEach(async (headCell) => {\n // Skip clearing the current cell\n if (headCell !== this.hostElement) {\n const headCellComponent = headCell as HTMLPdsTableHeadCellElement;\n await headCellComponent.clearActiveSort();\n }\n });\n \n // Mark this column as active\n this.isActive = true;\n this.hostElement.classList.add('is-active');\n\n // Emit the sort event with the current direction\n this.pdsTableSort.emit({ column, direction: this.sortingDirection });\n }\n }\n\n private classNames() {\n const classNames = [];\n\n if (this.tableRef && this.tableRef.compact) {\n classNames.push('is-compact');\n }\n\n if (this.cellAlign) {\n classNames.push(`pds-table-head-cell--align-${this.cellAlign}`);\n }\n\n if (this.sortable) {\n classNames.push('is-sortable');\n }\n\n if (this.sortable && this.sortingDirection !== null) {\n classNames.push('sort-' + this.sortingDirection);\n }\n\n if (this.tableRef && this.tableRef.fixedColumn && this.tableScrolling) {\n classNames.push('has-scrolled');\n }\n\n if (this.hasHeadBackground) {\n classNames.push('has-head-background');\n }\n\n if (this.hasHeadBorder) {\n classNames.push('has-head-border');\n }\n\n return classNames.join(' ');\n }\n\n render() {\n return (\n <Host\n class={this.classNames()}\n role=\"columnheader\"\n onClick={this.toggleSort}\n part=\"head-cell\"\n style={\n this.tableRef &&\n this.tableRef.fixedColumn &&\n this.tableRef.selectable\n ? { '--fixed-cell-position': '40px' }\n : {}\n }\n >\n <slot></slot>\n {this.sortable && this.isActive && (\n <pds-icon icon={this.sortingDirection === 'asc' ? upSmall : downSmall} part=\"sort-icon\" />\n )}\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p-D3Ug1A-l.system.js","sources":["src/components/pds-table/pds-table-head-cell/pds-table-head-cell.scss?tag=pds-table-head-cell&encapsulation=shadow","src/components/pds-table/pds-table-head-cell/pds-table-head-cell.tsx"],"sourcesContent":[":host {\n --border-head-cell-default: var(--pine-border-width-thin) solid var(--pine-color-border-subtle);\n\n /* stylelint-disable-next-line pine-design-system/no-hardcoded-colors */\n --box-shadow-default: 3px 3px 6px -2px rgba(0, 0, 0, 0.1);\n\n border-block-end: var(--border-head-cell-default);\n color: var(--pine-color-text);\n display: table-cell;\n font-family: var(--pine-font-family-body);\n font-size: var(--pine-font-size);\n font-weight: var(--pine-font-weight-regular);\n letter-spacing: var(--pine-letter-spacing);\n line-height: var(--pine-line-height-body);\n padding: var(--pine-dimension-sm);\n position: relative;\n text-align: start;\n vertical-align: inherit;\n}\n\n:host(.is-compact) {\n padding-block: var(--pine-dimension-2xs)\n}\n\n:host(.is-fixed) {\n background: var(--pine-color-background-container);\n left: var(--pine-dimension-none);\n position: sticky;\n z-index: var(--pine-z-index-raised);\n}\n\n// When parent table-head has background, fixed cells should inherit it\n:host(.is-fixed.has-head-background) {\n background-color: var(--pine-color-background-subtle);\n}\n\n// When parent table-head has border prop, add top border (bottom already set in :host)\n:host(.has-head-border) {\n border-block-start: var(--border-head-cell-default);\n}\n\n// box shadow when table has scrolled and cell is fixed\n:host(.has-scrolled.is-fixed) {\n box-shadow: var(--box-shadow-default);\n}\n\n:host(.is-sortable) {\n cursor: pointer;\n\n pds-icon {\n margin-inline-start: var(--pine-dimension-2xs);\n padding-block-start: 2px;\n position: absolute;\n }\n}\n\n:host(.is-sortable:hover),\n:host(.is-active) {\n color: var(--pine-color-text-strong);\n}\n\n// Text Alignment\n:host(.pds-table-head-cell--align-start) {\n text-align: start;\n}\n\n:host(.pds-table-head-cell--align-center) {\n text-align: center;\n}\n\n:host(.pds-table-head-cell--align-end) {\n text-align: end;\n}\n\n:host(.pds-table-head-cell--align-justify) {\n text-align: justify;\n}\n","import { Component, Element, Host, Prop, h, Event, EventEmitter, State, Method } from '@stencil/core';\n\nimport { downSmall, upSmall } from '@pine-ds/icons/icons';\n\n@Component({\n tag: 'pds-table-head-cell',\n styleUrls: ['pds-table-head-cell.scss'],\n shadow: true,\n})\nexport class PdsTableHeadCell {\n @Element() hostElement: HTMLPdsTableHeadCellElement;\n private tableRef: HTMLPdsTableElement;\n private scrollContainer: HTMLElement | null = null;\n private setupTimer: number | undefined;\n private setupRetries: number = 0;\n private headObserver?: MutationObserver;\n\n /**\n * Sets the text alignment within the head cell.\n */\n @Prop() cellAlign?: 'start' | 'center' | 'end' | 'justify';\n\n /**\n * Determines whether the table column is sortable when set to `true`.\n */\n @Prop() sortable: boolean;\n\n /**\n * Event emitted to signal that a table column header has been sorted, providing information about the sorted column's name and sorting direction.\n */\n @Event() pdsTableSort: EventEmitter<{ column: string; direction: string }>;\n\n /**\n * The direction of sorting.\n */\n @State() private sortingDirection: 'asc' | 'desc' = 'asc';\n\n /**\n * Determines if the table is currently scrolling.\n * @defaultValue false\n */\n @State() private tableScrolling: boolean = false;\n\n /**\n * Determines if the table row is currently selected.\n * @defaultValue false\n */\n @State() isSelected: boolean = false;\n\n /**\n * Determines if the parent table-head has the border attribute.\n * @defaultValue false\n */\n @State() private hasHeadBorder: boolean = false;\n\n /**\n * Determines if the parent table-head has the background attribute.\n * @defaultValue false\n */\n @State() private hasHeadBackground: boolean = false;\n\n /**\n * Determines if this column is the currently active sorted column.\n * @defaultValue false\n */\n @State() private isActive: boolean = false;\n\n /**\n * Programmatically sets this column as the active sort column with the specified direction.\n * Used by pds-table to apply a default sort on initial load.\n * @param direction - The sort direction to apply ('asc' or 'desc')\n */\n @Method()\n async setActiveSort(direction: 'asc' | 'desc') {\n if (!this.sortable) return;\n\n this.sortingDirection = direction;\n this.isActive = true;\n this.hostElement.classList.add('is-active');\n }\n\n /**\n * Clears the active sort state from this column.\n * Used internally when another column becomes active.\n */\n @Method()\n async clearActiveSort() {\n this.isActive = false;\n this.hostElement.classList.remove('is-active');\n }\n\n componentWillLoad() {\n // Set initial references and state before first render\n this.tableRef = this.hostElement.closest('pds-table') as HTMLPdsTableElement;\n\n const tableHead = this.hostElement.closest('pds-table-head') as HTMLElement;\n if (tableHead) {\n this.hasHeadBorder = tableHead.hasAttribute('border');\n this.hasHeadBackground = tableHead.hasAttribute('background');\n }\n }\n\n componentDidLoad() {\n if (this.tableRef && this.tableRef.responsive && this.tableRef.fixedColumn) {\n // For responsive tables with fixed columns, set up scroll detection\n // This enables the first column header to show a shadow when the table is scrolled horizontally\n this.setupScrollListener();\n }\n\n // Watch for changes to the parent table-head's border and background attributes\n const tableHead = this.hostElement.closest('pds-table-head') as HTMLElement;\n if (tableHead && typeof MutationObserver !== 'undefined') {\n // Defensive guard: disconnect existing observer before creating a new one\n if (this.headObserver) {\n this.headObserver.disconnect();\n }\n\n this.headObserver = new MutationObserver(() => {\n // Update state when border or background attributes change\n this.hasHeadBorder = tableHead.hasAttribute('border');\n this.hasHeadBackground = tableHead.hasAttribute('background');\n });\n\n this.headObserver.observe(tableHead, {\n attributes: true,\n attributeFilter: ['border', 'background']\n });\n }\n }\n\n disconnectedCallback() {\n this.cleanupScrollListener();\n\n if (this.headObserver) {\n this.headObserver.disconnect();\n }\n }\n\n\n private setupScrollListener() {\n if (!this.tableRef) return;\n\n // Query shadowRoot once and cache the container\n const container = this.tableRef.shadowRoot?.querySelector('.pds-table-responsive-container') as HTMLElement;\n\n if (container) {\n // Container available immediately\n this.scrollContainer = container;\n this.scrollContainer.addEventListener('scroll', this.handleScroll, { passive: true });\n this.handleScroll(); // Initial check\n this.setupRetries = 0; // Reset counter on success\n } else {\n // Container not ready, set up timer for retry with bounds\n this.setupTimer = window.setTimeout(() => {\n if (this.scrollContainer) return; // Already found\n this.setupRetries = (this.setupRetries || 0) + 1;\n if (this.setupRetries <= 50) {\n this.setupScrollListener();\n } else {\n console.warn('Failed to find responsive container after 50 attempts');\n }\n }, 100);\n }\n }\n\n private cleanupScrollListener() {\n if (this.scrollContainer) {\n this.scrollContainer.removeEventListener('scroll', this.handleScroll);\n this.scrollContainer = null;\n }\n\n if (this.setupTimer !== undefined) {\n window.clearTimeout(this.setupTimer);\n this.setupTimer = undefined;\n }\n\n this.setupRetries = 0; // Reset retry counter\n }\n\n /**\n * Handles scroll events to update fixed column shadow state.\n * Updates the tableScrolling state to control CSS classes for fixed column shadows.\n * @private\n */\n private handleScroll = () => {\n if (!this.scrollContainer) {\n return;\n }\n\n try {\n this.tableScrolling = this.scrollContainer.scrollLeft > 0;\n } catch (error) {\n console.warn('Scroll handler error:', error);\n }\n };\n\n private toggleSort = () => {\n if (this.sortable) {\n // Guard: return early if tableRef is not available\n if (!this.tableRef) {\n return;\n }\n\n const column = this.hostElement.innerText.trim();\n \n // Always toggle the direction (preserves original behavior)\n this.sortingDirection = this.sortingDirection === 'asc' ? 'desc' : 'asc';\n \n // Reset all OTHER head cells to inactive state (skip the current one)\n this.tableRef.querySelectorAll('pds-table-head-cell').forEach(async (headCell) => {\n // Skip clearing the current cell\n if (headCell !== this.hostElement) {\n const headCellComponent = headCell as HTMLPdsTableHeadCellElement;\n await headCellComponent.clearActiveSort();\n }\n });\n \n // Mark this column as active\n this.isActive = true;\n this.hostElement.classList.add('is-active');\n\n // Emit the sort event with the current direction\n this.pdsTableSort.emit({ column, direction: this.sortingDirection });\n }\n }\n\n private classNames() {\n const classNames = [];\n\n if (this.tableRef && this.tableRef.compact) {\n classNames.push('is-compact');\n }\n\n if (this.cellAlign) {\n classNames.push(`pds-table-head-cell--align-${this.cellAlign}`);\n }\n\n if (this.sortable) {\n classNames.push('is-sortable');\n }\n\n if (this.sortable && this.sortingDirection !== null) {\n classNames.push('sort-' + this.sortingDirection);\n }\n\n if (this.tableRef && this.tableRef.fixedColumn && this.tableScrolling) {\n classNames.push('has-scrolled');\n }\n\n if (this.hasHeadBackground) {\n classNames.push('has-head-background');\n }\n\n if (this.hasHeadBorder) {\n classNames.push('has-head-border');\n }\n\n return classNames.join(' ');\n }\n\n render() {\n return (\n <Host\n class={this.classNames()}\n role=\"columnheader\"\n onClick={this.toggleSort}\n part=\"head-cell\"\n style={\n this.tableRef &&\n this.tableRef.fixedColumn &&\n this.tableRef.selectable\n ? { '--fixed-cell-position': '40px' }\n : {}\n }\n >\n <slot></slot>\n {this.sortable && this.isActive && (\n <pds-icon icon={this.sortingDirection === 'asc' ? upSmall : downSmall} part=\"sort-icon\" />\n )}\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"p-j0609tLE.system.js","sources":["src/components/pds-popover/pds-popover.scss?tag=pds-popover&encapsulation=shadow","src/components/pds-popover/pds-popover.tsx"],"sourcesContent":[":host {\n --sizing-max-width-default: 352px;\n\n display: inline-block;\n\n // Trigger wrapper for slotted content\n .pds-popover__trigger-wrapper {\n display: inline-block;\n }\n\n // Content slot wrapper is hidden (content is rendered in portal)\n .pds-popover__content-slot-wrapper {\n display: none;\n }\n}\n","import { Component, Element, Event, EventEmitter, Host, h, Method, Prop, State } from '@stencil/core';\nimport { PlacementType } from '@utils/types';\nimport { PdsPopoverEventDetail } from './popover-interface';\n\n/**\n * @slot trigger - The trigger element for the popover\n * @slot (default) - The content to display inside the popover\n */\n@Component({\n tag: 'pds-popover',\n styleUrl: 'pds-popover.scss',\n shadow: true,\n})\nexport class PdsPopover {\n /**\n * Reference to the Host element\n */\n @Element() el: HTMLPdsPopoverElement;\n\n /**\n * Determines when the popover is active\n * @defaultValue false\n */\n @State() active = false;\n\n /**\n * Tracks if the component is still mounted to prevent memory leaks\n */\n private isComponentMounted = true;\n\n /**\n * Reference to the trigger element\n */\n private triggerEl: HTMLElement | null = null;\n\n /**\n * Portal element rendered in document.body\n */\n private portalEl: HTMLElement | null = null;\n\n /**\n * Guard to prevent repositioning loops\n */\n private isRepositioning = false;\n\n /**\n * Debounce timers for performance optimization\n */\n private scrollDebounceTimer: ReturnType<typeof setTimeout> | null = null;\n private resizeDebounceTimer: ReturnType<typeof setTimeout> | null = null;\n\n /**\n * Track moved nodes and their placeholders for restoration\n */\n private movedNodes: Array<{ node: Node; placeholder: Comment }> = [];\n\n /**\n * Timestamp when popover was opened (for preventing immediate close)\n */\n private openTimestamp = 0;\n\n /**\n * Instance counter for unique IDs\n */\n private static instanceCounter = 0;\n\n /**\n * Bound handlers for cleanup\n */\n private boundClickOutsideHandler: (event: MouseEvent) => void;\n private boundEscapeKeyHandler: (event: KeyboardEvent) => void;\n private boundScrollHandler: () => void;\n private boundResizeHandler: () => void;\n\n /**\n * Emitted when the popover is opened\n */\n @Event() pdsPopoverOpen: EventEmitter<PdsPopoverEventDetail>;\n\n /**\n * Emitted when the popover is closed\n */\n @Event() pdsPopoverClose: EventEmitter<PdsPopoverEventDetail>;\n\n /**\n * Determines the action that triggers the popover. For manual popovers, the consumer is responsible for toggling this value.\n * @defaultValue \"show\"\n */\n @Prop() popoverTargetAction: 'show' | 'toggle' | 'hide' = 'show';\n\n /**\n * Determines the type of popover. Auto popovers can be \"light dismissed\" by clicking outside of the popover.\n * Manual popovers require the consumer to handle the visibility of the popover.\n */\n @Prop() popoverType: 'auto' | 'manual' = 'auto';\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * Sets the maximum width of the popover content\n * @defaultValue 352\n */\n @Prop() maxWidth?: number = 352;\n\n /**\n * Determines the preferred position of the popover\n * @defaultValue \"right\"\n */\n @Prop({ reflect: true }) placement: PlacementType = 'right';\n\n componentDidLoad() {\n // Bind event handlers for cleanup\n this.boundClickOutsideHandler = this.handleClickOutside.bind(this);\n this.boundEscapeKeyHandler = this.handleEscapeKey.bind(this);\n this.boundScrollHandler = this.handleScroll.bind(this);\n this.boundResizeHandler = this.handleResize.bind(this);\n\n // Create portal element\n this.createPortal();\n\n // Initialize trigger element by calling slot change handler\n // This is a fallback for environments where slot change might not fire reliably\n const triggerSlot = this.el.shadowRoot?.querySelector('slot[name=\"trigger\"]') as HTMLSlotElement;\n if (triggerSlot && this.triggerEl == null) {\n const CustomEvent = (typeof window !== 'undefined' ? window.Event : global.Event) as any;\n const slotChangeEvent = new CustomEvent('slotchange');\n Object.defineProperty(slotChangeEvent, 'target', { value: triggerSlot, enumerable: true });\n this.handleTriggerSlotChange(slotChangeEvent);\n }\n }\n\n /**\n * Handles changes to the trigger slot\n */\n private handleTriggerSlotChange = (event: Event) => {\n const slot = event.target as HTMLSlotElement;\n const assignedElements = slot.assignedElements();\n\n // Clean up previous trigger's event listener if it exists\n if (this.triggerEl != null) {\n this.triggerEl.removeEventListener('click', this.handleTriggerClick);\n }\n\n if (assignedElements.length > 0) {\n // Use the first assigned element as the trigger\n this.triggerEl = assignedElements[0] as HTMLElement;\n\n // Set ARIA attributes to establish relationship between trigger and popover\n // This mirrors the native Popover API's accessibility behavior\n if (this.portalEl) {\n this.triggerEl.setAttribute('aria-expanded', String(this.active));\n this.triggerEl.setAttribute('aria-controls', this.portalEl.id);\n }\n\n // Attach click listener to handle popover visibility\n this.triggerEl.addEventListener('click', this.handleTriggerClick);\n } else {\n this.triggerEl = null;\n }\n };\n\n /**\n * Handles changes to the default slot (popover content)\n * When the popover is active, re-sync content with portal to handle dynamic updates\n */\n private handleContentSlotChange = () => {\n if (!this.active) return;\n this.updatePortalContent();\n };\n\n /**\n * Handles clicks on the trigger element\n */\n private handleTriggerClick = (event: Event) => {\n // Only prevent default if the trigger is not an anchor with href\n // This allows link navigation while still controlling popover visibility\n const composedPath = event.composedPath();\n const anchorWithHref = composedPath.find(\n (el) => el instanceof HTMLAnchorElement && (el as HTMLAnchorElement).href\n );\n\n if (!anchorWithHref) {\n event.preventDefault();\n }\n\n // Execute the appropriate action based on popoverTargetAction prop\n switch (this.popoverTargetAction) {\n case 'show':\n this.show();\n break;\n case 'hide':\n this.hide();\n break;\n case 'toggle':\n default:\n this.toggle();\n break;\n }\n };\n\n disconnectedCallback() {\n this.isComponentMounted = false;\n\n // Clean up trigger click event listener\n if (this.triggerEl != null) {\n this.triggerEl.removeEventListener('click', this.handleTriggerClick);\n }\n\n // Clean up all event listeners\n this.removeLightDismissListeners();\n this.removeScrollAndResizeListeners();\n\n // Clear any pending debounce timers\n this.clearDebounceTimers();\n\n // Remove portal from DOM\n this.removePortal();\n }\n\n /**\n * Clears any pending debounce timers\n */\n private clearDebounceTimers() {\n if (this.scrollDebounceTimer !== null) {\n clearTimeout(this.scrollDebounceTimer);\n this.scrollDebounceTimer = null;\n }\n if (this.resizeDebounceTimer !== null) {\n clearTimeout(this.resizeDebounceTimer);\n this.resizeDebounceTimer = null;\n }\n }\n\n private createPortal() {\n if (this.portalEl !== null) return;\n\n this.portalEl = document.createElement('div');\n this.portalEl.className = 'pds-popover';\n\n // Apply all styles inline since portal is outside shadow DOM\n this.portalEl.style.position = 'fixed';\n this.portalEl.style.zIndex = 'var(--pine-z-index-raised)';\n this.portalEl.style.maxWidth = `${this.maxWidth}px`;\n this.portalEl.style.display = 'none';\n this.portalEl.style.opacity = '0';\n this.portalEl.style.visibility = 'hidden';\n this.portalEl.style.backgroundColor = 'var(--pine-color-background-container)';\n this.portalEl.style.borderRadius = 'var(--pine-dimension-125)';\n this.portalEl.style.boxShadow = 'var(--pine-box-shadow-200)';\n this.portalEl.style.margin = 'var(--pine-dimension-none)';\n this.portalEl.style.padding = 'var(--pine-dimension-md)';\n\n // Generate unique ID\n if (!this.componentId) {\n const suffix = PdsPopover.instanceCounter++;\n this.portalEl.id = `pds-popover-portal-${suffix}`;\n } else {\n this.portalEl.id = `${this.componentId}-portal`;\n }\n\n // Add accessibility attributes for screen readers\n // Note: Native Popover API doesn't add a specific role, keeping semantic HTML\n this.portalEl.setAttribute('aria-modal', 'false'); // Not a modal, can interact with rest of page\n\n // Append to body\n document.body.appendChild(this.portalEl);\n\n // Add global focus styles to match Pine design system\n // This is done after appending to ensure it's part of the document and can access CSS variables\n this.addPortalFocusStyles();\n }\n\n /**\n * Adds Pine design system focus styles and dark mode border to the portal element\n * Uses CSS variables from Pine's design tokens\n */\n private addPortalFocusStyles() {\n if (!this.portalEl) return;\n\n const portalId = this.portalEl.id;\n\n // Check if style element already exists\n const existingStyle = document.querySelector(`style[data-pds-popover-focus=\"${portalId}\"]`);\n if (existingStyle) return;\n\n // Create style element with Pine's focus ring styles and dark mode border\n const styleEl = document.createElement('style');\n styleEl.setAttribute('data-pds-popover-focus', portalId);\n styleEl.textContent = `\n #${portalId}:focus {\n outline: var(--pine-outline-focus, 2px solid var(--pine-color-focus-ring, #6366f1)) !important;\n outline-offset: var(--pine-border-width, 1px);\n }\n #${portalId}:focus:not(:focus-visible) {\n outline: none;\n }\n [data-theme=\"dark\"] #${portalId} {\n border: var(--pine-border);\n }\n `;\n\n document.head.appendChild(styleEl);\n }\n\n /**\n * Moves slot content into portal (preserves event handlers and component instances)\n */\n private updatePortalContent() {\n if (!this.portalEl) return;\n\n const contentSlotWrapper = this.el.shadowRoot?.querySelector('.pds-popover__content-slot-wrapper');\n const defaultSlot = contentSlotWrapper?.querySelector('slot');\n\n if (defaultSlot) {\n const assignedNodes = defaultSlot.assignedNodes();\n\n // Move each node into portal and track with placeholder for restoration\n assignedNodes.forEach(node => {\n // Skip if node is already in the portal or already tracked\n const isAlreadyInPortal = node.parentNode === this.portalEl;\n const isAlreadyTracked = this.movedNodes.some(moved => moved.node === node);\n\n if (isAlreadyInPortal || isAlreadyTracked) {\n return;\n }\n\n // Create a placeholder comment to mark original position\n const placeholder = document.createComment('pds-popover-placeholder');\n\n // Insert placeholder before moving the node\n node.parentNode?.insertBefore(placeholder, node);\n\n // Move the actual node to portal (preserves all handlers and state)\n this.portalEl!.appendChild(node);\n\n // Track for restoration\n this.movedNodes.push({ node, placeholder });\n });\n }\n }\n\n /**\n * Restores moved nodes back to their original positions\n */\n private restorePortalContent() {\n // Restore each moved node to its original position\n this.movedNodes.forEach(({ node, placeholder }) => {\n if (placeholder.parentNode) {\n placeholder.parentNode.insertBefore(node, placeholder);\n placeholder.parentNode.removeChild(placeholder);\n }\n });\n\n // Clear tracking array\n this.movedNodes = [];\n }\n\n private removePortal() {\n if (this.portalEl) {\n // Remove the portal element from DOM\n if (this.portalEl.parentNode) {\n this.portalEl.parentNode.removeChild(this.portalEl);\n }\n\n // Remove the associated focus style element\n const portalId = this.portalEl.id;\n const styleEl = document.querySelector(`style[data-pds-popover-focus=\"${portalId}\"]`);\n if (styleEl && styleEl.parentNode) {\n styleEl.parentNode.removeChild(styleEl);\n }\n }\n this.portalEl = null;\n }\n\n /**\n * Opens the popover programmatically\n */\n @Method()\n async show() {\n if (this.active || !this.portalEl) return;\n\n this.active = true;\n\n // Record open timestamp to prevent immediate close from opening click\n this.openTimestamp = Date.now();\n\n // Update ARIA expanded state on trigger\n if (this.triggerEl) {\n this.triggerEl.setAttribute('aria-expanded', 'true');\n }\n\n // Update portal content with latest slot content\n this.updatePortalContent();\n\n // Show portal\n this.portalEl.style.display = 'block';\n this.portalEl.style.opacity = '1';\n this.portalEl.style.visibility = 'visible';\n\n // Position the popover\n requestAnimationFrame(() => {\n if (!this.isComponentMounted) return;\n this.handlePopoverPositioning();\n });\n\n // Add scroll and resize listeners for repositioning (always)\n this.addScrollAndResizeListeners();\n\n // Add document listeners for light dismiss and escape key (auto type only)\n if (this.popoverType === 'auto') {\n this.addLightDismissListeners();\n }\n\n // Emit open event\n this.pdsPopoverOpen.emit({\n componentId: this.componentId,\n popoverType: this.popoverType,\n });\n }\n\n /**\n * Closes the popover programmatically\n */\n @Method()\n async hide() {\n if (!this.active || !this.portalEl) return;\n\n this.active = false;\n\n // Update ARIA expanded state on trigger\n if (this.triggerEl) {\n this.triggerEl.setAttribute('aria-expanded', 'false');\n }\n\n // Restore content back to original slot positions\n this.restorePortalContent();\n\n // Hide portal\n this.portalEl.style.display = 'none';\n this.portalEl.style.opacity = '0';\n this.portalEl.style.visibility = 'hidden';\n\n // Return focus to trigger for keyboard accessibility\n // This mirrors native Popover API behavior on close\n this.returnFocusToTrigger();\n\n // Remove all listeners\n this.removeLightDismissListeners();\n this.removeScrollAndResizeListeners();\n\n // Clear any pending timers\n this.clearDebounceTimers();\n\n // Emit close event\n this.pdsPopoverClose.emit({\n componentId: this.componentId,\n popoverType: this.popoverType,\n });\n }\n\n /**\n * Toggles the popover open/closed state programmatically\n */\n @Method()\n async toggle() {\n if (this.active) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Adds light dismiss listeners (click outside and escape key)\n */\n private addLightDismissListeners() {\n // Add listeners immediately - handleClickOutside will check timestamp\n document.addEventListener('click', this.boundClickOutsideHandler, true);\n document.addEventListener('keydown', this.boundEscapeKeyHandler);\n }\n\n /**\n * Removes light dismiss listeners\n */\n private removeLightDismissListeners() {\n document.removeEventListener('click', this.boundClickOutsideHandler, true);\n document.removeEventListener('keydown', this.boundEscapeKeyHandler);\n }\n\n /**\n * Adds scroll and resize listeners for repositioning\n */\n private addScrollAndResizeListeners() {\n window.addEventListener('scroll', this.boundScrollHandler, true);\n window.addEventListener('resize', this.boundResizeHandler);\n }\n\n /**\n * Removes scroll and resize listeners\n */\n private removeScrollAndResizeListeners() {\n window.removeEventListener('scroll', this.boundScrollHandler, true);\n window.removeEventListener('resize', this.boundResizeHandler);\n }\n\n /**\n * Handles clicks outside the popover for light dismiss (auto type only)\n */\n private handleClickOutside(event: MouseEvent) {\n // Ignore events that occurred at or before the popover opened\n // This prevents the opening click from immediately closing the popover\n // Convert event.timeStamp (DOMHighResTimeStamp from performance.now()) to epoch time\n // by calculating: currentEpochTime - (currentPerfTime - eventPerfTime)\n const eventTime = event.timeStamp\n ? Date.now() - (performance.now() - event.timeStamp)\n : Date.now();\n\n if (eventTime <= this.openTimestamp) {\n return;\n }\n\n const target = event.target as Node;\n\n // Check if click is outside both the popover portal and the trigger\n const clickedInsidePopover = this.portalEl?.contains(target);\n const clickedInsideTrigger = this.triggerEl?.contains(target);\n\n if (!clickedInsidePopover && !clickedInsideTrigger) {\n this.hide();\n }\n }\n\n /**\n * Returns focus to the trigger element with visible focus indicator\n * This ensures focus rings/outlines are shown as they would be with keyboard navigation\n */\n private returnFocusToTrigger() {\n if (!this.triggerEl) return;\n\n // Focus immediately while still in keyboard event context\n // This ensures the browser treats it as keyboard-initiated and shows focus ring\n this.triggerEl.focus({ preventScroll: true });\n }\n\n /**\n * Handles escape key press to close the popover\n * Mirrors native Popover API: Escape closes and returns focus to trigger\n */\n private handleEscapeKey(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n // Prevent default Escape behavior and stop propagation\n // This mirrors native Popover API which handles Escape exclusively\n event.preventDefault();\n event.stopPropagation();\n\n // Close popover and return focus to trigger\n this.hide();\n }\n }\n\n /**\n * Handles scroll events to reposition the popover (debounced for performance)\n */\n private handleScroll() {\n if (!this.active) return;\n\n if (this.scrollDebounceTimer !== null) {\n clearTimeout(this.scrollDebounceTimer);\n }\n\n this.scrollDebounceTimer = setTimeout(() => {\n this.handlePopoverPositioning();\n this.scrollDebounceTimer = null;\n }, 10); // 10ms debounce for smooth repositioning\n }\n\n /**\n * Handles resize events to reposition the popover (debounced for performance)\n */\n private handleResize() {\n if (!this.active) return;\n\n if (this.resizeDebounceTimer !== null) {\n clearTimeout(this.resizeDebounceTimer);\n }\n\n this.resizeDebounceTimer = setTimeout(() => {\n this.handlePopoverPositioning();\n this.resizeDebounceTimer = null;\n }, 100); // 100ms debounce for resize\n }\n\n /**\n * Positions the popover relative to its trigger element\n */\n private handlePopoverPositioning() {\n // Prevent repositioning loops\n if (this.isRepositioning) {\n return;\n }\n\n this.isRepositioning = true;\n\n if (this.triggerEl == null || this.portalEl == null) {\n this.isRepositioning = false;\n return;\n }\n\n const triggerRect = this.triggerEl.getBoundingClientRect();\n const popoverRect = this.portalEl.getBoundingClientRect();\n\n // Safety check: ensure trigger has valid dimensions (is rendered and visible)\n if (triggerRect.width === 0 || triggerRect.height === 0) {\n this.isRepositioning = false;\n return;\n }\n\n let top = 0;\n let left = 0;\n const offset = 8;\n\n switch (this.placement) {\n case 'top':\n top = triggerRect.top - popoverRect.height - offset;\n left = triggerRect.left + (triggerRect.width - popoverRect.width) / 2;\n break;\n case 'top-start':\n top = triggerRect.top - popoverRect.height - offset;\n left = triggerRect.left;\n break;\n case 'top-end':\n top = triggerRect.top - popoverRect.height - offset;\n left = triggerRect.right - popoverRect.width;\n break;\n case 'right':\n top = triggerRect.top + (triggerRect.height - popoverRect.height) / 2;\n left = triggerRect.right + offset;\n break;\n case 'right-start':\n top = triggerRect.top;\n left = triggerRect.right + offset;\n break;\n case 'right-end':\n top = triggerRect.bottom - popoverRect.height;\n left = triggerRect.right + offset;\n break;\n case 'bottom':\n top = triggerRect.bottom + offset;\n left = triggerRect.left + (triggerRect.width - popoverRect.width) / 2;\n break;\n case 'bottom-start':\n top = triggerRect.bottom + offset;\n left = triggerRect.left;\n break;\n case 'bottom-end':\n top = triggerRect.bottom + offset;\n left = triggerRect.right - popoverRect.width;\n break;\n case 'left':\n top = triggerRect.top + (triggerRect.height - popoverRect.height) / 2;\n left = triggerRect.left - popoverRect.width - offset;\n break;\n case 'left-start':\n top = triggerRect.top;\n left = triggerRect.left - popoverRect.width - offset;\n break;\n case 'left-end':\n top = triggerRect.bottom - popoverRect.height;\n left = triggerRect.left - popoverRect.width - offset;\n break;\n }\n\n this.portalEl.style.top = `${top}px`;\n this.portalEl.style.left = `${left}px`;\n\n // Reset the repositioning guard after a short delay\n setTimeout(() => {\n this.isRepositioning = false;\n }, 16); // ~1 frame at 60fps\n }\n\n render() {\n return (\n <Host id={this.componentId}>\n <span class=\"pds-popover__trigger-wrapper\">\n <slot name=\"trigger\" onSlotchange={this.handleTriggerSlotChange}></slot>\n </span>\n\n <div class=\"pds-popover__content-slot-wrapper\">\n <slot onSlotchange={this.handleContentSlotChange}></slot>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p-DFWnxG_e.system.js","sources":["src/components/pds-popover/pds-popover.scss?tag=pds-popover&encapsulation=shadow","src/components/pds-popover/pds-popover.tsx"],"sourcesContent":[":host {\n --sizing-max-width-default: 352px;\n\n display: inline-block;\n\n // Trigger wrapper for slotted content\n .pds-popover__trigger-wrapper {\n display: inline-block;\n }\n\n // Content slot wrapper is hidden (content is rendered in portal)\n .pds-popover__content-slot-wrapper {\n display: none;\n }\n}\n","import { Component, Element, Event, EventEmitter, Host, h, Method, Prop, State } from '@stencil/core';\nimport { PlacementType } from '@utils/types';\nimport { PdsPopoverEventDetail } from './popover-interface';\n\n/**\n * @slot trigger - The trigger element for the popover\n * @slot (default) - The content to display inside the popover\n */\n@Component({\n tag: 'pds-popover',\n styleUrl: 'pds-popover.scss',\n shadow: true,\n})\nexport class PdsPopover {\n /**\n * Reference to the Host element\n */\n @Element() el: HTMLPdsPopoverElement;\n\n /**\n * Determines when the popover is active\n * @defaultValue false\n */\n @State() active = false;\n\n /**\n * Tracks if the component is still mounted to prevent memory leaks\n */\n private isComponentMounted = true;\n\n /**\n * Reference to the trigger element\n */\n private triggerEl: HTMLElement | null = null;\n\n /**\n * Portal element rendered in document.body\n */\n private portalEl: HTMLElement | null = null;\n\n /**\n * Guard to prevent repositioning loops\n */\n private isRepositioning = false;\n\n /**\n * Debounce timers for performance optimization\n */\n private scrollDebounceTimer: ReturnType<typeof setTimeout> | null = null;\n private resizeDebounceTimer: ReturnType<typeof setTimeout> | null = null;\n\n /**\n * Track moved nodes and their placeholders for restoration\n */\n private movedNodes: Array<{ node: Node; placeholder: Comment }> = [];\n\n /**\n * Timestamp when popover was opened (for preventing immediate close)\n */\n private openTimestamp = 0;\n\n /**\n * Instance counter for unique IDs\n */\n private static instanceCounter = 0;\n\n /**\n * Bound handlers for cleanup\n */\n private boundClickOutsideHandler: (event: MouseEvent) => void;\n private boundEscapeKeyHandler: (event: KeyboardEvent) => void;\n private boundScrollHandler: () => void;\n private boundResizeHandler: () => void;\n\n /**\n * Emitted when the popover is opened\n */\n @Event() pdsPopoverOpen: EventEmitter<PdsPopoverEventDetail>;\n\n /**\n * Emitted when the popover is closed\n */\n @Event() pdsPopoverClose: EventEmitter<PdsPopoverEventDetail>;\n\n /**\n * Determines the action that triggers the popover. For manual popovers, the consumer is responsible for toggling this value.\n * @defaultValue \"show\"\n */\n @Prop() popoverTargetAction: 'show' | 'toggle' | 'hide' = 'show';\n\n /**\n * Determines the type of popover. Auto popovers can be \"light dismissed\" by clicking outside of the popover.\n * Manual popovers require the consumer to handle the visibility of the popover.\n */\n @Prop() popoverType: 'auto' | 'manual' = 'auto';\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * Sets the maximum width of the popover content\n * @defaultValue 352\n */\n @Prop() maxWidth?: number = 352;\n\n /**\n * Determines the preferred position of the popover\n * @defaultValue \"right\"\n */\n @Prop({ reflect: true }) placement: PlacementType = 'right';\n\n componentDidLoad() {\n // Bind event handlers for cleanup\n this.boundClickOutsideHandler = this.handleClickOutside.bind(this);\n this.boundEscapeKeyHandler = this.handleEscapeKey.bind(this);\n this.boundScrollHandler = this.handleScroll.bind(this);\n this.boundResizeHandler = this.handleResize.bind(this);\n\n // Create portal element\n this.createPortal();\n\n // Initialize trigger element by calling slot change handler\n // This is a fallback for environments where slot change might not fire reliably\n const triggerSlot = this.el.shadowRoot?.querySelector('slot[name=\"trigger\"]') as HTMLSlotElement;\n if (triggerSlot && this.triggerEl == null) {\n const CustomEvent = (typeof window !== 'undefined' ? window.Event : global.Event) as any;\n const slotChangeEvent = new CustomEvent('slotchange');\n Object.defineProperty(slotChangeEvent, 'target', { value: triggerSlot, enumerable: true });\n this.handleTriggerSlotChange(slotChangeEvent);\n }\n }\n\n /**\n * Handles changes to the trigger slot\n */\n private handleTriggerSlotChange = (event: Event) => {\n const slot = event.target as HTMLSlotElement;\n const assignedElements = slot.assignedElements();\n\n // Clean up previous trigger's event listener if it exists\n if (this.triggerEl != null) {\n this.triggerEl.removeEventListener('click', this.handleTriggerClick);\n }\n\n if (assignedElements.length > 0) {\n // Use the first assigned element as the trigger\n this.triggerEl = assignedElements[0] as HTMLElement;\n\n // Set ARIA attributes to establish relationship between trigger and popover\n // This mirrors the native Popover API's accessibility behavior\n if (this.portalEl) {\n this.triggerEl.setAttribute('aria-expanded', String(this.active));\n this.triggerEl.setAttribute('aria-controls', this.portalEl.id);\n }\n\n // Attach click listener to handle popover visibility\n this.triggerEl.addEventListener('click', this.handleTriggerClick);\n } else {\n this.triggerEl = null;\n }\n };\n\n /**\n * Handles changes to the default slot (popover content)\n * When the popover is active, re-sync content with portal to handle dynamic updates\n */\n private handleContentSlotChange = () => {\n if (!this.active) return;\n this.updatePortalContent();\n };\n\n /**\n * Handles clicks on the trigger element\n */\n private handleTriggerClick = (event: Event) => {\n // Only prevent default if the trigger is not an anchor with href\n // This allows link navigation while still controlling popover visibility\n const composedPath = event.composedPath();\n const anchorWithHref = composedPath.find(\n (el) => el instanceof HTMLAnchorElement && (el as HTMLAnchorElement).href\n );\n\n if (!anchorWithHref) {\n event.preventDefault();\n }\n\n // Execute the appropriate action based on popoverTargetAction prop\n switch (this.popoverTargetAction) {\n case 'show':\n this.show();\n break;\n case 'hide':\n this.hide();\n break;\n case 'toggle':\n default:\n this.toggle();\n break;\n }\n };\n\n disconnectedCallback() {\n this.isComponentMounted = false;\n\n // Clean up trigger click event listener\n if (this.triggerEl != null) {\n this.triggerEl.removeEventListener('click', this.handleTriggerClick);\n }\n\n // Clean up all event listeners\n this.removeLightDismissListeners();\n this.removeScrollAndResizeListeners();\n\n // Clear any pending debounce timers\n this.clearDebounceTimers();\n\n // Remove portal from DOM\n this.removePortal();\n }\n\n /**\n * Clears any pending debounce timers\n */\n private clearDebounceTimers() {\n if (this.scrollDebounceTimer !== null) {\n clearTimeout(this.scrollDebounceTimer);\n this.scrollDebounceTimer = null;\n }\n if (this.resizeDebounceTimer !== null) {\n clearTimeout(this.resizeDebounceTimer);\n this.resizeDebounceTimer = null;\n }\n }\n\n private createPortal() {\n if (this.portalEl !== null) return;\n\n this.portalEl = document.createElement('div');\n this.portalEl.className = 'pds-popover';\n\n // Apply all styles inline since portal is outside shadow DOM\n this.portalEl.style.position = 'fixed';\n this.portalEl.style.zIndex = 'var(--pine-z-index-raised)';\n this.portalEl.style.maxWidth = `${this.maxWidth}px`;\n this.portalEl.style.display = 'none';\n this.portalEl.style.opacity = '0';\n this.portalEl.style.visibility = 'hidden';\n this.portalEl.style.backgroundColor = 'var(--pine-color-background-container)';\n this.portalEl.style.borderRadius = 'var(--pine-dimension-125)';\n this.portalEl.style.boxShadow = 'var(--pine-box-shadow-200)';\n this.portalEl.style.margin = 'var(--pine-dimension-none)';\n this.portalEl.style.padding = 'var(--pine-dimension-md)';\n\n // Generate unique ID\n if (!this.componentId) {\n const suffix = PdsPopover.instanceCounter++;\n this.portalEl.id = `pds-popover-portal-${suffix}`;\n } else {\n this.portalEl.id = `${this.componentId}-portal`;\n }\n\n // Add accessibility attributes for screen readers\n // Note: Native Popover API doesn't add a specific role, keeping semantic HTML\n this.portalEl.setAttribute('aria-modal', 'false'); // Not a modal, can interact with rest of page\n\n // Append to body\n document.body.appendChild(this.portalEl);\n\n // Add global focus styles to match Pine design system\n // This is done after appending to ensure it's part of the document and can access CSS variables\n this.addPortalFocusStyles();\n }\n\n /**\n * Adds Pine design system focus styles and dark mode border to the portal element\n * Uses CSS variables from Pine's design tokens\n */\n private addPortalFocusStyles() {\n if (!this.portalEl) return;\n\n const portalId = this.portalEl.id;\n\n // Check if style element already exists\n const existingStyle = document.querySelector(`style[data-pds-popover-focus=\"${portalId}\"]`);\n if (existingStyle) return;\n\n // Create style element with Pine's focus ring styles and dark mode border\n const styleEl = document.createElement('style');\n styleEl.setAttribute('data-pds-popover-focus', portalId);\n styleEl.textContent = `\n #${portalId}:focus {\n outline: var(--pine-outline-focus, 2px solid var(--pine-color-focus-ring, #6366f1)) !important;\n outline-offset: var(--pine-border-width, 1px);\n }\n #${portalId}:focus:not(:focus-visible) {\n outline: none;\n }\n [data-theme=\"dark\"] #${portalId} {\n border: var(--pine-border);\n }\n `;\n\n document.head.appendChild(styleEl);\n }\n\n /**\n * Moves slot content into portal (preserves event handlers and component instances)\n */\n private updatePortalContent() {\n if (!this.portalEl) return;\n\n const contentSlotWrapper = this.el.shadowRoot?.querySelector('.pds-popover__content-slot-wrapper');\n const defaultSlot = contentSlotWrapper?.querySelector('slot');\n\n if (defaultSlot) {\n const assignedNodes = defaultSlot.assignedNodes();\n\n // Move each node into portal and track with placeholder for restoration\n assignedNodes.forEach(node => {\n // Skip if node is already in the portal or already tracked\n const isAlreadyInPortal = node.parentNode === this.portalEl;\n const isAlreadyTracked = this.movedNodes.some(moved => moved.node === node);\n\n if (isAlreadyInPortal || isAlreadyTracked) {\n return;\n }\n\n // Create a placeholder comment to mark original position\n const placeholder = document.createComment('pds-popover-placeholder');\n\n // Insert placeholder before moving the node\n node.parentNode?.insertBefore(placeholder, node);\n\n // Move the actual node to portal (preserves all handlers and state)\n this.portalEl!.appendChild(node);\n\n // Track for restoration\n this.movedNodes.push({ node, placeholder });\n });\n }\n }\n\n /**\n * Restores moved nodes back to their original positions\n */\n private restorePortalContent() {\n // Restore each moved node to its original position\n this.movedNodes.forEach(({ node, placeholder }) => {\n if (placeholder.parentNode) {\n placeholder.parentNode.insertBefore(node, placeholder);\n placeholder.parentNode.removeChild(placeholder);\n }\n });\n\n // Clear tracking array\n this.movedNodes = [];\n }\n\n private removePortal() {\n if (this.portalEl) {\n // Remove the portal element from DOM\n if (this.portalEl.parentNode) {\n this.portalEl.parentNode.removeChild(this.portalEl);\n }\n\n // Remove the associated focus style element\n const portalId = this.portalEl.id;\n const styleEl = document.querySelector(`style[data-pds-popover-focus=\"${portalId}\"]`);\n if (styleEl && styleEl.parentNode) {\n styleEl.parentNode.removeChild(styleEl);\n }\n }\n this.portalEl = null;\n }\n\n /**\n * Opens the popover programmatically\n */\n @Method()\n async show() {\n if (this.active || !this.portalEl) return;\n\n this.active = true;\n\n // Record open timestamp to prevent immediate close from opening click\n this.openTimestamp = Date.now();\n\n // Update ARIA expanded state on trigger\n if (this.triggerEl) {\n this.triggerEl.setAttribute('aria-expanded', 'true');\n }\n\n // Update portal content with latest slot content\n this.updatePortalContent();\n\n // Show portal\n this.portalEl.style.display = 'block';\n this.portalEl.style.opacity = '1';\n this.portalEl.style.visibility = 'visible';\n\n // Position the popover\n requestAnimationFrame(() => {\n if (!this.isComponentMounted) return;\n this.handlePopoverPositioning();\n });\n\n // Add scroll and resize listeners for repositioning (always)\n this.addScrollAndResizeListeners();\n\n // Add document listeners for light dismiss and escape key (auto type only)\n if (this.popoverType === 'auto') {\n this.addLightDismissListeners();\n }\n\n // Emit open event\n this.pdsPopoverOpen.emit({\n componentId: this.componentId,\n popoverType: this.popoverType,\n });\n }\n\n /**\n * Closes the popover programmatically\n */\n @Method()\n async hide() {\n if (!this.active || !this.portalEl) return;\n\n this.active = false;\n\n // Update ARIA expanded state on trigger\n if (this.triggerEl) {\n this.triggerEl.setAttribute('aria-expanded', 'false');\n }\n\n // Restore content back to original slot positions\n this.restorePortalContent();\n\n // Hide portal\n this.portalEl.style.display = 'none';\n this.portalEl.style.opacity = '0';\n this.portalEl.style.visibility = 'hidden';\n\n // Return focus to trigger for keyboard accessibility\n // This mirrors native Popover API behavior on close\n this.returnFocusToTrigger();\n\n // Remove all listeners\n this.removeLightDismissListeners();\n this.removeScrollAndResizeListeners();\n\n // Clear any pending timers\n this.clearDebounceTimers();\n\n // Emit close event\n this.pdsPopoverClose.emit({\n componentId: this.componentId,\n popoverType: this.popoverType,\n });\n }\n\n /**\n * Toggles the popover open/closed state programmatically\n */\n @Method()\n async toggle() {\n if (this.active) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Adds light dismiss listeners (click outside and escape key)\n */\n private addLightDismissListeners() {\n // Add listeners immediately - handleClickOutside will check timestamp\n document.addEventListener('click', this.boundClickOutsideHandler, true);\n document.addEventListener('keydown', this.boundEscapeKeyHandler);\n }\n\n /**\n * Removes light dismiss listeners\n */\n private removeLightDismissListeners() {\n document.removeEventListener('click', this.boundClickOutsideHandler, true);\n document.removeEventListener('keydown', this.boundEscapeKeyHandler);\n }\n\n /**\n * Adds scroll and resize listeners for repositioning\n */\n private addScrollAndResizeListeners() {\n window.addEventListener('scroll', this.boundScrollHandler, true);\n window.addEventListener('resize', this.boundResizeHandler);\n }\n\n /**\n * Removes scroll and resize listeners\n */\n private removeScrollAndResizeListeners() {\n window.removeEventListener('scroll', this.boundScrollHandler, true);\n window.removeEventListener('resize', this.boundResizeHandler);\n }\n\n /**\n * Handles clicks outside the popover for light dismiss (auto type only)\n */\n private handleClickOutside(event: MouseEvent) {\n // Ignore events that occurred at or before the popover opened\n // This prevents the opening click from immediately closing the popover\n // Convert event.timeStamp (DOMHighResTimeStamp from performance.now()) to epoch time\n // by calculating: currentEpochTime - (currentPerfTime - eventPerfTime)\n const eventTime = event.timeStamp\n ? Date.now() - (performance.now() - event.timeStamp)\n : Date.now();\n\n if (eventTime <= this.openTimestamp) {\n return;\n }\n\n const target = event.target as Node;\n\n // Check if click is outside both the popover portal and the trigger\n const clickedInsidePopover = this.portalEl?.contains(target);\n const clickedInsideTrigger = this.triggerEl?.contains(target);\n\n if (!clickedInsidePopover && !clickedInsideTrigger) {\n this.hide();\n }\n }\n\n /**\n * Returns focus to the trigger element with visible focus indicator\n * This ensures focus rings/outlines are shown as they would be with keyboard navigation\n */\n private returnFocusToTrigger() {\n if (!this.triggerEl) return;\n\n // Focus immediately while still in keyboard event context\n // This ensures the browser treats it as keyboard-initiated and shows focus ring\n this.triggerEl.focus({ preventScroll: true });\n }\n\n /**\n * Handles escape key press to close the popover\n * Mirrors native Popover API: Escape closes and returns focus to trigger\n */\n private handleEscapeKey(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n // Prevent default Escape behavior and stop propagation\n // This mirrors native Popover API which handles Escape exclusively\n event.preventDefault();\n event.stopPropagation();\n\n // Close popover and return focus to trigger\n this.hide();\n }\n }\n\n /**\n * Handles scroll events to reposition the popover (debounced for performance)\n */\n private handleScroll() {\n if (!this.active) return;\n\n if (this.scrollDebounceTimer !== null) {\n clearTimeout(this.scrollDebounceTimer);\n }\n\n this.scrollDebounceTimer = setTimeout(() => {\n this.handlePopoverPositioning();\n this.scrollDebounceTimer = null;\n }, 10); // 10ms debounce for smooth repositioning\n }\n\n /**\n * Handles resize events to reposition the popover (debounced for performance)\n */\n private handleResize() {\n if (!this.active) return;\n\n if (this.resizeDebounceTimer !== null) {\n clearTimeout(this.resizeDebounceTimer);\n }\n\n this.resizeDebounceTimer = setTimeout(() => {\n this.handlePopoverPositioning();\n this.resizeDebounceTimer = null;\n }, 100); // 100ms debounce for resize\n }\n\n /**\n * Positions the popover relative to its trigger element\n */\n private handlePopoverPositioning() {\n // Prevent repositioning loops\n if (this.isRepositioning) {\n return;\n }\n\n this.isRepositioning = true;\n\n if (this.triggerEl == null || this.portalEl == null) {\n this.isRepositioning = false;\n return;\n }\n\n const triggerRect = this.triggerEl.getBoundingClientRect();\n const popoverRect = this.portalEl.getBoundingClientRect();\n\n // Safety check: ensure trigger has valid dimensions (is rendered and visible)\n if (triggerRect.width === 0 || triggerRect.height === 0) {\n this.isRepositioning = false;\n return;\n }\n\n let top = 0;\n let left = 0;\n const offset = 8;\n\n switch (this.placement) {\n case 'top':\n top = triggerRect.top - popoverRect.height - offset;\n left = triggerRect.left + (triggerRect.width - popoverRect.width) / 2;\n break;\n case 'top-start':\n top = triggerRect.top - popoverRect.height - offset;\n left = triggerRect.left;\n break;\n case 'top-end':\n top = triggerRect.top - popoverRect.height - offset;\n left = triggerRect.right - popoverRect.width;\n break;\n case 'right':\n top = triggerRect.top + (triggerRect.height - popoverRect.height) / 2;\n left = triggerRect.right + offset;\n break;\n case 'right-start':\n top = triggerRect.top;\n left = triggerRect.right + offset;\n break;\n case 'right-end':\n top = triggerRect.bottom - popoverRect.height;\n left = triggerRect.right + offset;\n break;\n case 'bottom':\n top = triggerRect.bottom + offset;\n left = triggerRect.left + (triggerRect.width - popoverRect.width) / 2;\n break;\n case 'bottom-start':\n top = triggerRect.bottom + offset;\n left = triggerRect.left;\n break;\n case 'bottom-end':\n top = triggerRect.bottom + offset;\n left = triggerRect.right - popoverRect.width;\n break;\n case 'left':\n top = triggerRect.top + (triggerRect.height - popoverRect.height) / 2;\n left = triggerRect.left - popoverRect.width - offset;\n break;\n case 'left-start':\n top = triggerRect.top;\n left = triggerRect.left - popoverRect.width - offset;\n break;\n case 'left-end':\n top = triggerRect.bottom - popoverRect.height;\n left = triggerRect.left - popoverRect.width - offset;\n break;\n }\n\n this.portalEl.style.top = `${top}px`;\n this.portalEl.style.left = `${left}px`;\n\n // Reset the repositioning guard after a short delay\n setTimeout(() => {\n this.isRepositioning = false;\n }, 16); // ~1 frame at 60fps\n }\n\n render() {\n return (\n <Host id={this.componentId}>\n <span class=\"pds-popover__trigger-wrapper\">\n <slot name=\"trigger\" onSlotchange={this.handleTriggerSlotChange}></slot>\n </span>\n\n <div class=\"pds-popover__content-slot-wrapper\">\n <slot onSlotchange={this.handleContentSlotChange}></slot>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"p-DbNPEZgc.system.js","sources":["src/global/styles/utils/label.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-input/pds-input.tokens.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-textarea/pds-textarea.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-textarea/pds-textarea.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n:host([aria-disabled=\"true\"]) label {\n color: var(--pine-color-text-label-disabled);\n}\n\n:host([aria-readonly=\"true\"]) {\n label {\n color: var(--pine-color-text-label-readonly);\n }\n}\n\nlabel {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n","@use '~@kajabi-ui/styles/dist/pine/components/pds-input/pds-input.tokens'\n",":host {\n display: inline-block;\n width: 100%;\n}\n\n:host([aria-readonly=\"true\"]) {\n textarea {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-readonly);\n }\n}\n\n:host([highlight]:not([disabled]):not([aria-disabled=\"true\"]):not([aria-readonly=\"true\"])) {\n .pds-textarea__field:not(.is-invalid) {\n background-color: var(--pine-color-accent-disabled);\n border-color: var(--pine-color-accent);\n color: var(--pine-color-text-accent);\n\n &:hover {\n border-color: var(--pine-color-accent-hover);\n }\n\n &:focus-visible {\n outline-color: var(--pine-color-focus-ring);\n }\n\n ~ .pds-textarea__character-counter {\n background: color-mix(in srgb, var(--pine-color-accent-disabled) 80%, transparent);\n color: var(--pine-color-text-accent);\n }\n }\n}\n\n.pds-textarea {\n display: flex;\n flex-direction: column;\n}\n\n.pds-textarea__label-wrapper {\n align-items: center;\n display: flex;\n justify-content: space-between;\n}\n\n.pds-textarea__action {\n align-items: center;\n display: flex;\n gap: var(--pine-dimension-xs);\n margin-inline-start: var(--pine-dimension-xs);\n}\n\nlabel {\n display: block;\n margin-block-end: var(--pine-dimension-xs);\n}\n\n// When label is inside wrapper, remove its margin\n.pds-textarea__label-wrapper label {\n margin-block-end: 0;\n}\n\n.pds-textarea__helper-message {\n color: var(--pine-color-text-message);\n font: var(--pine-typography-body-sm-medium);\n margin-block-start: var(--pine-dimension-2xs);\n}\n\n.pds-textarea__error-message {\n color: var(--pine-color-text-message-danger);\n display: flex;\n font: var(--pine-typography-body-sm-medium);\n gap: var(--pine-dimension-2xs);\n margin-block-start: var(--pine-dimension-2xs);\n\n pds-icon {\n margin-block-start: var(--pine-dimension-025);\n }\n}\n\n.pds-textarea__field-wrapper {\n display: inline-block;\n position: relative;\n width: 100%;\n}\n\n.pds-textarea__field {\n background-color: var(--pine-color-background-container);\n border: var(--pine-border);\n border-radius: calc(var(--pine-dimension-xs) * 1.25);\n box-sizing: border-box;\n color: var(--pine-color-text);\n font: var(--pine-typography-body);\n letter-spacing: var(--pine-letter-spacing);\n min-height: calc(var(--pine-dimension-xl) * 2);\n min-width: calc(var(--pine-dimension-xl) * 2);\n padding: var(--pine-dimension-xs) var(--pine-dimension-sm);\n resize: both;\n width: 100%;\n\n // Add bottom padding when character counter is present\n :host([max-length]) & {\n padding-bottom: calc(var(--pine-dimension-xs) + var(--pine-dimension-md));\n }\n\n &:hover:not(:disabled, .is-invalid) {\n border: var(--pine-border-hover);\n }\n\n &:disabled {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-disabled);\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: var(--pine-outline-focus);\n outline-offset: var(--pine-border-width);\n }\n\n &::placeholder {\n color: var(--pine-color-text-placeholder);\n }\n\n &.is-invalid {\n background-color: var(--pine-input-color-background-danger);\n border-color: var(--pine-color-border-danger);\n\n :host-context([data-theme=\"dark\"]) & {\n background-color: var(--pine-color-red-950);\n }\n\n &:focus-visible {\n outline-color: var(--pine-color-focus-ring-danger);\n }\n }\n}\n\n.pds-textarea__character-counter {\n background: color-mix(in srgb, var(--pine-color-background-container) 80%, transparent);\n border-radius: calc(var(--pine-dimension-2xs) * 0.5);\n color: var(--pine-color-text-muted);\n font: var(--pine-typography-body-sm-medium);\n padding: calc(var(--pine-dimension-2xs) * 0.5) var(--pine-dimension-2xs);\n pointer-events: none;\n position: absolute;\n user-select: none;\n white-space: nowrap;\n z-index: var(--pine-z-index);\n\n // Match textarea disabled state\n :host([aria-disabled=\"true\"]) & {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-disabled);\n }\n\n // Match textarea readonly state\n :host([aria-readonly=\"true\"]) & {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-readonly);\n }\n\n // Match textarea invalid state - target when field has is-invalid class\n .pds-textarea__field.is-invalid ~ & {\n background-color: var(--pine-input-color-background-danger);\n\n :host-context([data-theme=\"dark\"]) & {\n background-color: var(--pine-color-red-950);\n }\n }\n}\n\n.visually-hidden {\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: polygon(0 0, 0 0, 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n","import { Component, Element, Event, EventEmitter, Host, h, Method, Prop, State, Watch } from '@stencil/core';\nimport { assignDescription, isRequired, messageId, exposeTypeProperty } from '../../utils/form';\nimport { TextareaChangeEventDetail, TextareaInputEventDetail } from './textarea-interface';\nimport { debounceEvent } from '@utils/utils';\nimport type { Attributes } from '@utils/attributes';\nimport { inheritAttributes, inheritAriaAttributes } from '@utils/attributes';\nimport { danger } from '@pine-ds/icons/icons';\n\n/**\n * @slot action - Content to be displayed in the label area, typically for help icons or links\n */\n@Component({\n tag: 'pds-textarea',\n styleUrls: [\n '../../global/styles/utils/label.scss',\n '../pds-input/pds-input.tokens.scss',\n 'pds-textarea.scss'\n ],\n shadow: true,\n formAssociated: true,\n})\nexport class PdsTextarea {\n\n private nativeTextarea?: HTMLTextAreaElement\n private focusedValue?: string | null;\n private inheritedAttributes: Attributes = {};\n private originalPdsInput?: EventEmitter<TextareaInputEventDetail>;\n private internals?: ElementInternals;\n private resizeObserver?: ResizeObserver;\n private characterCounter?: HTMLElement;\n private readonly _type = 'textarea' as const;\n\n @Element() el: HTMLPdsTextareaElement;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() pdsBlur!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the input has focus.\n */\n @Event() pdsFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when a keyboard input occurs.\n *\n * For elements that accept text input (`type=text`, `type=tel`, etc.), the interface\n * is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others,\n * the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If\n * the input is cleared on edit, the type is `null`.\n */\n @Event() pdsInput: EventEmitter<TextareaInputEventDetail>;\n\n /**\n * Event emitted whenever the value of the textarea changes.\n *\n * This event will not emit when programmatically setting the `value` property.\n */\n @Event() pdsTextareaChange: EventEmitter<TextareaChangeEventDetail>;\n\n /**\n * Emitted when a key is pressed down in the textarea.\n */\n @Event() pdsKeyDown!: EventEmitter<KeyboardEvent>;\n\n /**\n * Sets focus on the native `textarea` in the `pds-textarea`. Use this method instead of the global\n * `textarea.focus()`.\n */\n @Method()\n async setFocus() {\n if (this.nativeTextarea) {\n this.nativeTextarea.focus();\n }\n }\n\n /**\n * Specifies if and how the browser provides `autocomplete` assistance for the field.\n */\n @Prop() autocomplete: string;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Determines whether or not the textarea is disabled.\n * @defaultValue false\n */\n @Prop() disabled = false;\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the event after each keystroke.\n */\n @Prop() debounce?: number;\n\n /**\n * Displays an error message below the textarea field.\n */\n @Prop() errorMessage?: string;\n\n /**\n * Displays a message or hint below the textarea field.\n */\n @Prop() helperMessage?: string;\n\n /**\n * Determines whether or not the textarea is invalid or throws an error.\n * @defaultValue false\n */\n @Prop({mutable: true}) invalid = false; // eslint-disable-line @stencil-community/strict-mutable\n\n /**\n * Text to be displayed as the textarea label.\n */\n @Prop() label?: string;\n\n /**\n * Visually hides the label text for instances where only the textarea should be displayed. Label remains accessible to assistive technology such as screen readers.\n * Note: When true, the action slot is also hidden to maintain a minimal UI.\n */\n @Prop() hideLabel: boolean;\n\n /**\n * Specifies the name. Submitted with the form name/value pair. This value will mirror the componentId.\n */\n @Prop() name: string = this.componentId;\n\n /**\n * Specifies a short hint that describes the expected value of the textarea.\n */\n @Prop() placeholder?: string;\n\n /**\n * Determines whether or not the textarea is readonly.\n * @defaultValue false\n */\n @Prop() readonly = false;\n\n /**\n * Determines whether or not the textarea is required.\n * @defaultValue false\n */\n @Prop() required = false;\n\n /**\n * Sets number of rows of text visible without needing to scroll in the textarea.\n */\n @Prop() rows?: number;\n\n /**\n * Specifies the maximum number of characters allowed in the textarea. When set, displays a character counter.\n */\n @Prop({ reflect: true }) maxLength?: number;\n\n /**\n * Applies highlight styling to the textarea field.\n */\n @Prop({ reflect: true }) highlight?: boolean;\n\n /**\n * The value of the textarea.\n */\n @Prop({mutable: true}) value?: string | null = '';\n\n @State() hasFocus = false;\n\n\n /**\n * If true, the textarea has action content in the label area\n */\n @State() hasAction = false;\n\n @Watch('debounce')\n protected debounceChanged() {\n const { pdsInput, debounce, originalPdsInput } = this;\n\n this.pdsInput = debounce === undefined ? originalPdsInput ?? pdsInput : debounceEvent(pdsInput, debounce);\n }\n\n /**\n * Update the native input element when the value changes\n */\n @Watch('value')\n protected valueChanged() {\n const nativeTextarea = this.nativeTextarea;\n const value = this.getValue();\n\n if (nativeTextarea && nativeTextarea.value !== value) {\n nativeTextarea.value = value;\n }\n\n // Update form value for Form Associated Custom Elements API\n this.updateFormValue();\n\n // Update character counter position in case content changes affect sizing\n if (this.maxLength && typeof ResizeObserver !== 'undefined') {\n this.updateCharacterCounterPosition();\n }\n }\n\n @Watch('maxLength')\n protected maxLengthChanged() {\n // Setup or teardown ResizeObserver based on maxLength\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n\n if (this.maxLength && this.nativeTextarea) {\n this.setupResizeObserver();\n }\n\n // Update ElementInternals validity when maxLength changes\n if (this.internals && this.internals.setValidity && this.nativeTextarea) {\n const isTooLong = this.nativeTextarea.value.length > (this.maxLength || 0);\n this.internals.setValidity(\n { tooLong: isTooLong },\n isTooLong ? 'Value exceeds maxLength' : '',\n this.nativeTextarea\n );\n }\n }\n\n /**\n * Emits an `pdsInput` event.\n */\n private emitInputChange(event?: Event) {\n const { value } = this;\n this.pdsInput.emit({ value, event });\n }\n\n /**\n * Emits an `pdsTextareaChange` event.\n */\n private emitValueChange(event?: Event) {\n const textarea = event.target as HTMLTextAreaElement;\n isRequired(textarea, this);\n\n const { value } = textarea;\n\n // Checks for both null and undefined values\n const newValue = value == null ? value : value.toString();\n this.focusedValue = newValue;\n this.pdsTextareaChange.emit({ value: newValue, event });\n }\n\n private getValue(): string {\n return this.value || '';\n }\n\n private onBlur = (ev: FocusEvent) => {\n this.hasFocus = false;\n\n if (this.focusedValue !== this.value) {\n this.emitValueChange(ev);\n }\n\n this.pdsBlur.emit(ev);\n };\n\n private onFocus = (ev: FocusEvent) => {\n this.hasFocus = true;\n this.focusedValue = this.value;\n\n this.pdsFocus.emit(ev);\n };\n\n private onInput = (ev: Event) => {\n const input = ev.target as HTMLTextAreaElement | null;\n if (input) {\n // Handle maxLength validation\n if (this.maxLength && input.value.length > this.maxLength) {\n // Prevent input beyond maxLength\n input.value = input.value.substring(0, this.maxLength);\n }\n this.value = input.value || '';\n }\n this.emitInputChange(ev);\n\n // Update counter position when content changes\n if (this.maxLength && typeof ResizeObserver !== 'undefined') {\n // Use requestAnimationFrame to ensure DOM is updated\n requestAnimationFrame(() => {\n this.updateCharacterCounterPosition();\n });\n }\n };\n\n private onTextareaChange = (ev: Event) => {\n this.emitValueChange(ev);\n };\n\n private onKeyDown = (ev: KeyboardEvent) => {\n this.pdsKeyDown.emit(ev);\n };\n\n private textareaClassNames() {\n const classNames = ['pds-textarea__field'];\n\n if (this.invalid && this.invalid === true) {\n classNames.push('is-invalid');\n }\n\n return classNames.join(' ');\n }\n\n connectedCallback() {\n this.debounceChanged();\n // Initialize ElementInternals for form association (only once per element instance)\n if (this.el.attachInternals && !this.internals) {\n this.internals = this.el.attachInternals();\n }\n }\n\n disconnectedCallback() {\n // Clean up ResizeObserver\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n componentWillLoad() {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el),\n };\n this.hasAction = this.el.querySelector('[slot=\"action\"]') !== null;\n }\n\n componentDidLoad() {\n this.originalPdsInput = this.pdsInput;\n // Set initial form value\n this.updateFormValue();\n\n // Setup ResizeObserver for character counter positioning\n this.setupResizeObserver();\n\n // Expose type property on the element instance to match native form element behavior\n exposeTypeProperty(this.el, () => this._type);\n }\n\n /**\n * Sets up ResizeObserver to track textarea resize for character counter positioning\n */\n private setupResizeObserver() {\n if (!this.maxLength || !this.nativeTextarea) return;\n\n // ResizeObserver may not be available in test environments\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => {\n // Use requestAnimationFrame to ensure DOM updates are complete\n requestAnimationFrame(() => {\n this.updateCharacterCounterPosition();\n });\n });\n\n this.resizeObserver.observe(this.nativeTextarea);\n\n // Initial positioning with a small delay to ensure counter is rendered\n requestAnimationFrame(() => {\n this.updateCharacterCounterPosition();\n });\n }\n }\n\n /**\n * Updates character counter position to stay within textarea boundaries during resize\n */\n private updateCharacterCounterPosition() {\n if (!this.characterCounter || !this.nativeTextarea) return;\n\n // Skip positioning in test environments where ResizeObserver isn't available\n if (typeof ResizeObserver === 'undefined') return;\n\n // Ensure the character counter has been rendered and has dimensions\n if (this.characterCounter.offsetWidth === 0 || this.characterCounter.offsetHeight === 0) {\n // Counter not ready or component hidden - return and let resize/input observers handle positioning later\n return;\n }\n\n // Position based on textarea's actual dimensions (which change during manual resize)\n const textareaWidth = this.nativeTextarea.offsetWidth;\n const textareaHeight = this.nativeTextarea.offsetHeight;\n const counterWidth = this.characterCounter.offsetWidth;\n const counterHeight = this.characterCounter.offsetHeight;\n\n // Calculate position within textarea boundaries with padding from edges\n const rightPosition = textareaWidth - counterWidth - 8;\n const bottomPosition = textareaHeight - counterHeight - 8;\n\n // Ensure counter stays within textarea boundaries even when resized very small\n const finalLeft = Math.max(8, Math.min(rightPosition, textareaWidth - counterWidth - 8));\n const finalTop = Math.max(8, Math.min(bottomPosition, textareaHeight - counterHeight - 8));\n\n // Apply absolute positioning within the field wrapper\n this.characterCounter.style.position = 'absolute';\n this.characterCounter.style.left = `${finalLeft}px`;\n this.characterCounter.style.top = `${finalTop}px`;\n this.characterCounter.style.right = 'auto';\n this.characterCounter.style.bottom = 'auto';\n }\n\n /**\n * Renders the character counter when maxLength is set\n */\n private renderCharacterCounter() {\n if (!this.maxLength) {\n return null;\n }\n\n const currentLength = this.getValue().length;\n return (\n <div\n class=\"pds-textarea__character-counter\"\n ref={(el) => this.characterCounter = el}\n role=\"status\"\n aria-live=\"polite\"\n aria-label={`${currentLength} of ${this.maxLength} characters`}\n >\n {currentLength} / {this.maxLength}\n </div>\n );\n }\n\n private renderAction() {\n const hasAction = this.el.querySelector('[slot=\"action\"]') !== null;\n if (hasAction) {\n return (\n <div class=\"pds-textarea__action\" part=\"action\">\n <slot name=\"action\"></slot>\n </div>\n );\n }\n return null;\n }\n\n /**\n * Updates the form value using ElementInternals API\n */\n private updateFormValue() {\n if (this.internals && this.internals.setFormValue) {\n const value = this.getValue();\n this.internals.setFormValue(value || null);\n\n // Set validity based on native textarea validation\n if (this.nativeTextarea && this.internals && this.internals.setValidity) {\n this.internals.setValidity(\n this.nativeTextarea.validity,\n this.nativeTextarea.validationMessage,\n this.nativeTextarea\n );\n }\n }\n }\n\n\n /**\n * Form Associated Custom Elements API: Called when the form is reset\n */\n formResetCallback() {\n this.value = '';\n this.updateFormValue();\n }\n\n /**\n * Form Associated Custom Elements API: Called when the form is disabled\n */\n formDisabledCallback(disabled: boolean) {\n this.disabled = disabled;\n }\n\n /**\n * Form Associated Custom Elements API: Called to restore form state\n */\n formStateRestoreCallback(state: string | FormData | null) {\n if (typeof state === 'string') {\n this.value = state;\n } else if (state instanceof FormData && this.name) {\n // Extract value from FormData using the textarea's name\n const value = state.get(this.name);\n if (typeof value === 'string') {\n this.value = value;\n }\n }\n }\n\n render() {\n const value = this.getValue();\n\n return (\n <Host\n aria-disabled={this.disabled ? 'true' : null}\n aria-readonly={this.readonly ? 'true' : null}\n has-action={this.hasAction && !this.hideLabel ? 'true' : null}\n >\n <div class=\"pds-textarea\">\n {this.label &&\n <div class=\"pds-textarea__label-wrapper\">\n <label htmlFor={this.componentId}>\n <span class={this.hideLabel ? 'visually-hidden' : ''}>\n {this.label}\n </span>\n </label>\n {!this.hideLabel && this.renderAction()}\n </div>\n }\n <div class=\"pds-textarea__field-wrapper\">\n <textarea\n ref={(el) => this.nativeTextarea = el }\n aria-describedby={assignDescription(this.componentId, this.invalid, this.helperMessage)}\n aria-invalid={this.invalid ? \"true\" : undefined}\n autocomplete={this.autocomplete}\n class={this.textareaClassNames()}\n disabled={this.disabled}\n id={this.componentId}\n maxlength={this.maxLength}\n name={this.name}\n placeholder={this.placeholder}\n readOnly={this.readonly}\n required={this.required}\n rows={this.rows}\n onBlur={this.onBlur}\n onChange={this.onTextareaChange}\n onFocus={this.onFocus}\n onInput={this.onInput}\n onKeyDown={this.onKeyDown}\n {...this.inheritedAttributes}\n >\n {value}\n </textarea>\n {this.renderCharacterCounter()}\n </div>\n {this.helperMessage &&\n <p\n class=\"pds-textarea__helper-message\"\n id={messageId(this.componentId, 'helper')}\n >\n {this.helperMessage}\n </p>\n }\n {this.invalid &&\n <p\n aria-live=\"assertive\"\n class=\"pds-textarea__error-message\"\n id={messageId(this.componentId, 'error')}\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </p>\n }\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p-DFY2-W9M.system.js","sources":["src/global/styles/utils/label.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-input/pds-input.tokens.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-textarea/pds-textarea.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-textarea/pds-textarea.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n:host([aria-disabled=\"true\"]) label {\n color: var(--pine-color-text-label-disabled);\n}\n\n:host([aria-readonly=\"true\"]) {\n label {\n color: var(--pine-color-text-label-readonly);\n }\n}\n\nlabel {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n","@use '~@kajabi-ui/styles/dist/pine/components/pds-input/pds-input.tokens'\n",":host {\n display: inline-block;\n width: 100%;\n}\n\n:host([aria-readonly=\"true\"]) {\n textarea {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-readonly);\n }\n}\n\n:host([highlight]:not([disabled]):not([aria-disabled=\"true\"]):not([aria-readonly=\"true\"])) {\n .pds-textarea__field:not(.is-invalid) {\n background-color: var(--pine-color-accent-disabled);\n border-color: var(--pine-color-accent);\n color: var(--pine-color-text-accent);\n\n &:hover {\n border-color: var(--pine-color-accent-hover);\n }\n\n &:focus-visible {\n outline-color: var(--pine-color-focus-ring);\n }\n\n ~ .pds-textarea__character-counter {\n background: color-mix(in srgb, var(--pine-color-accent-disabled) 80%, transparent);\n color: var(--pine-color-text-accent);\n }\n }\n}\n\n.pds-textarea {\n display: flex;\n flex-direction: column;\n}\n\n.pds-textarea__label-wrapper {\n align-items: center;\n display: flex;\n justify-content: space-between;\n}\n\n.pds-textarea__action {\n align-items: center;\n display: flex;\n gap: var(--pine-dimension-xs);\n margin-inline-start: var(--pine-dimension-xs);\n}\n\nlabel {\n display: block;\n margin-block-end: var(--pine-dimension-xs);\n}\n\n// When label is inside wrapper, remove its margin\n.pds-textarea__label-wrapper label {\n margin-block-end: 0;\n}\n\n.pds-textarea__helper-message {\n color: var(--pine-color-text-message);\n font: var(--pine-typography-body-sm-medium);\n margin-block-start: var(--pine-dimension-2xs);\n}\n\n.pds-textarea__error-message {\n color: var(--pine-color-text-message-danger);\n display: flex;\n font: var(--pine-typography-body-sm-medium);\n gap: var(--pine-dimension-2xs);\n margin-block-start: var(--pine-dimension-2xs);\n\n pds-icon {\n margin-block-start: var(--pine-dimension-025);\n }\n}\n\n.pds-textarea__field-wrapper {\n display: inline-block;\n position: relative;\n width: 100%;\n}\n\n.pds-textarea__field {\n background-color: var(--pine-color-background-container);\n border: var(--pine-border);\n border-radius: calc(var(--pine-dimension-xs) * 1.25);\n box-sizing: border-box;\n color: var(--pine-color-text);\n font: var(--pine-typography-body);\n letter-spacing: var(--pine-letter-spacing);\n min-height: calc(var(--pine-dimension-xl) * 2);\n min-width: calc(var(--pine-dimension-xl) * 2);\n padding: var(--pine-dimension-xs) var(--pine-dimension-sm);\n resize: both;\n width: 100%;\n\n // Add bottom padding when character counter is present\n :host([max-length]) & {\n padding-bottom: calc(var(--pine-dimension-xs) + var(--pine-dimension-md));\n }\n\n &:hover:not(:disabled, .is-invalid) {\n border: var(--pine-border-hover);\n }\n\n &:disabled {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-disabled);\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: var(--pine-outline-focus);\n outline-offset: var(--pine-border-width);\n }\n\n &::placeholder {\n color: var(--pine-color-text-placeholder);\n }\n\n &.is-invalid {\n background-color: var(--pine-input-color-background-danger);\n border-color: var(--pine-color-border-danger);\n\n :host-context([data-theme=\"dark\"]) & {\n background-color: var(--pine-color-red-950);\n }\n\n &:focus-visible {\n outline-color: var(--pine-color-focus-ring-danger);\n }\n }\n}\n\n.pds-textarea__character-counter {\n background: color-mix(in srgb, var(--pine-color-background-container) 80%, transparent);\n border-radius: calc(var(--pine-dimension-2xs) * 0.5);\n color: var(--pine-color-text-muted);\n font: var(--pine-typography-body-sm-medium);\n padding: calc(var(--pine-dimension-2xs) * 0.5) var(--pine-dimension-2xs);\n pointer-events: none;\n position: absolute;\n user-select: none;\n white-space: nowrap;\n z-index: var(--pine-z-index);\n\n // Match textarea disabled state\n :host([aria-disabled=\"true\"]) & {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-disabled);\n }\n\n // Match textarea readonly state\n :host([aria-readonly=\"true\"]) & {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-readonly);\n }\n\n // Match textarea invalid state - target when field has is-invalid class\n .pds-textarea__field.is-invalid ~ & {\n background-color: var(--pine-input-color-background-danger);\n\n :host-context([data-theme=\"dark\"]) & {\n background-color: var(--pine-color-red-950);\n }\n }\n}\n\n.visually-hidden {\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: polygon(0 0, 0 0, 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n","import { Component, Element, Event, EventEmitter, Host, h, Method, Prop, State, Watch } from '@stencil/core';\nimport { assignDescription, isRequired, messageId, exposeTypeProperty } from '../../utils/form';\nimport { TextareaChangeEventDetail, TextareaInputEventDetail } from './textarea-interface';\nimport { debounceEvent } from '@utils/utils';\nimport type { Attributes } from '@utils/attributes';\nimport { inheritAttributes, inheritAriaAttributes } from '@utils/attributes';\nimport { danger } from '@pine-ds/icons/icons';\n\n/**\n * @slot action - Content to be displayed in the label area, typically for help icons or links\n */\n@Component({\n tag: 'pds-textarea',\n styleUrls: [\n '../../global/styles/utils/label.scss',\n '../pds-input/pds-input.tokens.scss',\n 'pds-textarea.scss'\n ],\n shadow: true,\n formAssociated: true,\n})\nexport class PdsTextarea {\n\n private nativeTextarea?: HTMLTextAreaElement\n private focusedValue?: string | null;\n private inheritedAttributes: Attributes = {};\n private originalPdsInput?: EventEmitter<TextareaInputEventDetail>;\n private internals?: ElementInternals;\n private resizeObserver?: ResizeObserver;\n private characterCounter?: HTMLElement;\n private readonly _type = 'textarea' as const;\n\n @Element() el: HTMLPdsTextareaElement;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() pdsBlur!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the input has focus.\n */\n @Event() pdsFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when a keyboard input occurs.\n *\n * For elements that accept text input (`type=text`, `type=tel`, etc.), the interface\n * is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others,\n * the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If\n * the input is cleared on edit, the type is `null`.\n */\n @Event() pdsInput: EventEmitter<TextareaInputEventDetail>;\n\n /**\n * Event emitted whenever the value of the textarea changes.\n *\n * This event will not emit when programmatically setting the `value` property.\n */\n @Event() pdsTextareaChange: EventEmitter<TextareaChangeEventDetail>;\n\n /**\n * Emitted when a key is pressed down in the textarea.\n */\n @Event() pdsKeyDown!: EventEmitter<KeyboardEvent>;\n\n /**\n * Sets focus on the native `textarea` in the `pds-textarea`. Use this method instead of the global\n * `textarea.focus()`.\n */\n @Method()\n async setFocus() {\n if (this.nativeTextarea) {\n this.nativeTextarea.focus();\n }\n }\n\n /**\n * Specifies if and how the browser provides `autocomplete` assistance for the field.\n */\n @Prop() autocomplete: string;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Determines whether or not the textarea is disabled.\n * @defaultValue false\n */\n @Prop() disabled = false;\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the event after each keystroke.\n */\n @Prop() debounce?: number;\n\n /**\n * Displays an error message below the textarea field.\n */\n @Prop() errorMessage?: string;\n\n /**\n * Displays a message or hint below the textarea field.\n */\n @Prop() helperMessage?: string;\n\n /**\n * Determines whether or not the textarea is invalid or throws an error.\n * @defaultValue false\n */\n @Prop({mutable: true}) invalid = false; // eslint-disable-line @stencil-community/strict-mutable\n\n /**\n * Text to be displayed as the textarea label.\n */\n @Prop() label?: string;\n\n /**\n * Visually hides the label text for instances where only the textarea should be displayed. Label remains accessible to assistive technology such as screen readers.\n * Note: When true, the action slot is also hidden to maintain a minimal UI.\n */\n @Prop() hideLabel: boolean;\n\n /**\n * Specifies the name. Submitted with the form name/value pair. This value will mirror the componentId.\n */\n @Prop() name: string = this.componentId;\n\n /**\n * Specifies a short hint that describes the expected value of the textarea.\n */\n @Prop() placeholder?: string;\n\n /**\n * Determines whether or not the textarea is readonly.\n * @defaultValue false\n */\n @Prop() readonly = false;\n\n /**\n * Determines whether or not the textarea is required.\n * @defaultValue false\n */\n @Prop() required = false;\n\n /**\n * Sets number of rows of text visible without needing to scroll in the textarea.\n */\n @Prop() rows?: number;\n\n /**\n * Specifies the maximum number of characters allowed in the textarea. When set, displays a character counter.\n */\n @Prop({ reflect: true }) maxLength?: number;\n\n /**\n * Applies highlight styling to the textarea field.\n */\n @Prop({ reflect: true }) highlight?: boolean;\n\n /**\n * The value of the textarea.\n */\n @Prop({mutable: true}) value?: string | null = '';\n\n @State() hasFocus = false;\n\n\n /**\n * If true, the textarea has action content in the label area\n */\n @State() hasAction = false;\n\n @Watch('debounce')\n protected debounceChanged() {\n const { pdsInput, debounce, originalPdsInput } = this;\n\n this.pdsInput = debounce === undefined ? originalPdsInput ?? pdsInput : debounceEvent(pdsInput, debounce);\n }\n\n /**\n * Update the native input element when the value changes\n */\n @Watch('value')\n protected valueChanged() {\n const nativeTextarea = this.nativeTextarea;\n const value = this.getValue();\n\n if (nativeTextarea && nativeTextarea.value !== value) {\n nativeTextarea.value = value;\n }\n\n // Update form value for Form Associated Custom Elements API\n this.updateFormValue();\n\n // Update character counter position in case content changes affect sizing\n if (this.maxLength && typeof ResizeObserver !== 'undefined') {\n this.updateCharacterCounterPosition();\n }\n }\n\n @Watch('maxLength')\n protected maxLengthChanged() {\n // Setup or teardown ResizeObserver based on maxLength\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n\n if (this.maxLength && this.nativeTextarea) {\n this.setupResizeObserver();\n }\n\n // Update ElementInternals validity when maxLength changes\n if (this.internals && this.internals.setValidity && this.nativeTextarea) {\n const isTooLong = this.nativeTextarea.value.length > (this.maxLength || 0);\n this.internals.setValidity(\n { tooLong: isTooLong },\n isTooLong ? 'Value exceeds maxLength' : '',\n this.nativeTextarea\n );\n }\n }\n\n /**\n * Emits an `pdsInput` event.\n */\n private emitInputChange(event?: Event) {\n const { value } = this;\n this.pdsInput.emit({ value, event });\n }\n\n /**\n * Emits an `pdsTextareaChange` event.\n */\n private emitValueChange(event?: Event) {\n const textarea = event.target as HTMLTextAreaElement;\n isRequired(textarea, this);\n\n const { value } = textarea;\n\n // Checks for both null and undefined values\n const newValue = value == null ? value : value.toString();\n this.focusedValue = newValue;\n this.pdsTextareaChange.emit({ value: newValue, event });\n }\n\n private getValue(): string {\n return this.value || '';\n }\n\n private onBlur = (ev: FocusEvent) => {\n this.hasFocus = false;\n\n if (this.focusedValue !== this.value) {\n this.emitValueChange(ev);\n }\n\n this.pdsBlur.emit(ev);\n };\n\n private onFocus = (ev: FocusEvent) => {\n this.hasFocus = true;\n this.focusedValue = this.value;\n\n this.pdsFocus.emit(ev);\n };\n\n private onInput = (ev: Event) => {\n const input = ev.target as HTMLTextAreaElement | null;\n if (input) {\n // Handle maxLength validation\n if (this.maxLength && input.value.length > this.maxLength) {\n // Prevent input beyond maxLength\n input.value = input.value.substring(0, this.maxLength);\n }\n this.value = input.value || '';\n }\n this.emitInputChange(ev);\n\n // Update counter position when content changes\n if (this.maxLength && typeof ResizeObserver !== 'undefined') {\n // Use requestAnimationFrame to ensure DOM is updated\n requestAnimationFrame(() => {\n this.updateCharacterCounterPosition();\n });\n }\n };\n\n private onTextareaChange = (ev: Event) => {\n this.emitValueChange(ev);\n };\n\n private onKeyDown = (ev: KeyboardEvent) => {\n this.pdsKeyDown.emit(ev);\n };\n\n private textareaClassNames() {\n const classNames = ['pds-textarea__field'];\n\n if (this.invalid && this.invalid === true) {\n classNames.push('is-invalid');\n }\n\n return classNames.join(' ');\n }\n\n connectedCallback() {\n this.debounceChanged();\n // Initialize ElementInternals for form association (only once per element instance)\n if (this.el.attachInternals && !this.internals) {\n this.internals = this.el.attachInternals();\n }\n }\n\n disconnectedCallback() {\n // Clean up ResizeObserver\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n componentWillLoad() {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el),\n };\n this.hasAction = this.el.querySelector('[slot=\"action\"]') !== null;\n }\n\n componentDidLoad() {\n this.originalPdsInput = this.pdsInput;\n // Set initial form value\n this.updateFormValue();\n\n // Setup ResizeObserver for character counter positioning\n this.setupResizeObserver();\n\n // Expose type property on the element instance to match native form element behavior\n exposeTypeProperty(this.el, () => this._type);\n }\n\n /**\n * Sets up ResizeObserver to track textarea resize for character counter positioning\n */\n private setupResizeObserver() {\n if (!this.maxLength || !this.nativeTextarea) return;\n\n // ResizeObserver may not be available in test environments\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => {\n // Use requestAnimationFrame to ensure DOM updates are complete\n requestAnimationFrame(() => {\n this.updateCharacterCounterPosition();\n });\n });\n\n this.resizeObserver.observe(this.nativeTextarea);\n\n // Initial positioning with a small delay to ensure counter is rendered\n requestAnimationFrame(() => {\n this.updateCharacterCounterPosition();\n });\n }\n }\n\n /**\n * Updates character counter position to stay within textarea boundaries during resize\n */\n private updateCharacterCounterPosition() {\n if (!this.characterCounter || !this.nativeTextarea) return;\n\n // Skip positioning in test environments where ResizeObserver isn't available\n if (typeof ResizeObserver === 'undefined') return;\n\n // Ensure the character counter has been rendered and has dimensions\n if (this.characterCounter.offsetWidth === 0 || this.characterCounter.offsetHeight === 0) {\n // Counter not ready or component hidden - return and let resize/input observers handle positioning later\n return;\n }\n\n // Position based on textarea's actual dimensions (which change during manual resize)\n const textareaWidth = this.nativeTextarea.offsetWidth;\n const textareaHeight = this.nativeTextarea.offsetHeight;\n const counterWidth = this.characterCounter.offsetWidth;\n const counterHeight = this.characterCounter.offsetHeight;\n\n // Calculate position within textarea boundaries with padding from edges\n const rightPosition = textareaWidth - counterWidth - 8;\n const bottomPosition = textareaHeight - counterHeight - 8;\n\n // Ensure counter stays within textarea boundaries even when resized very small\n const finalLeft = Math.max(8, Math.min(rightPosition, textareaWidth - counterWidth - 8));\n const finalTop = Math.max(8, Math.min(bottomPosition, textareaHeight - counterHeight - 8));\n\n // Apply absolute positioning within the field wrapper\n this.characterCounter.style.position = 'absolute';\n this.characterCounter.style.left = `${finalLeft}px`;\n this.characterCounter.style.top = `${finalTop}px`;\n this.characterCounter.style.right = 'auto';\n this.characterCounter.style.bottom = 'auto';\n }\n\n /**\n * Renders the character counter when maxLength is set\n */\n private renderCharacterCounter() {\n if (!this.maxLength) {\n return null;\n }\n\n const currentLength = this.getValue().length;\n return (\n <div\n class=\"pds-textarea__character-counter\"\n ref={(el) => this.characterCounter = el}\n role=\"status\"\n aria-live=\"polite\"\n aria-label={`${currentLength} of ${this.maxLength} characters`}\n >\n {currentLength} / {this.maxLength}\n </div>\n );\n }\n\n private renderAction() {\n const hasAction = this.el.querySelector('[slot=\"action\"]') !== null;\n if (hasAction) {\n return (\n <div class=\"pds-textarea__action\" part=\"action\">\n <slot name=\"action\"></slot>\n </div>\n );\n }\n return null;\n }\n\n /**\n * Updates the form value using ElementInternals API\n */\n private updateFormValue() {\n if (this.internals && this.internals.setFormValue) {\n const value = this.getValue();\n this.internals.setFormValue(value || null);\n\n // Set validity based on native textarea validation\n if (this.nativeTextarea && this.internals && this.internals.setValidity) {\n this.internals.setValidity(\n this.nativeTextarea.validity,\n this.nativeTextarea.validationMessage,\n this.nativeTextarea\n );\n }\n }\n }\n\n\n /**\n * Form Associated Custom Elements API: Called when the form is reset\n */\n formResetCallback() {\n this.value = '';\n this.updateFormValue();\n }\n\n /**\n * Form Associated Custom Elements API: Called when the form is disabled\n */\n formDisabledCallback(disabled: boolean) {\n this.disabled = disabled;\n }\n\n /**\n * Form Associated Custom Elements API: Called to restore form state\n */\n formStateRestoreCallback(state: string | FormData | null) {\n if (typeof state === 'string') {\n this.value = state;\n } else if (state instanceof FormData && this.name) {\n // Extract value from FormData using the textarea's name\n const value = state.get(this.name);\n if (typeof value === 'string') {\n this.value = value;\n }\n }\n }\n\n render() {\n const value = this.getValue();\n\n return (\n <Host\n aria-disabled={this.disabled ? 'true' : null}\n aria-readonly={this.readonly ? 'true' : null}\n has-action={this.hasAction && !this.hideLabel ? 'true' : null}\n >\n <div class=\"pds-textarea\">\n {this.label &&\n <div class=\"pds-textarea__label-wrapper\">\n <label htmlFor={this.componentId}>\n <span class={this.hideLabel ? 'visually-hidden' : ''}>\n {this.label}\n </span>\n </label>\n {!this.hideLabel && this.renderAction()}\n </div>\n }\n <div class=\"pds-textarea__field-wrapper\">\n <textarea\n ref={(el) => this.nativeTextarea = el }\n aria-describedby={assignDescription(this.componentId, this.invalid, this.helperMessage)}\n aria-invalid={this.invalid ? \"true\" : undefined}\n autocomplete={this.autocomplete}\n class={this.textareaClassNames()}\n disabled={this.disabled}\n id={this.componentId}\n maxlength={this.maxLength}\n name={this.name}\n placeholder={this.placeholder}\n readOnly={this.readonly}\n required={this.required}\n rows={this.rows}\n onBlur={this.onBlur}\n onChange={this.onTextareaChange}\n onFocus={this.onFocus}\n onInput={this.onInput}\n onKeyDown={this.onKeyDown}\n {...this.inheritedAttributes}\n >\n {value}\n </textarea>\n {this.renderCharacterCounter()}\n </div>\n {this.helperMessage &&\n <p\n class=\"pds-textarea__helper-message\"\n id={messageId(this.componentId, 'helper')}\n >\n {this.helperMessage}\n </p>\n }\n {this.invalid &&\n <p\n aria-live=\"assertive\"\n class=\"pds-textarea__error-message\"\n id={messageId(this.componentId, 'error')}\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </p>\n }\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"p-5L_gsODn.system.js","sources":["src/components/pds-loader/pds-loader.scss?tag=pds-loader&encapsulation=shadow","src/components/pds-loader/pds-loader.tsx"],"sourcesContent":[":host {\n --loader-color: var(--pine-color-primary);\n align-items: center;\n display: flex;\n flex-direction: column;\n gap: var(--pine-dimension-xs);\n}\n\n\n:host(.pds-loader--hidden),\n.pds-loader--hidden {\n border-width: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n\n// Default Loader\n.pds-loader--spinner svg {\n --number-spinner-timing: 2s;\n --number-spinner-path-timing: 1.5s;\n\n animation: rotate var(--number-spinner-timing) linear infinite;\n color: var(--loader-color);\n}\n\n.pds-loader__spinner-path {\n stroke-width: 8px;\n}\n\n@keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n}\n\n// Typing Loader\n.pds-loader--typing {\n --number-typing-timing: 1s;\n\n --opacity-typing-dot-default: 0.4;\n --opacity-typing-dot-active: 1;\n\n align-items: center;\n background-color: var(--pine-color-background-muted);\n border-radius: var(--pine-dimension-sm);\n box-shadow: var(--pine-box-shadow);\n display: inline-flex;\n gap: var(--pine-dimension-2xs);\n margin-block: var(--pine-dimension-none);\n margin-inline: auto;\n padding-block: 15px;\n padding-inline: 20px;\n position: relative;\n\n span {\n background-color: var(--pine-color-border-hover);\n block-size: 6px;\n border-radius: var(--pine-border-radius-full);\n inline-size: 6px;\n opacity: var(--opacity-typing-dot-default);\n\n @for $i from 1 through 3 {\n &:nth-of-type(#{$i}) {\n animation: var(--number-typing-timing) typing infinite ($i * 0.3333s);\n }\n }\n }\n}\n\n@keyframes typing {\n 50% {\n opacity: var(--opacity-typing-dot-active);\n transform: scale(1.25);\n }\n}\n\n.pds-loader__label {\n --typography-label-default: var(--pine-font-weight-medium) var(--pine-font-size-body-md)/var(--pine-line-height-body) var(--pine-font-family-body);\n\n font: var(--typography-label-default);\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n/**\n * @part loader-svg - Exposes the spinner SVG element for color customization.\n * @slot label - Default slot for Loader label text.\n */\n\n@Component({\n tag: 'pds-loader',\n styleUrls: ['pds-loader.scss'],\n shadow: true,\n})\nexport class PdsLoader {\n /**\n * If false, the loader will be hidden.\n */\n @Prop() isLoading: boolean = true;\n\n /**\n * Determines whether the loader should display a label.\n */\n @Prop() showLabel?: boolean = false;\n\n /**\n * Sets the size of the spinner loader. Value can be preset or custom.\n */\n @Prop({ reflect: true }) size?:\n | 'xs' // 24px\n | 'sm' // 32px\n | 'md' // 48px\n | 'lg' // 64px\n | 'xl' // 80px\n | string = 'md';\n\n /**\n * Determines the type of loader.\n */\n @Prop() variant: 'spinner' | 'typing' = 'spinner';\n\n private loaderSize() {\n const sizes: { [key: string]: string } = {\n xs: '24px',\n sm: '32px',\n md: '48px',\n lg: '64px',\n xl: '80px',\n };\n\n if (sizes[this.size]) {\n return sizes[this.size];\n } else {\n return this.size;\n }\n }\n\n private getSvgStyle = () => {\n if (this.size !== undefined) {\n return {\n height: this.loaderSize(),\n width: this.loaderSize(),\n };\n }\n };\n\n render() {\n return (\n <Host class={`pds-loader ${this.isLoading ? '' : 'pds-loader--hidden'}`} aria-hidden={!this.isLoading} aria-busy={this.isLoading} aria-live=\"polite\">\n {this.variant === 'spinner' && (\n <div class=\"pds-loader--spinner\">\n <svg style={this.getSvgStyle()} viewBox=\"0 0 200 200\" fill=\"none\" part=\"loader-svg\">\n <defs>\n <linearGradient id=\"spinner-secondHalf\">\n <stop offset=\"0%\" stop-opacity=\"0\" stop-color=\"currentColor\" />\n <stop offset=\"100%\" stop-opacity=\"0.5\" stop-color=\"currentColor\" />\n </linearGradient>\n <linearGradient id=\"spinner-firstHalf\">\n <stop offset=\"0%\" stop-opacity=\"1\" stop-color=\"currentColor\" />\n <stop offset=\"100%\" stop-opacity=\"0.5\" stop-color=\"currentColor\" />\n </linearGradient>\n </defs>\n\n <g class=\"pds-loader__spinner-path\">\n <path stroke=\"url(#spinner-secondHalf)\" d=\"M 4 100 A 96 96 0 0 1 196 100\" />\n <path stroke=\"url(#spinner-firstHalf)\" d=\"M 196 100 A 96 96 0 0 1 4 100\" />\n\n <path stroke=\"currentColor\" stroke-linecap=\"round\" d=\"M 4 100 A 96 96 0 0 1 4 98\" />\n </g>\n </svg>\n </div>\n )}\n\n {this.variant === 'typing' && (\n <div class=\"pds-loader--typing\">\n <span></span>\n <span></span>\n <span></span>\n </div>\n )}\n\n <div class={`pds-loader__label ${this.showLabel ? '' : 'pds-loader--hidden'}`}>\n <slot name=\"label\">Loading...</slot>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p-DKT0sVlZ.system.js","sources":["src/components/pds-loader/pds-loader.scss?tag=pds-loader&encapsulation=shadow","src/components/pds-loader/pds-loader.tsx"],"sourcesContent":[":host {\n --loader-color: var(--pine-color-primary);\n align-items: center;\n display: flex;\n flex-direction: column;\n gap: var(--pine-dimension-xs);\n}\n\n\n:host(.pds-loader--hidden),\n.pds-loader--hidden {\n border-width: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n\n// Default Loader\n.pds-loader--spinner svg {\n --number-spinner-timing: 2s;\n --number-spinner-path-timing: 1.5s;\n\n animation: rotate var(--number-spinner-timing) linear infinite;\n color: var(--loader-color);\n}\n\n.pds-loader__spinner-path {\n stroke-width: 8px;\n}\n\n@keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n}\n\n// Typing Loader\n.pds-loader--typing {\n --number-typing-timing: 1s;\n\n --opacity-typing-dot-default: 0.4;\n --opacity-typing-dot-active: 1;\n\n align-items: center;\n background-color: var(--pine-color-background-muted);\n border-radius: var(--pine-dimension-sm);\n box-shadow: var(--pine-box-shadow);\n display: inline-flex;\n gap: var(--pine-dimension-2xs);\n margin-block: var(--pine-dimension-none);\n margin-inline: auto;\n padding-block: 15px;\n padding-inline: 20px;\n position: relative;\n\n span {\n background-color: var(--pine-color-border-hover);\n block-size: 6px;\n border-radius: var(--pine-border-radius-full);\n inline-size: 6px;\n opacity: var(--opacity-typing-dot-default);\n\n @for $i from 1 through 3 {\n &:nth-of-type(#{$i}) {\n animation: var(--number-typing-timing) typing infinite ($i * 0.3333s);\n }\n }\n }\n}\n\n@keyframes typing {\n 50% {\n opacity: var(--opacity-typing-dot-active);\n transform: scale(1.25);\n }\n}\n\n.pds-loader__label {\n --typography-label-default: var(--pine-font-weight-medium) var(--pine-font-size-body-md)/var(--pine-line-height-body) var(--pine-font-family-body);\n\n font: var(--typography-label-default);\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n/**\n * @part loader-svg - Exposes the spinner SVG element for color customization.\n * @slot label - Default slot for Loader label text.\n */\n\n@Component({\n tag: 'pds-loader',\n styleUrls: ['pds-loader.scss'],\n shadow: true,\n})\nexport class PdsLoader {\n /**\n * If false, the loader will be hidden.\n */\n @Prop() isLoading: boolean = true;\n\n /**\n * Determines whether the loader should display a label.\n */\n @Prop() showLabel?: boolean = false;\n\n /**\n * Sets the size of the spinner loader. Value can be preset or custom.\n */\n @Prop({ reflect: true }) size?:\n | 'xs' // 24px\n | 'sm' // 32px\n | 'md' // 48px\n | 'lg' // 64px\n | 'xl' // 80px\n | string = 'md';\n\n /**\n * Determines the type of loader.\n */\n @Prop() variant: 'spinner' | 'typing' = 'spinner';\n\n private loaderSize() {\n const sizes: { [key: string]: string } = {\n xs: '24px',\n sm: '32px',\n md: '48px',\n lg: '64px',\n xl: '80px',\n };\n\n if (sizes[this.size]) {\n return sizes[this.size];\n } else {\n return this.size;\n }\n }\n\n private getSvgStyle = () => {\n if (this.size !== undefined) {\n return {\n height: this.loaderSize(),\n width: this.loaderSize(),\n };\n }\n };\n\n render() {\n return (\n <Host class={`pds-loader ${this.isLoading ? '' : 'pds-loader--hidden'}`} aria-hidden={!this.isLoading} aria-busy={this.isLoading} aria-live=\"polite\">\n {this.variant === 'spinner' && (\n <div class=\"pds-loader--spinner\">\n <svg style={this.getSvgStyle()} viewBox=\"0 0 200 200\" fill=\"none\" part=\"loader-svg\">\n <defs>\n <linearGradient id=\"spinner-secondHalf\">\n <stop offset=\"0%\" stop-opacity=\"0\" stop-color=\"currentColor\" />\n <stop offset=\"100%\" stop-opacity=\"0.5\" stop-color=\"currentColor\" />\n </linearGradient>\n <linearGradient id=\"spinner-firstHalf\">\n <stop offset=\"0%\" stop-opacity=\"1\" stop-color=\"currentColor\" />\n <stop offset=\"100%\" stop-opacity=\"0.5\" stop-color=\"currentColor\" />\n </linearGradient>\n </defs>\n\n <g class=\"pds-loader__spinner-path\">\n <path stroke=\"url(#spinner-secondHalf)\" d=\"M 4 100 A 96 96 0 0 1 196 100\" />\n <path stroke=\"url(#spinner-firstHalf)\" d=\"M 196 100 A 96 96 0 0 1 4 100\" />\n\n <path stroke=\"currentColor\" stroke-linecap=\"round\" d=\"M 4 100 A 96 96 0 0 1 4 98\" />\n </g>\n </svg>\n </div>\n )}\n\n {this.variant === 'typing' && (\n <div class=\"pds-loader--typing\">\n <span></span>\n <span></span>\n <span></span>\n </div>\n )}\n\n <div class={`pds-loader__label ${this.showLabel ? '' : 'pds-loader--hidden'}`}>\n <slot name=\"label\">Loading...</slot>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"p-Cn_QqTXg.system.js","sources":["src/global/styles/utils/label.scss?tag=pds-checkbox&encapsulation=shadow","src/components/pds-checkbox/pds-checkbox.scss?tag=pds-checkbox&encapsulation=shadow","src/components/pds-checkbox/pds-checkbox.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n:host([aria-disabled=\"true\"]) label {\n color: var(--pine-color-text-label-disabled);\n}\n\n:host([aria-readonly=\"true\"]) {\n label {\n color: var(--pine-color-text-label-readonly);\n }\n}\n\nlabel {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n",":host {\n align-items: center;\n display: flex;\n flex-flow: row wrap;\n}\n\n:host(.is-invalid) {\n input {\n border-color: var(--pine-color-border-danger);\n\n &:checked {\n background: var( --pine-color-danger);\n\n &:hover {\n background: var(--pine-color-danger-hover);\n border-color: var(--pine-color-border-danger-hover);\n }\n }\n\n &:focus-visible {\n outline-color: var(--pine-color-focus-ring-danger);\n }\n }\n\n label,\n .pds-checkbox__message--error {\n color: var(--pine-color-text-message-danger);\n }\n}\n\n:host(.is-indeterminate) {\n input {\n background: var(--pine-color-accent);\n border-color: var(--pine-color-accent);\n\n &:hover {\n background: var(--pine-color-accent);\n border-color: var(--pine-color-accent-hover);\n }\n\n &::after {\n /* stylelint-disable-next-line pine-design-system/prefer-semantic-tokens */\n border: 1px solid var(--pine-color-white);\n border-block-end: var(--pine-border-width-none);\n border-block-start: var(--pine-border-width-none);\n border-inline-start: var(--pine-border-width-none);\n content: \"\";\n display: block;\n height: 7px;\n left: 50%;\n position: absolute;\n top: 50%;\n transform: rotate(90deg) translate3d(-103%, 32%, 0);\n width: 4px;\n }\n }\n}\n\ninput {\n appearance: none;\n background: var(--pine-color-background-container);\n border: var(--pine-border);\n border-radius: var(--pine-dimension-2xs);\n flex: none;\n height: var(--pine-dimension-sm);\n margin: 0;\n margin-block-start: var(--pine-dimension-025);\n position: relative;\n width: var(--pine-dimension-sm);\n\n &:hover {\n background: var(--pine-color-background-container-hover);\n border: var(--pine-border-hover);\n }\n\n &:checked {\n background: var(--pine-color-accent);\n border-color: var(--pine-color-accent);\n\n &:hover {\n background: var(--pine-color-accent-hover);\n border-color: var(--pine-color-accent-hover);\n }\n\n &::after {\n /* stylelint-disable-next-line pine-design-system/prefer-semantic-tokens */\n border: 1px solid var(--pine-color-white);\n border-block-start: var(--pine-border-width-none);\n border-inline-start: var(--pine-border-width-none);\n content: \"\";\n display: block;\n height: 7px;\n left: 50%;\n position: absolute;\n top: 50%;\n transform: rotate(43deg) translate3d(-110%, -30%, 0);\n width: 4px;\n }\n }\n\n &:disabled {\n background: var(--pine-color-background-container-disabled);\n border-color: var(--pine-color-border-disabled);\n cursor: not-allowed;\n\n &:checked {\n background: var(--pine-color-background-container-disabled);\n border-color: var(--pine-color-border-disabled);\n\n &::after {\n border-color: var(--pine-color-border);\n }\n }\n\n + label {\n cursor: not-allowed;\n }\n\n ~ .pds-checkbox__message {\n color: var(--pine-color-text-disabled);\n }\n }\n\n &:focus-visible {\n outline: var(--pine-outline-focus);\n }\n}\n\nlabel {\n display: flex;\n gap: var(--pine-dimension-xs);\n}\n\n.visually-hidden {\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: polygon(0 0, 0 0, 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n\n.pds-checkbox__message {\n color: var(--pine-color-text-message);\n font: var(--pine-typography-body-sm-medium);\n margin-block-start: 6px;\n margin-inline-start: var(--pine-dimension-md);\n width: 100%;\n}\n\n.pds-checkbox__message--error {\n display: flex;\n gap: var(--pine-dimension-2xs);\n\n pds-icon {\n margin-block-start: var(--pine-dimension-025);\n }\n}\n","import { Component, Element, h, Prop, Host, Event, EventEmitter, Watch } from '@stencil/core';\nimport { assignDescription, messageId, exposeTypeProperty } from '../../utils/form';\nimport { CheckboxChangeEventDetail } from './checkbox-interface';\nimport { danger } from '@pine-ds/icons/icons';\n\nimport { inheritAriaAttributes } from '@utils/attributes';\nimport type { Attributes } from '@utils/attributes';\n\n@Component({\n tag: 'pds-checkbox',\n styleUrls: ['../../global/styles/utils/label.scss', 'pds-checkbox.scss'],\n shadow: true,\n formAssociated: true,\n})\nexport class PdsCheckbox {\n private inheritedAttributes: Attributes = {};\n private internals?: ElementInternals;\n private readonly _type = 'checkbox' as const;\n\n @Element() el: HTMLPdsCheckboxElement;\n\n /**\n * It determines whether or not the checkbox is checked.\n */\n @Prop({ mutable: true }) checked?: boolean = false;\n\n /**\n * A unique identifier used for the underlying component `id` attribute and the label `for` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * It determines whether or not the checkbox is disabled.\n */\n @Prop() disabled: boolean;\n\n /**\n * Displays message text describing an invalid state.\n */\n @Prop() errorMessage: string;\n\n /**\n * String used for helper message below checkbox.\n */\n @Prop() helperMessage: string;\n\n /**\n * If `true`, the checkbox will visually appear as indeterminate.\n * Only JavaScript can set the objects `indeterminate` property. See [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#indeterminate_state_checkboxes).\n */\n @Prop({ mutable: true }) indeterminate: boolean;\n\n /**\n * It determines whether or not the checkbox is invalid.\n */\n @Prop() invalid: boolean;\n\n /**\n * String used for label text next to checkbox.\n */\n @Prop() label: string;\n\n /**\n * Visually hides the label text for instances where only the checkbox should be displayed. Label remains accessible to assistive technology such as screen readers.\n */\n @Prop() hideLabel: boolean;\n\n /**\n * String used for checkbox `name` attribute.\n */\n @Prop() name: string;\n\n /**\n * It determines whether or not the checkbox is required.\n */\n @Prop() required: boolean;\n\n /**\n * The value of the checkbox that is submitted with a form.\n */\n @Prop() value: string;\n\n\n /**\n * Event emitted that contains the `value` and `checked`.\n */\n @Event() pdsCheckboxChange: EventEmitter<CheckboxChangeEventDetail>;\n\n @Event() pdsCheckboxInput: EventEmitter<CheckboxChangeEventDetail>;\n\n @Watch('checked')\n updateIndeterminate() {\n this.indeterminate = undefined\n }\n\n private handleCheckboxChange = (e: Event) => {\n if (this.disabled) {\n return;\n }\n\n const target = e.target as HTMLInputElement;\n this.checked = target.checked;\n\n this.updateFormValue();\n\n this.pdsCheckboxChange.emit({\n checked: target.checked,\n value: this.value\n });\n }\n\n private handleInput = () => {\n this.pdsCheckboxInput.emit({\n checked: this.checked,\n value: this.value\n });\n }\n\n private classNames() {\n const classNames = [];\n\n if (this.invalid) { classNames.push('is-invalid'); }\n if (this.indeterminate) { classNames.push('is-indeterminate'); }\n if (this.disabled) { classNames.push('is-disabled'); }\n\n return classNames.join(' ');\n }\n\n connectedCallback() {\n // Initialize ElementInternals for form association (only once per element instance)\n if (this.el.attachInternals && !this.internals) {\n this.internals = this.el.attachInternals();\n }\n\n // Expose type property on the element instance to match native form element behavior\n exposeTypeProperty(this.el, () => this._type);\n }\n\n componentDidLoad() {\n this.updateFormValue();\n }\n\n @Watch('checked')\n checkedChanged() {\n this.updateFormValue();\n }\n\n private updateFormValue() {\n if (typeof jest !== 'undefined' || typeof process !== 'undefined' && process.env?.NODE_ENV === 'test') {\n return;\n }\n\n if (this.internals && this.internals.setFormValue) {\n // For checkboxes, only send the value when checked, otherwise send null\n const formValue = this.checked ? (this.value || 'on') : null;\n this.internals.setFormValue(formValue);\n }\n\n if (this.internals && this.internals.setValidity) {\n this.internals.setValidity({});\n }\n }\n\n formStateRestoreCallback(state: string | FormData | null) {\n if (state instanceof FormData) {\n // For checkboxes, restore if the value exists in FormData\n const value = this.value || 'on';\n this.checked = state.get(this.name as string) === value;\n } else if (typeof state === 'string') {\n // Restore from string state\n this.checked = state === (this.value || 'on');\n }\n }\n\n componentWillLoad() {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el)\n }\n }\n\n render() {\n return (\n <Host class={this.classNames()}>\n <label htmlFor={this.componentId}>\n <input\n type=\"checkbox\"\n aria-describedby={assignDescription(this.componentId, this.invalid, this.errorMessage || this.helperMessage)}\n aria-invalid={this.invalid ? \"true\" : undefined}\n id={this.componentId}\n indeterminate={this.indeterminate}\n name={this.name}\n value={this.value}\n checked={this.checked}\n required={this.required}\n disabled={this.disabled}\n onChange={this.handleCheckboxChange}\n onInput={this.handleInput}\n {...this.inheritedAttributes}\n />\n <span class={this.hideLabel ? 'visually-hidden' : ''}>\n {this.label}\n </span>\n </label>\n {this.helperMessage &&\n <div\n class={'pds-checkbox__message'}\n id={messageId(this.componentId, 'helper')}\n >\n {this.helperMessage}\n </div>\n }\n {this.errorMessage &&\n <div\n class={`pds-checkbox__message pds-checkbox__message--error`}\n id={messageId(this.componentId, 'error')}\n aria-live=\"assertive\"\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </div>\n }\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p-DXoBK65z.system.js","sources":["src/global/styles/utils/label.scss?tag=pds-checkbox&encapsulation=shadow","src/components/pds-checkbox/pds-checkbox.scss?tag=pds-checkbox&encapsulation=shadow","src/components/pds-checkbox/pds-checkbox.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n:host([aria-disabled=\"true\"]) label {\n color: var(--pine-color-text-label-disabled);\n}\n\n:host([aria-readonly=\"true\"]) {\n label {\n color: var(--pine-color-text-label-readonly);\n }\n}\n\nlabel {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n",":host {\n align-items: center;\n display: flex;\n flex-flow: row wrap;\n}\n\n:host(.is-invalid) {\n input {\n border-color: var(--pine-color-border-danger);\n\n &:checked {\n background: var( --pine-color-danger);\n\n &:hover {\n background: var(--pine-color-danger-hover);\n border-color: var(--pine-color-border-danger-hover);\n }\n }\n\n &:focus-visible {\n outline-color: var(--pine-color-focus-ring-danger);\n }\n }\n\n label,\n .pds-checkbox__message--error {\n color: var(--pine-color-text-message-danger);\n }\n}\n\n:host(.is-indeterminate) {\n input {\n background: var(--pine-color-accent);\n border-color: var(--pine-color-accent);\n\n &:hover {\n background: var(--pine-color-accent);\n border-color: var(--pine-color-accent-hover);\n }\n\n &::after {\n /* stylelint-disable-next-line pine-design-system/prefer-semantic-tokens */\n border: 1px solid var(--pine-color-white);\n border-block-end: var(--pine-border-width-none);\n border-block-start: var(--pine-border-width-none);\n border-inline-start: var(--pine-border-width-none);\n content: \"\";\n display: block;\n height: 7px;\n left: 50%;\n position: absolute;\n top: 50%;\n transform: rotate(90deg) translate3d(-103%, 32%, 0);\n width: 4px;\n }\n }\n}\n\ninput {\n appearance: none;\n background: var(--pine-color-background-container);\n border: var(--pine-border);\n border-radius: var(--pine-dimension-2xs);\n flex: none;\n height: var(--pine-dimension-sm);\n margin: 0;\n margin-block-start: var(--pine-dimension-025);\n position: relative;\n width: var(--pine-dimension-sm);\n\n &:hover {\n background: var(--pine-color-background-container-hover);\n border: var(--pine-border-hover);\n }\n\n &:checked {\n background: var(--pine-color-accent);\n border-color: var(--pine-color-accent);\n\n &:hover {\n background: var(--pine-color-accent-hover);\n border-color: var(--pine-color-accent-hover);\n }\n\n &::after {\n /* stylelint-disable-next-line pine-design-system/prefer-semantic-tokens */\n border: 1px solid var(--pine-color-white);\n border-block-start: var(--pine-border-width-none);\n border-inline-start: var(--pine-border-width-none);\n content: \"\";\n display: block;\n height: 7px;\n left: 50%;\n position: absolute;\n top: 50%;\n transform: rotate(43deg) translate3d(-110%, -30%, 0);\n width: 4px;\n }\n }\n\n &:disabled {\n background: var(--pine-color-background-container-disabled);\n border-color: var(--pine-color-border-disabled);\n cursor: not-allowed;\n\n &:checked {\n background: var(--pine-color-background-container-disabled);\n border-color: var(--pine-color-border-disabled);\n\n &::after {\n border-color: var(--pine-color-border);\n }\n }\n\n + label {\n cursor: not-allowed;\n }\n\n ~ .pds-checkbox__message {\n color: var(--pine-color-text-disabled);\n }\n }\n\n &:focus-visible {\n outline: var(--pine-outline-focus);\n }\n}\n\nlabel {\n display: flex;\n gap: var(--pine-dimension-xs);\n}\n\n.visually-hidden {\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: polygon(0 0, 0 0, 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n\n.pds-checkbox__message {\n color: var(--pine-color-text-message);\n font: var(--pine-typography-body-sm-medium);\n margin-block-start: 6px;\n margin-inline-start: var(--pine-dimension-md);\n width: 100%;\n}\n\n.pds-checkbox__message--error {\n display: flex;\n gap: var(--pine-dimension-2xs);\n\n pds-icon {\n margin-block-start: var(--pine-dimension-025);\n }\n}\n","import { Component, Element, h, Prop, Host, Event, EventEmitter, Watch } from '@stencil/core';\nimport { assignDescription, messageId, exposeTypeProperty } from '../../utils/form';\nimport { CheckboxChangeEventDetail } from './checkbox-interface';\nimport { danger } from '@pine-ds/icons/icons';\n\nimport { inheritAriaAttributes } from '@utils/attributes';\nimport type { Attributes } from '@utils/attributes';\n\n@Component({\n tag: 'pds-checkbox',\n styleUrls: ['../../global/styles/utils/label.scss', 'pds-checkbox.scss'],\n shadow: true,\n formAssociated: true,\n})\nexport class PdsCheckbox {\n private inheritedAttributes: Attributes = {};\n private internals?: ElementInternals;\n private readonly _type = 'checkbox' as const;\n\n @Element() el: HTMLPdsCheckboxElement;\n\n /**\n * It determines whether or not the checkbox is checked.\n */\n @Prop({ mutable: true }) checked?: boolean = false;\n\n /**\n * A unique identifier used for the underlying component `id` attribute and the label `for` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * It determines whether or not the checkbox is disabled.\n */\n @Prop() disabled: boolean;\n\n /**\n * Displays message text describing an invalid state.\n */\n @Prop() errorMessage: string;\n\n /**\n * String used for helper message below checkbox.\n */\n @Prop() helperMessage: string;\n\n /**\n * If `true`, the checkbox will visually appear as indeterminate.\n * Only JavaScript can set the objects `indeterminate` property. See [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#indeterminate_state_checkboxes).\n */\n @Prop({ mutable: true }) indeterminate: boolean;\n\n /**\n * It determines whether or not the checkbox is invalid.\n */\n @Prop() invalid: boolean;\n\n /**\n * String used for label text next to checkbox.\n */\n @Prop() label: string;\n\n /**\n * Visually hides the label text for instances where only the checkbox should be displayed. Label remains accessible to assistive technology such as screen readers.\n */\n @Prop() hideLabel: boolean;\n\n /**\n * String used for checkbox `name` attribute.\n */\n @Prop() name: string;\n\n /**\n * It determines whether or not the checkbox is required.\n */\n @Prop() required: boolean;\n\n /**\n * The value of the checkbox that is submitted with a form.\n */\n @Prop() value: string;\n\n\n /**\n * Event emitted that contains the `value` and `checked`.\n */\n @Event() pdsCheckboxChange: EventEmitter<CheckboxChangeEventDetail>;\n\n @Event() pdsCheckboxInput: EventEmitter<CheckboxChangeEventDetail>;\n\n @Watch('checked')\n updateIndeterminate() {\n this.indeterminate = undefined\n }\n\n private handleCheckboxChange = (e: Event) => {\n if (this.disabled) {\n return;\n }\n\n const target = e.target as HTMLInputElement;\n this.checked = target.checked;\n\n this.updateFormValue();\n\n this.pdsCheckboxChange.emit({\n checked: target.checked,\n value: this.value\n });\n }\n\n private handleInput = () => {\n this.pdsCheckboxInput.emit({\n checked: this.checked,\n value: this.value\n });\n }\n\n private classNames() {\n const classNames = [];\n\n if (this.invalid) { classNames.push('is-invalid'); }\n if (this.indeterminate) { classNames.push('is-indeterminate'); }\n if (this.disabled) { classNames.push('is-disabled'); }\n\n return classNames.join(' ');\n }\n\n connectedCallback() {\n // Initialize ElementInternals for form association (only once per element instance)\n if (this.el.attachInternals && !this.internals) {\n this.internals = this.el.attachInternals();\n }\n\n // Expose type property on the element instance to match native form element behavior\n exposeTypeProperty(this.el, () => this._type);\n }\n\n componentDidLoad() {\n this.updateFormValue();\n }\n\n @Watch('checked')\n checkedChanged() {\n this.updateFormValue();\n }\n\n private updateFormValue() {\n if (typeof jest !== 'undefined' || typeof process !== 'undefined' && process.env?.NODE_ENV === 'test') {\n return;\n }\n\n if (this.internals && this.internals.setFormValue) {\n // For checkboxes, only send the value when checked, otherwise send null\n const formValue = this.checked ? (this.value || 'on') : null;\n this.internals.setFormValue(formValue);\n }\n\n if (this.internals && this.internals.setValidity) {\n this.internals.setValidity({});\n }\n }\n\n formStateRestoreCallback(state: string | FormData | null) {\n if (state instanceof FormData) {\n // For checkboxes, restore if the value exists in FormData\n const value = this.value || 'on';\n this.checked = state.get(this.name as string) === value;\n } else if (typeof state === 'string') {\n // Restore from string state\n this.checked = state === (this.value || 'on');\n }\n }\n\n componentWillLoad() {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el)\n }\n }\n\n render() {\n return (\n <Host class={this.classNames()}>\n <label htmlFor={this.componentId}>\n <input\n type=\"checkbox\"\n aria-describedby={assignDescription(this.componentId, this.invalid, this.errorMessage || this.helperMessage)}\n aria-invalid={this.invalid ? \"true\" : undefined}\n id={this.componentId}\n indeterminate={this.indeterminate}\n name={this.name}\n value={this.value}\n checked={this.checked}\n required={this.required}\n disabled={this.disabled}\n onChange={this.handleCheckboxChange}\n onInput={this.handleInput}\n {...this.inheritedAttributes}\n />\n <span class={this.hideLabel ? 'visually-hidden' : ''}>\n {this.label}\n </span>\n </label>\n {this.helperMessage &&\n <div\n class={'pds-checkbox__message'}\n id={messageId(this.componentId, 'helper')}\n >\n {this.helperMessage}\n </div>\n }\n {this.errorMessage &&\n <div\n class={`pds-checkbox__message pds-checkbox__message--error`}\n id={messageId(this.componentId, 'error')}\n aria-live=\"assertive\"\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </div>\n }\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"p-Civ2VHC7.system.js","sources":["src/components/pds-table/pds-table-head/pds-table-head.scss?tag=pds-table-head&encapsulation=shadow","src/components/pds-table/pds-table-head/pds-table-head.tsx"],"sourcesContent":[":host {\n --border-head-default: var(--pine-border-width-thin) solid var(--pine-color-background-subtle);\n\n border-color: inherit;\n box-sizing: border-box;\n display: table-header-group;\n vertical-align: middle;\n\n // used for pds-checkbox-cell\n // because it is in the ShadowDom\n &::part(checkbox-cell) {\n background-color: var(--pine-color-background-container);\n inset-inline-start: var(--pine-dimension-none);\n position: sticky;\n z-index: var(--pine-z-index-raised);\n }\n}\n\n:host pds-table-checkbox-cell {\n border-block-end: var(--border-head-default);\n}\n\n:host([border]) {\n border-block-end: var(--pine-border-width-thin) solid var(--pine-color-border-subtle);\n border-block-start: var(--pine-border-width-thin) solid var(--pine-color-border-subtle);\n}\n\n:host([border]) pds-table-head-cell {\n border-block-end: var(--pine-border-width-thin) solid var(--pine-color-border-subtle);\n border-block-start: var(--pine-border-width-thin) solid var(--pine-color-border-subtle);\n}\n\n:host([background]) {\n background-color: var(--pine-color-background-subtle);\n}\n\n:host([background]) pds-table-head-cell {\n background-color: var(--pine-color-background-subtle);\n}\n","import { Component, Element, Event, EventEmitter, Host, h, Prop } from '@stencil/core';\nimport { closest } from '@utils/closest';\n\n@Component({\n tag: 'pds-table-head',\n styleUrls: ['pds-table-head.scss'],\n shadow: true,\n})\nexport class PdsTableHead {\n @Element() hostElement: HTMLPdsTableHeadElement;\n private tableRef: HTMLPdsTableElement\n\n /**\n * Determines if the select all checkbox is in an indeterminate state.\n */\n @Prop({ mutable: true }) indeterminate?: boolean;\n\n /**\n * Determines if the table row is currently selected.\n * @defaultValue false\n */\n @Prop({mutable: true}) isSelected: boolean;\n\n /**\n * Adds top and bottom borders to the table head.\n * @defaultValue false\n */\n @Prop({ reflect: true }) border = false;\n\n /**\n * Adds a subtle background color to the table head.\n * @defaultValue false\n */\n @Prop({ reflect: true }) background = false;\n\n /**\n * Event that is emitted when the select all checkbox is clicked, carrying the selected value.\n */\n @Event() pdsTableSelectAll: EventEmitter<{ isSelected: boolean }>;\n\n private generateUniqueId = () => {\n const randomString = Math.random().toString(36).substring(2, 8);\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-');\n const uniqueId = `${randomString}-${timestamp}`;\n\n return uniqueId;\n }\n\n private handleInput = (ev: Event) => {\n this.isSelected = !(ev.target as HTMLInputElement).checked\n this.handleSelect(this.isSelected)\n };\n\n private handleSelect = (isSelected: boolean) => {\n this.indeterminate = false\n\n if ( closest('pds-table-head', this.hostElement) ) {\n this.pdsTableSelectAll.emit({ isSelected });\n }\n }\n\n componentWillLoad() {\n if (this.isSelected) {\n this.handleSelect(this.isSelected)\n }\n }\n\n componentWillRender() {\n this.tableRef = this.hostElement.closest('pds-table') as HTMLPdsTableElement;\n\n if (this.tableRef && this.tableRef.fixedColumn) {\n const tableCell = this.hostElement.querySelector('pds-table-head-cell:first-child');\n tableCell?.classList.add(\"is-fixed\");\n }\n }\n\n render() {\n return (\n <Host role=\"row\" part=\"head\">\n {this.tableRef && this.tableRef.selectable && (\n <pds-table-head-cell part={this.tableRef.selectable ? 'checkbox-cell' : ''}>\n <pds-checkbox\n componentId={this.generateUniqueId()}\n indeterminate={this.indeterminate}\n onInput={this.handleInput}\n label={\"Select All Rows\"}\n hideLabel={true}\n checked={this.isSelected}\n part=\"select-all-checkbox\"\n />\n </pds-table-head-cell>\n )}\n <slot></slot>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;MAAA,MAAM,eAAe,GAAG,87CAA87C;;YCQz8C,YAAY,6BAAA,MAAA;MALzB,IAAA,WAAA,CAAA,OAAA,EAAA;;;MAoBE;;;MAGG;MACsB,QAAA,IAAM,CAAA,MAAA,GAAG,KAAK;MAEvC;;;MAGG;MACsB,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK;MAOnC,QAAA,IAAgB,CAAA,gBAAA,GAAG,MAAK;MAC9B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;MAC/D,YAAA,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;MAChE,YAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,YAAY,CAAI,CAAA,EAAA,SAAS,EAAE;MAE/C,YAAA,OAAO,QAAQ;MACjB,SAAC;MAEO,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,EAAS,KAAI;kBAClC,IAAI,CAAC,UAAU,GAAG,CAAE,EAAE,CAAC,MAA2B,CAAC,OAAO;MAC1D,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;MACpC,SAAC;MAEO,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,UAAmB,KAAI;MAC7C,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;kBAE1B,IAAK,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,EAAG;sBACjD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;;MAE/C,SAAC;MAqCF;UAnCC,iBAAiB,GAAA;MACf,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;MACnB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;;;UAItC,mBAAmB,GAAA;cACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAwB;cAE5E,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;kBAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,iCAAiC,CAAC;kBACnF,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;;;UAIxC,MAAM,GAAA;cACJ,QACE,CAAC,CAAA,IAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAA,EACzB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,KACxC,CAAqB,CAAA,qBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,eAAe,GAAG,EAAE,EAAA,EACxE,CAAA,CAAA,cAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,EACpC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,KAAK,EAAE,iBAAiB,EACxB,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,CAAC,UAAU,EACxB,IAAI,EAAC,qBAAqB,EAAA,CAC1B,CACkB,CACvB,EACD,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACR;;;;;;;;;;;;"}
1
+ {"version":3,"file":"p-DY97YDUU.system.js","sources":["src/components/pds-table/pds-table-head/pds-table-head.scss?tag=pds-table-head&encapsulation=shadow","src/components/pds-table/pds-table-head/pds-table-head.tsx"],"sourcesContent":[":host {\n --border-head-default: var(--pine-border-width-thin) solid var(--pine-color-background-subtle);\n\n border-color: inherit;\n box-sizing: border-box;\n display: table-header-group;\n vertical-align: middle;\n\n // used for pds-checkbox-cell\n // because it is in the ShadowDom\n &::part(checkbox-cell) {\n background-color: var(--pine-color-background-container);\n inset-inline-start: var(--pine-dimension-none);\n position: sticky;\n z-index: var(--pine-z-index-raised);\n }\n}\n\n:host pds-table-checkbox-cell {\n border-block-end: var(--border-head-default);\n}\n\n:host([border]) {\n border-block-end: var(--pine-border-width-thin) solid var(--pine-color-border-subtle);\n border-block-start: var(--pine-border-width-thin) solid var(--pine-color-border-subtle);\n}\n\n:host([border]) pds-table-head-cell {\n border-block-end: var(--pine-border-width-thin) solid var(--pine-color-border-subtle);\n border-block-start: var(--pine-border-width-thin) solid var(--pine-color-border-subtle);\n}\n\n:host([background]) {\n background-color: var(--pine-color-background-subtle);\n}\n\n:host([background]) pds-table-head-cell {\n background-color: var(--pine-color-background-subtle);\n}\n","import { Component, Element, Event, EventEmitter, Host, h, Prop } from '@stencil/core';\nimport { closest } from '@utils/closest';\n\n@Component({\n tag: 'pds-table-head',\n styleUrls: ['pds-table-head.scss'],\n shadow: true,\n})\nexport class PdsTableHead {\n @Element() hostElement: HTMLPdsTableHeadElement;\n private tableRef: HTMLPdsTableElement\n\n /**\n * Determines if the select all checkbox is in an indeterminate state.\n */\n @Prop({ mutable: true }) indeterminate?: boolean;\n\n /**\n * Determines if the table row is currently selected.\n * @defaultValue false\n */\n @Prop({mutable: true}) isSelected: boolean;\n\n /**\n * Adds top and bottom borders to the table head.\n * @defaultValue false\n */\n @Prop({ reflect: true }) border = false;\n\n /**\n * Adds a subtle background color to the table head.\n * @defaultValue false\n */\n @Prop({ reflect: true }) background = false;\n\n /**\n * Event that is emitted when the select all checkbox is clicked, carrying the selected value.\n */\n @Event() pdsTableSelectAll: EventEmitter<{ isSelected: boolean }>;\n\n private generateUniqueId = () => {\n const randomString = Math.random().toString(36).substring(2, 8);\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-');\n const uniqueId = `${randomString}-${timestamp}`;\n\n return uniqueId;\n }\n\n private handleInput = (ev: Event) => {\n this.isSelected = !(ev.target as HTMLInputElement).checked\n this.handleSelect(this.isSelected)\n };\n\n private handleSelect = (isSelected: boolean) => {\n this.indeterminate = false\n\n if ( closest('pds-table-head', this.hostElement) ) {\n this.pdsTableSelectAll.emit({ isSelected });\n }\n }\n\n componentWillLoad() {\n if (this.isSelected) {\n this.handleSelect(this.isSelected)\n }\n }\n\n componentWillRender() {\n this.tableRef = this.hostElement.closest('pds-table') as HTMLPdsTableElement;\n\n if (this.tableRef && this.tableRef.fixedColumn) {\n const tableCell = this.hostElement.querySelector('pds-table-head-cell:first-child');\n tableCell?.classList.add(\"is-fixed\");\n }\n }\n\n render() {\n return (\n <Host role=\"row\" part=\"head\">\n {this.tableRef && this.tableRef.selectable && (\n <pds-table-head-cell part={this.tableRef.selectable ? 'checkbox-cell' : ''}>\n <pds-checkbox\n componentId={this.generateUniqueId()}\n indeterminate={this.indeterminate}\n onInput={this.handleInput}\n label={\"Select All Rows\"}\n hideLabel={true}\n checked={this.isSelected}\n part=\"select-all-checkbox\"\n />\n </pds-table-head-cell>\n )}\n <slot></slot>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;MAAA,MAAM,eAAe,GAAG,87CAA87C;;YCQz8C,YAAY,6BAAA,MAAA;MALzB,IAAA,WAAA,CAAA,OAAA,EAAA;;;MAoBE;;;MAGG;MACsB,QAAA,IAAM,CAAA,MAAA,GAAG,KAAK;MAEvC;;;MAGG;MACsB,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK;MAOnC,QAAA,IAAgB,CAAA,gBAAA,GAAG,MAAK;MAC9B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;MAC/D,YAAA,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;MAChE,YAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,YAAY,CAAI,CAAA,EAAA,SAAS,EAAE;MAE/C,YAAA,OAAO,QAAQ;MACjB,SAAC;MAEO,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,EAAS,KAAI;kBAClC,IAAI,CAAC,UAAU,GAAG,CAAE,EAAE,CAAC,MAA2B,CAAC,OAAO;MAC1D,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;MACpC,SAAC;MAEO,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,UAAmB,KAAI;MAC7C,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;kBAE1B,IAAK,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,EAAG;sBACjD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;;MAE/C,SAAC;MAqCF;UAnCC,iBAAiB,GAAA;MACf,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;MACnB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;;;UAItC,mBAAmB,GAAA;cACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAwB;cAE5E,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;kBAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,iCAAiC,CAAC;kBACnF,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;;;UAIxC,MAAM,GAAA;cACJ,QACE,CAAC,CAAA,IAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAA,EACzB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,KACxC,CAAqB,CAAA,qBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,eAAe,GAAG,EAAE,EAAA,EACxE,CAAA,CAAA,cAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,EACpC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,KAAK,EAAE,iBAAiB,EACxB,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,CAAC,UAAU,EACxB,IAAI,EAAC,qBAAqB,EAAA,CAC1B,CACkB,CACvB,EACD,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACR;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"p-ClPf_JF1.system.js","sources":["src/components/pds-modal/pds-modal-header/pds-modal-header.scss?tag=pds-modal-header","src/components/pds-modal/pds-modal-header/pds-modal-header.tsx"],"sourcesContent":["pds-modal-header {\n display: block;\n width: 100%;\n}\n\n.pds-modal__header {\n width: 100%;\n}\n","import { Component, h } from '@stencil/core';\n\n@Component({\n tag: 'pds-modal-header',\n styleUrl: 'pds-modal-header.scss',\n shadow: false,\n})\nexport class PdsModalHeader {\n render() {\n return (\n <header class=\"pds-modal__header\">\n <slot></slot>\n </header>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;MAAA,MAAM,iBAAiB,GAAG,0EAA0E;;YCOvF,cAAc,+BAAA,MAAA;;;;UACzB,MAAM,GAAA;cACJ,QACE,CAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAQ,KAAK,EAAC,mBAAmB,EAAA,EAC/B,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACN;;;;;;;;;;;"}
1
+ {"version":3,"file":"p-DZt6ah_A.system.js","sources":["src/components/pds-modal/pds-modal-header/pds-modal-header.scss?tag=pds-modal-header","src/components/pds-modal/pds-modal-header/pds-modal-header.tsx"],"sourcesContent":["pds-modal-header {\n display: block;\n width: 100%;\n}\n\n.pds-modal__header {\n width: 100%;\n}\n","import { Component, h } from '@stencil/core';\n\n@Component({\n tag: 'pds-modal-header',\n styleUrl: 'pds-modal-header.scss',\n shadow: false,\n})\nexport class PdsModalHeader {\n render() {\n return (\n <header class=\"pds-modal__header\">\n <slot></slot>\n </header>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;MAAA,MAAM,iBAAiB,GAAG,0EAA0E;;YCOvF,cAAc,+BAAA,MAAA;;;;UACzB,MAAM,GAAA;cACJ,QACE,CAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAQ,KAAK,EAAC,mBAAmB,EAAA,EAC/B,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACN;;;;;;;;;;;"}