@pine-ds/core 4.12.0 → 5.0.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 (216) hide show
  1. package/components/pds-accordion.js +1 -1
  2. package/components/pds-alert.js +1 -1
  3. package/components/pds-avatar.js +1 -1
  4. package/components/pds-button2.js +1 -1
  5. package/components/pds-chip2.js +1 -1
  6. package/components/pds-copytext.js +1 -1
  7. package/components/pds-divider.js +1 -1
  8. package/components/pds-dropdown-menu-item.js +1 -1
  9. package/components/pds-dropdown-menu-separator.js +1 -1
  10. package/components/pds-dropdown-menu.js +1 -1
  11. package/components/pds-filter.js +1 -1
  12. package/components/pds-filters.js +1 -1
  13. package/components/pds-image.js +1 -1
  14. package/components/pds-multiselect.js +1 -1
  15. package/components/pds-popover.js +1 -1
  16. package/components/pds-property.js +1 -1
  17. package/components/pds-radio-group.js +1 -1
  18. package/components/pds-sortable-item.js +1 -1
  19. package/components/pds-sortable.js +1 -1
  20. package/components/pds-switch.js +1 -1
  21. package/components/pds-table.js +1 -1
  22. package/components/pds-tabs.js +1 -1
  23. package/components/pds-tooltip.js +1 -1
  24. package/dist/cjs/pds-accordion.cjs.entry.js +1 -1
  25. package/dist/cjs/pds-alert.cjs.entry.js +1 -1
  26. package/dist/cjs/pds-avatar.cjs.entry.js +1 -1
  27. package/dist/cjs/pds-button.cjs.entry.js +1 -1
  28. package/dist/cjs/pds-chip.cjs.entry.js +1 -1
  29. package/dist/cjs/pds-copytext.cjs.entry.js +1 -1
  30. package/dist/cjs/pds-divider.cjs.entry.js +1 -1
  31. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +1 -1
  32. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +1 -1
  33. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +1 -1
  34. package/dist/cjs/pds-filter.cjs.entry.js +1 -1
  35. package/dist/cjs/pds-filters.cjs.entry.js +1 -1
  36. package/dist/cjs/pds-image.cjs.entry.js +2 -2
  37. package/dist/cjs/pds-multiselect.cjs.entry.js +26 -7
  38. package/dist/cjs/pds-popover.cjs.entry.js +1 -1
  39. package/dist/cjs/pds-property.cjs.entry.js +1 -1
  40. package/dist/cjs/pds-radio-group.cjs.entry.js +20 -15
  41. package/dist/cjs/pds-sortable-item.cjs.entry.js +2 -2
  42. package/dist/cjs/pds-sortable.cjs.entry.js +1 -1
  43. package/dist/cjs/pds-switch.cjs.entry.js +5 -5
  44. package/dist/cjs/pds-table.cjs.entry.js +2 -2
  45. package/dist/cjs/pds-tabs.cjs.entry.js +1 -1
  46. package/dist/cjs/pds-tooltip.cjs.entry.js +2 -3
  47. package/dist/collection/components/pds-accordion/pds-accordion.js +2 -2
  48. package/dist/collection/components/pds-alert/pds-alert.js +2 -2
  49. package/dist/collection/components/pds-avatar/pds-avatar.js +2 -2
  50. package/dist/collection/components/pds-button/pds-button.js +2 -2
  51. package/dist/collection/components/pds-chip/pds-chip.js +2 -2
  52. package/dist/collection/components/pds-copytext/pds-copytext.js +2 -2
  53. package/dist/collection/components/pds-divider/pds-divider.js +2 -2
  54. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +2 -2
  55. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +2 -2
  56. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +2 -2
  57. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +2 -2
  58. package/dist/collection/components/pds-filters/pds-filters.js +2 -2
  59. package/dist/collection/components/pds-image/pds-image.js +3 -3
  60. package/dist/collection/components/pds-input/stories/pds-input.stories.js +1 -0
  61. package/dist/collection/components/pds-multiselect/pds-multiselect.css +21 -2
  62. package/dist/collection/components/pds-multiselect/pds-multiselect.js +28 -9
  63. package/dist/collection/components/pds-multiselect/stories/pds-multiselect.stories.js +2 -2
  64. package/dist/collection/components/pds-popover/pds-popover.js +2 -2
  65. package/dist/collection/components/pds-popover/stories/pds-popover.stories.js +1 -1
  66. package/dist/collection/components/pds-property/pds-property.js +2 -2
  67. package/dist/collection/components/pds-radio-group/pds-radio-group.js +21 -16
  68. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +3 -3
  69. package/dist/collection/components/pds-sortable/pds-sortable.js +2 -2
  70. package/dist/collection/components/pds-switch/pds-switch.js +10 -10
  71. package/dist/collection/components/pds-table/pds-table.js +3 -3
  72. package/dist/collection/components/pds-tabs/pds-tabs.js +2 -2
  73. package/dist/collection/components/pds-tooltip/pds-tooltip.js +3 -4
  74. package/dist/docs.json +32 -32
  75. package/dist/esm/pds-accordion.entry.js +1 -1
  76. package/dist/esm/pds-alert.entry.js +1 -1
  77. package/dist/esm/pds-avatar.entry.js +1 -1
  78. package/dist/esm/pds-button.entry.js +1 -1
  79. package/dist/esm/pds-chip.entry.js +1 -1
  80. package/dist/esm/pds-copytext.entry.js +1 -1
  81. package/dist/esm/pds-divider.entry.js +1 -1
  82. package/dist/esm/pds-dropdown-menu-item.entry.js +1 -1
  83. package/dist/esm/pds-dropdown-menu-separator.entry.js +1 -1
  84. package/dist/esm/pds-dropdown-menu.entry.js +1 -1
  85. package/dist/esm/pds-filter.entry.js +1 -1
  86. package/dist/esm/pds-filters.entry.js +1 -1
  87. package/dist/esm/pds-image.entry.js +2 -2
  88. package/dist/esm/pds-multiselect.entry.js +26 -7
  89. package/dist/esm/pds-popover.entry.js +1 -1
  90. package/dist/esm/pds-property.entry.js +1 -1
  91. package/dist/esm/pds-radio-group.entry.js +20 -15
  92. package/dist/esm/pds-sortable-item.entry.js +2 -2
  93. package/dist/esm/pds-sortable.entry.js +1 -1
  94. package/dist/esm/pds-switch.entry.js +5 -5
  95. package/dist/esm/pds-table.entry.js +2 -2
  96. package/dist/esm/pds-tabs.entry.js +1 -1
  97. package/dist/esm/pds-tooltip.entry.js +2 -3
  98. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  99. package/dist/esm-es5/pds-alert.entry.js +1 -1
  100. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  101. package/dist/esm-es5/pds-button.entry.js +1 -1
  102. package/dist/esm-es5/pds-chip.entry.js +1 -1
  103. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  104. package/dist/esm-es5/pds-divider.entry.js +1 -1
  105. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  106. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  107. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  108. package/dist/esm-es5/pds-filter.entry.js +1 -1
  109. package/dist/esm-es5/pds-filters.entry.js +1 -1
  110. package/dist/esm-es5/pds-image.entry.js +1 -1
  111. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  112. package/dist/esm-es5/pds-popover.entry.js +1 -1
  113. package/dist/esm-es5/pds-property.entry.js +1 -1
  114. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  115. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  116. package/dist/esm-es5/pds-sortable.entry.js +1 -1
  117. package/dist/esm-es5/pds-switch.entry.js +1 -1
  118. package/dist/esm-es5/pds-table.entry.js +1 -1
  119. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  120. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  121. package/dist/pine-core/{p-d676926d.system.entry.js → p-191eb9e5.system.entry.js} +1 -1
  122. package/dist/pine-core/{p-736ea7dd.entry.js → p-1d4ecc35.entry.js} +1 -1
  123. package/dist/pine-core/{p-ddf4b9b5.system.entry.js → p-1e0c9738.system.entry.js} +1 -1
  124. package/dist/pine-core/{p-e4ebea88.system.entry.js → p-2482e4ab.system.entry.js} +1 -1
  125. package/dist/pine-core/p-3338fc2e.entry.js +1 -0
  126. package/dist/pine-core/{p-00891b8d.system.entry.js → p-34d22a45.system.entry.js} +1 -1
  127. package/dist/pine-core/p-35b90796.entry.js +1 -0
  128. package/dist/pine-core/p-38148f5b.entry.js +1 -0
  129. package/dist/pine-core/{p-51680c9c.system.entry.js → p-39264dfb.system.entry.js} +1 -1
  130. package/dist/pine-core/{p-0a7570dd.system.entry.js → p-3aed0418.system.entry.js} +1 -1
  131. package/dist/pine-core/{p-d1283e8d.entry.js → p-3dd879fd.entry.js} +1 -1
  132. package/dist/pine-core/p-3f1c05cd.system.entry.js +1 -0
  133. package/dist/pine-core/{p-b00b07e3.entry.js → p-42376f2c.entry.js} +1 -1
  134. package/dist/pine-core/p-4263038f.entry.js +1 -0
  135. package/dist/pine-core/{p-2ddcd845.system.entry.js → p-563baadd.system.entry.js} +1 -1
  136. package/dist/pine-core/p-587bd9ed.entry.js +1 -0
  137. package/dist/pine-core/p-5c7dfa7a.entry.js +1 -0
  138. package/dist/pine-core/{p-16fceef6.system.entry.js → p-63d47dd4.system.entry.js} +1 -1
  139. package/dist/pine-core/{p-55535481.system.entry.js → p-66e61921.system.entry.js} +1 -1
  140. package/dist/pine-core/p-6a965119.entry.js +1 -0
  141. package/dist/pine-core/{p-8afd5f5b.system.entry.js → p-6fdc6df9.system.entry.js} +1 -1
  142. package/dist/pine-core/{p-8e17a6d8.system.entry.js → p-863ff553.system.entry.js} +1 -1
  143. package/dist/pine-core/{p-de3b319e.system.entry.js → p-87cadd6f.system.entry.js} +1 -1
  144. package/dist/pine-core/{p-e2541eeb.entry.js → p-8db554fe.entry.js} +1 -1
  145. package/dist/pine-core/{p-60e65fe0.system.entry.js → p-931a0ccd.system.entry.js} +1 -1
  146. package/dist/pine-core/p-94fd9595.entry.js +1 -0
  147. package/dist/pine-core/{p-c9630934.system.entry.js → p-96bccf85.system.entry.js} +1 -1
  148. package/dist/pine-core/p-9a63bf72.entry.js +1 -0
  149. package/dist/pine-core/{p-f9bdaadd.system.entry.js → p-9da10cfb.system.entry.js} +1 -1
  150. package/dist/pine-core/p-XK45dzWR.system.js +1 -1
  151. package/dist/pine-core/{p-57edd301.system.entry.js → p-a0fa77b1.system.entry.js} +1 -1
  152. package/dist/pine-core/p-a1575919.entry.js +1 -0
  153. package/dist/pine-core/p-aae96744.entry.js +1 -0
  154. package/dist/pine-core/p-b379d9bc.system.entry.js +1 -0
  155. package/dist/pine-core/p-badde164.entry.js +1 -0
  156. package/dist/pine-core/p-c65f4eaa.system.entry.js +1 -0
  157. package/dist/pine-core/{p-97145eee.system.entry.js → p-c6c5ada6.system.entry.js} +1 -1
  158. package/dist/pine-core/p-d4b0122f.system.entry.js +1 -0
  159. package/dist/pine-core/{p-1ab52531.system.entry.js → p-d61a0fe8.system.entry.js} +1 -1
  160. package/dist/pine-core/{p-1a013a5c.system.entry.js → p-de3f4a28.system.entry.js} +1 -1
  161. package/dist/pine-core/p-e334af06.entry.js +1 -0
  162. package/dist/pine-core/p-e4216ff6.entry.js +1 -0
  163. package/dist/pine-core/p-e68044b3.entry.js +1 -0
  164. package/dist/pine-core/p-e75d8bc1.entry.js +1 -0
  165. package/dist/pine-core/{p-a5e9c583.entry.js → p-e871cfce.entry.js} +1 -1
  166. package/dist/pine-core/{p-8deeda07.entry.js → p-eee042d3.entry.js} +1 -1
  167. package/dist/pine-core/{p-1edef412.entry.js → p-f65127f1.entry.js} +1 -1
  168. package/dist/pine-core/pine-core.esm.js +1 -1
  169. package/dist/types/components/pds-accordion/pds-accordion.d.ts +1 -1
  170. package/dist/types/components/pds-alert/pds-alert.d.ts +1 -1
  171. package/dist/types/components/pds-avatar/pds-avatar.d.ts +1 -1
  172. package/dist/types/components/pds-button/pds-button.d.ts +1 -1
  173. package/dist/types/components/pds-chip/pds-chip.d.ts +1 -1
  174. package/dist/types/components/pds-copytext/pds-copytext.d.ts +1 -1
  175. package/dist/types/components/pds-divider/pds-divider.d.ts +1 -1
  176. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.d.ts +1 -1
  177. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.d.ts +1 -1
  178. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +1 -1
  179. package/dist/types/components/pds-filters/pds-filter/pds-filter.d.ts +2 -1
  180. package/dist/types/components/pds-filters/pds-filters.d.ts +1 -1
  181. package/dist/types/components/pds-image/pds-image.d.ts +1 -1
  182. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +11 -3
  183. package/dist/types/components/pds-popover/pds-popover.d.ts +2 -1
  184. package/dist/types/components/pds-property/pds-property.d.ts +1 -1
  185. package/dist/types/components/pds-radio-group/pds-radio-group.d.ts +2 -1
  186. package/dist/types/components/pds-sortable/pds-sortable-item/pds-sortable-item.d.ts +1 -1
  187. package/dist/types/components/pds-sortable/pds-sortable.d.ts +1 -1
  188. package/dist/types/components/pds-switch/pds-switch.d.ts +8 -5
  189. package/dist/types/components/pds-table/pds-table.d.ts +1 -1
  190. package/dist/types/components/pds-tabs/pds-tabs.d.ts +2 -1
  191. package/dist/types/components/pds-tooltip/pds-tooltip.d.ts +2 -1
  192. package/dist/types/components.d.ts +57 -57
  193. package/dist/vscode.html-data.json +30 -30
  194. package/hydrate/index.js +75 -52
  195. package/hydrate/index.mjs +75 -52
  196. package/package.json +2 -2
  197. package/dist/pine-core/p-1f998e3e.entry.js +0 -1
  198. package/dist/pine-core/p-2b6becc2.entry.js +0 -1
  199. package/dist/pine-core/p-3c229091.entry.js +0 -1
  200. package/dist/pine-core/p-5d582798.entry.js +0 -1
  201. package/dist/pine-core/p-627a94da.entry.js +0 -1
  202. package/dist/pine-core/p-72ff5ad2.system.entry.js +0 -1
  203. package/dist/pine-core/p-84d4ae26.entry.js +0 -1
  204. package/dist/pine-core/p-a4ce12ef.entry.js +0 -1
  205. package/dist/pine-core/p-b7b29392.entry.js +0 -1
  206. package/dist/pine-core/p-bdab6c9f.entry.js +0 -1
  207. package/dist/pine-core/p-c1dc7692.entry.js +0 -1
  208. package/dist/pine-core/p-cb9227f6.system.entry.js +0 -1
  209. package/dist/pine-core/p-ceef0eb1.entry.js +0 -1
  210. package/dist/pine-core/p-e554bd64.entry.js +0 -1
  211. package/dist/pine-core/p-e6427c87.entry.js +0 -1
  212. package/dist/pine-core/p-e7002cee.entry.js +0 -1
  213. package/dist/pine-core/p-e72e8b8f.entry.js +0 -1
  214. package/dist/pine-core/p-ef3a855f.system.entry.js +0 -1
  215. package/dist/pine-core/p-f9063262.system.entry.js +0 -1
  216. package/dist/pine-core/p-fea4296d.entry.js +0 -1
@@ -8,7 +8,7 @@ export class PdsDropdownMenuSeparator {
8
8
  this.disabled = false;
9
9
  }
10
10
  render() {
11
- return (h(Host, { key: '74a214d61042d5759af5aef9d6410ed1a267083c', id: this.componentId }, h("hr", { key: 'c521eda51523fce09bd408af2586645fc9a9cd03' })));
11
+ return (h(Host, { key: '247de1e84622fc816f541e95da022c7d07b3852c' }, h("hr", { key: 'd66e06eee972fa962003152a4ec7703d7c66d620' })));
12
12
  }
13
13
  static get is() { return "pds-dropdown-menu-separator"; }
14
14
  static get encapsulation() { return "shadow"; }
@@ -36,7 +36,7 @@ export class PdsDropdownMenuSeparator {
36
36
  "optional": false,
37
37
  "docs": {
38
38
  "tags": [],
39
- "text": "A unique identifier used for the underlying component `id` attribute."
39
+ "text": "A unique identifier for this component instance. Does not set the host element's `id` attribute \u2014 set `id` directly if you need one."
40
40
  },
41
41
  "getter": false,
42
42
  "setter": false,
@@ -444,7 +444,7 @@ export class PdsDropdownMenu {
444
444
  }
445
445
  }
446
446
  render() {
447
- return (h(Host, { key: '1776921b263178df0de2cdf07a9fb81c668381b6', id: this.componentId }, h("slot", { key: '952fdc2b6bb3f1fca5a17dc1962af0e4c38f92e2', name: "trigger", onSlotchange: this.handleTriggerSlotChange }), h("pds-box", { key: 'f5f95cebdcf4a4d78d0e4bc47b99c681045f8d38', "border-radius": "sm", display: "flex", direction: "column", class: "pds-dropdown-menu--panel is-hidden", shadow: "100", part: "menu-panel" }, h("div", { key: '8bff8a8dd06fe1f433bc512bc0ac9030fc9714e7', class: { 'pds-dropdown-menu__header': true, 'is-hidden': !this.hasHeader } }, h("slot", { key: '1c248f137414dd00037d333b1e07c6b04a7b079d', name: "header", onSlotchange: this.handleHeaderSlotChange })), h("div", { key: 'db9954f26762a65e762f8c7b3dfd60e363ff8573', class: "pds-dropdown-menu__items", role: "menu", "aria-orientation": "vertical" }, h("slot", { key: 'd5cb929db03966d673b23de150970744936cf26d', onSlotchange: this.handleSlotChange })))));
447
+ return (h(Host, { key: '3baa07d7761a581606704b5e79e68d7bc585ff36' }, h("slot", { key: '527afc60b7b6f7c869c62924fd00791de2538955', name: "trigger", onSlotchange: this.handleTriggerSlotChange }), h("pds-box", { key: '2efeff541331bc0b39ed271984c680e14892ed0b', "border-radius": "sm", display: "flex", direction: "column", class: "pds-dropdown-menu--panel is-hidden", shadow: "100", part: "menu-panel" }, h("div", { key: '591d61a9c12e10aef64638f1f51073321bddae69', class: { 'pds-dropdown-menu__header': true, 'is-hidden': !this.hasHeader } }, h("slot", { key: 'c3a7fd69e0074be99508ae6b6c14bbd78fbc1f03', name: "header", onSlotchange: this.handleHeaderSlotChange })), h("div", { key: '84c4f0cb77eadc86a5bb2b59c4b33f8691d2adfb', class: "pds-dropdown-menu__items", role: "menu", "aria-orientation": "vertical" }, h("slot", { key: '8c16bfd158a2be6009545562940c38ca433e1c47', onSlotchange: this.handleSlotChange })))));
448
448
  }
449
449
  static get is() { return "pds-dropdown-menu"; }
450
450
  static get encapsulation() { return "shadow"; }
@@ -472,7 +472,7 @@ export class PdsDropdownMenu {
472
472
  "optional": false,
473
473
  "docs": {
474
474
  "tags": [],
475
- "text": "A unique identifier used for the underlying component `id` attribute."
475
+ "text": "A unique identifier for this component instance. Does not set the host element's `id` attribute \u2014 set `id` directly if you need one."
476
476
  },
477
477
  "getter": false,
478
478
  "setter": false,
@@ -502,7 +502,7 @@ export class PdsFilter {
502
502
  return null;
503
503
  }
504
504
  render() {
505
- return (h(Host, { key: '0876855dacf0172f83a6e1afcc8b9b1b6acf1251', id: this.componentId }, h("button", { key: 'e20b93644a520ed3351fb5802d1e6f0cb2465248', class: this.getTriggerClasses(), type: "button", popoverTarget: this.variant !== 'clear' ? `${this.componentId}-popover` : undefined, popoverTargetAction: this.variant !== 'clear' ? 'toggle' : undefined, onKeyDown: this.variant === 'clear' ? this.handleKeyDown : undefined, onClick: (event) => this.handleClick(event), part: "button", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": this.variant !== 'clear' ? 'true' : undefined, "aria-controls": this.variant !== 'clear' ? `${this.componentId}-popover` : undefined }, h("span", { key: '075e2f221d297ede0a52185853acbd3e74b99339', class: "pds-filter__button-content", part: "button-content" }, this.renderIcon(), this.text && (h("span", { key: 'cd1d3a15e0969c3d960786a7fd7fd7b3195dd4de', class: "pds-filter__button-text", part: "button-text" }, this.text)), this.renderDropdownIcon())), this.variant !== 'clear' && (h("div", { key: '6524cb11b96f03ef5c528325a950c9f80f5ae9fa', ref: el => this.popoverEl = el, id: `${this.componentId}-popover`, class: "pds-filter__popover", popover: "auto", part: "popover" }, h("slot", { key: '06cc2ca22068ccedbddf3ff69ce4a352fd01d142' })))));
505
+ return (h(Host, { key: 'ae727227de30a285588182dce73fa4867e66bb89' }, h("button", { key: '45ff52e203ff936d42c9ba037066756035d74d98', class: this.getTriggerClasses(), type: "button", popoverTarget: this.variant !== 'clear' ? `${this.componentId}-popover` : undefined, popoverTargetAction: this.variant !== 'clear' ? 'toggle' : undefined, onKeyDown: this.variant === 'clear' ? this.handleKeyDown : undefined, onClick: (event) => this.handleClick(event), part: "button", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": this.variant !== 'clear' ? 'true' : undefined, "aria-controls": this.variant !== 'clear' ? `${this.componentId}-popover` : undefined }, h("span", { key: '05fb0de22068e9fcc79d8903a617513db0d71da1', class: "pds-filter__button-content", part: "button-content" }, this.renderIcon(), this.text && (h("span", { key: '4589b7fc0aed1ab3d7e6c06fea123553d2b77a3e', class: "pds-filter__button-text", part: "button-text" }, this.text)), this.renderDropdownIcon())), this.variant !== 'clear' && (h("div", { key: '4cbad5c76e8e28eb4a09d4a2c8a3d7c30024f114', ref: el => this.popoverEl = el, id: `${this.componentId}-popover`, class: "pds-filter__popover", popover: "auto", part: "popover" }, h("slot", { key: 'c915f596e9d9efe1a7b1bd2edcf9b704d986438d' })))));
506
506
  }
507
507
  static get is() { return "pds-filter"; }
508
508
  static get encapsulation() { return "shadow"; }
@@ -530,7 +530,7 @@ export class PdsFilter {
530
530
  "optional": false,
531
531
  "docs": {
532
532
  "tags": [],
533
- "text": "A unique identifier used for the underlying component `id` attribute."
533
+ "text": "A unique identifier for this component instance, used to build its internal popover's `id`.\nDoes not set the host element's `id` attribute \u2014 set `id` directly if you need one."
534
534
  },
535
535
  "getter": false,
536
536
  "setter": false,
@@ -4,7 +4,7 @@ import { Host, h } from "@stencil/core";
4
4
  */
5
5
  export class PdsFilters {
6
6
  render() {
7
- return (h(Host, { key: '6f785fc222e3b5b7cf932f704b56aa7f1f52ead3', id: this.componentId }, h("div", { key: '0ffd2894cdeb1e632228b4c3fa523069dcffa4b2', class: "pds-filters" }, h("slot", { key: 'a3f42dedcda1b0fec78a33793d085791d9b9fc5c' }))));
7
+ return (h(Host, { key: '4a5ed2d7e80d82be9517682ee66e464fa61ea45b' }, h("div", { key: '7cabd4f934c17b14268c28f9ce99e8900795c516', class: "pds-filters" }, h("slot", { key: 'a1d01f1be8885c3cf68f98df59d67f56709f00e8' }))));
8
8
  }
9
9
  static get is() { return "pds-filters"; }
10
10
  static get encapsulation() { return "shadow"; }
@@ -32,7 +32,7 @@ export class PdsFilters {
32
32
  "optional": false,
33
33
  "docs": {
34
34
  "tags": [],
35
- "text": "A unique identifier used for the underlying component `id` attribute."
35
+ "text": "A unique identifier for this component instance. Does not set the host element's `id` attribute \u2014 set `id` directly if you need one."
36
36
  },
37
37
  "getter": false,
38
38
  "setter": false,
@@ -146,10 +146,10 @@ export class PdsImage {
146
146
  const ratioStyle = hasRatio
147
147
  ? { aspectRatio: this.imageRatio(), objectFit: this.fit }
148
148
  : undefined;
149
- return (h(Host, { key: 'cbc53c10c1ace7c37e3210f2a9f94043d6cd6e0c', class: {
149
+ return (h(Host, { key: 'f01ae0cef8a08b686a62affe14e58661115f1e2e', class: {
150
150
  'pds-image': true,
151
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) })));
152
+ } }, h("img", { key: '3e609d3b73154ea5c83ae2df58352b0021075373', 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) })));
153
153
  }
154
154
  static get is() { return "pds-image"; }
155
155
  static get encapsulation() { return "shadow"; }
@@ -200,7 +200,7 @@ export class PdsImage {
200
200
  "optional": false,
201
201
  "docs": {
202
202
  "tags": [],
203
- "text": "A unique identifier used for the underlying component `id` attribute."
203
+ "text": "A unique identifier for this component instance. Does not set the host element's `id` attribute \u2014 set `id` directly if you need one."
204
204
  },
205
205
  "getter": false,
206
206
  "setter": false,
@@ -128,6 +128,7 @@ Invalid.args = {
128
128
  componentId: 'pds-input-invalid-example',
129
129
  label: 'Email',
130
130
  errorMessage: "Please provide a valid email address",
131
+ invalid: true,
131
132
  type: 'email',
132
133
  value: 'Frank Dux'
133
134
  };
@@ -71,6 +71,25 @@
71
71
  cursor: not-allowed;
72
72
  }
73
73
 
74
+ .pds-multiselect__trigger-label {
75
+ display: grid;
76
+ flex: 1;
77
+ grid-template-columns: minmax(0, 1fr);
78
+ min-width: 0;
79
+ }
80
+
81
+ .pds-multiselect__trigger-sizer {
82
+ grid-area: 1/1;
83
+ overflow: hidden;
84
+ visibility: hidden;
85
+ white-space: nowrap;
86
+ }
87
+
88
+ .pds-multiselect__trigger-label > .pds-multiselect__trigger-text {
89
+ contain: inline-size;
90
+ grid-area: 1/1;
91
+ }
92
+
74
93
  .pds-multiselect__trigger-text {
75
94
  color: var(--pine-color-text-strong);
76
95
  flex: 1;
@@ -224,7 +243,7 @@
224
243
  display: block;
225
244
  font: var(--pine-typography-body-sm-medium);
226
245
  letter-spacing: var(--pine-letter-spacing);
227
- padding: var(--pine-dimension-sm) var(--pine-dimension-xs) var(--pine-dimension-2xs);
246
+ padding: var(--pine-dimension-sm) var(--pine-dimension-sm) var(--pine-dimension-2xs);
228
247
  text-transform: uppercase;
229
248
  }
230
249
 
@@ -244,7 +263,7 @@
244
263
  border-radius: var(--pine-dimension-xs);
245
264
  cursor: pointer;
246
265
  display: flex;
247
- padding: var(--pine-dimension-2xs) var(--pine-dimension-xs);
266
+ padding: var(--pine-dimension-xs) var(--pine-dimension-sm);
248
267
  /* stylelint-disable-next-line pine-design-system/no-hardcoded-motion -- 0.15s off-grid micro-transition; no exact motion token */
249
268
  transition: background 0.15s;
250
269
  }
@@ -87,6 +87,7 @@ export class PdsMultiselect {
87
87
  this.pillRemoveLabel = 'Remove';
88
88
  /**
89
89
  * Singular form of the selected-count trigger text. Pass a translated string to localize it; `{count}` is interpolated.
90
+ * A single selection shows the item's name instead, so this applies to other counts that a locale's plural rules treat as singular, and to a single selection whose item has no text.
90
91
  * @defaultValue '{count} item'
91
92
  */
92
93
  this.selectedCountLabelOne = '{count} item';
@@ -142,8 +143,9 @@ export class PdsMultiselect {
142
143
  this.hideSelectedItems = false;
143
144
  /**
144
145
  * Display mode for selected items outside the dropdown panel.
145
- * `'count'` shows "N item(s)" text in the trigger (default). `'pill'` renders
146
- * selected items as dismissible pds-chip tags.
146
+ * `'count'` shows the item's name in the trigger when one is selected and
147
+ * "N items" text otherwise (default). `'pill'` renders selected items as
148
+ * dismissible pds-chip tags.
147
149
  * @default 'count'
148
150
  */
149
151
  this.selectedDisplay = 'count';
@@ -1276,6 +1278,7 @@ export class PdsMultiselect {
1276
1278
  return (h("div", { class: "pds-multiselect__pill-list pds-multiselect__pill-list--below", "aria-label": this.selectedItemsLabel }, this.selectedItems.map(item => (h("pds-chip", { key: String(item.id), "component-id": `${this.componentId}-pill-${item.id}`, variant: variant, size: "md", sentiment: "neutral", "dismiss-label": this.pillRemoveLabel, onPdsTagCloseClick: this.handlePillRemove(item) }, item.text)))));
1277
1279
  }
1278
1280
  getTriggerText() {
1281
+ var _a;
1279
1282
  const count = this.selectedItems.length;
1280
1283
  if (count === 0 || (this.selectedDisplay === 'pill' && this.pillPosition === 'below')) {
1281
1284
  // Fall back to a non-empty string: the trigger's accessible name comes from
@@ -1283,8 +1286,24 @@ export class PdsMultiselect {
1283
1286
  // (WCAG 4.1.2). The prop is localizable; this last-resort default is not.
1284
1287
  return this.placeholder || 'Select...';
1285
1288
  }
1289
+ // One selection shows its name; the count only says something once there's more than one.
1290
+ // An option without text still falls back to the count, so the trigger is never nameless.
1291
+ if (count === 1 && ((_a = this.selectedItems[0].text) === null || _a === void 0 ? void 0 : _a.trim())) {
1292
+ return this.selectedItems[0].text;
1293
+ }
1286
1294
  return pluralize(this.el, count, this.resolveCountForms());
1287
1295
  }
1296
+ /**
1297
+ * The text that sets the trigger's width. A single selection's name could be any length, so the
1298
+ * trigger keeps the width the count would give it and the name truncates inside that, rather than
1299
+ * widening a multiselect that has no width of its own.
1300
+ */
1301
+ getTriggerSizerText() {
1302
+ const text = this.getTriggerText();
1303
+ const count = this.selectedItems.length;
1304
+ const showsName = count === 1 && text === this.selectedItems[0].text && !(this.selectedDisplay === 'pill' && this.pillPosition === 'below');
1305
+ return showsName ? pluralize(this.el, count, this.resolveCountForms()) : text;
1306
+ }
1288
1307
  /**
1289
1308
  * The `one`/`other` props are the ergonomic English defaults; `selectedCountLabels`
1290
1309
  * (object or JSON-string attribute) layers full CLDR forms on top for locales
@@ -1311,10 +1330,10 @@ export class PdsMultiselect {
1311
1330
  }
1312
1331
  render() {
1313
1332
  const hasSelections = this.selectedItems.length > 0;
1314
- return (h(Host, { key: '2e5f7188cbb3928df3098644f9437449f5d5128d', "aria-disabled": this.disabled ? 'true' : null }, h("div", { key: 'f6b7d9d70e7635510bbcff648e1547c9cc222005', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (h("label", { key: '9e3f0bc63e20e0a1f03f87f4b89c478331bf4001', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
1333
+ return (h(Host, { key: '12298f9692ac8644230195cc1abe0e26bb5715a9', "aria-disabled": this.disabled ? 'true' : null }, h("div", { key: '5d98f9edae2f471d9662c65454fbef7b2dec83e1', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (h("label", { key: '2f6d4162d0649978bc53c34327b6149dc971fd4c', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
1315
1334
  'pds-multiselect__label': true,
1316
1335
  'visually-hidden': this.hideLabel,
1317
- } }, this.label)), h("div", { key: 'efdf274b7223f77d646ac838f4163291ae310c31', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), style: { width: this.triggerWidth } }, this.slottedTriggerEl ? (h("slot", { name: "trigger" })) : this.selectedDisplay === 'pill' && this.pillPosition === 'inline' ? (h("div", { ref: el => (this.pillInlineTriggerEl = el || undefined), part: "trigger", class: {
1336
+ } }, this.label)), h("div", { key: '7a337e876c8fff854e5b9a067ef89b9d5136df4f', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), style: { width: this.triggerWidth } }, this.slottedTriggerEl ? (h("slot", { name: "trigger" })) : this.selectedDisplay === 'pill' && this.pillPosition === 'inline' ? (h("div", { ref: el => (this.pillInlineTriggerEl = el || undefined), part: "trigger", class: {
1318
1337
  'pds-multiselect__trigger': true,
1319
1338
  'pds-multiselect__trigger--open': this.isOpen,
1320
1339
  'pds-multiselect__trigger--disabled': this.disabled,
@@ -1327,10 +1346,10 @@ export class PdsMultiselect {
1327
1346
  'pds-multiselect__trigger--disabled': this.disabled,
1328
1347
  'pds-multiselect__trigger--invalid': this.invalid || !!this.errorMessage,
1329
1348
  'pds-multiselect__trigger--has-value': hasSelections,
1330
- }, id: this.componentId, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, h("span", { class: {
1349
+ }, id: this.componentId, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, h("span", { class: "pds-multiselect__trigger-label" }, h("span", { class: "pds-multiselect__trigger-sizer", "aria-hidden": "true" }, this.getTriggerSizerText()), h("span", { class: {
1331
1350
  'pds-multiselect__trigger-text': true,
1332
1351
  'pds-multiselect__trigger-text--placeholder': !hasSelections || (this.selectedDisplay === 'pill' && this.pillPosition === 'below'),
1333
- } }, this.getTriggerText()), h("pds-icon", { "aria-hidden": "true", class: "pds-multiselect__icon", icon: enlarge }))), this.renderDropdown()), this.selectedDisplay === 'pill' && this.pillPosition === 'below' && this.renderBelowPills(), h("span", { key: 'd90262ab6971d16dab6f8a367d038ab2607d888c', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (h("p", { key: '4baf142546462bea84ccb67b7ce288517f1de754', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (h("p", { key: 'fdea175d93bc566d18cbad560e970f8c61495b1d', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, h("pds-icon", { key: '63977a25e35def8a6a4b39b0039e2da08f99d02e', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage)), h("div", { key: 'cb43771ef04a682a6d14d80b0b37618acc5748ad', style: { display: 'none' } }, h("slot", { key: '7733626ae7bd4ba83cb30bbbdb81c28e413e46a3' })))));
1352
+ } }, this.getTriggerText())), h("pds-icon", { "aria-hidden": "true", class: "pds-multiselect__icon", icon: enlarge }))), this.renderDropdown()), this.selectedDisplay === 'pill' && this.pillPosition === 'below' && this.renderBelowPills(), h("span", { key: 'd3cf5bb64a6c296c84af30628698559c0c904117', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (h("p", { key: 'a711280151ff360758143906a76fa2d25f4078a9', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (h("p", { key: '17411d6bb55843f45f8d7ee410b627de846eed65', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, h("pds-icon", { key: '446ffc0ed08b7856f0ef8c49bdf06b6011404a12', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage)), h("div", { key: 'a83ed6c5d84cbf38f267f7e15bd871d09534c554', style: { display: 'none' } }, h("slot", { key: '294ce6a2bd4405854161aed5d8166fcc86e211e3' })))));
1334
1353
  }
1335
1354
  static get is() { return "pds-multiselect"; }
1336
1355
  static get encapsulation() { return "shadow"; }
@@ -1630,7 +1649,7 @@ export class PdsMultiselect {
1630
1649
  "name": "defaultValue",
1631
1650
  "text": "'{count} item'"
1632
1651
  }],
1633
- "text": "Singular form of the selected-count trigger text. Pass a translated string to localize it; `{count}` is interpolated."
1652
+ "text": "Singular form of the selected-count trigger text. Pass a translated string to localize it; `{count}` is interpolated.\nA single selection shows the item's name instead, so this applies to other counts that a locale's plural rules treat as singular, and to a single selection whose item has no text."
1634
1653
  },
1635
1654
  "getter": false,
1636
1655
  "setter": false,
@@ -1683,7 +1702,7 @@ export class PdsMultiselect {
1683
1702
  "name": "defaultValue",
1684
1703
  "text": "undefined"
1685
1704
  }],
1686
- "text": "Full CLDR plural forms for the selected-count trigger text, for locales with more than the English `one`/`other` categories (e.g. Polish `few`/`many`, Arabic `zero`/`two`). Accepts an object property or a JSON string attribute keyed by CLDR category \u2014 `{ one, other, few, many, two, zero }`. Any form omitted here falls back to `selectedCountLabelOne`/`selectedCountLabelOther`. `{count}` is interpolated."
1705
+ "text": "Full CLDR plural forms for the selected-count trigger text, for locales with more than the English `one`/`other` categories (e.g. Polish `few`/`many`, Arabic `zero`/`two`). Accepts an object property or a JSON string attribute keyed by CLDR category \u2014 `{ one, other, few, many, two, zero }`. Any form omitted here falls back to `selectedCountLabelOne`/`selectedCountLabelOther`. `{count}` is interpolated. A single selection shows the item's name instead of any form, unless the item has no text."
1687
1706
  },
1688
1707
  "getter": false,
1689
1708
  "setter": false,
@@ -1999,7 +2018,7 @@ export class PdsMultiselect {
1999
2018
  "name": "default",
2000
2019
  "text": "'count'"
2001
2020
  }],
2002
- "text": "Display mode for selected items outside the dropdown panel.\n`'count'` shows \"N item(s)\" text in the trigger (default). `'pill'` renders\nselected items as dismissible pds-chip tags."
2021
+ "text": "Display mode for selected items outside the dropdown panel.\n`'count'` shows the item's name in the trigger when one is selected and\n\"N items\" text otherwise (default). `'pill'` renders selected items as\ndismissible pds-chip tags."
2003
2022
  },
2004
2023
  "getter": false,
2005
2024
  "setter": false,
@@ -7,7 +7,7 @@ export default {
7
7
  parameters: {
8
8
  docs: {
9
9
  description: {
10
- component: 'A multiselect component with a filter-style dropdown. Displays selected count in the trigger, with search and selected items shown in the dropdown panel. Use triggerWidth, panelWidth, and minWidth to control sizing.',
10
+ component: 'A multiselect component with a filter-style dropdown. Displays the name of a single selected item, or the selected count, in the trigger, with search and selected items shown in the dropdown panel. Use triggerWidth, panelWidth, and minWidth to control sizing.',
11
11
  },
12
12
  },
13
13
  },
@@ -22,7 +22,7 @@ export default {
22
22
  },
23
23
  placeholder: {
24
24
  control: 'text',
25
- description: 'Placeholder text shown in the trigger when no items are selected. When items are selected, shows "X item(s)" instead.',
25
+ description: 'Placeholder text shown in the trigger when no items are selected. When one item is selected, shows its name instead; when more are selected, shows "N items".',
26
26
  },
27
27
  searchPlaceholder: {
28
28
  control: 'text',
@@ -1034,7 +1034,7 @@ export class PdsPopover {
1034
1034
  portal.style.left = `${left - origin.left}px`;
1035
1035
  }
1036
1036
  render() {
1037
- return (h(Host, { key: 'c76e121eb82b0d4f89f49bc83ff592ccf5774d57', id: this.componentId }, h("span", { key: '01061721f373e6f83729624d19f0beac0d6f093e', class: "pds-popover__trigger-wrapper" }, h("slot", { key: 'e68a2bd22ee6657e534da3d097bdaf3189815262', name: "trigger", onSlotchange: this.handleTriggerSlotChange })), h("span", { key: 'd48301ebb6a9e0729083829a0587a0a285faedda', class: "pds-popover__tab-guard", ref: (el) => (this.tabGuardEl = el !== null && el !== void 0 ? el : null), onFocus: this.handleTabGuardFocus }), h("div", { key: 'c7d2e348545adaa7566da7c4f6b13a7ee78d1322', class: "pds-popover__content-slot-wrapper" }, h("slot", { key: '312f54fa917c135adc2f2a5ccbbb3159a980df24', onSlotchange: this.handleContentSlotChange }))));
1037
+ return (h(Host, { key: '1767e44f8f0fba0938cc99fefdeb786cf9131384' }, h("span", { key: 'b5369451958d62562f007d600e7567809f281bfb', class: "pds-popover__trigger-wrapper" }, h("slot", { key: '30a8273c6365eff7fd8265966ae09d66ac84e0a9', name: "trigger", onSlotchange: this.handleTriggerSlotChange })), h("span", { key: 'a562458380244ca76af047edd00d40d012bc30ce', class: "pds-popover__tab-guard", ref: (el) => (this.tabGuardEl = el !== null && el !== void 0 ? el : null), onFocus: this.handleTabGuardFocus }), h("div", { key: '36db874a9f1bcdf0dc52d9cce368c5fc4f296b62', class: "pds-popover__content-slot-wrapper" }, h("slot", { key: '295f000fcdcaa4ef5249f4e98ed83cbd467351b0', onSlotchange: this.handleContentSlotChange }))));
1038
1038
  }
1039
1039
  static get is() { return "pds-popover"; }
1040
1040
  static get encapsulation() { return "shadow"; }
@@ -1128,7 +1128,7 @@ export class PdsPopover {
1128
1128
  "optional": false,
1129
1129
  "docs": {
1130
1130
  "tags": [],
1131
- "text": "A unique identifier used for the underlying component `id` attribute."
1131
+ "text": "A unique identifier for this component instance, used to build its portal element's `id`.\nDoes not set the host element's `id` attribute \u2014 set `id` directly if you need one."
1132
1132
  },
1133
1133
  "getter": false,
1134
1134
  "setter": false,
@@ -73,7 +73,7 @@ export const WithContent = (args) => html`
73
73
  <pds-button
74
74
  variant="unstyled"
75
75
  icon-only
76
- onclick="document.getElementById('${args.componentId || 'popover-rich'}').hide()"
76
+ onclick="document.querySelector('pds-popover[component-id=${args.componentId || 'popover-rich'}]').hide()"
77
77
  aria-label="Close"
78
78
  >
79
79
  <pds-icon slot="start" name="remove"></pds-icon>
@@ -10,7 +10,7 @@ export class PdsProperty {
10
10
  this.icon = 'star';
11
11
  }
12
12
  render() {
13
- return (h(Host, { key: '198ffd747b7a84a6f58a1b072890fc8bd3ed93aa', id: this.componentId }, h("pds-box", { key: 'be71f3d96efea0a45f357d888f71dbe5ad8b68d6', "align-items": "center", gap: "xs" }, h("pds-icon", { key: '1a52407e00b158d5e6a515ad4b07ed3407d31f75', icon: this.icon, size: "var(--pine-dimension-sm)", "aria-hidden": "true" }), h("slot", { key: '46ac5019b27bdd079c7853abeef8f7c240d19c2c' }))));
13
+ return (h(Host, { key: '1bdcebaa09a696b18871651ef2615d0d400ddbb8' }, h("pds-box", { key: 'a4dc57f9e758b78fe3d4f2c096fadec53288e47b', "align-items": "center", gap: "xs" }, h("pds-icon", { key: '2a89c7e1231163b5e4ac20d3d0c3d43af414a11a', icon: this.icon, size: "var(--pine-dimension-sm)", "aria-hidden": "true" }), h("slot", { key: '4c4d2ee5ed05ad2ec53bbe4f79fa11c04c8eb44d' }))));
14
14
  }
15
15
  static get is() { return "pds-property"; }
16
16
  static get encapsulation() { return "shadow"; }
@@ -38,7 +38,7 @@ export class PdsProperty {
38
38
  "optional": false,
39
39
  "docs": {
40
40
  "tags": [],
41
- "text": "A unique identifier used for the underlying component `id` attribute."
41
+ "text": "A unique identifier for this component instance. Does not set the host element's `id` attribute \u2014 set `id` directly if you need one."
42
42
  },
43
43
  "getter": false,
44
44
  "setter": false,
@@ -2,6 +2,8 @@ import { Host, h, forceUpdate } from "@stencil/core";
2
2
  import { HostStylingKeeper } from "../../utils/attributes";
3
3
  import { messageId } from "../../utils/form";
4
4
  import { danger } from "@pine-ds/icons/icons";
5
+ // The label and message ids a group without component-id generates for itself.
6
+ const STALE_REFERENCE = /^radio-group-.+__(label|helper-message|error-message)$/;
5
7
  /**
6
8
  * @slot (default) - Child pds-radio components
7
9
  * @lightDom renders-markup
@@ -121,18 +123,21 @@ export class PdsRadioGroup {
121
123
  : `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
122
124
  this._groupId = `radio-group-${uniqueId}`;
123
125
  }
124
- // A restored or cloned host still carries the id and ARIA references an earlier instance wrote, pointing at
125
- // that instance's label and messages. Drop them so this render writes its own: on first load, Stencil keeps a
126
- // host attribute that's already there.
127
- const previousId = this.el.getAttribute('id');
128
- if (previousId && previousId !== this._groupId) {
129
- ['aria-labelledby', 'aria-describedby'].forEach((name) => {
130
- var _a, _b;
131
- const ids = (_b = (_a = this.el.getAttribute(name)) === null || _a === void 0 ? void 0 : _a.split(/\s+/)) !== null && _b !== void 0 ? _b : [];
132
- if (ids.some((id) => id.startsWith(`${previousId}__`)))
133
- this.el.removeAttribute(name);
134
- });
135
- }
126
+ // A restored or cloned host can still carry the ARIA references an earlier instance wrote, pointing at that
127
+ // instance's label and messages. Drop those tokens so this render writes its own, and keep any others.
128
+ ['aria-labelledby', 'aria-describedby'].forEach((name) => {
129
+ var _a;
130
+ const ids = (_a = this.el.getAttribute(name)) === null || _a === void 0 ? void 0 : _a.split(/\s+/).filter(Boolean);
131
+ if (!ids)
132
+ return;
133
+ const kept = ids.filter((id) => !STALE_REFERENCE.test(id) || id.startsWith(`${this._groupId}__`));
134
+ if (kept.length === ids.length)
135
+ return;
136
+ if (kept.length)
137
+ this.el.setAttribute(name, kept.join(' '));
138
+ else
139
+ this.el.removeAttribute(name);
140
+ });
136
141
  }
137
142
  componentDidLoad() {
138
143
  if (!this.name) {
@@ -222,13 +227,13 @@ export class PdsRadioGroup {
222
227
  'aria-describedby': ariaDescribedBy,
223
228
  'aria-labelledby': ariaLabelledBy === this.labelId ? ariaLabelledBy : undefined,
224
229
  });
225
- return (h(Host, { key: 'c0d30ada4c215a2a316e55e0c564eb2d74f811be', class: hostClass, id: this._groupId, role: "radiogroup", "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, style: {
230
+ return (h(Host, { key: 'd379f29bc62f1855c1a244c3edd800b390a98f54', class: hostClass, role: "radiogroup", "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, style: {
226
231
  '--pds-radio-group-gap': gapValue,
227
- } }, this.groupLabel && (h("div", { key: 'c237d7907b458131fd248b50b36f45df3c49f084', class: "pds-radio-group__label", id: this.labelId }, this.groupLabel)), h("div", { key: 'd31f36e69c4ee2fc9f9c86f0a25d56a4a5272372', class: {
232
+ } }, this.groupLabel && (h("div", { key: 'e2db8af21186405b0c7b6c23422e34b46ca6bbbe', class: "pds-radio-group__label", id: this.labelId }, this.groupLabel)), h("div", { key: 'f818e2b84374979cda34d635ff6e9d1982d67c46', class: {
228
233
  'pds-radio-group__radios': true,
229
234
  'pds-radio-group__radios--row': this.direction === 'row',
230
235
  'pds-radio-group__radios--column': this.direction === 'column',
231
- } }, h("slot", { key: '20153277b51dfe816596d7c4d7d1d12eaf08362a', onSlotchange: () => this.updateChildRadios() })), this.helperMessage && (h("div", { key: '1d48f78e3c3c56c949868a868bf9d73bdff81beb', class: "pds-radio-group__message", id: messageId(this._groupId, 'helper') }, this.helperMessage)), this.errorMessage && (h("div", { key: 'c2d0d3f60b9a598d60b372945852f0a7e512abbf', class: "pds-radio-group__message pds-radio-group__message--error", id: messageId(this._groupId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: '2f187a2fea00871f9980cc0fe799c758723174fe', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage))));
236
+ } }, h("slot", { key: 'f4d61c9495773c33119fcddf270f5a4d345e507b', onSlotchange: () => this.updateChildRadios() })), this.helperMessage && (h("div", { key: '9ba493a3baf04085fba52f9f825024210122f0b5', class: "pds-radio-group__message", id: messageId(this._groupId, 'helper') }, this.helperMessage)), this.errorMessage && (h("div", { key: '3a11a19683b897b565d615d888c7f9357e0e1ed3', class: "pds-radio-group__message pds-radio-group__message--error", id: messageId(this._groupId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: 'c57a25a382cbcc216fffeab849eca06a78cb4b60', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage))));
232
237
  }
233
238
  static get is() { return "pds-radio-group"; }
234
239
  static get encapsulation() { return "scoped"; }
@@ -256,7 +261,7 @@ export class PdsRadioGroup {
256
261
  "optional": false,
257
262
  "docs": {
258
263
  "tags": [],
259
- "text": "A unique identifier used for the underlying component `id` attribute."
264
+ "text": "A unique identifier for this component instance, used to build its helper and error message `id`s.\nDoes not set the host element's `id` attribute \u2014 set `id` directly if you need one."
260
265
  },
261
266
  "getter": false,
262
267
  "setter": false,
@@ -68,10 +68,10 @@ export class PdsSortableItem {
68
68
  this.hostKeeper.record(hostClasses);
69
69
  const existingHandle = this.el.querySelector('.pds-sortable-item__handle');
70
70
  const wasPressed = (existingHandle === null || existingHandle === void 0 ? void 0 : existingHandle.getAttribute('aria-pressed')) === 'true';
71
- return (h(Host, { key: '5fdef76101ce86c7769bb49bff9869246c3bdb32', class: hostClasses, id: this.componentId }, (this.showHandle || reorderable) && (h("div", { key: 'e54b5a0006b395dc67ff78c6a115e4e498cae096', class: {
71
+ return (h(Host, { key: '93566ff82e0603508392df14f6ecec11872e822c', class: hostClasses }, (this.showHandle || reorderable) && (h("div", { key: 'c3c6bd592ab827a0fc513c101b5afec8acc62cf4', class: {
72
72
  'pds-sortable-item__handle': true,
73
73
  'pds-sortable-item__handle--hidden': !this.showHandle,
74
- }, role: reorderable ? 'button' : undefined, tabindex: reorderable ? '0' : undefined, "aria-label": reorderable ? formatMessage(sortable.handleLabel, { item: sortableItemLabel(this.el) }) : undefined, "aria-pressed": reorderable ? String(wasPressed) : undefined }, h("pds-icon", { key: 'e7099e03ea68c9f48c50d20868835081c4fdbc75', "aria-hidden": "true", icon: handleIcon }))), h("slot", { key: 'c75d20569c150da8d0698657db787aa6d27e3408' }), this.enableActions && (h("div", { key: '14281b2eaedfa57ff90342fb1dcbff48cd656242', class: "pds-sortable-item__actions" }, h("slot", { key: 'ec1f75b331d136a00fc39db9ab2cadd86a416e8d', name: "sortable-item-actions" })))));
74
+ }, role: reorderable ? 'button' : undefined, tabindex: reorderable ? '0' : undefined, "aria-label": reorderable ? formatMessage(sortable.handleLabel, { item: sortableItemLabel(this.el) }) : undefined, "aria-pressed": reorderable ? String(wasPressed) : undefined }, h("pds-icon", { key: 'a71dd5c7c7d368ec0ef326d7f86f33bcaeecf238', "aria-hidden": "true", icon: handleIcon }))), h("slot", { key: 'cf372e7f7a234829b77ae28604bfdbdced27b1e8' }), this.enableActions && (h("div", { key: 'abf8848c6c5ed09ddcf1b09be21f0ba851385f10', class: "pds-sortable-item__actions" }, h("slot", { key: 'e6b3b897c17529f5d803d72e6fcbeed66880f083', name: "sortable-item-actions" })))));
75
75
  }
76
76
  static get is() { return "pds-sortable-item"; }
77
77
  static get encapsulation() { return "scoped"; }
@@ -122,7 +122,7 @@ export class PdsSortableItem {
122
122
  "optional": false,
123
123
  "docs": {
124
124
  "tags": [],
125
- "text": "A unique identifier used for the sortable item `id` attribute."
125
+ "text": "A unique identifier for this component instance. Does not set the host element's `id` attribute \u2014 set `id` directly if you need one."
126
126
  },
127
127
  "getter": false,
128
128
  "setter": false,
@@ -416,7 +416,7 @@ export class PdsSortable {
416
416
  render() {
417
417
  const classNames = this.classNames();
418
418
  this.hostKeeper.record(classNames);
419
- return (h(Host, { key: 'a1fb28574e3aa92a923c4baeecec690d4052601f', class: classNames, id: this.componentId, onFocusin: this.handleFocusIn, onFocusout: this.handleFocusOut, onKeyDown: this.handleKeyDown, onClick: this.handleClick }, h("slot", { key: 'b9a255d4f94a6b9976a4cac7e142e45210125828' })));
419
+ return (h(Host, { key: 'f758a8b71485f09185ba511b304c48c3fcdb5298', class: classNames, onFocusin: this.handleFocusIn, onFocusout: this.handleFocusOut, onKeyDown: this.handleKeyDown, onClick: this.handleClick }, h("slot", { key: 'fecbafc235475dc67fb1d7fe051c42d2a51b4bfe' })));
420
420
  }
421
421
  static get is() { return "pds-sortable"; }
422
422
  static get encapsulation() { return "scoped"; }
@@ -490,7 +490,7 @@ export class PdsSortable {
490
490
  "optional": false,
491
491
  "docs": {
492
492
  "tags": [],
493
- "text": "A unique identifier used for the sortable container `id` attribute."
493
+ "text": "A unique identifier for this component instance. Does not set the host element's `id` attribute \u2014 set `id` directly if you need one."
494
494
  },
495
495
  "getter": false,
496
496
  "setter": false,
@@ -24,7 +24,7 @@ export class PdsSwitch {
24
24
  */
25
25
  this.disabled = false;
26
26
  /**
27
- * Determines the input 'invalid' state, signifying an error is present.
27
+ * Determines whether or not the switch is invalid.
28
28
  */
29
29
  this.invalid = false;
30
30
  /**
@@ -175,12 +175,12 @@ export class PdsSwitch {
175
175
  const hostClass = this.switchClassNames();
176
176
  const ariaDisabled = this.isDisabled() ? 'true' : null;
177
177
  this.hostKeeper.record(hostClass, {}, { 'aria-disabled': ariaDisabled });
178
- return (h(Host, { key: 'e5100ae3ecfac3bb556582507cc628b2455ae6cc', class: hostClass, "aria-disabled": ariaDisabled }, h("label", { key: 'c337b8c4dc381c3a745100c707792c11711c01a1', htmlFor: this.componentId }, h("input", Object.assign({ key: 'f18ae27e7c91ef4d54b0192a04130420b991c9ff', "aria-describedby": this.ownDescriptionId(), "aria-invalid": this.invalid ? "true" : undefined, checked: this.checked, class: "pds-switch__input", disabled: this.isDisabled(), id: this.componentId, name: this.name ? this.name : this.componentId, onChange: this.onSwitchUpdate,
178
+ return (h(Host, { key: '4c6f12c064caead89979cc4aa0ef25c4581381c3', class: hostClass, "aria-disabled": ariaDisabled }, h("label", { key: 'c97164a6d6318be6cbcc026373e3d5c0a9316d56', htmlFor: this.componentId }, h("input", Object.assign({ key: 'dfaf7408c3fbbed38bd0732ff156e53f57235100', "aria-describedby": this.ownDescriptionId(), "aria-invalid": this.invalid ? "true" : undefined, checked: this.checked, class: "pds-switch__input", disabled: this.isDisabled(), id: this.componentId, name: this.name ? this.name : this.componentId, onChange: this.onSwitchUpdate,
179
179
  // A description added after the switch, or replaced by a framework or a DOM morph, is picked up by the
180
180
  // time focus reaches the switch and it's announced.
181
- onFocus: this.forwardDescription, ref: (el) => (this.inputEl = el), required: this.required, type: "checkbox", value: this.value }, this.inheritedAttributes)), h("span", { key: '4bddfc080db7fee6fa8080e890918757dacde3fb', class: this.hideLabel ? 'visually-hidden' : '' }, h("slot", { key: 'c9302409719113e12f6debb426c78dd0caaee88a', name: "label", onSlotchange: this.updateHasLabelSlot }), !this.hasLabelSlot && this.label)), this.helperMessage &&
182
- h("div", { key: '60785b9779cb2d50e6f0f2b32179106256f55ebf', class: `pds-switch__message`, id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
183
- h("div", { key: '9b258e9302c5ef959e8c06bee780d7d43144359b', class: `pds-switch__message pds-switch__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: 'f8df779a8c65a6f0b6ea139ff3c31cca76eb48fa', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage)));
181
+ onFocus: this.forwardDescription, ref: (el) => (this.inputEl = el), required: this.required, type: "checkbox", value: this.value }, this.inheritedAttributes)), h("span", { key: '5e621fa2881bb2d1eddd3dcbc33173f3cf49bd93', class: this.hideLabel ? 'visually-hidden' : '' }, h("slot", { key: 'ef682ce320b8d9f2897676af97e0b4d55c55358a', name: "label", onSlotchange: this.updateHasLabelSlot }), !this.hasLabelSlot && this.label)), this.helperMessage &&
182
+ h("div", { key: '145da644abc8829de20ca6f9c4532f5341dec441', class: `pds-switch__message`, id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
183
+ h("div", { key: '7766e34f6daaf760d78aec6f08b64f0de15deb4c', class: `pds-switch__message pds-switch__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: '74dfd91aabf60608e8278ef84119466a2143ffc7', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage)));
184
184
  }
185
185
  static get is() { return "pds-switch"; }
186
186
  static get encapsulation() { return "shadow"; }
@@ -268,7 +268,7 @@ export class PdsSwitch {
268
268
  "optional": true,
269
269
  "docs": {
270
270
  "tags": [],
271
- "text": "Displays message text describing an invalid state."
271
+ "text": "Displays an error message below the switch. It becomes the switch's accessible description only while `invalid` is set."
272
272
  },
273
273
  "getter": false,
274
274
  "setter": false,
@@ -306,7 +306,7 @@ export class PdsSwitch {
306
306
  "optional": false,
307
307
  "docs": {
308
308
  "tags": [],
309
- "text": "Displays help text for additional description of an input."
309
+ "text": "Displays a message or hint below the switch."
310
310
  },
311
311
  "getter": false,
312
312
  "setter": false,
@@ -325,7 +325,7 @@ export class PdsSwitch {
325
325
  "optional": true,
326
326
  "docs": {
327
327
  "tags": [],
328
- "text": "Determines the input 'invalid' state, signifying an error is present."
328
+ "text": "Determines whether or not the switch is invalid."
329
329
  },
330
330
  "getter": false,
331
331
  "setter": false,
@@ -345,7 +345,7 @@ export class PdsSwitch {
345
345
  "optional": false,
346
346
  "docs": {
347
347
  "tags": [],
348
- "text": "Displays text to describe the input."
348
+ "text": "Text to be displayed as the switch label."
349
349
  },
350
350
  "getter": false,
351
351
  "setter": false,
@@ -446,7 +446,7 @@ export class PdsSwitch {
446
446
  "composed": true,
447
447
  "docs": {
448
448
  "tags": [],
449
- "text": "Emits an event on input change."
449
+ "text": "Emitted when the user toggles the switch, by a click or `Space`. `detail` is the native `change` event, so read\nthe new state from the switch's `checked`.\n\nThis event will not emit when programmatically setting the `checked` property."
450
450
  },
451
451
  "complexType": {
452
452
  "original": "InputEvent",
@@ -496,9 +496,9 @@ export class PdsTable {
496
496
  }
497
497
  render() {
498
498
  if (this.responsive) {
499
- return (h(Host, { class: `${this.classNames()} pds-table-responsive-host`, id: this.componentId, role: "grid", selectable: this.selectable, tabindex: "0", part: "table responsive-table" }, h("div", { class: "scroll-shadow-left", part: "scroll-shadow-left" }), h("div", { class: "scroll-shadow-right", part: "scroll-shadow-right" }), h("div", { class: "pds-table-responsive-container", part: "responsive-container" }, h("div", { class: "pds-table-responsive-wrapper", part: "responsive-wrapper" }, h("div", { class: this.classNames(), part: "table-inner" }, h("slot", null))))));
499
+ return (h(Host, { class: `${this.classNames()} pds-table-responsive-host`, role: "grid", selectable: this.selectable, tabindex: "0", part: "table responsive-table" }, h("div", { class: "scroll-shadow-left", part: "scroll-shadow-left" }), h("div", { class: "scroll-shadow-right", part: "scroll-shadow-right" }), h("div", { class: "pds-table-responsive-container", part: "responsive-container" }, h("div", { class: "pds-table-responsive-wrapper", part: "responsive-wrapper" }, h("div", { class: this.classNames(), part: "table-inner" }, h("slot", null))))));
500
500
  }
501
- return (h(Host, { class: this.classNames(), id: this.componentId, role: "grid", selectable: this.selectable, tabindex: "0", part: "table" }, h("slot", null)));
501
+ return (h(Host, { class: this.classNames(), role: "grid", selectable: this.selectable, tabindex: "0", part: "table" }, h("slot", null)));
502
502
  }
503
503
  static get is() { return "pds-table"; }
504
504
  static get encapsulation() { return "shadow"; }
@@ -545,7 +545,7 @@ export class PdsTable {
545
545
  "optional": false,
546
546
  "docs": {
547
547
  "tags": [],
548
- "text": "A unique identifier used for the table `id` attribute."
548
+ "text": "A unique identifier for this component instance. Does not set the host element's `id` attribute \u2014 set `id` directly if you need one."
549
549
  },
550
550
  "getter": false,
551
551
  "setter": false,
@@ -276,7 +276,7 @@ export class PdsTabs {
276
276
  // Only the classes: `active-tab-name` backs the mutable activeTabName prop, so a morph that drops
277
277
  // it is a prop change, not a strip.
278
278
  this.hostKeeper.record(hostClass);
279
- return (h(Host, { key: '69985d6800ac879a8655d52a6b4f72c5b6a20c61', "active-tab-name": this.activeTabName, class: hostClass, id: this.componentId }, tabList, h("slot", { key: '0fb1b2521b15c77a50d81431cc1f0f6a40360cfa', name: "tabpanels" })));
279
+ return (h(Host, { key: '6ededb588230706dc0848164e991694490436bf1', "active-tab-name": this.activeTabName, class: hostClass }, tabList, h("slot", { key: '68d090b7b6a3bae74ceb66e1487ce96666a38c6e', name: "tabpanels" })));
280
280
  }
281
281
  static get is() { return "pds-tabs"; }
282
282
  static get encapsulation() { return "shadow"; }
@@ -323,7 +323,7 @@ export class PdsTabs {
323
323
  "optional": false,
324
324
  "docs": {
325
325
  "tags": [],
326
- "text": "A unique identifier used for the underlying component `id` attribute."
326
+ "text": "A unique identifier for this component instance, passed down to its tabs and panels.\nDoes not set the host element's `id` attribute \u2014 set `id` directly if you need one."
327
327
  },
328
328
  "getter": false,
329
329
  "setter": false,