@pine-ds/core 4.10.0 → 4.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (511) hide show
  1. package/components/aria-references.js +1 -0
  2. package/components/attributes.js +1 -1
  3. package/components/index2.js +1 -1
  4. package/components/pds-alert.js +1 -1
  5. package/components/pds-avatar.js +1 -1
  6. package/components/pds-box2.js +1 -1
  7. package/components/pds-button2.js +1 -1
  8. package/components/pds-checkbox2.js +1 -1
  9. package/components/pds-chip2.js +1 -1
  10. package/components/pds-combobox.js +2 -2
  11. package/components/pds-copytext.js +1 -1
  12. package/components/pds-datepicker.js +1 -1
  13. package/components/pds-drawer-content.js +1 -1
  14. package/components/pds-drawer-footer.js +1 -1
  15. package/components/pds-drawer-header.js +1 -1
  16. package/components/pds-drawer.js +1 -1
  17. package/components/pds-dropdown-menu-item.js +1 -1
  18. package/components/pds-dropdown-menu-separator.js +1 -1
  19. package/components/pds-dropdown-menu.js +1 -1
  20. package/components/pds-filter.js +1 -1
  21. package/components/pds-image.js +1 -1
  22. package/components/pds-input2.js +1 -1
  23. package/components/pds-link2.js +1 -1
  24. package/components/pds-loader2.js +1 -1
  25. package/components/pds-modal-footer.js +1 -1
  26. package/components/pds-modal-header.js +1 -1
  27. package/components/pds-modal2.js +1 -1
  28. package/components/pds-multiselect.js +1 -1
  29. package/components/pds-popover.js +1 -1
  30. package/components/pds-progress.js +1 -1
  31. package/components/pds-radio-group.js +1 -1
  32. package/components/pds-radio.js +1 -1
  33. package/components/pds-select.js +1 -1
  34. package/components/pds-sortable-item.js +1 -1
  35. package/components/pds-sortable.js +2 -2
  36. package/components/pds-switch.js +1 -1
  37. package/components/pds-table-body.js +1 -1
  38. package/components/pds-table-cell2.js +1 -1
  39. package/components/pds-table-head-cell2.js +1 -1
  40. package/components/pds-table-head.js +1 -1
  41. package/components/pds-table-row.js +1 -1
  42. package/components/pds-table.js +1 -1
  43. package/components/pds-tabs.js +1 -1
  44. package/components/pds-text2.js +1 -1
  45. package/components/pds-textarea.js +1 -1
  46. package/components/pds-toast.js +1 -1
  47. package/components/pds-tooltip.js +1 -1
  48. package/components/sortable-label.js +1 -0
  49. package/components/truncation-tooltip.js +1 -1
  50. package/dist/cjs/aria-references-CUmqibnO.js +54 -0
  51. package/dist/cjs/{attributes-CW49XqaL.js → attributes-Cgbkw6gO.js} +3 -0
  52. package/dist/cjs/loader.cjs.js +1 -1
  53. package/dist/cjs/pds-alert.cjs.entry.js +2 -2
  54. package/dist/cjs/pds-avatar.cjs.entry.js +3 -2
  55. package/dist/cjs/pds-box.cjs.entry.js +4 -3
  56. package/dist/cjs/pds-button.cjs.entry.js +25 -45
  57. package/dist/cjs/pds-checkbox.cjs.entry.js +4 -4
  58. package/dist/cjs/pds-chip.cjs.entry.js +3 -3
  59. package/dist/cjs/pds-combobox.cjs.entry.js +246 -106
  60. package/dist/cjs/pds-copytext.cjs.entry.js +3 -3
  61. package/dist/cjs/pds-datepicker.cjs.entry.js +295 -82
  62. package/dist/cjs/pds-drawer-content.cjs.entry.js +1 -1
  63. package/dist/cjs/pds-drawer-footer.cjs.entry.js +1 -1
  64. package/dist/cjs/pds-drawer-header.cjs.entry.js +1 -1
  65. package/dist/cjs/pds-drawer.cjs.entry.js +5 -7
  66. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +85 -49
  67. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +2 -2
  68. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +83 -10
  69. package/dist/cjs/pds-filter.cjs.entry.js +24 -2
  70. package/dist/cjs/pds-image.cjs.entry.js +148 -6
  71. package/dist/cjs/pds-input.cjs.entry.js +4 -4
  72. package/dist/cjs/pds-link.cjs.entry.js +4 -5
  73. package/dist/cjs/pds-loader.cjs.entry.js +4 -3
  74. package/dist/cjs/pds-modal-footer.cjs.entry.js +1 -1
  75. package/dist/cjs/pds-modal-header.cjs.entry.js +1 -1
  76. package/dist/cjs/pds-modal.cjs.entry.js +9 -12
  77. package/dist/cjs/pds-multiselect.cjs.entry.js +64 -18
  78. package/dist/cjs/pds-popover.cjs.entry.js +8 -6
  79. package/dist/cjs/pds-progress.cjs.entry.js +3 -3
  80. package/dist/cjs/pds-radio-group.cjs.entry.js +4 -4
  81. package/dist/cjs/pds-radio.cjs.entry.js +6 -6
  82. package/dist/cjs/pds-row.cjs.entry.js +1 -1
  83. package/dist/cjs/pds-select.cjs.entry.js +2 -2
  84. package/dist/cjs/pds-sortable-item.cjs.entry.js +28 -5
  85. package/dist/cjs/pds-sortable.cjs.entry.js +356 -4
  86. package/dist/cjs/pds-switch.cjs.entry.js +92 -15
  87. package/dist/cjs/pds-tab.cjs.entry.js +1 -1
  88. package/dist/cjs/pds-table-body.cjs.entry.js +1 -1
  89. package/dist/cjs/pds-table-cell.cjs.entry.js +24 -5
  90. package/dist/cjs/pds-table-head-cell.cjs.entry.js +59 -11
  91. package/dist/cjs/pds-table-head.cjs.entry.js +1 -1
  92. package/dist/cjs/pds-table-row.cjs.entry.js +1 -1
  93. package/dist/cjs/pds-table.cjs.entry.js +260 -5
  94. package/dist/cjs/pds-tabpanel.cjs.entry.js +1 -1
  95. package/dist/cjs/pds-tabs.cjs.entry.js +3 -3
  96. package/dist/cjs/pds-text.cjs.entry.js +5 -3
  97. package/dist/cjs/pds-textarea.cjs.entry.js +8 -7
  98. package/dist/cjs/pds-toast.cjs.entry.js +8 -4
  99. package/dist/cjs/pds-tooltip.cjs.entry.js +1 -1
  100. package/dist/cjs/pine-core.cjs.js +1 -1
  101. package/dist/cjs/sortable-label-DOcJrHvA.js +37 -0
  102. package/dist/cjs/{truncation-tooltip-Bikp7n9I.js → truncation-tooltip-CM5HgRHh.js} +69 -0
  103. package/dist/collection/components/pds-alert/pds-alert.css +0 -3
  104. package/dist/collection/components/pds-alert/pds-alert.js +3 -2
  105. package/dist/collection/components/pds-avatar/pds-avatar.js +7 -6
  106. package/dist/collection/components/pds-avatar/stories/pds-avatar.stories.js +1 -1
  107. package/dist/collection/components/pds-box/pds-box.css +1273 -1189
  108. package/dist/collection/components/pds-box/pds-box.js +180 -156
  109. package/dist/collection/components/pds-box/stories/pds-box.stories.js +79 -37
  110. package/dist/collection/components/pds-button/pds-button.js +26 -4
  111. package/dist/collection/components/pds-button/stories/pds-button.stories.js +25 -11
  112. package/dist/collection/components/pds-checkbox/pds-checkbox.js +10 -10
  113. package/dist/collection/components/pds-chip/pds-chip.js +3 -3
  114. package/dist/collection/components/pds-combobox/pds-combobox.css +162 -53
  115. package/dist/collection/components/pds-combobox/pds-combobox.js +261 -121
  116. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +35 -4
  117. package/dist/collection/components/pds-copytext/pds-copytext.js +2 -2
  118. package/dist/collection/components/pds-datepicker/date-utils.js +42 -0
  119. package/dist/collection/components/pds-datepicker/pds-datepicker.js +164 -65
  120. package/dist/collection/components/pds-datepicker/presets.js +42 -7
  121. package/dist/collection/components/pds-datepicker/stories/pds-datepicker.stories.js +11 -0
  122. package/dist/collection/components/pds-datepicker/value.js +76 -18
  123. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.js +2 -5
  124. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.js +2 -1
  125. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.js +2 -1
  126. package/dist/collection/components/pds-drawer/pds-drawer.js +8 -10
  127. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.css +17 -8
  128. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +95 -62
  129. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +3 -3
  130. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +2 -0
  131. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +84 -9
  132. package/dist/collection/components/pds-dropdown-menu/stories/pds-dropdown-menu.stories.js +24 -1
  133. package/dist/collection/components/pds-filters/pds-filter/pds-filter.css +2 -1
  134. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +24 -7
  135. package/dist/collection/components/pds-image/image-interface.js +1 -0
  136. package/dist/collection/components/pds-image/pds-image.css +11 -0
  137. package/dist/collection/components/pds-image/pds-image.js +249 -8
  138. package/dist/collection/components/pds-image/stories/pds-image.stories.js +117 -1
  139. package/dist/collection/components/pds-input/pds-input.js +14 -9
  140. package/dist/collection/components/pds-link/pds-link.js +10 -14
  141. package/dist/collection/components/pds-link/stories/pds-link.stories.js +6 -2
  142. package/dist/collection/components/pds-loader/pds-loader.js +5 -4
  143. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +2 -1
  144. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +2 -1
  145. package/dist/collection/components/pds-modal/pds-modal.js +11 -13
  146. package/dist/collection/components/pds-modal/stories/pds-modal.stories.js +7 -7
  147. package/dist/collection/components/pds-multiselect/pds-multiselect.css +2 -2
  148. package/dist/collection/components/pds-multiselect/pds-multiselect.js +63 -18
  149. package/dist/collection/components/pds-popover/pds-popover.css +1 -1
  150. package/dist/collection/components/pds-popover/pds-popover.js +9 -7
  151. package/dist/collection/components/pds-progress/pds-progress.js +4 -4
  152. package/dist/collection/components/pds-radio/pds-radio.css +5 -1
  153. package/dist/collection/components/pds-radio/pds-radio.js +9 -9
  154. package/dist/collection/components/pds-radio/stories/pds-radio.stories.js +9 -9
  155. package/dist/collection/components/pds-radio-group/pds-radio-group.js +7 -7
  156. package/dist/collection/components/pds-radio-group/stories/pds-radio-group.stories.js +3 -3
  157. package/dist/collection/components/pds-row/stories/pds-row.stories.js +15 -14
  158. package/dist/collection/components/pds-select/pds-select.js +7 -4
  159. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.css +38 -0
  160. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +47 -5
  161. package/dist/collection/components/pds-sortable/pds-sortable.js +481 -5
  162. package/dist/collection/components/pds-sortable/sortable-label.js +33 -0
  163. package/dist/collection/components/pds-sortable/stories/pds-sortable.stories.js +27 -0
  164. package/dist/collection/components/pds-switch/pds-switch.js +114 -17
  165. package/dist/collection/components/pds-switch/stories/pds-switch.stories.js +79 -0
  166. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +4 -1
  167. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +47 -4
  168. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +6 -2
  169. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.css +11 -0
  170. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +98 -10
  171. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +5 -1
  172. package/dist/collection/components/pds-table/pds-table.css +8 -0
  173. package/dist/collection/components/pds-table/pds-table.js +295 -7
  174. package/dist/collection/components/pds-table/stories/pds-table.stories.js +131 -6
  175. package/dist/collection/components/pds-tabs/pds-tabs.js +3 -3
  176. package/dist/collection/components/pds-tabs/stories/pds-tabs.stories.js +1 -1
  177. package/dist/collection/components/pds-text/pds-text.js +5 -3
  178. package/dist/collection/components/pds-textarea/pds-textarea.js +16 -14
  179. package/dist/collection/components/pds-textarea/stories/pds-textarea.stories.js +2 -13
  180. package/dist/collection/components/pds-toast/pds-toast.css +4 -3
  181. package/dist/collection/components/pds-toast/pds-toast.js +9 -5
  182. package/dist/collection/components/pds-toast/stories/pds-toast.stories.js +2 -2
  183. package/dist/collection/components/pds-tooltip/pds-tooltip.css +2 -1
  184. package/dist/collection/components/pds-tooltip/stories/pds-tooltip.stories.js +17 -17
  185. package/dist/collection/utils/aria-references.js +9 -3
  186. package/dist/collection/utils/truncation-tooltip.js +67 -0
  187. package/dist/docs.json +1150 -371
  188. package/dist/esm/aria-references-CNn1lObg.js +50 -0
  189. package/dist/esm/{attributes-DkeVeN0g.js → attributes-CD8knu3a.js} +3 -0
  190. package/dist/esm/{index-DvN3tyZp.js → index-B0DXTeeV.js} +1 -1
  191. package/dist/esm/loader.js +1 -1
  192. package/dist/esm/pds-accordion.entry.js +1 -1
  193. package/dist/esm/pds-alert.entry.js +2 -2
  194. package/dist/esm/pds-avatar.entry.js +4 -3
  195. package/dist/esm/pds-box.entry.js +4 -3
  196. package/dist/esm/pds-button.entry.js +24 -44
  197. package/dist/esm/pds-checkbox.entry.js +5 -5
  198. package/dist/esm/pds-chip.entry.js +4 -4
  199. package/dist/esm/pds-combobox.entry.js +246 -106
  200. package/dist/esm/pds-copytext.entry.js +4 -4
  201. package/dist/esm/pds-datepicker.entry.js +296 -83
  202. package/dist/esm/pds-drawer-content.entry.js +1 -1
  203. package/dist/esm/pds-drawer-footer.entry.js +1 -1
  204. package/dist/esm/pds-drawer-header.entry.js +1 -1
  205. package/dist/esm/pds-drawer.entry.js +5 -7
  206. package/dist/esm/pds-dropdown-menu-item.entry.js +85 -49
  207. package/dist/esm/pds-dropdown-menu-separator.entry.js +2 -2
  208. package/dist/esm/pds-dropdown-menu.entry.js +84 -11
  209. package/dist/esm/pds-filter.entry.js +25 -3
  210. package/dist/esm/pds-image.entry.js +149 -7
  211. package/dist/esm/pds-input.entry.js +5 -5
  212. package/dist/esm/pds-link.entry.js +5 -6
  213. package/dist/esm/pds-loader.entry.js +4 -3
  214. package/dist/esm/pds-modal-footer.entry.js +1 -1
  215. package/dist/esm/pds-modal-header.entry.js +1 -1
  216. package/dist/esm/pds-modal.entry.js +9 -12
  217. package/dist/esm/pds-multiselect.entry.js +65 -19
  218. package/dist/esm/pds-popover.entry.js +8 -6
  219. package/dist/esm/pds-progress.entry.js +3 -3
  220. package/dist/esm/pds-radio-group.entry.js +5 -5
  221. package/dist/esm/pds-radio.entry.js +7 -7
  222. package/dist/esm/pds-row.entry.js +1 -1
  223. package/dist/esm/pds-select.entry.js +3 -3
  224. package/dist/esm/pds-sortable-item.entry.js +29 -6
  225. package/dist/esm/pds-sortable.entry.js +357 -5
  226. package/dist/esm/pds-switch.entry.js +94 -17
  227. package/dist/esm/pds-tab.entry.js +1 -1
  228. package/dist/esm/pds-table-body.entry.js +1 -1
  229. package/dist/esm/pds-table-cell.entry.js +24 -5
  230. package/dist/esm/pds-table-head-cell.entry.js +60 -12
  231. package/dist/esm/pds-table-head.entry.js +1 -1
  232. package/dist/esm/pds-table-row.entry.js +1 -1
  233. package/dist/esm/pds-table.entry.js +261 -6
  234. package/dist/esm/pds-tabpanel.entry.js +1 -1
  235. package/dist/esm/pds-tabs.entry.js +3 -3
  236. package/dist/esm/pds-text.entry.js +5 -3
  237. package/dist/esm/pds-textarea.entry.js +9 -8
  238. package/dist/esm/pds-toast.entry.js +8 -4
  239. package/dist/esm/pds-tooltip.entry.js +1 -1
  240. package/dist/esm/pine-core.js +1 -1
  241. package/dist/esm/sortable-label-PItnzVVR.js +35 -0
  242. package/dist/esm/{truncation-tooltip-DBcPipr9.js → truncation-tooltip-CkIWm6Z-.js} +68 -1
  243. package/dist/esm-es5/aria-references-CNn1lObg.js +1 -0
  244. package/dist/esm-es5/{attributes-DkeVeN0g.js → attributes-CD8knu3a.js} +1 -1
  245. package/dist/esm-es5/{index-DvN3tyZp.js → index-B0DXTeeV.js} +1 -1
  246. package/dist/esm-es5/loader.js +1 -1
  247. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  248. package/dist/esm-es5/pds-alert.entry.js +1 -1
  249. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  250. package/dist/esm-es5/pds-box.entry.js +1 -1
  251. package/dist/esm-es5/pds-button.entry.js +1 -1
  252. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  253. package/dist/esm-es5/pds-chip.entry.js +1 -1
  254. package/dist/esm-es5/pds-combobox.entry.js +1 -1
  255. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  256. package/dist/esm-es5/pds-datepicker.entry.js +1 -1
  257. package/dist/esm-es5/pds-drawer-content.entry.js +1 -1
  258. package/dist/esm-es5/pds-drawer-footer.entry.js +1 -1
  259. package/dist/esm-es5/pds-drawer-header.entry.js +1 -1
  260. package/dist/esm-es5/pds-drawer.entry.js +1 -1
  261. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  262. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  263. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  264. package/dist/esm-es5/pds-filter.entry.js +1 -1
  265. package/dist/esm-es5/pds-image.entry.js +1 -1
  266. package/dist/esm-es5/pds-input.entry.js +1 -1
  267. package/dist/esm-es5/pds-link.entry.js +1 -1
  268. package/dist/esm-es5/pds-loader.entry.js +1 -1
  269. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  270. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  271. package/dist/esm-es5/pds-modal.entry.js +1 -1
  272. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  273. package/dist/esm-es5/pds-popover.entry.js +1 -1
  274. package/dist/esm-es5/pds-progress.entry.js +1 -1
  275. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  276. package/dist/esm-es5/pds-radio.entry.js +1 -1
  277. package/dist/esm-es5/pds-row.entry.js +1 -1
  278. package/dist/esm-es5/pds-select.entry.js +1 -1
  279. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  280. package/dist/esm-es5/pds-sortable.entry.js +2 -2
  281. package/dist/esm-es5/pds-switch.entry.js +1 -1
  282. package/dist/esm-es5/pds-tab.entry.js +1 -1
  283. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  284. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  285. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  286. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  287. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  288. package/dist/esm-es5/pds-table.entry.js +1 -1
  289. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  290. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  291. package/dist/esm-es5/pds-text.entry.js +1 -1
  292. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  293. package/dist/esm-es5/pds-toast.entry.js +1 -1
  294. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  295. package/dist/esm-es5/pine-core.js +1 -1
  296. package/dist/esm-es5/sortable-label-PItnzVVR.js +1 -0
  297. package/dist/esm-es5/truncation-tooltip-CkIWm6Z-.js +1 -0
  298. package/dist/pine-core/{p-f834cb07.system.entry.js → p-00891b8d.system.entry.js} +1 -1
  299. package/dist/pine-core/{p-3f8bd3fb.system.entry.js → p-053ff8eb.system.entry.js} +1 -1
  300. package/dist/pine-core/p-08b9e3ad.entry.js +1 -0
  301. package/dist/pine-core/{p-4d98bc0c.system.entry.js → p-0a7570dd.system.entry.js} +1 -1
  302. package/dist/pine-core/{p-d018dc60.system.entry.js → p-0ac4262e.system.entry.js} +1 -1
  303. package/dist/pine-core/{p-89d38a82.system.entry.js → p-0e1b8bd1.system.entry.js} +1 -1
  304. package/dist/pine-core/{p-e1d1b5d8.entry.js → p-12fdc65f.entry.js} +1 -1
  305. package/dist/pine-core/{p-d48fe5a0.system.entry.js → p-16fceef6.system.entry.js} +1 -1
  306. package/dist/pine-core/p-1765a41b.system.entry.js +1 -0
  307. package/dist/pine-core/{p-a594c41f.entry.js → p-18524c25.entry.js} +1 -1
  308. package/dist/pine-core/p-1a013a5c.system.entry.js +1 -0
  309. package/dist/pine-core/{p-2b9622c1.system.entry.js → p-1ab52531.system.entry.js} +1 -1
  310. package/dist/pine-core/p-1c584a20.entry.js +1 -0
  311. package/dist/pine-core/p-1edef412.entry.js +1 -0
  312. package/dist/pine-core/{p-5946203c.entry.js → p-1f998e3e.entry.js} +1 -1
  313. package/dist/pine-core/{p-39e57657.entry.js → p-1fb1ca3d.entry.js} +1 -1
  314. package/dist/pine-core/p-2b6becc2.entry.js +1 -0
  315. package/dist/pine-core/p-2cc7c682.entry.js +1 -0
  316. package/dist/pine-core/{p-639acef8.system.entry.js → p-2ddcd845.system.entry.js} +1 -1
  317. package/dist/pine-core/{p-6a1aa8d3.entry.js → p-2f15e85f.entry.js} +1 -1
  318. package/dist/pine-core/{p-67f795d5.system.entry.js → p-33da254f.system.entry.js} +1 -1
  319. package/dist/pine-core/{p-c6a9e62c.system.entry.js → p-3fc9ef80.system.entry.js} +1 -1
  320. package/dist/pine-core/p-4125a4a6.system.entry.js +1 -0
  321. package/dist/pine-core/p-47df9e9f.system.entry.js +3 -0
  322. package/dist/pine-core/p-51680c9c.system.entry.js +1 -0
  323. package/dist/pine-core/p-55535481.system.entry.js +1 -0
  324. package/dist/pine-core/p-55a4659a.system.entry.js +1 -0
  325. package/dist/pine-core/{p-c5e1eb3c.system.entry.js → p-57af5c29.system.entry.js} +1 -1
  326. package/dist/pine-core/p-57edd301.system.entry.js +1 -0
  327. package/dist/pine-core/{p-bfa34194.entry.js → p-5d582798.entry.js} +1 -1
  328. package/dist/pine-core/p-5db87fda.system.entry.js +1 -0
  329. package/dist/pine-core/{p-19cf1d91.system.entry.js → p-5eb0c78c.system.entry.js} +1 -1
  330. package/dist/pine-core/{p-42f70f93.system.entry.js → p-6017afb5.system.entry.js} +1 -1
  331. package/dist/pine-core/{p-63f85859.system.entry.js → p-60e65fe0.system.entry.js} +1 -1
  332. package/dist/pine-core/{p-973c3ac0.entry.js → p-627a94da.entry.js} +1 -1
  333. package/dist/pine-core/{p-a9d96e22.entry.js → p-68328afc.entry.js} +1 -1
  334. package/dist/pine-core/{p-bd7dc317.system.entry.js → p-72668673.system.entry.js} +1 -1
  335. package/dist/pine-core/p-72ff5ad2.system.entry.js +1 -0
  336. package/dist/pine-core/p-736ea7dd.entry.js +7 -0
  337. package/dist/pine-core/p-765f4207.entry.js +1 -0
  338. package/dist/pine-core/{p-2a18852f.entry.js → p-77530cf2.entry.js} +1 -1
  339. package/dist/pine-core/p-77a22399.entry.js +1 -0
  340. package/dist/pine-core/p-783127bf.entry.js +1 -0
  341. package/dist/pine-core/{p-d9719e37.entry.js → p-82f7eed1.entry.js} +1 -1
  342. package/dist/pine-core/{p-124a0a24.entry.js → p-84d4ae26.entry.js} +1 -1
  343. package/dist/pine-core/p-8deeda07.entry.js +1 -0
  344. package/dist/pine-core/{p-849ec281.system.entry.js → p-8e17a6d8.system.entry.js} +1 -1
  345. package/dist/pine-core/p-8e7e7bba.entry.js +1 -0
  346. package/dist/pine-core/{p-e82f758f.system.entry.js → p-907c69e9.system.entry.js} +1 -1
  347. package/dist/pine-core/{p-1415c988.system.entry.js → p-90f83a5b.system.entry.js} +1 -1
  348. package/dist/pine-core/p-97145eee.system.entry.js +1 -0
  349. package/dist/pine-core/{p-a09c9c5e.system.entry.js → p-9d983e09.system.entry.js} +1 -1
  350. package/dist/pine-core/{p-1e3ef425.entry.js → p-9e005996.entry.js} +1 -1
  351. package/dist/pine-core/{p-DvN3tyZp.js → p-B0DXTeeV.js} +1 -1
  352. package/dist/pine-core/{p-CNXspDYs.system.js → p-BlJQebvG.system.js} +1 -1
  353. package/dist/pine-core/p-C35-349-.system.js +1 -0
  354. package/dist/pine-core/{p-vFsJv75D.system.js → p-CIe1DGXa.system.js} +1 -1
  355. package/dist/pine-core/p-CNn1lObg.js +1 -0
  356. package/dist/pine-core/p-CQJ44c6o.system.js +1 -0
  357. package/dist/pine-core/p-Dv9QBmIF.js +1 -0
  358. package/dist/pine-core/p-PItnzVVR.js +1 -0
  359. package/dist/pine-core/p-VPGVqK3P.system.js +1 -0
  360. package/dist/pine-core/p-XK45dzWR.system.js +1 -1
  361. package/dist/pine-core/p-a149af29.entry.js +1 -0
  362. package/dist/pine-core/p-a20d9eca.system.entry.js +1 -0
  363. package/dist/pine-core/{p-f6f4fd42.entry.js → p-a5782d99.entry.js} +1 -1
  364. package/dist/pine-core/p-a5e9c583.entry.js +1 -0
  365. package/dist/pine-core/{p-4d47023c.system.entry.js → p-a9eaf160.system.entry.js} +1 -1
  366. package/dist/pine-core/{p-143b33a6.entry.js → p-b00b07e3.entry.js} +1 -1
  367. package/dist/pine-core/{p-c7a53c4f.entry.js → p-b7b29392.entry.js} +1 -1
  368. package/dist/pine-core/p-b96bdff6.entry.js +1 -0
  369. package/dist/pine-core/{p-f71d71ca.entry.js → p-bbd9ab75.entry.js} +1 -1
  370. package/dist/pine-core/p-bdab6c9f.entry.js +1 -0
  371. package/dist/pine-core/p-biShcgLI.js +1 -0
  372. package/dist/pine-core/{p-548bce53.system.entry.js → p-c12b5cd7.system.entry.js} +1 -1
  373. package/dist/pine-core/p-c1dc7692.entry.js +1 -0
  374. package/dist/pine-core/p-c76d8b9e.system.entry.js +1 -0
  375. package/dist/pine-core/{p-590df41a.entry.js → p-c89ea2d3.entry.js} +1 -1
  376. package/dist/pine-core/{p-d920d759.system.entry.js → p-c9630934.system.entry.js} +1 -1
  377. package/dist/pine-core/{p-6f4ab1ea.system.entry.js → p-cb9227f6.system.entry.js} +1 -1
  378. package/dist/pine-core/p-ceef0eb1.entry.js +1 -0
  379. package/dist/pine-core/p-d1283e8d.entry.js +1 -0
  380. package/dist/pine-core/p-d676926d.system.entry.js +1 -0
  381. package/dist/pine-core/{p-61cfdbb2.entry.js → p-d7d7a4e1.entry.js} +1 -1
  382. package/dist/pine-core/p-d85d50cb.entry.js +1 -0
  383. package/dist/pine-core/p-daa802f1.entry.js +2 -0
  384. package/dist/pine-core/p-ddf4b9b5.system.entry.js +1 -0
  385. package/dist/pine-core/p-de3b319e.system.entry.js +8 -0
  386. package/dist/pine-core/{p-cb9baf78.system.entry.js → p-e00777da.system.entry.js} +1 -1
  387. package/dist/pine-core/p-e2541eeb.entry.js +1 -0
  388. package/dist/pine-core/{p-01f1cdaf.system.entry.js → p-e2a1a49a.system.entry.js} +1 -1
  389. package/dist/pine-core/p-e4ebea88.system.entry.js +1 -0
  390. package/dist/pine-core/{p-947582e1.entry.js → p-e554bd64.entry.js} +1 -1
  391. package/dist/pine-core/{p-dd7ded84.entry.js → p-e6427c87.entry.js} +1 -1
  392. package/dist/pine-core/{p-50ddadbf.entry.js → p-e72e8b8f.entry.js} +1 -1
  393. package/dist/pine-core/p-e92d0f0f.system.entry.js +1 -0
  394. package/dist/pine-core/{p-9b32727a.system.entry.js → p-eab165b9.system.entry.js} +1 -1
  395. package/dist/pine-core/p-eabc4bd8.entry.js +1 -0
  396. package/dist/pine-core/p-ef9f84f2.system.entry.js +1 -0
  397. package/dist/pine-core/{p-c9ae7964.entry.js → p-f026af73.entry.js} +1 -1
  398. package/dist/pine-core/{p-99530cb5.entry.js → p-f0509c8e.entry.js} +1 -1
  399. package/dist/pine-core/p-f1252e72.system.entry.js +1 -0
  400. package/dist/pine-core/p-f3496fd1.entry.js +1 -0
  401. package/dist/pine-core/{p-eecd9ad8.system.entry.js → p-f90f4be7.system.entry.js} +1 -1
  402. package/dist/pine-core/p-f9bdaadd.system.entry.js +1 -0
  403. package/dist/pine-core/{p-128c04e7.entry.js → p-fda791df.entry.js} +1 -1
  404. package/dist/pine-core/p-fea4296d.entry.js +1 -0
  405. package/dist/pine-core/pine-core.esm.js +1 -1
  406. package/dist/types/components/pds-alert/pds-alert.d.ts +2 -1
  407. package/dist/types/components/pds-avatar/pds-avatar.d.ts +5 -4
  408. package/dist/types/components/pds-box/pds-box.d.ts +68 -57
  409. package/dist/types/components/pds-button/pds-button.d.ts +14 -3
  410. package/dist/types/components/pds-checkbox/pds-checkbox.d.ts +15 -8
  411. package/dist/types/components/pds-chip/pds-chip.d.ts +2 -2
  412. package/dist/types/components/pds-combobox/pds-combobox.d.ts +48 -11
  413. package/dist/types/components/pds-copytext/pds-copytext.d.ts +3 -1
  414. package/dist/types/components/pds-datepicker/date-utils.d.ts +19 -0
  415. package/dist/types/components/pds-datepicker/datepicker-interface.d.ts +22 -5
  416. package/dist/types/components/pds-datepicker/pds-datepicker.d.ts +33 -7
  417. package/dist/types/components/pds-datepicker/presets.d.ts +3 -2
  418. package/dist/types/components/pds-datepicker/value.d.ts +14 -2
  419. package/dist/types/components/pds-drawer/pds-drawer-content/pds-drawer-content.d.ts +1 -4
  420. package/dist/types/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.d.ts +1 -0
  421. package/dist/types/components/pds-drawer/pds-drawer-header/pds-drawer-header.d.ts +1 -0
  422. package/dist/types/components/pds-drawer/pds-drawer.d.ts +4 -6
  423. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.d.ts +20 -16
  424. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.d.ts +1 -1
  425. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +7 -0
  426. package/dist/types/components/pds-filters/pds-filter/pds-filter.d.ts +6 -5
  427. package/dist/types/components/pds-image/image-interface.d.ts +12 -0
  428. package/dist/types/components/pds-image/pds-image.d.ts +69 -9
  429. package/dist/types/components/pds-input/pds-input.d.ts +17 -7
  430. package/dist/types/components/pds-link/pds-link.d.ts +8 -8
  431. package/dist/types/components/pds-loader/pds-loader.d.ts +3 -2
  432. package/dist/types/components/pds-modal/pds-modal-footer/pds-modal-footer.d.ts +1 -0
  433. package/dist/types/components/pds-modal/pds-modal-header/pds-modal-header.d.ts +1 -0
  434. package/dist/types/components/pds-modal/pds-modal.d.ts +7 -9
  435. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +14 -8
  436. package/dist/types/components/pds-popover/pds-popover.d.ts +2 -2
  437. package/dist/types/components/pds-progress/pds-progress.d.ts +2 -2
  438. package/dist/types/components/pds-radio/pds-radio.d.ts +6 -5
  439. package/dist/types/components/pds-radio-group/pds-radio-group.d.ts +5 -4
  440. package/dist/types/components/pds-select/pds-select.d.ts +9 -3
  441. package/dist/types/components/pds-sortable/pds-sortable-item/pds-sortable-item.d.ts +8 -2
  442. package/dist/types/components/pds-sortable/pds-sortable.d.ts +82 -1
  443. package/dist/types/components/pds-sortable/sortable-label.d.ts +7 -0
  444. package/dist/types/components/pds-switch/pds-switch.d.ts +17 -2
  445. package/dist/types/components/pds-table/pds-table-body/pds-table-body.d.ts +3 -0
  446. package/dist/types/components/pds-table/pds-table-cell/pds-table-cell.d.ts +10 -0
  447. package/dist/types/components/pds-table/pds-table-head/pds-table-head.d.ts +5 -1
  448. package/dist/types/components/pds-table/pds-table-head-cell/pds-table-head-cell.d.ts +21 -0
  449. package/dist/types/components/pds-table/pds-table-row/pds-table-row.d.ts +4 -0
  450. package/dist/types/components/pds-table/pds-table.d.ts +76 -2
  451. package/dist/types/components/pds-tabs/pds-tabs.d.ts +1 -1
  452. package/dist/types/components/pds-textarea/pds-textarea.d.ts +15 -13
  453. package/dist/types/components/pds-toast/pds-toast.d.ts +5 -1
  454. package/dist/types/components.d.ts +505 -335
  455. package/dist/types/utils/aria-references.d.ts +4 -0
  456. package/dist/types/utils/truncation-tooltip.d.ts +39 -0
  457. package/dist/types/utils/types.d.ts +3 -0
  458. package/dist/vscode.html-data.json +350 -137
  459. package/hydrate/index.js +2054 -427
  460. package/hydrate/index.mjs +2054 -427
  461. package/package.json +3 -3
  462. package/readme.md +26 -55
  463. package/dist/esm-es5/truncation-tooltip-DBcPipr9.js +0 -1
  464. package/dist/pine-core/p-07323107.entry.js +0 -1
  465. package/dist/pine-core/p-08b8e941.entry.js +0 -1
  466. package/dist/pine-core/p-0b7b3fc2.system.entry.js +0 -3
  467. package/dist/pine-core/p-0d5f0ab5.system.entry.js +0 -1
  468. package/dist/pine-core/p-14dedf01.system.entry.js +0 -1
  469. package/dist/pine-core/p-1ca8d183.entry.js +0 -1
  470. package/dist/pine-core/p-1f62bb71.entry.js +0 -7
  471. package/dist/pine-core/p-2dd30d12.entry.js +0 -1
  472. package/dist/pine-core/p-35s7h-dk.js +0 -1
  473. package/dist/pine-core/p-3610cb3b.entry.js +0 -1
  474. package/dist/pine-core/p-39276663.entry.js +0 -1
  475. package/dist/pine-core/p-3a1dc752.system.entry.js +0 -1
  476. package/dist/pine-core/p-42d43c3f.system.entry.js +0 -1
  477. package/dist/pine-core/p-4a90b9c8.system.entry.js +0 -1
  478. package/dist/pine-core/p-4cfe922b.entry.js +0 -1
  479. package/dist/pine-core/p-5f181694.system.entry.js +0 -1
  480. package/dist/pine-core/p-60a30975.system.entry.js +0 -1
  481. package/dist/pine-core/p-62aa6a78.system.entry.js +0 -1
  482. package/dist/pine-core/p-64bcb378.entry.js +0 -1
  483. package/dist/pine-core/p-724baba3.system.entry.js +0 -1
  484. package/dist/pine-core/p-72659a0e.system.entry.js +0 -1
  485. package/dist/pine-core/p-8436cbfb.entry.js +0 -1
  486. package/dist/pine-core/p-8ade17ce.entry.js +0 -1
  487. package/dist/pine-core/p-8e7f75e6.entry.js +0 -1
  488. package/dist/pine-core/p-8fb520df.entry.js +0 -1
  489. package/dist/pine-core/p-92115e88.entry.js +0 -1
  490. package/dist/pine-core/p-94c9b7d1.system.entry.js +0 -1
  491. package/dist/pine-core/p-97356d4b.entry.js +0 -1
  492. package/dist/pine-core/p-97653e60.entry.js +0 -1
  493. package/dist/pine-core/p-97b73359.entry.js +0 -1
  494. package/dist/pine-core/p-BZVUD2on.js +0 -1
  495. package/dist/pine-core/p-Dj-z_ugg.system.js +0 -1
  496. package/dist/pine-core/p-ad5208a4.system.entry.js +0 -1
  497. package/dist/pine-core/p-afc2f165.entry.js +0 -1
  498. package/dist/pine-core/p-bcc378ba.system.entry.js +0 -8
  499. package/dist/pine-core/p-c8a0b562.system.entry.js +0 -1
  500. package/dist/pine-core/p-d47b2a6a.system.entry.js +0 -1
  501. package/dist/pine-core/p-d6f338e0.entry.js +0 -1
  502. package/dist/pine-core/p-da8b864a.entry.js +0 -2
  503. package/dist/pine-core/p-db7fb5a3.entry.js +0 -1
  504. package/dist/pine-core/p-de455073.system.entry.js +0 -1
  505. package/dist/pine-core/p-e3de6a1d.entry.js +0 -1
  506. package/dist/pine-core/p-e84fa9ed.entry.js +0 -1
  507. package/dist/pine-core/p-eb4f0daa.system.entry.js +0 -1
  508. package/dist/pine-core/p-eb56af4a.system.entry.js +0 -1
  509. package/dist/pine-core/p-ef0eba9b.system.entry.js +0 -1
  510. package/dist/pine-core/p-f11cce27.system.entry.js +0 -1
  511. package/dist/pine-core/p-f354dbac.entry.js +0 -1
@@ -1,8 +1,10 @@
1
1
  :host {
2
2
  /**
3
3
  * @prop --dimension-aspect-ratio: The image's aspect ratio.
4
+ * @prop --dimension-object-fit: How the image fills the shape its aspect ratio gives it.
4
5
  */
5
6
  --dimension-aspect-ratio: auto;
7
+ --dimension-object-fit: cover;
6
8
  display: inline-block;
7
9
  }
8
10
 
@@ -11,4 +13,13 @@ img {
11
13
  display: block;
12
14
  height: auto;
13
15
  max-width: 100%;
16
+ object-fit: var(--dimension-object-fit);
17
+ }
18
+
19
+ :host(.pds-image--has-ratio) {
20
+ display: block;
21
+ }
22
+
23
+ :host(.pds-image--has-ratio) img {
24
+ width: 100%;
14
25
  }
@@ -2,22 +2,154 @@ import { Host, h } from "@stencil/core";
2
2
  export class PdsImage {
3
3
  constructor() {
4
4
  /**
5
- * The image's alt tag. If none is provided,
6
- * it will default to an empty string, which is desired for
7
- * decorative images.
5
+ * The image's alt text. Defaults to an empty string, which marks the image
6
+ * as decorative and hides it from screen readers, so set it on any image
7
+ * that carries information.
8
8
  * @defaultValue ''
9
9
  */
10
10
  this.alt = '';
11
+ /**
12
+ * Determines how the image fills the shape set by `ratio`.
13
+ * Has no effect if `ratio` is not set.
14
+ * @defaultValue cover
15
+ */
16
+ this.fit = 'cover';
11
17
  /**
12
18
  * Indicates how the browser should load the image.
13
19
  * @defaultValue eager
14
20
  */
15
21
  this.loading = 'eager';
22
+ /**
23
+ * The source and event last emitted. A cached image can report `complete` on first
24
+ * render and still fire its own `load` event afterwards, so this keeps one source
25
+ * from emitting twice. A `load` still replaces an `error` for the same source, in
26
+ * case `decode()` misjudged an image that did load.
27
+ */
28
+ this.settled = null;
29
+ this.emitLoad = () => {
30
+ var _a;
31
+ if (!this.hasSource())
32
+ return;
33
+ const { currentSrc, naturalHeight, naturalWidth } = this.imageEl;
34
+ if (!this.showsCurrentSource())
35
+ return;
36
+ if (((_a = this.settled) === null || _a === void 0 ? void 0 : _a.src) === currentSrc && this.settled.type === 'load')
37
+ return;
38
+ this.settled = { src: currentSrc, type: 'load' };
39
+ this.pdsImageLoad.emit({ currentSrc, naturalHeight, naturalWidth });
40
+ };
41
+ this.emitError = () => {
42
+ var _a;
43
+ if (!this.hasSource())
44
+ return;
45
+ const { currentSrc } = this.imageEl;
46
+ if (!this.showsCurrentSource())
47
+ return;
48
+ if (((_a = this.settled) === null || _a === void 0 ? void 0 : _a.src) === currentSrc)
49
+ return;
50
+ this.settled = { src: currentSrc, type: 'error' };
51
+ this.pdsImageError.emit({ currentSrc });
52
+ };
53
+ }
54
+ handleSourceChange() {
55
+ this.settled = null;
56
+ }
57
+ componentDidLoad() {
58
+ const img = this.imageEl;
59
+ // With no `src` or `srcset` there is nothing to load and no event to emit. An empty
60
+ // `src` still counts: the browser treats it as a failed load.
61
+ if (!(img === null || img === void 0 ? void 0 : img.complete) || !this.hasSource())
62
+ return;
63
+ if (img.naturalWidth > 0) {
64
+ this.emitLoad();
65
+ return;
66
+ }
67
+ // `complete` with no intrinsic width is either a broken image or an SVG with no
68
+ // intrinsic size, and only decoding tells them apart. Without `decode()`, leave it
69
+ // to the native events.
70
+ if (typeof img.decode !== 'function')
71
+ return;
72
+ const src = img.currentSrc;
73
+ img.decode().then(() => img.currentSrc === src && this.emitLoad(), () => img.currentSrc === src && this.emitError());
74
+ }
75
+ // With no `src` or `srcset` attribute at all there is nothing to load and no event to
76
+ // emit. Clearing `src` can leave a brief window where Stencil has removed the attribute
77
+ // but a native `error` for the old, momentarily-empty `src` is still in flight (Firefox,
78
+ // Safari) — this check, read live at emit time, is what catches that window.
79
+ hasSource() {
80
+ const img = this.imageEl;
81
+ return img.hasAttribute('src') || img.hasAttribute('srcset');
82
+ }
83
+ /**
84
+ * The resolved absolute URL `src` would become once applied, or `undefined` for no
85
+ * `src`. Resolving it (rather than comparing raw attribute text) matches `img.src`
86
+ * even when Stencil skipped writing the attribute because the resolved value already
87
+ * equaled it, such as a `src` change from a relative to an equivalent absolute URL.
88
+ */
89
+ resolvedSrc() {
90
+ if (this.src == null)
91
+ return undefined;
92
+ try {
93
+ return new URL(this.src, document.baseURI).href;
94
+ }
95
+ catch (_a) {
96
+ return this.src;
97
+ }
98
+ }
99
+ /**
100
+ * Whether the inner image is showing the current `src` and `srcset`. Right after
101
+ * either changes, and before the next render applies it, an event can still arrive
102
+ * for the old source, and it shouldn't be emitted for the new one.
103
+ */
104
+ showsCurrentSource() {
105
+ var _a, _b;
106
+ const img = this.imageEl;
107
+ if (((_a = img.getAttribute('srcset')) !== null && _a !== void 0 ? _a : undefined) !== ((_b = this.srcset) !== null && _b !== void 0 ? _b : undefined))
108
+ return false;
109
+ const expectedSrc = this.resolvedSrc();
110
+ const srcMatches = expectedSrc === undefined ? !img.hasAttribute('src') : img.src === expectedSrc;
111
+ if (!srcMatches)
112
+ return false;
113
+ // Without `srcset`, a `load`/`error` for the right `src` should already be reflected in
114
+ // `currentSrc`. If it isn't yet, a stale native event from the previous source is still in
115
+ // flight — such as a cached image's `load` arriving just after a same-tick re-render
116
+ // already applied the new `src`. Skipped for an empty `src`: an empty attribute resolves
117
+ // `img.src` to the document's own URL, which `currentSrc` never settles to. `currentSrc` is
118
+ // already an absolute URL in a real browser, so resolving it here is a no-op there; it only
119
+ // matters in test environments whose mocked `currentSrc` isn't resolved the way `img.src` is.
120
+ if (!this.srcset && this.src) {
121
+ try {
122
+ return new URL(img.currentSrc, document.baseURI).href === img.src;
123
+ }
124
+ catch (_c) {
125
+ return img.currentSrc === img.src;
126
+ }
127
+ }
128
+ return true;
129
+ }
130
+ imageRatio() {
131
+ var _a;
132
+ const ratios = {
133
+ square: '1 / 1',
134
+ landscape: '4 / 3',
135
+ wide: '16 / 9',
136
+ portrait: '3 / 4',
137
+ tall: '9 / 16',
138
+ };
139
+ return (_a = ratios[this.ratio]) !== null && _a !== void 0 ? _a : this.ratio;
16
140
  }
17
141
  render() {
18
- return (h(Host, { key: '6d2d48c468c39f53d67e63999dd83f3ad61053b5', class: {
142
+ // `!= null`, not `!== undefined`: removing the attribute sets the prop to `null`, not `undefined`.
143
+ const hasRatio = this.ratio != null && this.ratio !== '';
144
+ // `fit` only means something once a ratio gives the image a shape to
145
+ // overflow, so neither is applied until `ratio` is set.
146
+ const ratioStyle = hasRatio
147
+ ? { aspectRatio: this.imageRatio(), objectFit: this.fit }
148
+ : undefined;
149
+ return (h(Host, { key: 'cbc53c10c1ace7c37e3210f2a9f94043d6cd6e0c', class: {
19
150
  'pds-image': true,
20
- }, id: this.componentId }, h("img", { key: '393cc584586e37e8d5b602fbdcda1783bf80cf9b', alt: this.alt, height: this.height, loading: this.loading, sizes: this.sizes, src: this.src, srcset: this.srcset, width: this.width })));
151
+ 'pds-image--has-ratio': hasRatio,
152
+ }, id: this.componentId }, h("img", { key: '139dbcebc7a71aa237deb8e2d7281abd40488096', alt: this.alt, height: this.height, loading: this.loading, sizes: this.sizes, src: this.src, srcset: this.srcset, style: ratioStyle, width: this.width, onLoad: this.emitLoad, onError: this.emitError, ref: (el) => (this.imageEl = el) })));
21
153
  }
22
154
  static get is() { return "pds-image"; }
23
155
  static get encapsulation() { return "shadow"; }
@@ -48,7 +180,7 @@ export class PdsImage {
48
180
  "name": "defaultValue",
49
181
  "text": "''"
50
182
  }],
51
- "text": "The image's alt tag. If none is provided,\nit will default to an empty string, which is desired for\ndecorative images."
183
+ "text": "The image's alt text. Defaults to an empty string, which marks the image\nas decorative and hides it from screen readers, so set it on any image\nthat carries information."
52
184
  },
53
185
  "getter": false,
54
186
  "setter": false,
@@ -75,6 +207,29 @@ export class PdsImage {
75
207
  "reflect": false,
76
208
  "attribute": "component-id"
77
209
  },
210
+ "fit": {
211
+ "type": "string",
212
+ "mutable": false,
213
+ "complexType": {
214
+ "original": "'contain' | 'cover' | 'fill' | 'none' | 'scale-down'",
215
+ "resolved": "\"contain\" | \"cover\" | \"fill\" | \"none\" | \"scale-down\"",
216
+ "references": {}
217
+ },
218
+ "required": false,
219
+ "optional": true,
220
+ "docs": {
221
+ "tags": [{
222
+ "name": "defaultValue",
223
+ "text": "cover"
224
+ }],
225
+ "text": "Determines how the image fills the shape set by `ratio`.\nHas no effect if `ratio` is not set."
226
+ },
227
+ "getter": false,
228
+ "setter": false,
229
+ "reflect": false,
230
+ "attribute": "fit",
231
+ "defaultValue": "'cover'"
232
+ },
78
233
  "height": {
79
234
  "type": "number",
80
235
  "mutable": false,
@@ -87,7 +242,7 @@ export class PdsImage {
87
242
  "optional": true,
88
243
  "docs": {
89
244
  "tags": [],
90
- "text": "The height of the image in pixels. Setting this will\ndevote space in the layout to prevent layout\nshifts when the image is loaded."
245
+ "text": "The height of the image in pixels. `height: auto` lets the loaded image's own\nproportions decide its rendered height, so unlike `width` this does not reserve\nspace before the image loads."
91
246
  },
92
247
  "getter": false,
93
248
  "setter": false,
@@ -117,6 +272,36 @@ export class PdsImage {
117
272
  "attribute": "loading",
118
273
  "defaultValue": "'eager'"
119
274
  },
275
+ "ratio": {
276
+ "type": "string",
277
+ "mutable": false,
278
+ "complexType": {
279
+ "original": "ImageRatioType | (string & Record<never, never>)",
280
+ "resolved": "\"landscape\" | \"portrait\" | \"square\" | \"tall\" | \"wide\" | string & Record<never, never>",
281
+ "references": {
282
+ "ImageRatioType": {
283
+ "location": "import",
284
+ "path": "@utils/types",
285
+ "id": "src/utils/types.ts::ImageRatioType",
286
+ "referenceLocation": "ImageRatioType"
287
+ },
288
+ "Record": {
289
+ "location": "global",
290
+ "id": "global::Record"
291
+ }
292
+ }
293
+ },
294
+ "required": false,
295
+ "optional": true,
296
+ "docs": {
297
+ "tags": [],
298
+ "text": "The aspect ratio the image is sized to, cropping whatever overflows the shape. A preset\n(`square` 1/1, `landscape` 4/3, `wide` 16/9, `portrait` 3/4, `tall` 9/16) or any custom\nCSS ratio, such as `21 / 9`. Use this, not `height` and `width`, to crop: those only\nreserve space, and only `width` reliably does even that."
299
+ },
300
+ "getter": false,
301
+ "setter": false,
302
+ "reflect": false,
303
+ "attribute": "ratio"
304
+ },
120
305
  "sizes": {
121
306
  "type": "string",
122
307
  "mutable": false,
@@ -186,7 +371,7 @@ export class PdsImage {
186
371
  "optional": true,
187
372
  "docs": {
188
373
  "tags": [],
189
- "text": "The width of the image in pixels. Setting this will\ndevote space in the layout to prevent layout\nshifts when the image is loaded."
374
+ "text": "The width of the image in pixels. This reserves the image's width before it\nloads, but not its height: to reserve the height too, set\n`--dimension-aspect-ratio` to the image's own proportions."
190
375
  },
191
376
  "getter": false,
192
377
  "setter": false,
@@ -195,4 +380,60 @@ export class PdsImage {
195
380
  }
196
381
  };
197
382
  }
383
+ static get events() {
384
+ return [{
385
+ "method": "pdsImageLoad",
386
+ "name": "pdsImageLoad",
387
+ "bubbles": true,
388
+ "cancelable": true,
389
+ "composed": true,
390
+ "docs": {
391
+ "tags": [],
392
+ "text": "Emitted when the image loads. Also emitted on first render for an image that\nfinished loading before the component could listen, such as a server-rendered\nimage. Emitted again after `src` or `srcset` changes and the new image loads, or\nwhen the browser picks a different `srcset` candidate, such as on a resize. Bubbles\nand is composed, so a listener on an ancestor gets every `pds-image`'s events \u2014\ncheck `event.target` when more than one is in scope."
393
+ },
394
+ "complexType": {
395
+ "original": "ImageLoadEventDetail",
396
+ "resolved": "ImageLoadEventDetail",
397
+ "references": {
398
+ "ImageLoadEventDetail": {
399
+ "location": "import",
400
+ "path": "./image-interface",
401
+ "id": "src/components/pds-image/image-interface.ts::ImageLoadEventDetail",
402
+ "referenceLocation": "ImageLoadEventDetail"
403
+ }
404
+ }
405
+ }
406
+ }, {
407
+ "method": "pdsImageError",
408
+ "name": "pdsImageError",
409
+ "bubbles": true,
410
+ "cancelable": true,
411
+ "composed": true,
412
+ "docs": {
413
+ "tags": [],
414
+ "text": "Emitted when the image fails to load, such as for a broken or empty `src`. An image\nwith no `src` or `srcset` at all emits neither event, since it has nothing to load.\nEmitted again after `src` or `srcset` changes and the new image fails. Bubbles and is\ncomposed, so a listener on an ancestor gets every `pds-image`'s events \u2014 check\n`event.target` when more than one is in scope."
415
+ },
416
+ "complexType": {
417
+ "original": "ImageErrorEventDetail",
418
+ "resolved": "ImageErrorEventDetail",
419
+ "references": {
420
+ "ImageErrorEventDetail": {
421
+ "location": "import",
422
+ "path": "./image-interface",
423
+ "id": "src/components/pds-image/image-interface.ts::ImageErrorEventDetail",
424
+ "referenceLocation": "ImageErrorEventDetail"
425
+ }
426
+ }
427
+ }
428
+ }];
429
+ }
430
+ static get watchers() {
431
+ return [{
432
+ "propName": "src",
433
+ "methodName": "handleSourceChange"
434
+ }, {
435
+ "propName": "srcset",
436
+ "methodName": "handleSourceChange"
437
+ }];
438
+ }
198
439
  }
@@ -7,9 +7,11 @@ export default {
7
7
 
8
8
  const BaseTemplate = (args) => html` <pds-image
9
9
  alt="${args.alt}"
10
+ fit="${args.fit}"
10
11
  height="${args.height}"
11
12
  component-id="${args.componentId}"
12
13
  ?loading=${args.loading}
14
+ ratio="${args.ratio}"
13
15
  sizes="${args.sizes}"
14
16
  src="${args.src}"
15
17
  srcset="${args.srcset}"
@@ -18,6 +20,98 @@ const BaseTemplate = (args) => html` <pds-image
18
20
 
19
21
  const SizesAndSrcsetTemplate = (args) => html`<pds-image alt="${args.alt}" sizes="${args.sizes}" src="${args.src}" srcset="${args.srcset}" />`;
20
22
 
23
+ const RatioTemplate = (args) => html`<div style="width: 320px">
24
+ <pds-image alt="${args.alt}" fit="${args.fit}" ratio="${args.ratio}" src="${args.src}" />
25
+ </div>`;
26
+
27
+ // The source is portrait while every shape below is not, so each one shows what
28
+ // the component does with the overflow.
29
+ const FitTemplate = (args) => html`<div style="display: flex; gap: 1rem;">
30
+ ${['cover', 'contain', 'fill'].map(
31
+ (fit) => html`<figure style="margin: 0; width: 160px;">
32
+ <pds-image alt="${args.alt}" fit="${fit}" ratio="${args.ratio}" src="${args.src}"></pds-image>
33
+ <figcaption><code>fit="${fit}"</code></figcaption>
34
+ </figure>`,
35
+ )}
36
+ </div>`;
37
+
38
+ // Each frame covers its image with a placeholder until `pdsImageLoad` removes it, or shows
39
+ // an error message on `pdsImageError`. The placeholder sits over the image rather than
40
+ // hiding it, since a hidden image with `loading="lazy"` never loads. The loading placeholder
41
+ // is hidden from screen readers, which already announce the image's alt. The error message's
42
+ // `role="status"` region stays rendered the whole time, faded out by opacity rather than
43
+ // `hidden`, so only its text changes when the error arrives — a region that goes from hidden
44
+ // to visible with its text already set often isn't announced.
45
+ const showState = (event, state) => {
46
+ const frame = event.target.closest('[data-image-frame]');
47
+ const error = frame.querySelector('[data-image-error]');
48
+ frame.querySelector('[data-image-placeholder]').hidden = state !== 'loading';
49
+ error.style.opacity = state === 'error' ? '1' : '0';
50
+ error.querySelector('pds-text').textContent = state === 'error' ? "This image couldn't load" : '';
51
+ };
52
+
53
+ const overlayStyle = 'position: absolute; inset: 0;';
54
+
55
+ const EventsTemplate = (args) => {
56
+ // Reloading changes `src`, which emits the events again for the new image.
57
+ const reload = (event) => {
58
+ event.target.closest('[data-image-events]').querySelectorAll('[data-image-frame]').forEach((frame) => {
59
+ const image = frame.querySelector('pds-image');
60
+ const url = new URL(image.getAttribute('src'), window.location.href);
61
+ url.searchParams.set('reload', Date.now());
62
+ frame.querySelector('[data-image-placeholder]').hidden = false;
63
+ frame.querySelector('[data-image-error]').style.opacity = '0';
64
+ frame.querySelector('[data-image-error] pds-text').textContent = '';
65
+ image.setAttribute('src', url.href);
66
+ });
67
+ };
68
+
69
+ return html`<pds-box data-image-events direction="column" gap="md">
70
+ <pds-box gap="md" wrap>
71
+ ${[
72
+ { label: 'Loads', src: args.src },
73
+ { label: 'Fails to load', src: args.brokenSrc },
74
+ ].map(
75
+ ({ label, src }) => html`<div data-image-frame style="width: 240px;">
76
+ <div style="position: relative;">
77
+ <pds-image
78
+ alt="${args.alt}"
79
+ ratio="landscape"
80
+ src="${src}"
81
+ @pdsImageLoad=${(event) => showState(event, 'loaded')}
82
+ @pdsImageError=${(event) => showState(event, 'error')}
83
+ ></pds-image>
84
+ <pds-box
85
+ data-image-placeholder
86
+ aria-hidden="true"
87
+ align-items="center"
88
+ background-color="var(--pine-color-background-muted)"
89
+ justify-content="center"
90
+ style="${overlayStyle}"
91
+ >
92
+ <pds-text color="secondary" size="sm">Loading image…</pds-text>
93
+ </pds-box>
94
+ <pds-box
95
+ data-image-error
96
+ role="status"
97
+ align-items="center"
98
+ background-color="var(--pine-color-background-inset)"
99
+ justify-content="center"
100
+ style="${overlayStyle} opacity: 0; pointer-events: none;"
101
+ >
102
+ <pds-text color="secondary" size="sm"></pds-text>
103
+ </pds-box>
104
+ </div>
105
+ <pds-text size="sm">${label}</pds-text>
106
+ </div>`,
107
+ )}
108
+ </pds-box>
109
+ <div>
110
+ <pds-button variant="secondary" @pdsClick=${reload}>Reload images</pds-button>
111
+ </div>
112
+ </pds-box>`;
113
+ };
114
+
21
115
  export const Default = BaseTemplate.bind();
22
116
  Default.args = {
23
117
  alt: 'Random Bear',
@@ -31,5 +125,27 @@ SizesAndSrcset.args = {
31
125
  alt: 'Random Bear',
32
126
  sizes: '(max-width: 450px) 150px, 600px',
33
127
  src: 'https://placebear.com/600/200',
34
- srcset: 'https://placebear.com/150/150 400w, https://placebear.com/600/200',
128
+ srcset: 'https://placebear.com/150/50 150w, https://placebear.com/600/200 600w',
129
+ }
130
+
131
+ export const Ratio = RatioTemplate.bind();
132
+ Ratio.args = {
133
+ alt: 'Random Bear',
134
+ fit: 'cover',
135
+ ratio: 'wide',
136
+ src: 'https://placebear.com/200/300',
137
+ }
138
+
139
+ export const Fit = FitTemplate.bind();
140
+ Fit.args = {
141
+ alt: 'Random Bear',
142
+ ratio: 'wide',
143
+ src: 'https://placebear.com/200/300',
144
+ }
145
+
146
+ export const Events = EventsTemplate.bind();
147
+ Events.args = {
148
+ alt: 'Random Bear',
149
+ brokenSrc: 'https://placebear.com/does-not-exist.png',
150
+ src: 'https://placebear.com/400/300',
35
151
  }
@@ -9,6 +9,11 @@ import { danger } from "@pine-ds/icons/icons";
9
9
  * @slot prepend - Content to be displayed before the input field
10
10
  * @slot suffix - Content that is displayed visually within the input field after the input field
11
11
  * @slot action - Content to be displayed in the label area, typically for help icons or links
12
+ * @part action - Exposes the wrapper around the `action` slot for styling. Appears only when the `action` slot has content.
13
+ * @part append - Exposes the wrapper around the `append` slot for styling. Appears only when the `append` slot has content.
14
+ * @part prefix - Exposes the wrapper around the `prefix` slot for styling. Appears only when the `prefix` slot has content.
15
+ * @part prepend - Exposes the wrapper around the `prepend` slot for styling. Appears only when the `prepend` slot has content.
16
+ * @part suffix - Exposes the wrapper around the `suffix` slot for styling. Appears only when the `suffix` slot has content.
12
17
  */
13
18
  export class PdsInput {
14
19
  constructor() {
@@ -37,7 +42,7 @@ export class PdsInput {
37
42
  this.hasAction = false;
38
43
  /**
39
44
  * Determines the type of control that will be displayed
40
- * `'email'`, `'number'`, `'password'`, `'tel'`, `'text'`, `'url'`
45
+ * `'email'`, `'number'`, `'password'`, `'search'`, `'tel'`, `'text'`, `'url'`
41
46
  * @defaultValue "text"
42
47
  */
43
48
  this.type = 'text';
@@ -289,10 +294,10 @@ export class PdsInput {
289
294
  'has-prepend': this.hasPrepend,
290
295
  'has-append': this.hasAppend,
291
296
  };
292
- return (h(Host, { key: '1706e29a68d25a8bb83c36d6bddace04a448f6f5', "aria-disabled": this.disabled ? 'true' : null, "aria-readonly": this.readonly ? 'true' : null, "has-prefix": this.hasPrefix ? 'true' : null, "has-suffix": this.hasSuffix ? 'true' : null, "has-prepend": this.hasPrepend ? 'true' : null, "has-append": this.hasAppend ? 'true' : null, "has-action": this.hasAction && !this.hideLabel ? 'true' : null, "full-width": this.fullWidth ? 'true' : null }, h("div", { key: '1488b6ea995c4ffc4068757f566494c0ac073950', class: "pds-input" }, label && (h("div", { key: 'e2fe4e461e626648ec51882e92e02fea179e3e13', class: {
297
+ return (h(Host, { key: '12dd9f60e5b7401fdad3d81aacf174d1465dfdd6', "aria-disabled": this.disabled ? 'true' : null, "aria-readonly": this.readonly ? 'true' : null, "has-prefix": this.hasPrefix ? 'true' : null, "has-suffix": this.hasSuffix ? 'true' : null, "has-prepend": this.hasPrepend ? 'true' : null, "has-append": this.hasAppend ? 'true' : null, "has-action": this.hasAction && !this.hideLabel ? 'true' : null, "full-width": this.fullWidth ? 'true' : null }, h("div", { key: '5c8c1488cd9041333cf22e5ef36c367d8bddcc21', class: "pds-input" }, label && (h("div", { key: '2fd1d0a71714e11ff7675f3ab376c859b717122e', class: {
293
298
  'pds-input__label-wrapper': true,
294
299
  'visually-hidden': this.hideLabel,
295
- } }, h("label", { key: 'c926a6fbb3130afdc6c86d509b92fb6650391c4b', htmlFor: componentId, class: "pds-input__label" }, h("span", { key: 'dbbaf9d0db49f949f69f1faf848e7c6193e32793' }, label, this.required && h("span", { key: '42e6325a0f5ee276ed92cf2eb71942c268c3d1aa', class: "pds-input__required-indicator" }, " *"))), !this.hideLabel && this.renderAction())), h("div", { key: '4715743733f2d7d3e4edf9ac4ab6d69ffde04d00', class: inputWrapperClasses }, this.renderPrepend(), this.renderPrefix(), h("input", Object.assign({ key: '438ac0fc6d497a8227c83e628d29d4633ffc208a', ref: (input) => (this.nativeInput = input), class: "pds-input__field", "aria-describedby": assignDescription(componentId, invalid, helperMessage, errorMessage), "aria-invalid": invalid ? "true" : undefined, autocomplete: this.autocomplete, disabled: disabled, id: componentId, max: this.max, maxlength: this.maxlength, min: this.min, minlength: this.minlength, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, step: this.step, type: this.type, value: value, onInput: this.onInputEvent, onChange: this.onChangeEvent, onBlur: this.onBlurEvent, onFocus: this.onFocusEvent, onKeyDown: this.onKeyDownEvent, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.renderSuffix(), this.renderAppend()), helperMessage && (h("p", { key: '43b5c3a332072f19a38be316565602932c61504d', class: "pds-input__helper-message", id: messageId(componentId, 'helper') }, helperMessage)), errorMessage && (h("p", { key: '54fd4fc2dcbc645377edbe4d04cfd82c7d1591e8', class: "pds-input__error-message", id: messageId(componentId, 'error') }, h("pds-icon", { key: '2bd509a575ec5c7a548955dd7f706d7c1d42557e', "aria-hidden": "true", icon: danger, size: "small" }), errorMessage)))));
300
+ } }, h("label", { key: '82623092a61b5158daa39937a8c8e01081cb6fa3', htmlFor: componentId, class: "pds-input__label" }, h("span", { key: '10a973c6191458f1133c34ccfdfd5342d330829d' }, label, this.required && h("span", { key: '413deb83a0c8b7f0ab0e5648a7bde19166477a1c', class: "pds-input__required-indicator" }, " *"))), !this.hideLabel && this.renderAction())), h("div", { key: 'c90ff99e08ab480453015fa293d38077204ea07c', class: inputWrapperClasses }, this.renderPrepend(), this.renderPrefix(), h("input", Object.assign({ key: 'd558ffc9369bd19c454f88c48acde45a4a992122', ref: (input) => (this.nativeInput = input), class: "pds-input__field", "aria-describedby": assignDescription(componentId, invalid, helperMessage, errorMessage), "aria-invalid": invalid ? "true" : undefined, autocomplete: this.autocomplete, disabled: disabled, id: componentId, max: this.max, maxlength: this.maxlength, min: this.min, minlength: this.minlength, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, step: this.step, type: this.type, value: value, onInput: this.onInputEvent, onChange: this.onChangeEvent, onBlur: this.onBlurEvent, onFocus: this.onFocusEvent, onKeyDown: this.onKeyDownEvent, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.renderSuffix(), this.renderAppend()), helperMessage && (h("p", { key: '747fd78b735924efb0a0e074ef20eac011c8887b', class: "pds-input__helper-message", id: messageId(componentId, 'helper') }, helperMessage)), errorMessage && (h("p", { key: '1a1ce87923e24bd70fc85f410c1eb3e69f16171f', class: "pds-input__error-message", id: messageId(componentId, 'error') }, h("pds-icon", { key: 'be6bb7c6e24b379afd7cd6977b5555f680b41f6b', "aria-hidden": "true", icon: danger, size: "small" }), errorMessage)))));
296
301
  }
297
302
  static get is() { return "pds-input"; }
298
303
  static get encapsulation() { return "shadow"; }
@@ -359,7 +364,7 @@ export class PdsInput {
359
364
  "optional": true,
360
365
  "docs": {
361
366
  "tags": [],
362
- "text": "Sets the number of milliseconds to wait before updating the value."
367
+ "text": "Sets the number of milliseconds to wait after each input event before emitting `pdsInput`."
363
368
  },
364
369
  "getter": false,
365
370
  "setter": false,
@@ -397,7 +402,7 @@ export class PdsInput {
397
402
  "optional": true,
398
403
  "docs": {
399
404
  "tags": [],
400
- "text": "Specifies the error message and provides an error-themed treatment to the field."
405
+ "text": "Displays an error message below the input and gives the field error styling. It becomes the input's accessible description only while `invalid` is set."
401
406
  },
402
407
  "getter": false,
403
408
  "setter": false,
@@ -435,7 +440,7 @@ export class PdsInput {
435
440
  "optional": true,
436
441
  "docs": {
437
442
  "tags": [],
438
- "text": "Determines whether or not the input field is invalid or throws an error."
443
+ "text": "Determines whether or not the input is invalid."
439
444
  },
440
445
  "getter": false,
441
446
  "setter": false,
@@ -685,7 +690,7 @@ export class PdsInput {
685
690
  "name": "defaultValue",
686
691
  "text": "\"text\""
687
692
  }],
688
- "text": "Determines the type of control that will be displayed\n`'email'`, `'number'`, `'password'`, `'tel'`, `'text'`, `'url'`"
693
+ "text": "Determines the type of control that will be displayed\n`'email'`, `'number'`, `'password'`, `'search'`, `'tel'`, `'text'`, `'url'`"
689
694
  },
690
695
  "getter": false,
691
696
  "setter": false,
@@ -792,7 +797,7 @@ export class PdsInput {
792
797
  "composed": true,
793
798
  "docs": {
794
799
  "tags": [],
795
- "text": "Emitted when the value has changed.\n\nThis event will not emit when programmatically setting the `value` property."
800
+ "text": "Emitted when the user changes the value and then presses `Enter` or leaves the field.\n`detail` has `value`, as a string, and `event`, the native event behind it, usually `change`.\n\nThis event will not emit when programmatically setting the `value` property, unless the field has focus at the time;\nthen it emits when the field loses focus."
796
801
  },
797
802
  "complexType": {
798
803
  "original": "InputChangeEventDetail",
@@ -834,7 +839,7 @@ export class PdsInput {
834
839
  "composed": true,
835
840
  "docs": {
836
841
  "tags": [],
837
- "text": "Emitted when a keyboard input occurs."
842
+ "text": "Emitted after each `input` event, such as typing or pasting. With `debounce`, it waits until that many milliseconds have passed since the last one.\n`detail` has `value`, the current value as a string, and `event`, the native `input` event.\n\nThis event will not emit when programmatically setting the `value` property."
838
843
  },
839
844
  "complexType": {
840
845
  "original": "InputInputEventDetail",