@porsche-design-system/components-angular 4.6.0-rc.0 → 4.6.0-rc.2

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 (348) hide show
  1. package/CHANGELOG.md +85 -2
  2. package/OSS_NOTICE +5532 -2115
  3. package/ag-grid/package.json +6 -0
  4. package/bin/pds-skill.js +166 -79
  5. package/emotion/package.json +6 -0
  6. package/fesm2022/porsche-design-system-components-angular.mjs +233 -233
  7. package/fesm2022/porsche-design-system-components-angular.mjs.map +1 -1
  8. package/jsdom-polyfill/package.json +5 -0
  9. package/meta/package.json +6 -0
  10. package/package.json +6 -2
  11. package/partials/package.json +6 -0
  12. package/{skill → skills/pds-knowledge-angular}/SKILL.md +5 -5
  13. package/skills/pds-knowledge-angular/references/components/p-accordion/accessibility.md +63 -0
  14. package/{skill → skills/pds-knowledge-angular}/references/components/p-accordion/p-accordion.md +4 -0
  15. package/skills/pds-knowledge-angular/references/components/p-ai-tag/p-ai-tag.md +47 -0
  16. package/skills/pds-knowledge-angular/references/components/p-banner/accessibility.md +35 -0
  17. package/{skill → skills/pds-knowledge-angular}/references/components/p-banner/p-banner.md +4 -0
  18. package/skills/pds-knowledge-angular/references/components/p-button/accessibility.md +61 -0
  19. package/{skill → skills/pds-knowledge-angular}/references/components/p-button/p-button.md +5 -1
  20. package/skills/pds-knowledge-angular/references/components/p-button-pure/accessibility.md +61 -0
  21. package/{skill → skills/pds-knowledge-angular}/references/components/p-button-pure/p-button-pure.md +5 -1
  22. package/skills/pds-knowledge-angular/references/components/p-button-tile/accessibility.md +31 -0
  23. package/{skill → skills/pds-knowledge-angular}/references/components/p-button-tile/p-button-tile.md +5 -1
  24. package/skills/pds-knowledge-angular/references/components/p-canvas/examples/Default.ts +105 -0
  25. package/{skill → skills/pds-knowledge-angular}/references/components/p-canvas/p-canvas.md +4 -0
  26. package/skills/pds-knowledge-angular/references/components/p-carousel/accessibility.md +61 -0
  27. package/{skill → skills/pds-knowledge-angular}/references/components/p-carousel/p-carousel.md +5 -1
  28. package/skills/pds-knowledge-angular/references/components/p-checkbox/accessibility.md +31 -0
  29. package/{skill → skills/pds-knowledge-angular}/references/components/p-checkbox/p-checkbox.md +4 -0
  30. package/skills/pds-knowledge-angular/references/components/p-crest/accessibility.md +17 -0
  31. package/{skill → skills/pds-knowledge-angular}/references/components/p-crest/p-crest.md +4 -0
  32. package/skills/pds-knowledge-angular/references/components/p-divider/accessibility.md +41 -0
  33. package/{skill → skills/pds-knowledge-angular}/references/components/p-divider/p-divider.md +4 -0
  34. package/skills/pds-knowledge-angular/references/components/p-drilldown/accessibility.md +65 -0
  35. package/{skill → skills/pds-knowledge-angular}/references/components/p-drilldown/p-drilldown.md +4 -0
  36. package/skills/pds-knowledge-angular/references/components/p-fieldset/accessibility.md +37 -0
  37. package/{skill → skills/pds-knowledge-angular}/references/components/p-fieldset/p-fieldset.md +4 -0
  38. package/skills/pds-knowledge-angular/references/components/p-flag/accessibility.md +39 -0
  39. package/{skill → skills/pds-knowledge-angular}/references/components/p-flag/p-flag.md +4 -0
  40. package/skills/pds-knowledge-angular/references/components/p-flyout/accessibility.md +80 -0
  41. package/{skill → skills/pds-knowledge-angular}/references/components/p-flyout/p-flyout.md +4 -0
  42. package/skills/pds-knowledge-angular/references/components/p-heading/accessibility.md +29 -0
  43. package/{skill → skills/pds-knowledge-angular}/references/components/p-heading/p-heading.md +4 -0
  44. package/skills/pds-knowledge-angular/references/components/p-icon/accessibility.md +39 -0
  45. package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/Overview.ts +6 -0
  46. package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/p-icon.md +5 -1
  47. package/skills/pds-knowledge-angular/references/components/p-inline-notification/accessibility.md +38 -0
  48. package/{skill → skills/pds-knowledge-angular}/references/components/p-inline-notification/p-inline-notification.md +5 -1
  49. package/skills/pds-knowledge-angular/references/components/p-input-date/accessibility.md +45 -0
  50. package/{skill → skills/pds-knowledge-angular}/references/components/p-input-date/p-input-date.md +4 -0
  51. package/skills/pds-knowledge-angular/references/components/p-input-email/accessibility.md +45 -0
  52. package/{skill → skills/pds-knowledge-angular}/references/components/p-input-email/p-input-email.md +4 -0
  53. package/skills/pds-knowledge-angular/references/components/p-input-month/accessibility.md +45 -0
  54. package/{skill → skills/pds-knowledge-angular}/references/components/p-input-month/p-input-month.md +4 -0
  55. package/skills/pds-knowledge-angular/references/components/p-input-number/accessibility.md +45 -0
  56. package/{skill → skills/pds-knowledge-angular}/references/components/p-input-number/p-input-number.md +7 -3
  57. package/skills/pds-knowledge-angular/references/components/p-input-password/accessibility.md +45 -0
  58. package/{skill → skills/pds-knowledge-angular}/references/components/p-input-password/p-input-password.md +4 -0
  59. package/skills/pds-knowledge-angular/references/components/p-input-search/accessibility.md +59 -0
  60. package/{skill → skills/pds-knowledge-angular}/references/components/p-input-search/p-input-search.md +4 -0
  61. package/skills/pds-knowledge-angular/references/components/p-input-tel/accessibility.md +45 -0
  62. package/{skill → skills/pds-knowledge-angular}/references/components/p-input-tel/p-input-tel.md +4 -0
  63. package/skills/pds-knowledge-angular/references/components/p-input-text/accessibility.md +45 -0
  64. package/{skill → skills/pds-knowledge-angular}/references/components/p-input-text/p-input-text.md +7 -3
  65. package/skills/pds-knowledge-angular/references/components/p-input-time/accessibility.md +45 -0
  66. package/{skill → skills/pds-knowledge-angular}/references/components/p-input-time/p-input-time.md +4 -0
  67. package/skills/pds-knowledge-angular/references/components/p-input-url/accessibility.md +45 -0
  68. package/{skill → skills/pds-knowledge-angular}/references/components/p-input-url/p-input-url.md +4 -0
  69. package/skills/pds-knowledge-angular/references/components/p-input-week/accessibility.md +45 -0
  70. package/{skill → skills/pds-knowledge-angular}/references/components/p-input-week/p-input-week.md +4 -0
  71. package/skills/pds-knowledge-angular/references/components/p-link/accessibility.md +73 -0
  72. package/{skill → skills/pds-knowledge-angular}/references/components/p-link/p-link.md +5 -1
  73. package/skills/pds-knowledge-angular/references/components/p-link-pure/accessibility.md +73 -0
  74. package/{skill → skills/pds-knowledge-angular}/references/components/p-link-pure/p-link-pure.md +5 -1
  75. package/skills/pds-knowledge-angular/references/components/p-link-tile/accessibility.md +31 -0
  76. package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile/p-link-tile.md +4 -0
  77. package/skills/pds-knowledge-angular/references/components/p-modal/accessibility.md +80 -0
  78. package/{skill → skills/pds-knowledge-angular}/references/components/p-modal/p-modal.md +4 -0
  79. package/skills/pds-knowledge-angular/references/components/p-multi-select/accessibility.md +78 -0
  80. package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/examples/AsyncFilter.ts +32 -5
  81. package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/examples/Form.ts +3 -3
  82. package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/examples/SelectedSlot.ts +2 -2
  83. package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/p-multi-select.md +6 -2
  84. package/skills/pds-knowledge-angular/references/components/p-pagination/accessibility.md +23 -0
  85. package/{skill → skills/pds-knowledge-angular}/references/components/p-pagination/p-pagination.md +4 -0
  86. package/skills/pds-knowledge-angular/references/components/p-pin-code/accessibility.md +45 -0
  87. package/{skill → skills/pds-knowledge-angular}/references/components/p-pin-code/examples/Form.ts +2 -2
  88. package/{skill → skills/pds-knowledge-angular}/references/components/p-pin-code/p-pin-code.md +6 -2
  89. package/skills/pds-knowledge-angular/references/components/p-popover/accessibility.md +61 -0
  90. package/{skill → skills/pds-knowledge-angular}/references/components/p-popover/p-popover.md +4 -0
  91. package/skills/pds-knowledge-angular/references/components/p-radio-group/accessibility.md +63 -0
  92. package/{skill → skills/pds-knowledge-angular}/references/components/p-radio-group/examples/Form.ts +2 -2
  93. package/{skill → skills/pds-knowledge-angular}/references/components/p-radio-group/p-radio-group.md +7 -3
  94. package/skills/pds-knowledge-angular/references/components/p-scroller/accessibility.md +31 -0
  95. package/{skill → skills/pds-knowledge-angular}/references/components/p-scroller/p-scroller.md +4 -0
  96. package/skills/pds-knowledge-angular/references/components/p-segmented-control/accessibility.md +67 -0
  97. package/{skill → skills/pds-knowledge-angular}/references/components/p-segmented-control/examples/Form.ts +2 -2
  98. package/{skill → skills/pds-knowledge-angular}/references/components/p-segmented-control/p-segmented-control.md +6 -2
  99. package/skills/pds-knowledge-angular/references/components/p-select/accessibility.md +140 -0
  100. package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/AsyncFilter.ts +32 -5
  101. package/{skill → skills/pds-knowledge-angular}/references/components/p-select/p-select.md +5 -1
  102. package/skills/pds-knowledge-angular/references/components/p-sheet/accessibility.md +80 -0
  103. package/{skill → skills/pds-knowledge-angular}/references/components/p-sheet/p-sheet.md +4 -0
  104. package/skills/pds-knowledge-angular/references/components/p-spinner/accessibility.md +33 -0
  105. package/{skill → skills/pds-knowledge-angular}/references/components/p-spinner/p-spinner.md +4 -0
  106. package/skills/pds-knowledge-angular/references/components/p-stepper-horizontal/accessibility.md +34 -0
  107. package/{skill → skills/pds-knowledge-angular}/references/components/p-stepper-horizontal/p-stepper-horizontal.md +4 -0
  108. package/skills/pds-knowledge-angular/references/components/p-switch/accessibility.md +35 -0
  109. package/{skill → skills/pds-knowledge-angular}/references/components/p-switch/p-switch.md +4 -0
  110. package/skills/pds-knowledge-angular/references/components/p-table/accessibility.md +47 -0
  111. package/{skill → skills/pds-knowledge-angular}/references/components/p-table/examples/Sorting.ts +11 -10
  112. package/{skill → skills/pds-knowledge-angular}/references/components/p-table/p-table.md +5 -1
  113. package/skills/pds-knowledge-angular/references/components/p-tabs/accessibility.md +56 -0
  114. package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs/p-tabs.md +4 -0
  115. package/skills/pds-knowledge-angular/references/components/p-tabs-bar/accessibility.md +61 -0
  116. package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs-bar/p-tabs-bar.md +4 -0
  117. package/skills/pds-knowledge-angular/references/components/p-tag/accessibility.md +19 -0
  118. package/{skill → skills/pds-knowledge-angular}/references/components/p-tag/p-tag.md +5 -1
  119. package/skills/pds-knowledge-angular/references/components/p-tag-dismissible/accessibility.md +35 -0
  120. package/{skill → skills/pds-knowledge-angular}/references/components/p-tag-dismissible/p-tag-dismissible.md +4 -0
  121. package/skills/pds-knowledge-angular/references/components/p-text/accessibility.md +21 -0
  122. package/{skill → skills/pds-knowledge-angular}/references/components/p-text/p-text.md +4 -0
  123. package/skills/pds-knowledge-angular/references/components/p-text-list/accessibility.md +31 -0
  124. package/{skill → skills/pds-knowledge-angular}/references/components/p-text-list/p-text-list.md +4 -0
  125. package/skills/pds-knowledge-angular/references/components/p-textarea/accessibility.md +45 -0
  126. package/{skill → skills/pds-knowledge-angular}/references/components/p-textarea/p-textarea.md +4 -0
  127. package/{skill → skills/pds-knowledge-angular}/references/components/p-toast/p-toast.md +1 -1
  128. package/skills/pds-knowledge-angular/references/components/p-wordmark/accessibility.md +31 -0
  129. package/{skill → skills/pds-knowledge-angular}/references/components/p-wordmark/p-wordmark.md +5 -1
  130. package/skills/pds-knowledge-angular/references/icons.md +5 -0
  131. package/{skill → skills/pds-knowledge-angular}/references/styles/tailwindcss.md +1 -1
  132. package/testing/package.json +5 -0
  133. package/tokens/package.json +6 -0
  134. package/types/porsche-design-system-components-angular.d.ts +203 -233
  135. package/vanilla-extract/package.json +6 -0
  136. package/skill/references/components/p-ai-tag/p-ai-tag.md +0 -47
  137. package/skill/references/components/p-canvas/examples/Default.ts +0 -13
  138. package/skill/references/icons.md +0 -5
  139. /package/{skill → skills/pds-knowledge-angular}/references/components/p-accordion/examples/Default.ts +0 -0
  140. /package/{skill → skills/pds-knowledge-angular}/references/components/p-accordion/examples/InteractiveElementsInSummary.ts +0 -0
  141. /package/{skill → skills/pds-knowledge-angular}/references/components/p-accordion/examples/StickySummary.ts +0 -0
  142. /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/Default.ts +0 -0
  143. /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/WithinCheckbox.ts +0 -0
  144. /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/WithinFormLabel.ts +0 -0
  145. /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/WithinImage.ts +0 -0
  146. /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/WithinInputSearch.ts +0 -0
  147. /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/WithinRadioGroup.ts +0 -0
  148. /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/WithinTable.ts +0 -0
  149. /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/WithinText.ts +0 -0
  150. /package/{skill → skills/pds-knowledge-angular}/references/components/p-banner/examples/Customization.ts +0 -0
  151. /package/{skill → skills/pds-knowledge-angular}/references/components/p-banner/examples/Default.ts +0 -0
  152. /package/{skill → skills/pds-knowledge-angular}/references/components/p-button/examples/Default.ts +0 -0
  153. /package/{skill → skills/pds-knowledge-angular}/references/components/p-button/examples/Form.ts +0 -0
  154. /package/{skill → skills/pds-knowledge-angular}/references/components/p-button/examples/FormAttribute.ts +0 -0
  155. /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-pure/examples/CustomClickableArea.ts +0 -0
  156. /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-pure/examples/Default.ts +0 -0
  157. /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-pure/examples/Form.ts +0 -0
  158. /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-pure/examples/FormAttribute.ts +0 -0
  159. /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-tile/examples/ColorScheme.ts +0 -0
  160. /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-tile/examples/Default.ts +0 -0
  161. /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-tile/examples/FooterSlot.ts +0 -0
  162. /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-tile/examples/Hyphens.ts +0 -0
  163. /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-tile/examples/UiBehaviour.ts +0 -0
  164. /package/{skill → skills/pds-knowledge-angular}/references/components/p-carousel/examples/Default.ts +0 -0
  165. /package/{skill → skills/pds-knowledge-angular}/references/components/p-carousel/examples/DynamicSlides.ts +0 -0
  166. /package/{skill → skills/pds-knowledge-angular}/references/components/p-carousel/examples/FlexibleWidths.ts +0 -0
  167. /package/{skill → skills/pds-knowledge-angular}/references/components/p-carousel/examples/FocusOnCenterSlide.ts +0 -0
  168. /package/{skill → skills/pds-knowledge-angular}/references/components/p-carousel/examples/Intl.ts +0 -0
  169. /package/{skill → skills/pds-knowledge-angular}/references/components/p-carousel/examples/JumpToSlide.ts +0 -0
  170. /package/{skill → skills/pds-knowledge-angular}/references/components/p-checkbox/examples/Default.ts +0 -0
  171. /package/{skill → skills/pds-knowledge-angular}/references/components/p-checkbox/examples/Form.ts +0 -0
  172. /package/{skill → skills/pds-knowledge-angular}/references/components/p-checkbox/examples/Indeterminate.ts +0 -0
  173. /package/{skill → skills/pds-knowledge-angular}/references/components/p-checkbox/examples/Slots.ts +0 -0
  174. /package/{skill → skills/pds-knowledge-angular}/references/components/p-checkbox/examples/WrappedLabel.ts +0 -0
  175. /package/{skill → skills/pds-knowledge-angular}/references/components/p-crest/examples/CustomClickableArea.ts +0 -0
  176. /package/{skill → skills/pds-knowledge-angular}/references/components/p-crest/examples/Default.ts +0 -0
  177. /package/{skill → skills/pds-knowledge-angular}/references/components/p-crest/examples/Link.ts +0 -0
  178. /package/{skill → skills/pds-knowledge-angular}/references/components/p-display/examples/Color.ts +0 -0
  179. /package/{skill → skills/pds-knowledge-angular}/references/components/p-display/examples/Default.ts +0 -0
  180. /package/{skill → skills/pds-knowledge-angular}/references/components/p-display/examples/Semantics.ts +0 -0
  181. /package/{skill → skills/pds-knowledge-angular}/references/components/p-display/examples/Size.ts +0 -0
  182. /package/{skill → skills/pds-knowledge-angular}/references/components/p-display/examples/SizeResponsive.ts +0 -0
  183. /package/{skill → skills/pds-knowledge-angular}/references/components/p-display/p-display.md +0 -0
  184. /package/{skill → skills/pds-knowledge-angular}/references/components/p-divider/examples/Default.ts +0 -0
  185. /package/{skill → skills/pds-knowledge-angular}/references/components/p-divider/examples/Responsive.ts +0 -0
  186. /package/{skill → skills/pds-knowledge-angular}/references/components/p-divider/examples/Vertical.ts +0 -0
  187. /package/{skill → skills/pds-knowledge-angular}/references/components/p-drilldown/examples/CustomContent.ts +0 -0
  188. /package/{skill → skills/pds-knowledge-angular}/references/components/p-drilldown/examples/Default.ts +0 -0
  189. /package/{skill → skills/pds-knowledge-angular}/references/components/p-fieldset/examples/Default.ts +0 -0
  190. /package/{skill → skills/pds-knowledge-angular}/references/components/p-fieldset/examples/Required.ts +0 -0
  191. /package/{skill → skills/pds-knowledge-angular}/references/components/p-fieldset/examples/SlottedLabel.ts +0 -0
  192. /package/{skill → skills/pds-knowledge-angular}/references/components/p-fieldset/examples/SlottedMessage.ts +0 -0
  193. /package/{skill → skills/pds-knowledge-angular}/references/components/p-flag/examples/Default.ts +0 -0
  194. /package/{skill → skills/pds-knowledge-angular}/references/components/p-flag/examples/ResponsiveSize.ts +0 -0
  195. /package/{skill → skills/pds-knowledge-angular}/references/components/p-flag/examples/Size.ts +0 -0
  196. /package/{skill → skills/pds-knowledge-angular}/references/components/p-flag/examples/SizeCssVar.ts +0 -0
  197. /package/{skill → skills/pds-knowledge-angular}/references/components/p-flyout/examples/CustomStyling.ts +0 -0
  198. /package/{skill → skills/pds-knowledge-angular}/references/components/p-flyout/examples/Default.ts +0 -0
  199. /package/{skill → skills/pds-knowledge-angular}/references/components/p-flyout/examples/Form.ts +0 -0
  200. /package/{skill → skills/pds-knowledge-angular}/references/components/p-flyout/examples/StickyTop.ts +0 -0
  201. /package/{skill → skills/pds-knowledge-angular}/references/components/p-heading/examples/Color.ts +0 -0
  202. /package/{skill → skills/pds-knowledge-angular}/references/components/p-heading/examples/Default.ts +0 -0
  203. /package/{skill → skills/pds-knowledge-angular}/references/components/p-heading/examples/Semantics.ts +0 -0
  204. /package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/Color.ts +0 -0
  205. /package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/ColorCssVar.ts +0 -0
  206. /package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/Custom.ts +0 -0
  207. /package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/Default.ts +0 -0
  208. /package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/ResponsiveSize.ts +0 -0
  209. /package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/Size.ts +0 -0
  210. /package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/SizeCssVar.ts +0 -0
  211. /package/{skill → skills/pds-knowledge-angular}/references/components/p-inline-notification/examples/ActionButton.ts +0 -0
  212. /package/{skill → skills/pds-knowledge-angular}/references/components/p-inline-notification/examples/Default.ts +0 -0
  213. /package/{skill → skills/pds-knowledge-angular}/references/components/p-inline-notification/examples/EventHandling.ts +0 -0
  214. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-date/examples/Default.ts +0 -0
  215. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-date/examples/Form.ts +0 -0
  216. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-date/examples/Slots.ts +0 -0
  217. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-email/examples/Default.ts +0 -0
  218. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-email/examples/Form.ts +0 -0
  219. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-email/examples/Slots.ts +0 -0
  220. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-month/examples/Default.ts +0 -0
  221. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-month/examples/Form.ts +0 -0
  222. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-month/examples/Slots.ts +0 -0
  223. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-number/examples/Default.ts +0 -0
  224. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-number/examples/Form.ts +0 -0
  225. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-number/examples/Slots.ts +0 -0
  226. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-password/examples/Default.ts +0 -0
  227. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-password/examples/Form.ts +0 -0
  228. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-password/examples/Slots.ts +0 -0
  229. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-password/examples/Toggle.ts +0 -0
  230. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-search/examples/AriaCombobox.ts +0 -0
  231. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-search/examples/Default.ts +0 -0
  232. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-search/examples/Form.ts +0 -0
  233. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-search/examples/Slots.ts +0 -0
  234. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-tel/examples/Default.ts +0 -0
  235. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-tel/examples/Form.ts +0 -0
  236. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-tel/examples/Slots.ts +0 -0
  237. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-text/examples/Controlled.ts +0 -0
  238. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-text/examples/Default.ts +0 -0
  239. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-text/examples/Form.ts +0 -0
  240. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-text/examples/Slots.ts +0 -0
  241. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-time/examples/Default.ts +0 -0
  242. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-time/examples/Form.ts +0 -0
  243. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-time/examples/Slots.ts +0 -0
  244. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-url/examples/Default.ts +0 -0
  245. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-url/examples/Form.ts +0 -0
  246. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-url/examples/Slots.ts +0 -0
  247. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-week/examples/Default.ts +0 -0
  248. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-week/examples/Form.ts +0 -0
  249. /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-week/examples/Slots.ts +0 -0
  250. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link/examples/Default.ts +0 -0
  251. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link/examples/FrameworkRouting.ts +0 -0
  252. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link/examples/Icon.ts +0 -0
  253. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-pure/examples/CustomClickableArea.ts +0 -0
  254. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-pure/examples/Default.ts +0 -0
  255. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-pure/examples/FrameworkRouting.ts +0 -0
  256. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-pure/examples/Icon.ts +0 -0
  257. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile/examples/ColorScheme.ts +0 -0
  258. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile/examples/Default.ts +0 -0
  259. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile/examples/FooterSlot.ts +0 -0
  260. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile/examples/Hyphens.ts +0 -0
  261. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile/examples/UiBehaviour.ts +0 -0
  262. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile/examples/WithVideo.ts +0 -0
  263. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile-product/examples/Default.ts +0 -0
  264. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile-product/examples/FrameworkRouting.ts +0 -0
  265. /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile-product/p-link-tile-product.md +0 -0
  266. /package/{skill → skills/pds-knowledge-angular}/references/components/p-modal/examples/AlertDialog.ts +0 -0
  267. /package/{skill → skills/pds-knowledge-angular}/references/components/p-modal/examples/CustomStyling.ts +0 -0
  268. /package/{skill → skills/pds-knowledge-angular}/references/components/p-modal/examples/Default.ts +0 -0
  269. /package/{skill → skills/pds-knowledge-angular}/references/components/p-modal/examples/Scrollable.ts +0 -0
  270. /package/{skill → skills/pds-knowledge-angular}/references/components/p-model-signature/examples/CustomStyling.ts +0 -0
  271. /package/{skill → skills/pds-knowledge-angular}/references/components/p-model-signature/examples/Default.ts +0 -0
  272. /package/{skill → skills/pds-knowledge-angular}/references/components/p-model-signature/examples/MaskBlendMode.ts +0 -0
  273. /package/{skill → skills/pds-knowledge-angular}/references/components/p-model-signature/examples/MaskImage.ts +0 -0
  274. /package/{skill → skills/pds-knowledge-angular}/references/components/p-model-signature/examples/MaskVideo.ts +0 -0
  275. /package/{skill → skills/pds-knowledge-angular}/references/components/p-model-signature/examples/SafeZone.ts +0 -0
  276. /package/{skill → skills/pds-knowledge-angular}/references/components/p-model-signature/p-model-signature.md +0 -0
  277. /package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/examples/Default.ts +0 -0
  278. /package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/examples/Optgroups.ts +0 -0
  279. /package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/examples/SetValue.ts +0 -0
  280. /package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/examples/Slots.ts +0 -0
  281. /package/{skill → skills/pds-knowledge-angular}/references/components/p-pagination/examples/Default.ts +0 -0
  282. /package/{skill → skills/pds-knowledge-angular}/references/components/p-pin-code/examples/CopyPaste.ts +0 -0
  283. /package/{skill → skills/pds-knowledge-angular}/references/components/p-pin-code/examples/Default.ts +0 -0
  284. /package/{skill → skills/pds-knowledge-angular}/references/components/p-pin-code/examples/Slots.ts +0 -0
  285. /package/{skill → skills/pds-knowledge-angular}/references/components/p-popover/examples/Default.ts +0 -0
  286. /package/{skill → skills/pds-knowledge-angular}/references/components/p-popover/examples/SlottedButton.ts +0 -0
  287. /package/{skill → skills/pds-knowledge-angular}/references/components/p-radio-group/examples/Default.ts +0 -0
  288. /package/{skill → skills/pds-knowledge-angular}/references/components/p-radio-group/examples/Slots.ts +0 -0
  289. /package/{skill → skills/pds-knowledge-angular}/references/components/p-scroller/examples/Default.ts +0 -0
  290. /package/{skill → skills/pds-knowledge-angular}/references/components/p-scroller/examples/Height.ts +0 -0
  291. /package/{skill → skills/pds-knowledge-angular}/references/components/p-scroller/examples/ScrollToPosition.ts +0 -0
  292. /package/{skill → skills/pds-knowledge-angular}/references/components/p-segmented-control/examples/Default.ts +0 -0
  293. /package/{skill → skills/pds-knowledge-angular}/references/components/p-segmented-control/examples/Slots.ts +0 -0
  294. /package/{skill → skills/pds-knowledge-angular}/references/components/p-segmented-control/examples/WithLabels.ts +0 -0
  295. /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/Default.ts +0 -0
  296. /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/Form.ts +0 -0
  297. /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/Optgroups.ts +0 -0
  298. /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/Required.ts +0 -0
  299. /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/SelectedSlot.ts +0 -0
  300. /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/SetValue.ts +0 -0
  301. /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/Slots.ts +0 -0
  302. /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/SlottedImages.ts +0 -0
  303. /package/{skill → skills/pds-knowledge-angular}/references/components/p-sheet/examples/Default.ts +0 -0
  304. /package/{skill → skills/pds-knowledge-angular}/references/components/p-spinner/examples/Color.ts +0 -0
  305. /package/{skill → skills/pds-knowledge-angular}/references/components/p-spinner/examples/ColorCssVar.ts +0 -0
  306. /package/{skill → skills/pds-knowledge-angular}/references/components/p-spinner/examples/Default.ts +0 -0
  307. /package/{skill → skills/pds-knowledge-angular}/references/components/p-spinner/examples/ResponsiveSize.ts +0 -0
  308. /package/{skill → skills/pds-knowledge-angular}/references/components/p-spinner/examples/Size.ts +0 -0
  309. /package/{skill → skills/pds-knowledge-angular}/references/components/p-spinner/examples/SizeCssVar.ts +0 -0
  310. /package/{skill → skills/pds-knowledge-angular}/references/components/p-stepper-horizontal/examples/Default.ts +0 -0
  311. /package/{skill → skills/pds-knowledge-angular}/references/components/p-stepper-horizontal/examples/FrameworkImplementation.ts +0 -0
  312. /package/{skill → skills/pds-knowledge-angular}/references/components/p-switch/examples/Default.ts +0 -0
  313. /package/{skill → skills/pds-knowledge-angular}/references/components/p-table/examples/Advanced.ts +0 -0
  314. /package/{skill → skills/pds-knowledge-angular}/references/components/p-table/examples/CaptionProperty.ts +0 -0
  315. /package/{skill → skills/pds-knowledge-angular}/references/components/p-table/examples/CaptionSlot.ts +0 -0
  316. /package/{skill → skills/pds-knowledge-angular}/references/components/p-table/examples/Default.ts +0 -0
  317. /package/{skill → skills/pds-knowledge-angular}/references/components/p-table/examples/HideLabel.ts +0 -0
  318. /package/{skill → skills/pds-knowledge-angular}/references/components/p-table/examples/LayoutFixed.ts +0 -0
  319. /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs/examples/ActiveTab.ts +0 -0
  320. /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs/examples/Default.ts +0 -0
  321. /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs/examples/Gradient.ts +0 -0
  322. /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs/examples/Labelling.ts +0 -0
  323. /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs-bar/examples/Default.ts +0 -0
  324. /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs-bar/examples/Gradient.ts +0 -0
  325. /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs-bar/examples/Labelling.ts +0 -0
  326. /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs-bar/examples/Links.ts +0 -0
  327. /package/{skill → skills/pds-knowledge-angular}/references/components/p-tag/examples/Default.ts +0 -0
  328. /package/{skill → skills/pds-knowledge-angular}/references/components/p-tag/examples/Multiline.ts +0 -0
  329. /package/{skill → skills/pds-knowledge-angular}/references/components/p-tag/examples/SlottedButton.ts +0 -0
  330. /package/{skill → skills/pds-knowledge-angular}/references/components/p-tag/examples/SlottedLink.ts +0 -0
  331. /package/{skill → skills/pds-knowledge-angular}/references/components/p-tag-dismissible/examples/Default.ts +0 -0
  332. /package/{skill → skills/pds-knowledge-angular}/references/components/p-text/examples/Default.ts +0 -0
  333. /package/{skill → skills/pds-knowledge-angular}/references/components/p-text/examples/Semantics.ts +0 -0
  334. /package/{skill → skills/pds-knowledge-angular}/references/components/p-text/examples/Size.ts +0 -0
  335. /package/{skill → skills/pds-knowledge-angular}/references/components/p-text/examples/SizeResponsive.ts +0 -0
  336. /package/{skill → skills/pds-knowledge-angular}/references/components/p-text-list/examples/Default.ts +0 -0
  337. /package/{skill → skills/pds-knowledge-angular}/references/components/p-textarea/examples/Default.ts +0 -0
  338. /package/{skill → skills/pds-knowledge-angular}/references/components/p-textarea/examples/Form.ts +0 -0
  339. /package/{skill → skills/pds-knowledge-angular}/references/components/p-textarea/examples/Slots.ts +0 -0
  340. /package/{skill → skills/pds-knowledge-angular}/references/components/p-toast/examples/Default.ts +0 -0
  341. /package/{skill → skills/pds-knowledge-angular}/references/components/p-wordmark/examples/CustomClickableArea.ts +0 -0
  342. /package/{skill → skills/pds-knowledge-angular}/references/components/p-wordmark/examples/Default.ts +0 -0
  343. /package/{skill → skills/pds-knowledge-angular}/references/components/p-wordmark/examples/Size.ts +0 -0
  344. /package/{skill → skills/pds-knowledge-angular}/references/styles/emotion.md +0 -0
  345. /package/{skill → skills/pds-knowledge-angular}/references/styles/scss.md +0 -0
  346. /package/{skill → skills/pds-knowledge-angular}/references/styles/vanilla-extract.md +0 -0
  347. /package/{skill → skills/pds-knowledge-angular}/references/stylesheets.md +0 -0
  348. /package/{skill → skills/pds-knowledge-angular}/references/tokens.md +0 -0
@@ -58,6 +58,10 @@ In general, avoid using the `disabled="true"` state. Disabled elements are no lo
58
58
  - **Do** use the component state/message API so validation and status changes are announced.
59
59
  - **Don't** use `hide-label` without an accessible name.
60
60
 
61
+ ## Integration examples
62
+
63
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
64
+
61
65
  ## API
62
66
 
63
67
  ### Properties
@@ -77,14 +81,14 @@ In general, avoid using the `disabled="true"` state. Disabled elements are no lo
77
81
  | `required` | `boolean` | `false` | Marks the pin code as required so the form cannot be submitted until all fields are filled. |
78
82
  | `state` | `'none'` `'error'` `'success'` | `'none'` | Sets the validation state of the pin code, which controls its visual appearance and feedback message style (`none`, `success`, `error`). |
79
83
  | `type` | `'number'` `'password'` | `'number'` | Controls whether the individual input fields mask their content as password dots (`password`) or show digits (`number`). |
80
- | `value` | `string` | `''` | Sets the current concatenated value of all pin code fields and allows setting the initial value. |
84
+ | `value` | `string | number | null` | `''` | Sets the current concatenated value. Numbers are accepted for programmatic assignment, but user input updates the value as a string. |
81
85
 
82
86
  ### Events
83
87
 
84
88
  | Event | Type | Description |
85
89
  | --- | --- | --- |
86
90
  | `blur` | `CustomEvent<void>` | Emitted when the pin code component loses focus after the user finishes entering characters. |
87
- | `change` | `CustomEvent<PinCodeChangeEventDetail>`<br>`{ value: string; isComplete: boolean }` | Emitted when the pin code value changes as the user types, carrying the new concatenated value in the event detail. |
91
+ | `change` | `CustomEvent<PinCodeChangeEventDetail>`<br>`{ value: string; isComplete: boolean }` | Emitted when the pin code value changes as the user types, carrying `{ value: string; isComplete: boolean }` in the event detail. |
88
92
 
89
93
  ### Controlled properties
90
94
 
@@ -0,0 +1,61 @@
1
+ # p-popover accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### ARIA on component host vs aria prop
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```html
10
+ <p-popover aria-label="Specification details" description="Additional specification details."></p-popover>
11
+ ```
12
+
13
+ #### ✅ Recommended
14
+
15
+ ```html
16
+ <p-popover [aria]="{'aria-label': 'Specification details'}" description="Additional specification details."></p-popover>
17
+ ```
18
+
19
+ ### Custom slotted trigger without accessible name
20
+
21
+ #### ❌ Anti-pattern
22
+
23
+ ```html
24
+ <p-popover>
25
+ <button slot="button" type="button"></button>
26
+ Additional specification details.
27
+ </p-popover>
28
+ ```
29
+
30
+ #### ✅ Recommended
31
+
32
+ ```html
33
+ <p-popover description="Additional specification details."></p-popover>
34
+
35
+ <!-- or provide an accessible name on a custom slotted button -->
36
+
37
+ <p-popover>
38
+ <button slot="button" type="button" ariaLabel="Specification details">
39
+ i
40
+ </button>
41
+ Additional specification details.
42
+ </p-popover>
43
+ ```
44
+
45
+ ### Custom slotted trigger without aria-expanded
46
+
47
+ #### ❌ Anti-pattern
48
+
49
+ ```html
50
+ <p-popover>
51
+ <button slot="button" type="button"></button>
52
+ </p-popover>
53
+ ```
54
+
55
+ #### ✅ Recommended
56
+
57
+ ```html
58
+ <p-popover>
59
+ <button slot="button" type="button" ariaExpanded="false"></button>
60
+ </p-popover>
61
+ ```
@@ -65,6 +65,10 @@ In **controlled** mode the consumer owns the `open` state, so the slotted trigge
65
65
  - **Don't** use an unnamed custom slotted trigger button.
66
66
  - **Don't** add native `aria-*` attributes directly on the component host.
67
67
 
68
+ ## Integration examples
69
+
70
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
71
+
68
72
  ## API
69
73
 
70
74
  ### Properties
@@ -0,0 +1,63 @@
1
+ # p-radio-group accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### Missing group label
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```html
10
+ <p-radio-group name="fuel">
11
+ <p-radio-group-option value="electric" label="Electric"></p-radio-group-option>
12
+ <p-radio-group-option value="hybrid" label="Hybrid"></p-radio-group-option>
13
+ </p-radio-group>
14
+ ```
15
+
16
+ #### ✅ Recommended
17
+
18
+ ```html
19
+ <p-radio-group label="Powertrain" name="fuel" description="Select your preferred powertrain.">
20
+ <p-radio-group-option value="electric" label="Electric"></p-radio-group-option>
21
+ <p-radio-group-option value="hybrid" label="Hybrid"></p-radio-group-option>
22
+ </p-radio-group>
23
+ ```
24
+
25
+ ### Hidden label without accessible name
26
+
27
+ #### ❌ Anti-pattern
28
+
29
+ ```html
30
+ <p-radio-group name="fuel" [hideLabel]="true">
31
+ <p-radio-group-option value="electric" label="Electric"></p-radio-group-option>
32
+ <p-radio-group-option value="hybrid" label="Hybrid"></p-radio-group-option>
33
+ </p-radio-group>
34
+ ```
35
+
36
+ #### ✅ Recommended
37
+
38
+ ```html
39
+ <p-radio-group label="Powertrain" name="fuel" [hideLabel]="true">
40
+ <p-radio-group-option value="electric" label="Electric"></p-radio-group-option>
41
+ <p-radio-group-option value="hybrid" label="Hybrid"></p-radio-group-option>
42
+ </p-radio-group>
43
+ ```
44
+
45
+ ### Validation feedback via state and message API
46
+
47
+ #### ❌ Anti-pattern
48
+
49
+ ```html
50
+ <p-radio-group label="Powertrain" name="fuel" [aria-invalid]="true" message="Required">
51
+ <p-radio-group-option value="electric" label="Electric"></p-radio-group-option>
52
+ <p-radio-group-option value="hybrid" label="Hybrid"></p-radio-group-option>
53
+ </p-radio-group>
54
+ ```
55
+
56
+ #### ✅ Recommended
57
+
58
+ ```html
59
+ <p-radio-group label="Powertrain" name="fuel" [required]="true" state="error" message="Select a powertrain to continue.">
60
+ <p-radio-group-option value="electric" label="Electric"></p-radio-group-option>
61
+ <p-radio-group-option value="hybrid" label="Hybrid"></p-radio-group-option>
62
+ </p-radio-group>
63
+ ```
@@ -1,6 +1,6 @@
1
1
  import { ChangeDetectionStrategy, Component } from '@angular/core';
2
2
  import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
3
- import { PorscheDesignSystemModule } from '@porsche-design-system/components-angular';
3
+ import { PorscheDesignSystemModule, type PRadioGroupProps } from '@porsche-design-system/components-angular';
4
4
 
5
5
  @Component({
6
6
  selector: 'porsche-design-system-app',
@@ -27,7 +27,7 @@ import { PorscheDesignSystemModule } from '@porsche-design-system/components-ang
27
27
  })
28
28
  export class ExampleComponent {
29
29
  form = new FormGroup({
30
- myRadioGroup: new FormControl<string>(''),
30
+ myRadioGroup: new FormControl<PRadioGroupProps['value']>(null),
31
31
  });
32
32
 
33
33
  submittedValue: any = undefined;
@@ -6,7 +6,7 @@ The `p-radio-group` component is a versatile custom form element that enables th
6
6
  >
7
7
  > The `blur` event is emitted whenever the focused `p-radio-group-option` changes — not only when the entire `p-radio-group` loses focus. This means that switching between options within the same group will also trigger a `blur` event for the previously focused option.
8
8
 
9
- Options are slotted using the `p-radio-group-option` component. Each option needs to have an assigned value, which can be passed via an attribute or property and needs to be of type string. Initial selection states can only be achieved using the value property on the `p-radio-group` component. If an option should be visible but not selectable, it can be disabled by using the `disabled` attribute.
9
+ Options are slotted using the `p-radio-group-option` component. Each option needs an assigned `string` or `number` value. The `p-radio-group` value matches an option strictly by type and value, so a number does not match the equivalent string. `undefined` and `null` are reserved for the radio group's unselected state and are not valid option values. Initial selection states can only be achieved using the `value` property on the `p-radio-group` component. If an option should be visible but not selectable, it can be disabled using the `disabled` attribute.
10
10
 
11
11
  A `label` is a caption which informs the user what information a particular form field is asking for. The `p-radio-group` component can be used with or without a label, but it's recommended to keep the label visible for better accessibility whenever possible. When used without a label, it's best practice to provide a descriptive label text for screen readers.
12
12
 
@@ -70,6 +70,10 @@ In general, avoid using the `disabled` state. Disabled elements are no longer fo
70
70
  - **Don't** rely on adjacent text instead of the group `label` prop.
71
71
  - **Don't** use `hide-label` without an accessible name.
72
72
 
73
+ ## Integration examples
74
+
75
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
76
+
73
77
  ## Tests
74
78
 
75
79
  ### Automated
@@ -105,7 +109,7 @@ In general, avoid using the `disabled` state. Disabled elements are no longer fo
105
109
  | `name` _(required)_ | `string` | `undefined` | Sets the shared name attribute for all radio buttons in the group, grouping them for mutually exclusive selection. |
106
110
  | `required` | `boolean` | `false` | Marks the radio group as required so the form cannot be submitted until one option is selected. |
107
111
  | `state` | `'none'` `'error'` `'success'` | `'none'` | Sets the validation state of the radio group, controlling its visual appearance and feedback message style (`none`, `success`, `error`). |
108
- | `value` | `string` | `''` | Sets the currently selected value that pre-selects the matching radio option and reflects user changes. |
112
+ | `value` | `string | number | null` | `undefined` | Sets the currently selected value that pre-selects the matching radio option and reflects user changes. Matches an option strictly by type and value, meaning string or number only match an option whose value has the same type and equal value. Use undefined or null for no preselection; these values never match an option because every option requires a string or number value. Please note that FormData always serializes values as strings, so when participating in a native (uncontrolled) form a number value is restored as string via formStateRestoreCallback and will no longer strictly match a number-typed option. This limitation only applies to native form state restoration; in controlled forms (where the consumer manages value directly via the change event), the number type is preserved end-to-end. |
109
113
 
110
114
  ### Events
111
115
 
@@ -139,7 +143,7 @@ Allowed parent: `p-radio-group`.
139
143
  | `disabled` | `boolean` | `false` | Prevents this option from being selected and excludes its value from form submissions while it is disabled. |
140
144
  | `label` | `string` | `undefined` | Sets the visible label text displayed next to the radio button that the user reads to identify the option. |
141
145
  | `loading` _(experimental)_ | `boolean` | `false` | @experimental Disables this option and shows a spinner to indicate that this particular option is in a loading state. |
142
- | `value` | `string` | `undefined` | Sets the value submitted with the form data when this radio option is selected within its parent group. |
146
+ | `value` _(required)_ | `string | number` | `undefined` | Sets the required option value. Must be a string or number and is selected when it strictly matches the parent `p-radio-group` value by type and value. |
143
147
 
144
148
  #### Slots
145
149
 
@@ -0,0 +1,31 @@
1
+ # p-scroller accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### ARIA on component host vs aria prop
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```html
10
+ <p-scroller aria-label="Section tags" aria-description="Section tags for the section overview">
11
+ <p-tag>
12
+ Overview
13
+ </p-tag>
14
+ <p-tag>
15
+ Equipment
16
+ </p-tag>
17
+ </p-scroller>
18
+ ```
19
+
20
+ #### ✅ Recommended
21
+
22
+ ```html
23
+ <p-scroller [aria]="{'aria-label': 'Section tags', 'aria-description': 'Section tags for the section overview'}">
24
+ <p-tag>
25
+ Overview
26
+ </p-tag>
27
+ <p-tag>
28
+ Equipment
29
+ </p-tag>
30
+ </p-scroller>
31
+ ```
@@ -57,6 +57,10 @@ If the `p-scroller` component is accessed by keyboard navigation and is focused,
57
57
  - **Do** pass `aria-label` and `aria-description` via the `aria` prop, not as host attributes.
58
58
  - **Don't** add native `aria-*` attributes directly on the component host.
59
59
 
60
+ ## Integration examples
61
+
62
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
63
+
60
64
  ## API
61
65
 
62
66
  ### Properties
@@ -0,0 +1,67 @@
1
+ # p-segmented-control accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### Missing group label
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```html
10
+ <p-segmented-control name="size">
11
+ <p-segmented-control-item value="s">
12
+ S
13
+ </p-segmented-control-item>
14
+ <p-segmented-control-item value="m">
15
+ M
16
+ </p-segmented-control-item>
17
+ </p-segmented-control>
18
+ ```
19
+
20
+ #### ✅ Recommended
21
+
22
+ ```html
23
+ <p-segmented-control label="T-shirt size" name="size" description="Select your preferred size.">
24
+ <p-segmented-control-item value="s">
25
+ S
26
+ </p-segmented-control-item>
27
+ <p-segmented-control-item value="m">
28
+ M
29
+ </p-segmented-control-item>
30
+ </p-segmented-control>
31
+ ```
32
+
33
+ ### Hidden label without accessible name
34
+
35
+ #### ❌ Anti-pattern
36
+
37
+ ```html
38
+ <p-segmented-control name="size" [hideLabel]="true">
39
+ <p-segmented-control-item value="s">
40
+ S
41
+ </p-segmented-control-item>
42
+ </p-segmented-control>
43
+ ```
44
+
45
+ #### ✅ Recommended
46
+
47
+ ```html
48
+ <p-segmented-control label="T-shirt size" name="size" [hideLabel]="true">
49
+ <p-segmented-control-item value="s">
50
+ S
51
+ </p-segmented-control-item>
52
+ </p-segmented-control>
53
+ ```
54
+
55
+ ### Validation feedback via state and message API
56
+
57
+ #### ❌ Anti-pattern
58
+
59
+ ```html
60
+ <p-segmented-control label="T-shirt size" name="size" [aria-invalid]="true" message="Required"></p-segmented-control>
61
+ ```
62
+
63
+ #### ✅ Recommended
64
+
65
+ ```html
66
+ <p-segmented-control label="T-shirt size" name="size" [required]="true" state="error" message="Select a size to continue."></p-segmented-control>
67
+ ```
@@ -1,6 +1,6 @@
1
1
  import { ChangeDetectionStrategy, Component } from '@angular/core';
2
2
  import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
3
- import { PorscheDesignSystemModule } from '@porsche-design-system/components-angular';
3
+ import { PorscheDesignSystemModule, PSegmentedControlProps } from '@porsche-design-system/components-angular';
4
4
 
5
5
  @Component({
6
6
  selector: 'porsche-design-system-app',
@@ -26,7 +26,7 @@ import { PorscheDesignSystemModule } from '@porsche-design-system/components-ang
26
26
  })
27
27
  export class ExampleComponent {
28
28
  form = new FormGroup({
29
- mySegmentedControl: new FormControl<string | number | undefined>({ value: undefined, disabled: false }),
29
+ mySegmentedControl: new FormControl<PSegmentedControlProps['value']>(null),
30
30
  });
31
31
 
32
32
  submittedValue: any = undefined;
@@ -86,6 +86,10 @@ In general, avoid using the `disabled` state. Disabled elements are no longer fo
86
86
  - **Don't** add native `aria-*` attributes directly on the component host.
87
87
  - **Don't** use `hide-label` without an accessible name.
88
88
 
89
+ ## Integration examples
90
+
91
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
92
+
89
93
  ## API
90
94
 
91
95
  ### Properties
@@ -104,7 +108,7 @@ In general, avoid using the `disabled` state. Disabled elements are no longer fo
104
108
  | `noWrap` | `boolean` | `false` | Prevents items from wrapping to new rows and renders them in a single horizontally scrollable row instead. |
105
109
  | `required` | `boolean` | `false` | Marks the segmented control as required so the form cannot be submitted until one option is selected. |
106
110
  | `state` | `'none'` `'error'` `'success'` | `'none'` | Sets the validation state of the segmented control, controlling its visual appearance and feedback message style (`none`, `success`, `error`). |
107
- | `value` | `string | number` | `undefined` | Sets the currently selected item's value and pre-selects the matching option when the component renders. |
111
+ | `value` | `string | number | null` | `undefined` | Sets the currently selected item's value and pre-selects the matching option when the component renders. Matches an item strictly by type and value, meaning string or number only match an item whose value has the same type and equal value. Use undefined or null for no preselection. Please note that FormData always serializes values as strings, so when participating in a native (uncontrolled) form a number value is restored as string via formStateRestoreCallback and will no longer strictly match a number-typed item. This limitation only applies to native form state restoration; in controlled forms (where the consumer manages value directly via the change event), the number type is preserved end-to-end. |
108
112
 
109
113
  ### Events
110
114
 
@@ -141,7 +145,7 @@ Allowed parent: `p-segmented-control`.
141
145
  | --- | --- | --- | --- |
142
146
  | `aria` | `SegmentedControlItemAriaAttribute` | `undefined` | Sets ARIA attributes on the item's button element to improve accessibility for screen readers. |
143
147
  | `disabled` | `boolean` | `false` | Prevents this item from being selected and visually dims it; the parent's value will not change to this item's value. |
144
- | `icon` | `''`<br>one of 290 icon names — see [icon names](references/icons.md) | `undefined` | Sets an icon rendered inside the item button using an icon name from the PDS icon library. |
148
+ | `icon` | `''`<br>one of 293 icon names — see [icon names](references/icons.md) | `undefined` | Sets an icon rendered inside the item button using an icon name from the PDS icon library. |
145
149
  | `iconSource` | `string` | `undefined` | Sets a URL to a custom SVG icon for the item button, overriding the built-in icon set. |
146
150
  | `label` | `string` | `undefined` | Sets a visible text label rendered inside the item button, used when no slotted content is provided. |
147
151
  | `value` _(required)_ | `string | number` | `undefined` | Sets the value emitted by the parent `p-segmented-control` when this item is selected. This property is*required**. |
@@ -0,0 +1,140 @@
1
+ # p-select accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### Prompt option used instead of a label
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```html
10
+ <p-select name="model">
11
+ <p-select-option value="">
12
+ Select a model
13
+ </p-select-option>
14
+ <p-select-option value="carrera">
15
+ 911 Carrera
16
+ </p-select-option>
17
+ <p-select-option value="carrera-s">
18
+ 911 Carrera S
19
+ </p-select-option>
20
+ </p-select>
21
+ ```
22
+
23
+ #### ✅ Recommended
24
+
25
+ ```html
26
+ <p-select label="Porsche model" name="model" description="Choose the model for your configuration.">
27
+ <p-select-option value="carrera">
28
+ 911 Carrera
29
+ </p-select-option>
30
+ <p-select-option value="carrera-s">
31
+ 911 Carrera S
32
+ </p-select-option>
33
+ </p-select>
34
+ ```
35
+
36
+ ### Ambiguous option labels without field context
37
+
38
+ #### ❌ Anti-pattern
39
+
40
+ ```html
41
+ <p-select label="Model" name="model">
42
+ <p-select-option value="base">
43
+ Base
44
+ </p-select-option>
45
+ <p-select-option value="s">
46
+ S
47
+ </p-select-option>
48
+ </p-select>
49
+ ```
50
+
51
+ #### ✅ Recommended
52
+
53
+ ```html
54
+ <p-select label="Porsche 911 trim" name="model" description="Select the trim level for your configuration.">
55
+ <p-select-option value="carrera">
56
+ 911 Carrera
57
+ </p-select-option>
58
+ <p-select-option value="carrera-s">
59
+ 911 Carrera S
60
+ </p-select-option>
61
+ </p-select>
62
+ ```
63
+
64
+ ### Hidden label without accessible name
65
+
66
+ #### ❌ Anti-pattern
67
+
68
+ ```html
69
+ <p-select name="model" [hideLabel]="true">
70
+ <p-select-option value="carrera">
71
+ 911 Carrera
72
+ </p-select-option>
73
+ </p-select>
74
+ ```
75
+
76
+ #### ✅ Recommended
77
+
78
+ ```html
79
+ <p-select label="Porsche model" name="model" [hideLabel]="true">
80
+ <p-select-option value="carrera">
81
+ 911 Carrera
82
+ </p-select-option>
83
+ </p-select>
84
+ ```
85
+
86
+ ### Validation feedback via state and message API
87
+
88
+ #### ❌ Anti-pattern
89
+
90
+ ```html
91
+ <p-select label="Porsche model" name="model" [aria-invalid]="true" message="Required">
92
+ <p-select-option value="carrera">
93
+ 911 Carrera
94
+ </p-select-option>
95
+ <p-select-option value="carrera-s">
96
+ 911 Carrera S
97
+ </p-select-option>
98
+ </p-select>
99
+ ```
100
+
101
+ #### ✅ Recommended
102
+
103
+ ```html
104
+ <p-select label="Porsche model" name="model" state="error" message="Select a model to continue with your configuration.">
105
+ <p-select-option value="carrera">
106
+ 911 Carrera
107
+ </p-select-option>
108
+ <p-select-option value="carrera-s">
109
+ 911 Carrera S
110
+ </p-select-option>
111
+ </p-select>
112
+ ```
113
+
114
+ ### Error state without recovery guidance
115
+
116
+ #### ❌ Anti-pattern
117
+
118
+ ```html
119
+ <p-select label="Porsche model" name="model" state="error" message="Invalid">
120
+ <p-select-option value="carrera">
121
+ 911 Carrera
122
+ </p-select-option>
123
+ <p-select-option value="carrera-s">
124
+ 911 Carrera S
125
+ </p-select-option>
126
+ </p-select>
127
+ ```
128
+
129
+ #### ✅ Recommended
130
+
131
+ ```html
132
+ <p-select label="Porsche model" name="model" [required]="true" state="error" message="Select a Porsche model. This field is required to continue.">
133
+ <p-select-option value="carrera">
134
+ 911 Carrera
135
+ </p-select-option>
136
+ <p-select-option value="carrera-s">
137
+ 911 Carrera S
138
+ </p-select-option>
139
+ </p-select>
140
+ ```
@@ -31,6 +31,9 @@ import {
31
31
  (change)="$event.stopPropagation()"
32
32
  ></p-input-search>
33
33
 
34
+ <!-- Persistent status announcer for assistive technologies (keep always in the DOM) -->
35
+ <div slot="options-status" class="sr-only" aria-live="polite" aria-atomic="true">{{ filterStatusMessage }}</div>
36
+
34
37
  <!-- Initial skeleton loading -->
35
38
  @if (initialLoading && !error) {
36
39
  @for (_ of [1,2,3,4,5,6,7,8,9]; track $index) {
@@ -45,15 +48,14 @@ import {
45
48
  </p-select-option>
46
49
  }
47
50
 
48
- <!-- No filter results -->
49
- @if (!initialLoading && options.length === 0 && !error) {
51
+ <!-- No filter results (visual only; announcements come from the live region) -->
52
+ @if (!initialLoading && !loading && options.length === 0 && !error) {
50
53
  <div
51
54
  slot="options-status"
52
55
  class="text-contrast-medium cursor-not-allowed py-static-sm px-[12px]"
53
- role="alert"
56
+ aria-hidden="true"
54
57
  >
55
- <span aria-hidden="true">–</span>
56
- <span class="sr-only">No results found</span>
58
+
57
59
  </div>
58
60
  }
59
61
 
@@ -83,6 +85,7 @@ export class ExampleComponent {
83
85
  initialLoading = false;
84
86
  loading = false;
85
87
  error: string | null = null;
88
+ filterStatusMessage = '';
86
89
 
87
90
  private hasLoadedOnce = false;
88
91
  private currentFetchId = 0;
@@ -94,6 +97,7 @@ export class ExampleComponent {
94
97
  const fetchId = ++this.currentFetchId;
95
98
  if (isInitial) this.initialLoading = true;
96
99
  else this.loading = true;
100
+ this.updateFilterStatusMessage();
97
101
 
98
102
  this.cdr.markForCheck();
99
103
 
@@ -122,6 +126,7 @@ export class ExampleComponent {
122
126
  } finally {
123
127
  if (isInitial) this.initialLoading = false;
124
128
  else this.loading = false;
129
+ this.updateFilterStatusMessage();
125
130
 
126
131
  this.cdr.markForCheck();
127
132
  }
@@ -146,4 +151,26 @@ export class ExampleComponent {
146
151
  this.fetchOptions(undefined, true);
147
152
  }
148
153
  }
154
+
155
+ private updateFilterStatusMessage(): void {
156
+ if (this.error) {
157
+ this.filterStatusMessage = '';
158
+ return;
159
+ }
160
+ if (this.initialLoading || this.loading) {
161
+ this.filterStatusMessage = 'Loading options';
162
+ return;
163
+ }
164
+ const term = this.searchValue.trim();
165
+ if (!term) {
166
+ this.filterStatusMessage = '';
167
+ return;
168
+ }
169
+ if (this.options.length === 0) {
170
+ this.filterStatusMessage = 'No results found';
171
+ return;
172
+ }
173
+ this.filterStatusMessage =
174
+ this.options.length === 1 ? '1 result available' : `${this.options.length} results available`;
175
+ }
149
176
  }
@@ -79,6 +79,10 @@ In general, avoid using the `disabled` state. Disabled elements are no longer fo
79
79
  - **Don't** use very short or ambiguous option labels when context is important.
80
80
  - **Don't** use `hide-label` without an accessible name.
81
81
 
82
+ ## Integration examples
83
+
84
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
85
+
82
86
  ## API
83
87
 
84
88
  ### Properties
@@ -137,7 +141,7 @@ Allowed parents: `p-multi-select`, `p-optgroup`.
137
141
  | Property | Type | Default | Description |
138
142
  | --- | --- | --- | --- |
139
143
  | `disabled` | `boolean` | `false` | Disables the option, preventing it from being selected. |
140
- | `value` _(required)_ | `string | number` | `undefined` | Sets the value submitted with the form data when this option is selected in the parent multi-select. |
144
+ | `value` _(required)_ | `string | number` | `undefined` | Sets the required option value submitted with the form data when selected. Must be a string or number. |
141
145
 
142
146
  #### Slots
143
147