@porsche-design-system/components-angular 4.5.0 → 4.6.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/ag-grid/package.json +6 -0
  3. package/bin/pds-skill.js +346 -0
  4. package/emotion/package.json +6 -0
  5. package/fesm2022/porsche-design-system-components-angular.mjs +232 -232
  6. package/fesm2022/porsche-design-system-components-angular.mjs.map +1 -1
  7. package/jsdom-polyfill/package.json +5 -0
  8. package/meta/package.json +6 -0
  9. package/package.json +5 -2
  10. package/partials/package.json +6 -0
  11. package/skills/pds-knowledge-angular/SKILL.md +124 -0
  12. package/skills/pds-knowledge-angular/references/components/p-accordion/accessibility.md +63 -0
  13. package/skills/pds-knowledge-angular/references/components/p-accordion/examples/Default.ts +26 -0
  14. package/skills/pds-knowledge-angular/references/components/p-accordion/examples/InteractiveElementsInSummary.ts +30 -0
  15. package/skills/pds-knowledge-angular/references/components/p-accordion/examples/StickySummary.ts +26 -0
  16. package/skills/pds-knowledge-angular/references/components/p-accordion/p-accordion.md +99 -0
  17. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/Default.ts +13 -0
  18. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/WithinCheckbox.ts +33 -0
  19. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/WithinFormLabel.ts +40 -0
  20. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/WithinImage.ts +16 -0
  21. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/WithinInputSearch.ts +15 -0
  22. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/WithinRadioGroup.ts +32 -0
  23. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/WithinTable.ts +94 -0
  24. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/WithinText.ts +17 -0
  25. package/skills/pds-knowledge-angular/references/components/p-ai-tag/p-ai-tag.md +47 -0
  26. package/skills/pds-knowledge-angular/references/components/p-banner/accessibility.md +35 -0
  27. package/skills/pds-knowledge-angular/references/components/p-banner/examples/Customization.ts +37 -0
  28. package/skills/pds-knowledge-angular/references/components/p-banner/examples/Default.ts +26 -0
  29. package/skills/pds-knowledge-angular/references/components/p-banner/p-banner.md +96 -0
  30. package/skills/pds-knowledge-angular/references/components/p-button/accessibility.md +61 -0
  31. package/skills/pds-knowledge-angular/references/components/p-button/examples/Default.ts +15 -0
  32. package/skills/pds-knowledge-angular/references/components/p-button/examples/Form.ts +26 -0
  33. package/skills/pds-knowledge-angular/references/components/p-button/examples/FormAttribute.ts +30 -0
  34. package/skills/pds-knowledge-angular/references/components/p-button/p-button.md +122 -0
  35. package/skills/pds-knowledge-angular/references/components/p-button-pure/accessibility.md +61 -0
  36. package/skills/pds-knowledge-angular/references/components/p-button-pure/examples/CustomClickableArea.ts +15 -0
  37. package/skills/pds-knowledge-angular/references/components/p-button-pure/examples/Default.ts +15 -0
  38. package/skills/pds-knowledge-angular/references/components/p-button-pure/examples/Form.ts +26 -0
  39. package/skills/pds-knowledge-angular/references/components/p-button-pure/examples/FormAttribute.ts +30 -0
  40. package/skills/pds-knowledge-angular/references/components/p-button-pure/p-button-pure.md +122 -0
  41. package/skills/pds-knowledge-angular/references/components/p-button-tile/accessibility.md +31 -0
  42. package/skills/pds-knowledge-angular/references/components/p-button-tile/examples/ColorScheme.ts +18 -0
  43. package/skills/pds-knowledge-angular/references/components/p-button-tile/examples/Default.ts +21 -0
  44. package/skills/pds-knowledge-angular/references/components/p-button-tile/examples/FooterSlot.ts +32 -0
  45. package/skills/pds-knowledge-angular/references/components/p-button-tile/examples/Hyphens.ts +38 -0
  46. package/skills/pds-knowledge-angular/references/components/p-button-tile/examples/UiBehaviour.ts +44 -0
  47. package/skills/pds-knowledge-angular/references/components/p-button-tile/p-button-tile.md +119 -0
  48. package/skills/pds-knowledge-angular/references/components/p-canvas/examples/Default.ts +105 -0
  49. package/skills/pds-knowledge-angular/references/components/p-canvas/p-canvas.md +95 -0
  50. package/skills/pds-knowledge-angular/references/components/p-carousel/accessibility.md +61 -0
  51. package/skills/pds-knowledge-angular/references/components/p-carousel/examples/Default.ts +26 -0
  52. package/skills/pds-knowledge-angular/references/components/p-carousel/examples/DynamicSlides.ts +37 -0
  53. package/skills/pds-knowledge-angular/references/components/p-carousel/examples/FlexibleWidths.ts +32 -0
  54. package/skills/pds-knowledge-angular/references/components/p-carousel/examples/FocusOnCenterSlide.ts +65 -0
  55. package/skills/pds-knowledge-angular/references/components/p-carousel/examples/Intl.ts +23 -0
  56. package/skills/pds-knowledge-angular/references/components/p-carousel/examples/JumpToSlide.ts +50 -0
  57. package/skills/pds-knowledge-angular/references/components/p-carousel/p-carousel.md +146 -0
  58. package/skills/pds-knowledge-angular/references/components/p-checkbox/accessibility.md +31 -0
  59. package/skills/pds-knowledge-angular/references/components/p-checkbox/examples/Default.ts +13 -0
  60. package/skills/pds-knowledge-angular/references/components/p-checkbox/examples/Form.ts +31 -0
  61. package/skills/pds-knowledge-angular/references/components/p-checkbox/examples/Indeterminate.ts +16 -0
  62. package/skills/pds-knowledge-angular/references/components/p-checkbox/examples/Slots.ts +57 -0
  63. package/skills/pds-knowledge-angular/references/components/p-checkbox/examples/WrappedLabel.ts +27 -0
  64. package/skills/pds-knowledge-angular/references/components/p-checkbox/p-checkbox.md +126 -0
  65. package/skills/pds-knowledge-angular/references/components/p-crest/accessibility.md +17 -0
  66. package/skills/pds-knowledge-angular/references/components/p-crest/examples/CustomClickableArea.ts +13 -0
  67. package/skills/pds-knowledge-angular/references/components/p-crest/examples/Default.ts +13 -0
  68. package/skills/pds-knowledge-angular/references/components/p-crest/examples/Link.ts +13 -0
  69. package/skills/pds-knowledge-angular/references/components/p-crest/p-crest.md +69 -0
  70. package/skills/pds-knowledge-angular/references/components/p-display/examples/Color.ts +15 -0
  71. package/skills/pds-knowledge-angular/references/components/p-display/examples/Default.ts +15 -0
  72. package/skills/pds-knowledge-angular/references/components/p-display/examples/Semantics.ts +21 -0
  73. package/skills/pds-knowledge-angular/references/components/p-display/examples/Size.ts +15 -0
  74. package/skills/pds-knowledge-angular/references/components/p-display/examples/SizeResponsive.ts +15 -0
  75. package/skills/pds-knowledge-angular/references/components/p-display/p-display.md +78 -0
  76. package/skills/pds-knowledge-angular/references/components/p-divider/accessibility.md +41 -0
  77. package/skills/pds-knowledge-angular/references/components/p-divider/examples/Default.ts +13 -0
  78. package/skills/pds-knowledge-angular/references/components/p-divider/examples/Responsive.ts +15 -0
  79. package/skills/pds-knowledge-angular/references/components/p-divider/examples/Vertical.ts +15 -0
  80. package/skills/pds-knowledge-angular/references/components/p-divider/p-divider.md +53 -0
  81. package/skills/pds-knowledge-angular/references/components/p-drilldown/accessibility.md +65 -0
  82. package/skills/pds-knowledge-angular/references/components/p-drilldown/examples/CustomContent.ts +166 -0
  83. package/skills/pds-knowledge-angular/references/components/p-drilldown/examples/Default.ts +119 -0
  84. package/skills/pds-knowledge-angular/references/components/p-drilldown/p-drilldown.md +172 -0
  85. package/skills/pds-knowledge-angular/references/components/p-fieldset/accessibility.md +37 -0
  86. package/skills/pds-knowledge-angular/references/components/p-fieldset/examples/Default.ts +15 -0
  87. package/skills/pds-knowledge-angular/references/components/p-fieldset/examples/Required.ts +16 -0
  88. package/skills/pds-knowledge-angular/references/components/p-fieldset/examples/SlottedLabel.ts +18 -0
  89. package/skills/pds-knowledge-angular/references/components/p-fieldset/examples/SlottedMessage.ts +18 -0
  90. package/skills/pds-knowledge-angular/references/components/p-fieldset/p-fieldset.md +92 -0
  91. package/skills/pds-knowledge-angular/references/components/p-flag/accessibility.md +39 -0
  92. package/skills/pds-knowledge-angular/references/components/p-flag/examples/Default.ts +13 -0
  93. package/skills/pds-knowledge-angular/references/components/p-flag/examples/ResponsiveSize.ts +13 -0
  94. package/skills/pds-knowledge-angular/references/components/p-flag/examples/Size.ts +16 -0
  95. package/skills/pds-knowledge-angular/references/components/p-flag/examples/SizeCssVar.ts +13 -0
  96. package/skills/pds-knowledge-angular/references/components/p-flag/p-flag.md +72 -0
  97. package/skills/pds-knowledge-angular/references/components/p-flyout/accessibility.md +80 -0
  98. package/skills/pds-knowledge-angular/references/components/p-flyout/examples/CustomStyling.ts +47 -0
  99. package/skills/pds-knowledge-angular/references/components/p-flyout/examples/Default.ts +44 -0
  100. package/skills/pds-knowledge-angular/references/components/p-flyout/examples/Form.ts +47 -0
  101. package/skills/pds-knowledge-angular/references/components/p-flyout/examples/StickyTop.ts +44 -0
  102. package/skills/pds-knowledge-angular/references/components/p-flyout/p-flyout.md +132 -0
  103. package/skills/pds-knowledge-angular/references/components/p-heading/accessibility.md +29 -0
  104. package/skills/pds-knowledge-angular/references/components/p-heading/examples/Color.ts +15 -0
  105. package/skills/pds-knowledge-angular/references/components/p-heading/examples/Default.ts +15 -0
  106. package/skills/pds-knowledge-angular/references/components/p-heading/examples/Semantics.ts +21 -0
  107. package/skills/pds-knowledge-angular/references/components/p-heading/p-heading.md +82 -0
  108. package/skills/pds-knowledge-angular/references/components/p-icon/accessibility.md +39 -0
  109. package/skills/pds-knowledge-angular/references/components/p-icon/examples/Color.ts +16 -0
  110. package/skills/pds-knowledge-angular/references/components/p-icon/examples/ColorCssVar.ts +13 -0
  111. package/skills/pds-knowledge-angular/references/components/p-icon/examples/Custom.ts +13 -0
  112. package/skills/pds-knowledge-angular/references/components/p-icon/examples/Default.ts +13 -0
  113. package/skills/pds-knowledge-angular/references/components/p-icon/examples/Overview.ts +591 -0
  114. package/skills/pds-knowledge-angular/references/components/p-icon/examples/ResponsiveSize.ts +13 -0
  115. package/skills/pds-knowledge-angular/references/components/p-icon/examples/Size.ts +16 -0
  116. package/skills/pds-knowledge-angular/references/components/p-icon/examples/SizeCssVar.ts +13 -0
  117. package/skills/pds-knowledge-angular/references/components/p-icon/p-icon.md +92 -0
  118. package/skills/pds-knowledge-angular/references/components/p-inline-notification/accessibility.md +38 -0
  119. package/skills/pds-knowledge-angular/references/components/p-inline-notification/examples/ActionButton.ts +29 -0
  120. package/skills/pds-knowledge-angular/references/components/p-inline-notification/examples/Default.ts +13 -0
  121. package/skills/pds-knowledge-angular/references/components/p-inline-notification/examples/EventHandling.ts +31 -0
  122. package/skills/pds-knowledge-angular/references/components/p-inline-notification/p-inline-notification.md +78 -0
  123. package/skills/pds-knowledge-angular/references/components/p-input-date/accessibility.md +45 -0
  124. package/skills/pds-knowledge-angular/references/components/p-input-date/examples/Default.ts +13 -0
  125. package/skills/pds-knowledge-angular/references/components/p-input-date/examples/Form.ts +31 -0
  126. package/skills/pds-knowledge-angular/references/components/p-input-date/examples/Slots.ts +44 -0
  127. package/skills/pds-knowledge-angular/references/components/p-input-date/p-input-date.md +142 -0
  128. package/skills/pds-knowledge-angular/references/components/p-input-email/accessibility.md +45 -0
  129. package/skills/pds-knowledge-angular/references/components/p-input-email/examples/Default.ts +13 -0
  130. package/skills/pds-knowledge-angular/references/components/p-input-email/examples/Form.ts +31 -0
  131. package/skills/pds-knowledge-angular/references/components/p-input-email/examples/Slots.ts +44 -0
  132. package/skills/pds-knowledge-angular/references/components/p-input-email/p-input-email.md +146 -0
  133. package/skills/pds-knowledge-angular/references/components/p-input-month/accessibility.md +45 -0
  134. package/skills/pds-knowledge-angular/references/components/p-input-month/examples/Default.ts +13 -0
  135. package/skills/pds-knowledge-angular/references/components/p-input-month/examples/Form.ts +31 -0
  136. package/skills/pds-knowledge-angular/references/components/p-input-month/examples/Slots.ts +44 -0
  137. package/skills/pds-knowledge-angular/references/components/p-input-month/p-input-month.md +142 -0
  138. package/skills/pds-knowledge-angular/references/components/p-input-number/accessibility.md +45 -0
  139. package/skills/pds-knowledge-angular/references/components/p-input-number/examples/Default.ts +13 -0
  140. package/skills/pds-knowledge-angular/references/components/p-input-number/examples/Form.ts +31 -0
  141. package/skills/pds-knowledge-angular/references/components/p-input-number/examples/Slots.ts +44 -0
  142. package/skills/pds-knowledge-angular/references/components/p-input-number/p-input-number.md +150 -0
  143. package/skills/pds-knowledge-angular/references/components/p-input-password/accessibility.md +45 -0
  144. package/skills/pds-knowledge-angular/references/components/p-input-password/examples/Default.ts +13 -0
  145. package/skills/pds-knowledge-angular/references/components/p-input-password/examples/Form.ts +31 -0
  146. package/skills/pds-knowledge-angular/references/components/p-input-password/examples/Slots.ts +42 -0
  147. package/skills/pds-knowledge-angular/references/components/p-input-password/examples/Toggle.ts +13 -0
  148. package/skills/pds-knowledge-angular/references/components/p-input-password/p-input-password.md +145 -0
  149. package/skills/pds-knowledge-angular/references/components/p-input-search/accessibility.md +59 -0
  150. package/skills/pds-knowledge-angular/references/components/p-input-search/examples/AriaCombobox.ts +38 -0
  151. package/skills/pds-knowledge-angular/references/components/p-input-search/examples/Default.ts +13 -0
  152. package/skills/pds-knowledge-angular/references/components/p-input-search/examples/Form.ts +31 -0
  153. package/skills/pds-knowledge-angular/references/components/p-input-search/examples/Slots.ts +44 -0
  154. package/skills/pds-knowledge-angular/references/components/p-input-search/p-input-search.md +182 -0
  155. package/skills/pds-knowledge-angular/references/components/p-input-tel/accessibility.md +45 -0
  156. package/skills/pds-knowledge-angular/references/components/p-input-tel/examples/Default.ts +13 -0
  157. package/skills/pds-knowledge-angular/references/components/p-input-tel/examples/Form.ts +31 -0
  158. package/skills/pds-knowledge-angular/references/components/p-input-tel/examples/Slots.ts +44 -0
  159. package/skills/pds-knowledge-angular/references/components/p-input-tel/p-input-tel.md +145 -0
  160. package/skills/pds-knowledge-angular/references/components/p-input-text/accessibility.md +45 -0
  161. package/skills/pds-knowledge-angular/references/components/p-input-text/examples/Controlled.ts +36 -0
  162. package/skills/pds-knowledge-angular/references/components/p-input-text/examples/Default.ts +13 -0
  163. package/skills/pds-knowledge-angular/references/components/p-input-text/examples/Form.ts +31 -0
  164. package/skills/pds-knowledge-angular/references/components/p-input-text/examples/Slots.ts +44 -0
  165. package/skills/pds-knowledge-angular/references/components/p-input-text/p-input-text.md +150 -0
  166. package/skills/pds-knowledge-angular/references/components/p-input-time/accessibility.md +45 -0
  167. package/skills/pds-knowledge-angular/references/components/p-input-time/examples/Default.ts +13 -0
  168. package/skills/pds-knowledge-angular/references/components/p-input-time/examples/Form.ts +31 -0
  169. package/skills/pds-knowledge-angular/references/components/p-input-time/examples/Slots.ts +44 -0
  170. package/skills/pds-knowledge-angular/references/components/p-input-time/p-input-time.md +144 -0
  171. package/skills/pds-knowledge-angular/references/components/p-input-url/accessibility.md +45 -0
  172. package/skills/pds-knowledge-angular/references/components/p-input-url/examples/Default.ts +13 -0
  173. package/skills/pds-knowledge-angular/references/components/p-input-url/examples/Form.ts +31 -0
  174. package/skills/pds-knowledge-angular/references/components/p-input-url/examples/Slots.ts +44 -0
  175. package/skills/pds-knowledge-angular/references/components/p-input-url/p-input-url.md +145 -0
  176. package/skills/pds-knowledge-angular/references/components/p-input-week/accessibility.md +45 -0
  177. package/skills/pds-knowledge-angular/references/components/p-input-week/examples/Default.ts +13 -0
  178. package/skills/pds-knowledge-angular/references/components/p-input-week/examples/Form.ts +31 -0
  179. package/skills/pds-knowledge-angular/references/components/p-input-week/examples/Slots.ts +44 -0
  180. package/skills/pds-knowledge-angular/references/components/p-input-week/p-input-week.md +142 -0
  181. package/skills/pds-knowledge-angular/references/components/p-link/accessibility.md +73 -0
  182. package/skills/pds-knowledge-angular/references/components/p-link/examples/Default.ts +15 -0
  183. package/skills/pds-knowledge-angular/references/components/p-link/examples/FrameworkRouting.ts +17 -0
  184. package/skills/pds-knowledge-angular/references/components/p-link/examples/Icon.ts +20 -0
  185. package/skills/pds-knowledge-angular/references/components/p-link/p-link.md +105 -0
  186. package/skills/pds-knowledge-angular/references/components/p-link-pure/accessibility.md +73 -0
  187. package/skills/pds-knowledge-angular/references/components/p-link-pure/examples/CustomClickableArea.ts +15 -0
  188. package/skills/pds-knowledge-angular/references/components/p-link-pure/examples/Default.ts +15 -0
  189. package/skills/pds-knowledge-angular/references/components/p-link-pure/examples/FrameworkRouting.ts +17 -0
  190. package/skills/pds-knowledge-angular/references/components/p-link-pure/examples/Icon.ts +20 -0
  191. package/skills/pds-knowledge-angular/references/components/p-link-pure/p-link-pure.md +114 -0
  192. package/skills/pds-knowledge-angular/references/components/p-link-tile/accessibility.md +31 -0
  193. package/skills/pds-knowledge-angular/references/components/p-link-tile/examples/ColorScheme.ts +18 -0
  194. package/skills/pds-knowledge-angular/references/components/p-link-tile/examples/Default.ts +21 -0
  195. package/skills/pds-knowledge-angular/references/components/p-link-tile/examples/FooterSlot.ts +32 -0
  196. package/skills/pds-knowledge-angular/references/components/p-link-tile/examples/Hyphens.ts +39 -0
  197. package/skills/pds-knowledge-angular/references/components/p-link-tile/examples/UiBehaviour.ts +44 -0
  198. package/skills/pds-knowledge-angular/references/components/p-link-tile/examples/WithVideo.ts +18 -0
  199. package/skills/pds-knowledge-angular/references/components/p-link-tile/p-link-tile.md +109 -0
  200. package/skills/pds-knowledge-angular/references/components/p-link-tile-product/examples/Default.ts +24 -0
  201. package/skills/pds-knowledge-angular/references/components/p-link-tile-product/examples/FrameworkRouting.ts +27 -0
  202. package/skills/pds-knowledge-angular/references/components/p-link-tile-product/p-link-tile-product.md +93 -0
  203. package/skills/pds-knowledge-angular/references/components/p-modal/accessibility.md +80 -0
  204. package/skills/pds-knowledge-angular/references/components/p-modal/examples/AlertDialog.ts +41 -0
  205. package/skills/pds-knowledge-angular/references/components/p-modal/examples/CustomStyling.ts +28 -0
  206. package/skills/pds-knowledge-angular/references/components/p-modal/examples/Default.ts +41 -0
  207. package/skills/pds-knowledge-angular/references/components/p-modal/examples/Scrollable.ts +45 -0
  208. package/skills/pds-knowledge-angular/references/components/p-modal/p-modal.md +139 -0
  209. package/skills/pds-knowledge-angular/references/components/p-model-signature/examples/CustomStyling.ts +17 -0
  210. package/skills/pds-knowledge-angular/references/components/p-model-signature/examples/Default.ts +13 -0
  211. package/skills/pds-knowledge-angular/references/components/p-model-signature/examples/MaskBlendMode.ts +35 -0
  212. package/skills/pds-knowledge-angular/references/components/p-model-signature/examples/MaskImage.ts +15 -0
  213. package/skills/pds-knowledge-angular/references/components/p-model-signature/examples/MaskVideo.ts +15 -0
  214. package/skills/pds-knowledge-angular/references/components/p-model-signature/examples/SafeZone.ts +63 -0
  215. package/skills/pds-knowledge-angular/references/components/p-model-signature/p-model-signature.md +62 -0
  216. package/skills/pds-knowledge-angular/references/components/p-multi-select/accessibility.md +78 -0
  217. package/skills/pds-knowledge-angular/references/components/p-multi-select/examples/AsyncFilter.ts +149 -0
  218. package/skills/pds-knowledge-angular/references/components/p-multi-select/examples/Default.ts +32 -0
  219. package/skills/pds-knowledge-angular/references/components/p-multi-select/examples/Form.ts +38 -0
  220. package/skills/pds-knowledge-angular/references/components/p-multi-select/examples/Optgroups.ts +45 -0
  221. package/skills/pds-knowledge-angular/references/components/p-multi-select/examples/SelectedSlot.ts +103 -0
  222. package/skills/pds-knowledge-angular/references/components/p-multi-select/examples/SetValue.ts +76 -0
  223. package/skills/pds-knowledge-angular/references/components/p-multi-select/examples/Slots.ts +51 -0
  224. package/skills/pds-knowledge-angular/references/components/p-multi-select/p-multi-select.md +201 -0
  225. package/skills/pds-knowledge-angular/references/components/p-pagination/accessibility.md +23 -0
  226. package/skills/pds-knowledge-angular/references/components/p-pagination/examples/Default.ts +13 -0
  227. package/skills/pds-knowledge-angular/references/components/p-pagination/p-pagination.md +87 -0
  228. package/skills/pds-knowledge-angular/references/components/p-pin-code/accessibility.md +45 -0
  229. package/skills/pds-knowledge-angular/references/components/p-pin-code/examples/CopyPaste.ts +13 -0
  230. package/skills/pds-knowledge-angular/references/components/p-pin-code/examples/Default.ts +13 -0
  231. package/skills/pds-knowledge-angular/references/components/p-pin-code/examples/Form.ts +31 -0
  232. package/skills/pds-knowledge-angular/references/components/p-pin-code/examples/Slots.ts +42 -0
  233. package/skills/pds-knowledge-angular/references/components/p-pin-code/p-pin-code.md +113 -0
  234. package/skills/pds-knowledge-angular/references/components/p-popover/accessibility.md +61 -0
  235. package/skills/pds-knowledge-angular/references/components/p-popover/examples/Default.ts +17 -0
  236. package/skills/pds-knowledge-angular/references/components/p-popover/examples/SlottedButton.ts +18 -0
  237. package/skills/pds-knowledge-angular/references/components/p-popover/p-popover.md +120 -0
  238. package/skills/pds-knowledge-angular/references/components/p-radio-group/accessibility.md +63 -0
  239. package/skills/pds-knowledge-angular/references/components/p-radio-group/examples/Default.ts +20 -0
  240. package/skills/pds-knowledge-angular/references/components/p-radio-group/examples/Form.ts +38 -0
  241. package/skills/pds-knowledge-angular/references/components/p-radio-group/examples/Slots.ts +72 -0
  242. package/skills/pds-knowledge-angular/references/components/p-radio-group/p-radio-group.md +161 -0
  243. package/skills/pds-knowledge-angular/references/components/p-scroller/accessibility.md +31 -0
  244. package/skills/pds-knowledge-angular/references/components/p-scroller/examples/Default.ts +54 -0
  245. package/skills/pds-knowledge-angular/references/components/p-scroller/examples/Height.ts +29 -0
  246. package/skills/pds-knowledge-angular/references/components/p-scroller/examples/ScrollToPosition.ts +43 -0
  247. package/skills/pds-knowledge-angular/references/components/p-scroller/p-scroller.md +97 -0
  248. package/skills/pds-knowledge-angular/references/components/p-segmented-control/accessibility.md +67 -0
  249. package/skills/pds-knowledge-angular/references/components/p-segmented-control/examples/Default.ts +29 -0
  250. package/skills/pds-knowledge-angular/references/components/p-segmented-control/examples/Form.ts +37 -0
  251. package/skills/pds-knowledge-angular/references/components/p-segmented-control/examples/Slots.ts +57 -0
  252. package/skills/pds-knowledge-angular/references/components/p-segmented-control/examples/WithLabels.ts +29 -0
  253. package/skills/pds-knowledge-angular/references/components/p-segmented-control/p-segmented-control.md +166 -0
  254. package/skills/pds-knowledge-angular/references/components/p-select/accessibility.md +140 -0
  255. package/skills/pds-knowledge-angular/references/components/p-select/examples/AsyncFilter.ts +149 -0
  256. package/skills/pds-knowledge-angular/references/components/p-select/examples/Default.ts +32 -0
  257. package/skills/pds-knowledge-angular/references/components/p-select/examples/Form.ts +38 -0
  258. package/skills/pds-knowledge-angular/references/components/p-select/examples/Optgroups.ts +45 -0
  259. package/skills/pds-knowledge-angular/references/components/p-select/examples/Required.ts +48 -0
  260. package/skills/pds-knowledge-angular/references/components/p-select/examples/SelectedSlot.ts +130 -0
  261. package/skills/pds-knowledge-angular/references/components/p-select/examples/SetValue.ts +71 -0
  262. package/skills/pds-knowledge-angular/references/components/p-select/examples/Slots.ts +51 -0
  263. package/skills/pds-knowledge-angular/references/components/p-select/examples/SlottedImages.ts +38 -0
  264. package/skills/pds-knowledge-angular/references/components/p-select/p-select.md +198 -0
  265. package/skills/pds-knowledge-angular/references/components/p-sheet/accessibility.md +80 -0
  266. package/skills/pds-knowledge-angular/references/components/p-sheet/examples/Default.ts +33 -0
  267. package/skills/pds-knowledge-angular/references/components/p-sheet/p-sheet.md +125 -0
  268. package/skills/pds-knowledge-angular/references/components/p-spinner/accessibility.md +33 -0
  269. package/skills/pds-knowledge-angular/references/components/p-spinner/examples/Color.ts +16 -0
  270. package/skills/pds-knowledge-angular/references/components/p-spinner/examples/ColorCssVar.ts +13 -0
  271. package/skills/pds-knowledge-angular/references/components/p-spinner/examples/Default.ts +13 -0
  272. package/skills/pds-knowledge-angular/references/components/p-spinner/examples/ResponsiveSize.ts +13 -0
  273. package/skills/pds-knowledge-angular/references/components/p-spinner/examples/Size.ts +16 -0
  274. package/skills/pds-knowledge-angular/references/components/p-spinner/examples/SizeCssVar.ts +13 -0
  275. package/skills/pds-knowledge-angular/references/components/p-spinner/p-spinner.md +100 -0
  276. package/skills/pds-knowledge-angular/references/components/p-stepper-horizontal/accessibility.md +34 -0
  277. package/skills/pds-knowledge-angular/references/components/p-stepper-horizontal/examples/Default.ts +26 -0
  278. package/skills/pds-knowledge-angular/references/components/p-stepper-horizontal/examples/FrameworkImplementation.ts +107 -0
  279. package/skills/pds-knowledge-angular/references/components/p-stepper-horizontal/p-stepper-horizontal.md +113 -0
  280. package/skills/pds-knowledge-angular/references/components/p-switch/accessibility.md +35 -0
  281. package/skills/pds-knowledge-angular/references/components/p-switch/examples/Default.ts +21 -0
  282. package/skills/pds-knowledge-angular/references/components/p-switch/p-switch.md +107 -0
  283. package/skills/pds-knowledge-angular/references/components/p-table/accessibility.md +47 -0
  284. package/skills/pds-knowledge-angular/references/components/p-table/examples/Advanced.ts +162 -0
  285. package/skills/pds-knowledge-angular/references/components/p-table/examples/CaptionProperty.ts +40 -0
  286. package/skills/pds-knowledge-angular/references/components/p-table/examples/CaptionSlot.ts +43 -0
  287. package/skills/pds-knowledge-angular/references/components/p-table/examples/Default.ts +120 -0
  288. package/skills/pds-knowledge-angular/references/components/p-table/examples/HideLabel.ts +40 -0
  289. package/skills/pds-knowledge-angular/references/components/p-table/examples/LayoutFixed.ts +53 -0
  290. package/skills/pds-knowledge-angular/references/components/p-table/examples/Sorting.ts +80 -0
  291. package/skills/pds-knowledge-angular/references/components/p-table/p-table.md +193 -0
  292. package/skills/pds-knowledge-angular/references/components/p-tabs/accessibility.md +56 -0
  293. package/skills/pds-knowledge-angular/references/components/p-tabs/examples/ActiveTab.ts +29 -0
  294. package/skills/pds-knowledge-angular/references/components/p-tabs/examples/Default.ts +29 -0
  295. package/skills/pds-knowledge-angular/references/components/p-tabs/examples/Gradient.ts +114 -0
  296. package/skills/pds-knowledge-angular/references/components/p-tabs/examples/Labelling.ts +29 -0
  297. package/skills/pds-knowledge-angular/references/components/p-tabs/p-tabs.md +140 -0
  298. package/skills/pds-knowledge-angular/references/components/p-tabs-bar/accessibility.md +61 -0
  299. package/skills/pds-knowledge-angular/references/components/p-tabs-bar/examples/Default.ts +29 -0
  300. package/skills/pds-knowledge-angular/references/components/p-tabs-bar/examples/Gradient.ts +80 -0
  301. package/skills/pds-knowledge-angular/references/components/p-tabs-bar/examples/Labelling.ts +29 -0
  302. package/skills/pds-knowledge-angular/references/components/p-tabs-bar/examples/Links.ts +23 -0
  303. package/skills/pds-knowledge-angular/references/components/p-tabs-bar/p-tabs-bar.md +185 -0
  304. package/skills/pds-knowledge-angular/references/components/p-tag/accessibility.md +19 -0
  305. package/skills/pds-knowledge-angular/references/components/p-tag/examples/Default.ts +15 -0
  306. package/skills/pds-knowledge-angular/references/components/p-tag/examples/Multiline.ts +17 -0
  307. package/skills/pds-knowledge-angular/references/components/p-tag/examples/SlottedButton.ts +44 -0
  308. package/skills/pds-knowledge-angular/references/components/p-tag/examples/SlottedLink.ts +44 -0
  309. package/skills/pds-knowledge-angular/references/components/p-tag/p-tag.md +70 -0
  310. package/skills/pds-knowledge-angular/references/components/p-tag-dismissible/accessibility.md +35 -0
  311. package/skills/pds-knowledge-angular/references/components/p-tag-dismissible/examples/Default.ts +15 -0
  312. package/skills/pds-knowledge-angular/references/components/p-tag-dismissible/p-tag-dismissible.md +79 -0
  313. package/skills/pds-knowledge-angular/references/components/p-text/accessibility.md +21 -0
  314. package/skills/pds-knowledge-angular/references/components/p-text/examples/Default.ts +15 -0
  315. package/skills/pds-knowledge-angular/references/components/p-text/examples/Semantics.ts +21 -0
  316. package/skills/pds-knowledge-angular/references/components/p-text/examples/Size.ts +15 -0
  317. package/skills/pds-knowledge-angular/references/components/p-text/examples/SizeResponsive.ts +15 -0
  318. package/skills/pds-knowledge-angular/references/components/p-text/p-text.md +72 -0
  319. package/skills/pds-knowledge-angular/references/components/p-text-list/accessibility.md +31 -0
  320. package/skills/pds-knowledge-angular/references/components/p-text-list/examples/Default.ts +31 -0
  321. package/skills/pds-knowledge-angular/references/components/p-text-list/p-text-list.md +72 -0
  322. package/skills/pds-knowledge-angular/references/components/p-textarea/accessibility.md +45 -0
  323. package/skills/pds-knowledge-angular/references/components/p-textarea/examples/Default.ts +13 -0
  324. package/skills/pds-knowledge-angular/references/components/p-textarea/examples/Form.ts +31 -0
  325. package/skills/pds-knowledge-angular/references/components/p-textarea/examples/Slots.ts +42 -0
  326. package/skills/pds-knowledge-angular/references/components/p-textarea/p-textarea.md +126 -0
  327. package/skills/pds-knowledge-angular/references/components/p-toast/examples/Default.ts +23 -0
  328. package/skills/pds-knowledge-angular/references/components/p-toast/p-toast.md +61 -0
  329. package/skills/pds-knowledge-angular/references/components/p-wordmark/accessibility.md +31 -0
  330. package/skills/pds-knowledge-angular/references/components/p-wordmark/examples/CustomClickableArea.ts +13 -0
  331. package/skills/pds-knowledge-angular/references/components/p-wordmark/examples/Default.ts +13 -0
  332. package/skills/pds-knowledge-angular/references/components/p-wordmark/examples/Size.ts +13 -0
  333. package/skills/pds-knowledge-angular/references/components/p-wordmark/p-wordmark.md +70 -0
  334. package/skills/pds-knowledge-angular/references/icons.md +5 -0
  335. package/skills/pds-knowledge-angular/references/styles/emotion.md +439 -0
  336. package/skills/pds-knowledge-angular/references/styles/scss.md +402 -0
  337. package/skills/pds-knowledge-angular/references/styles/tailwindcss.md +356 -0
  338. package/skills/pds-knowledge-angular/references/styles/vanilla-extract.md +444 -0
  339. package/skills/pds-knowledge-angular/references/stylesheets.md +331 -0
  340. package/skills/pds-knowledge-angular/references/tokens.md +323 -0
  341. package/testing/package.json +5 -0
  342. package/tokens/package.json +6 -0
  343. package/types/porsche-design-system-components-angular.d.ts +2 -2
  344. package/vanilla-extract/package.json +6 -0
@@ -0,0 +1,150 @@
1
+ # p-input-number
2
+
3
+ The `p-input-number` component provides a versatile, user‑friendly interface for entering numeric values. It supports direct keyboard input and increment/decrement controls for precise adjustments. It has a `start` and `end` slot in order to support flexible slotted content.
4
+
5
+ A `label` is a caption which informs the user what information a particular form field is asking for. The `p-input-number` 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 mandatory to provide a descriptive label text for screen readers.
6
+
7
+ While a `placeholder` is optional but recommended to be set whenever bits of example content or hints shall be shown to give the user visual cues to fill out the form.
8
+
9
+ ## Usage
10
+
11
+ `p-input-number` is intended for true numeric input scenarios, especially when increment and decrement controls enhance the user experience. It should not be used for values that merely happen to consist of digits — such as postal codes or credit card numbers. For those cases, consider using another input with an appropriate input mode. For further guidance, see the [MDN documentation on number inputs](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number#using_number_inputs).
12
+
13
+ ### Do:
14
+
15
+ - Use when a numeric value is required or optional.
16
+ - Use without a label only when the context is clear.
17
+ - Use for validation and error of input.
18
+ - Use asterisk for required fields.
19
+
20
+ ### Don't:
21
+
22
+ - Don't use labels with more than two words whenever possible (keep it short and descriptive).
23
+ - Don't use instructional or description text for the label.
24
+
25
+ ---
26
+
27
+ ## Related Components
28
+
29
+ - [Input Date](../p-input-date/p-input-date.md)
30
+ - [Input Email](../p-input-email/p-input-email.md)
31
+ - [Input Month](../p-input-month/p-input-month.md)
32
+ - [Input Password](../p-input-password/p-input-password.md)
33
+ - [Input Search](../p-input-search/p-input-search.md)
34
+ - [Input Tel](../p-input-tel/p-input-tel.md)
35
+ - [Input Text](../p-input-text/p-input-text.md)
36
+ - [Input Time](../p-input-time/p-input-time.md)
37
+ - [Input Url](../p-input-url/p-input-url.md)
38
+ - [Input Week](../p-input-week/p-input-week.md)
39
+
40
+ ## Accessibility support
41
+
42
+ ### Keyboard
43
+
44
+ | Key / state | Function |
45
+ | --- | --- |
46
+ | `Tab`, `Shift-Tab` | Moves focus to the next (or previous) focusable element. |
47
+ | `Arrow Up/Down` | Sets increments/decrements in regards of the steps |
48
+
49
+ ### ARIA enhancements
50
+
51
+ #### Internal **ARIA** that is managed by the component:
52
+
53
+ | ARIA | Usage |
54
+ | --- | --- |
55
+ | `aria-describedby="IDREF"` | Defines the accessible description combined with the status message. |
56
+ | `role="status"`, `role="alert"` | When `message` and `state` or `loading` prop change, the status message is announced. |
57
+ | `aria-hidden="true"` | If `required` attribute is set, the visible asterisk indicator is hidden from assistive technologies. |
58
+ | `aria-invalid="true"` | If `error` state is set. |
59
+ | `aria-live="polite"` | If the `maxlength` attribute is present, the counter is announced via ARIA live region. |
60
+
61
+ ## Development considerations
62
+
63
+ ### Exposing the `unit` prop
64
+
65
+ The `unit` prop is not exposed to assistive technologies by default. If you provide a `unit` abbreviation, you need to dissolve it in real text through the `description` prop. For example, if you use `kmh`, you can set the `description` prop to `kilometers per hour`. This way, the screen reader will read out the full text.
66
+
67
+ ### Disabled state
68
+
69
+ In general, avoid using the `disabled` state. Disabled elements are no longer focusable and may be missed by screen reader users. They can also confuse sighted users if the reason they are disabled is not made clear.
70
+
71
+ ### Common do's and don'ts
72
+
73
+ - **Do** keep a persistent label and spell out unit abbreviations in the `description` prop.
74
+ - **Do** use the component state/message API so validation and status changes are announced.
75
+ - **Do** use clear error wording that helps users recover.
76
+ - **Don't** rely on placeholder text or the `unit` prop alone for accessible context.
77
+ - **Don't** use `hide-label` without an accessible name.
78
+
79
+ ## Limitations
80
+
81
+ Due to the nature of **Web Components** and **shadow DOM**, there are limitations when using some **ARIA** attributes to define relationships between elements across different shadow DOMs or shadow DOM/light DOM combinations.
82
+
83
+ | ARIA | Support |
84
+ | --- | --- |
85
+ | `aria-labelledby` | 🚫 |
86
+ | `aria-describedby` | 🚫 |
87
+
88
+ ## Integration examples
89
+
90
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
91
+
92
+ ## API
93
+
94
+ ### Properties
95
+
96
+ | Property | Type | Default | Description |
97
+ | --- | --- | --- | --- |
98
+ | `autoComplete` | `string` | `undefined` | Provides the browser with a data type hint to enable relevant autofill suggestions (e.g. `autocomplete='postal-code'`). |
99
+ | `compact` | `boolean` | `false` | Reduces the input height and padding for a more compact layout. |
100
+ | `controls` | `boolean` | `false` | Shows increment/decrement spin buttons inside the field to adjust the numeric value by clicking. |
101
+ | `description` | `string` | `''` | Sets a supplementary description displayed below the label to provide additional context. |
102
+ | `disabled` | `boolean` | `false` | Disables the field, preventing all input. The value is not submitted with the form. |
103
+ | `form` | `string` | `undefined` | Associates the field with a form element by its ID when the field is not nested directly inside it. |
104
+ | `hideLabel` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Hides the visible label while keeping it accessible to screen readers. Supports responsive breakpoint values. |
105
+ | `label` | `string` | `''` | Sets the visible label text displayed above the input field. |
106
+ | `loading` _(experimental)_ | `boolean` | `false` | @experimental Disables the field and displays a loading spinner to indicate an ongoing operation. |
107
+ | `max` | `number` | `undefined` | Sets the maximum allowed numeric value. Values above this are invalid. |
108
+ | `message` | `string` | `''` | Sets the validation feedback message displayed below the field when `state` is `success` or `error`. |
109
+ | `min` | `number` | `undefined` | Sets the minimum allowed numeric value. Values below this are invalid. |
110
+ | `name` _(required)_ | `string` | `undefined` | Sets the name submitted with the form data to identify this field's value on the server. |
111
+ | `placeholder` | `string` | `''` | Sets placeholder text shown inside the field when it is empty, to hint at the expected format. |
112
+ | `readOnly` | `boolean` | `false` | Makes the field read-only — the value is displayed but cannot be edited. The value is still submitted with the form. |
113
+ | `required` | `boolean` | `false` | Marks the field as required — form submission is blocked while this field is empty. |
114
+ | `state` | `'none'` `'error'` `'success'` | `'none'` | Sets the validation state, controlling the visual appearance and style of the feedback message (`none`, `success`, `error`). |
115
+ | `step` | `number` | `1` | Sets the stepping granularity — the value must be a multiple of this number. Also controls step button increment size. |
116
+ | `value` | `string | number | null` | `''` | Sets the current numeric value of the field. |
117
+
118
+ ### Events
119
+
120
+ | Event | Type | Description |
121
+ | --- | --- | --- |
122
+ | `blur` | `CustomEvent<InputNumberBlurEventDetail>`<br>`Event` | Emitted when the number input has lost focus. |
123
+ | `change` | `CustomEvent<InputNumberChangeEventDetail>`<br>`Event` | Emitted when the number input loses focus after its value was changed. |
124
+ | `input` | `CustomEvent<InputNumberInputEventDetail>`<br>`InputEvent` | Emitted when the value has been changed as a direct result of a user action. |
125
+
126
+ ### Slots
127
+
128
+ | Slot | Required | Allowed tag names | Description |
129
+ | --- | --- | --- | --- |
130
+ | `label` | no | — | Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed. |
131
+ | `label-after` | no | — | Places additional content after the label text (for content that should not be part of the label, e.g. external links or `p-popover`). |
132
+ | `description` | no | — | Shows a description. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed. |
133
+ | `message` | no | — | Shows a state message. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed. |
134
+ | `start` | no | — | Shows content at the start of the input (e.g. unit prefix). |
135
+ | `end` | no | — | Shows content at the end of the input (e.g. toggle button, unit suffix). |
136
+
137
+ ### CSS Variables
138
+
139
+ | CSS Variable | Default | Description |
140
+ | --- | --- | --- |
141
+ | `--ref-p-input-slotted-padding` | — | When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `padding` in oder to adjust the alignment correctly. |
142
+ | `--ref-p-input-slotted-margin` | — | When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly. |
143
+
144
+ ## Examples
145
+
146
+ | Example | When to use | File |
147
+ | --- | --- | --- |
148
+ | Default | Minimal default configuration. | [./examples/Default.ts](./examples/Default.ts) |
149
+ | Form | The `p-input-number` can be integrated into a form in two ways: **controlled** or **uncontrolled**, depending on your needs. | [./examples/Form.ts](./examples/Form.ts) |
150
+ | Slots | Use named slots when `label`, `description` or `message` need markup such as a link. | [./examples/Slots.ts](./examples/Slots.ts) |
@@ -0,0 +1,45 @@
1
+ # p-input-password accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### Placeholder used as the only label
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```html
10
+ <p-input-password name="password" placeholder="Password"></p-input-password>
11
+ ```
12
+
13
+ #### ✅ Recommended
14
+
15
+ ```html
16
+ <p-input-password name="password" label="Password" description="Use at least 8 characters with one number."></p-input-password>
17
+ ```
18
+
19
+ ### Hidden label without accessible name
20
+
21
+ #### ❌ Anti-pattern
22
+
23
+ ```html
24
+ <p-input-password name="password" [hideLabel]="true"></p-input-password>
25
+ ```
26
+
27
+ #### ✅ Recommended
28
+
29
+ ```html
30
+ <p-input-password name="password" [hideLabel]="true" label="Password"></p-input-password>
31
+ ```
32
+
33
+ ### Validation feedback via state and message API
34
+
35
+ #### ❌ Anti-pattern
36
+
37
+ ```html
38
+ <p-input-password name="password" label="Password" [aria-invalid]="true" message="Invalid"></p-input-password>
39
+ ```
40
+
41
+ #### ✅ Recommended
42
+
43
+ ```html
44
+ <p-input-password name="password" label="Password" state="error" message="Enter a password with at least 8 characters and one number."></p-input-password>
45
+ ```
@@ -0,0 +1,13 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { PorscheDesignSystemModule } from '@porsche-design-system/components-angular';
3
+
4
+ @Component({
5
+ selector: 'porsche-design-system-app',
6
+ template: `
7
+ <p-input-password label="Some label" name="some-name" [toggle]="true"></p-input-password>
8
+ `,
9
+ changeDetection: ChangeDetectionStrategy.OnPush,
10
+ standalone: true,
11
+ imports: [PorscheDesignSystemModule], // <-- PDS module is imported here
12
+ })
13
+ export class ExampleComponent {}
@@ -0,0 +1,31 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
3
+ import { PorscheDesignSystemModule } from '@porsche-design-system/components-angular';
4
+
5
+ @Component({
6
+ selector: 'porsche-design-system-app',
7
+ template: `
8
+ <form [formGroup]="form" (ngSubmit)="onSubmit()" class="flex flex-col gap-fluid-sm">
9
+ <p-input-password formControlName="myInputPassword" [label]="'Some Label'" [toggle]="true" />
10
+ <div class="flex gap-fluid-sm">
11
+ <p-button type="submit">Submit</p-button>
12
+ <p-button type="reset">Reset</p-button>
13
+ </div>
14
+ <p-text>Last submitted data: {{ submittedValue }}</p-text>
15
+ </form>
16
+ `,
17
+ changeDetection: ChangeDetectionStrategy.OnPush,
18
+ standalone: true,
19
+ imports: [PorscheDesignSystemModule, FormsModule, ReactiveFormsModule], // <-- PDS module is imported here
20
+ })
21
+ export class ExampleComponent {
22
+ form = new FormGroup({
23
+ myInputPassword: new FormControl<string>(''),
24
+ });
25
+
26
+ submittedValue: any = undefined;
27
+
28
+ onSubmit(): void {
29
+ this.submittedValue = JSON.stringify(this.form.value);
30
+ }
31
+ }
@@ -0,0 +1,42 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { PorscheDesignSystemModule } from '@porsche-design-system/components-angular';
3
+
4
+ @Component({
5
+ selector: 'porsche-design-system-app',
6
+ template: `
7
+ <p-input-password state="error">
8
+ <span slot="label">
9
+ Some label with a
10
+ <a href="https://designsystem.porsche.com" class="underline">
11
+ link
12
+ </a>
13
+ and a "label-after" slot.
14
+ </span>
15
+ <p-popover slot="label-after">
16
+ Some Popover content with a
17
+ <a href="https://designsystem.porsche.com" class="underline">
18
+ link
19
+ </a>
20
+ .
21
+ </p-popover>
22
+ <span slot="description">
23
+ Some description with a
24
+ <a href="https://designsystem.porsche.com" class="underline">
25
+ link
26
+ </a>
27
+ .
28
+ </span>
29
+ <span slot="message">
30
+ Some error message with a
31
+ <a href="https://designsystem.porsche.com" class="underline">
32
+ link
33
+ </a>
34
+ .
35
+ </span>
36
+ </p-input-password>
37
+ `,
38
+ changeDetection: ChangeDetectionStrategy.OnPush,
39
+ standalone: true,
40
+ imports: [PorscheDesignSystemModule], // <-- PDS module is imported here
41
+ })
42
+ export class ExampleComponent {}
@@ -0,0 +1,13 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { PorscheDesignSystemModule } from '@porsche-design-system/components-angular';
3
+
4
+ @Component({
5
+ selector: 'porsche-design-system-app',
6
+ template: `
7
+ <p-input-password label="Some label" name="some-name" [toggle]="true"></p-input-password>
8
+ `,
9
+ changeDetection: ChangeDetectionStrategy.OnPush,
10
+ standalone: true,
11
+ imports: [PorscheDesignSystemModule], // <-- PDS module is imported here
12
+ })
13
+ export class ExampleComponent {}
@@ -0,0 +1,145 @@
1
+ # p-input-password
2
+
3
+ The `p-input-password` component enables secure password entry by obscuring the typed characters. Displayed as a one-line plain text editor, it ensures the password remains hidden to protect user privacy. Additionally, the component includes a toggle button that allows users to reveal the password in clear text when needed, offering both security and convenience.
4
+
5
+ A `label` is a caption which informs the user what information a particular form field is asking for. The `p-input-password` 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 mandatory to provide a descriptive label text for screen readers.
6
+
7
+ While a `placeholder` is optional but recommended to be set whenever bits of example content or hints shall be shown to give the user visual cues to fill out the form.
8
+
9
+ ## Usage
10
+
11
+ ### Do:
12
+
13
+ - Use when a text input of the user is required or optional.
14
+ - Use for password input.
15
+ - Use without a label only when the context is clear.
16
+ - Use for validation and error of input.
17
+ - Use asterisk for required fields.
18
+
19
+ ### Don't:
20
+
21
+ - Don't use labels with more than two words whenever possible (keep it short and descriptive).
22
+ - Don't use instructional or description text for the label.
23
+
24
+ ---
25
+
26
+ ## Related Components
27
+
28
+ - [Input Date](../p-input-date/p-input-date.md)
29
+ - [Input Email](../p-input-email/p-input-email.md)
30
+ - [Input Month](../p-input-month/p-input-month.md)
31
+ - [Input Number](../p-input-number/p-input-number.md)
32
+ - [Input Search](../p-input-search/p-input-search.md)
33
+ - [Input Tel](../p-input-tel/p-input-tel.md)
34
+ - [Input Text](../p-input-text/p-input-text.md)
35
+ - [Input Time](../p-input-time/p-input-time.md)
36
+ - [Input Url](../p-input-url/p-input-url.md)
37
+ - [Input Week](../p-input-week/p-input-week.md)
38
+
39
+ ## Accessibility support
40
+
41
+ ### Keyboard
42
+
43
+ | Key / state | Function |
44
+ | --- | --- |
45
+ | `Tab`, `Shift-Tab` | Moves focus to the next (or previous) focusable element. |
46
+
47
+ ### ARIA enhancements
48
+
49
+ #### Internal **ARIA** that is managed by the component:
50
+
51
+ | ARIA | Usage |
52
+ | --- | --- |
53
+ | `aria-label="STRING"` | Defines the accessible name combined with the description and status message. |
54
+ | `role="status"`, `role="alert"` | When `message` and `state` or `loading` prop change, the status message is announced. |
55
+ | `aria-hidden="true"` | If `required` attribute is set, the visible asterisk indicator is hidden from assistive technologies. |
56
+ | `aria-invalid="true"` | If `error` state is set. |
57
+ | `aria-live="polite"` | If the `maxlength` attribute is present, the counter is announced via ARIA live region. |
58
+ | `aria-pressed="BOOLEAN"` | Defines the state of the visibility for the toggle button. |
59
+
60
+ ## Development considerations
61
+
62
+ ### Disabled state
63
+
64
+ In general, avoid using the `disabled` state. Disabled elements are no longer focusable and may be missed by screen reader users. They can also confuse sighted users if the reason they are disabled is not made clear.
65
+
66
+ ### Common do's and don'ts
67
+
68
+ - **Do** keep a persistent label and use helper/description text when additional context is required.
69
+ - **Do** use the component state/message API so validation and status changes are announced.
70
+ - **Do** use clear error wording that helps users recover.
71
+ - **Don't** rely on placeholder text as the only label.
72
+ - **Don't** use `hide-label` without an accessible name.
73
+
74
+ ## Limitations
75
+
76
+ Due to the nature of **Web Components** and **shadow DOM**, there are limitations when using some **ARIA** attributes to define relationships between elements across different shadow DOMs or shadow DOM/light DOM combinations.
77
+
78
+ | ARIA | Support |
79
+ | --- | --- |
80
+ | `aria-labelledby` | 🚫 |
81
+ | `aria-describedby` | 🚫 |
82
+
83
+ ## Integration examples
84
+
85
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
86
+
87
+ ## API
88
+
89
+ ### Properties
90
+
91
+ | Property | Type | Default | Description |
92
+ | --- | --- | --- | --- |
93
+ | `autoComplete` | `string` | `undefined` | Provides the browser with a password autofill hint (e.g. `autocomplete='current-password'` or `autocomplete='new-password'`). |
94
+ | `compact` | `boolean` | `false` | Reduces the input height and padding for a more compact layout. |
95
+ | `description` | `string` | `''` | Sets a supplementary description displayed below the label to provide additional context. |
96
+ | `disabled` | `boolean` | `false` | Disables the field, preventing all input. The value is not submitted with the form. |
97
+ | `form` | `string` | `undefined` | Associates the field with a form element by its ID when the field is not nested directly inside it. |
98
+ | `hideLabel` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Hides the visible label while keeping it accessible to screen readers. Supports responsive breakpoint values. |
99
+ | `label` | `string` | `''` | Sets the visible label text displayed above the input field. |
100
+ | `loading` _(experimental)_ | `boolean` | `false` | @experimental Disables the field and displays a loading spinner to indicate an ongoing operation. |
101
+ | `maxLength` | `number` | `undefined` | Sets the maximum number of characters the user can enter. |
102
+ | `message` | `string` | `''` | Sets the validation feedback message displayed below the field when `state` is `success` or `error`. |
103
+ | `minLength` | `number` | `undefined` | Sets the minimum number of characters required for the field to be considered valid. |
104
+ | `name` _(required)_ | `string` | `undefined` | Sets the name submitted with the form data to identify this field's value on the server. |
105
+ | `placeholder` | `string` | `''` | Sets placeholder text shown inside the field when it is empty. |
106
+ | `readOnly` | `boolean` | `false` | Makes the field read-only — the value is displayed but cannot be edited. The value is still submitted with the form. |
107
+ | `required` | `boolean` | `false` | Marks the field as required — form submission is blocked while this field is empty. |
108
+ | `state` | `'none'` `'error'` `'success'` | `'none'` | Sets the validation state, controlling the visual appearance and style of the feedback message (`none`, `success`, `error`). |
109
+ | `toggle` | `boolean` | `false` | Shows a toggle button that switches the password between masked and plain text visibility. |
110
+ | `value` | `string | null` | `''` | Sets the current password value of the field. |
111
+
112
+ ### Events
113
+
114
+ | Event | Type | Description |
115
+ | --- | --- | --- |
116
+ | `blur` | `CustomEvent<InputPasswordBlurEventDetail>`<br>`Event` | Emitted when the password input has lost focus. |
117
+ | `change` | `CustomEvent<InputPasswordChangeEventDetail>`<br>`Event` | Emitted when the password input loses focus after its value was changed. |
118
+ | `input` | `CustomEvent<InputPasswordInputEventDetail>`<br>`InputEvent` | Emitted when the value has been changed as a direct result of a user action. |
119
+
120
+ ### Slots
121
+
122
+ | Slot | Required | Allowed tag names | Description |
123
+ | --- | --- | --- | --- |
124
+ | `label` | no | — | Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed. |
125
+ | `label-after` | no | — | Places additional content after the label text (for content that should not be part of the label, e.g. external links or `p-popover`). |
126
+ | `description` | no | — | Shows a description. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed. |
127
+ | `message` | no | — | Shows a state message. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed. |
128
+ | `start` | no | — | Shows content at the start of the input (e.g. unit prefix). |
129
+ | `end` | no | — | Shows content at the end of the input (e.g. toggle button, unit suffix). |
130
+
131
+ ### CSS Variables
132
+
133
+ | CSS Variable | Default | Description |
134
+ | --- | --- | --- |
135
+ | `--ref-p-input-slotted-padding` | — | When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `padding` in oder to adjust the alignment correctly. |
136
+ | `--ref-p-input-slotted-margin` | — | When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly. |
137
+
138
+ ## Examples
139
+
140
+ | Example | When to use | File |
141
+ | --- | --- | --- |
142
+ | Default | Minimal default configuration. | [./examples/Default.ts](./examples/Default.ts) |
143
+ | Form | The `p-input-password` can be integrated into a form in two ways: **controlled** or **uncontrolled**, depending on your needs. | [./examples/Form.ts](./examples/Form.ts) |
144
+ | Show password toggle button | If you want to show the password toggle button, you can pass `toggle="true"`. | [./examples/Toggle.ts](./examples/Toggle.ts) |
145
+ | Slots | Use named slots when `label`, `description` or `message` need markup such as a link. | [./examples/Slots.ts](./examples/Slots.ts) |
@@ -0,0 +1,59 @@
1
+ # p-input-search accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### Placeholder used as the only label
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```html
10
+ <p-input-search name="search" placeholder="Search"></p-input-search>
11
+ ```
12
+
13
+ #### ✅ Recommended
14
+
15
+ ```html
16
+ <p-input-search name="search" label="Search vehicles" description="Search by model name or VIN."></p-input-search>
17
+ ```
18
+
19
+ ### ARIA on component host vs aria prop
20
+
21
+ #### ❌ Anti-pattern
22
+
23
+ ```html
24
+ <p-input-search name="search" label="Search vehicles" role="combobox" [aria-expanded]="false" aria-haspopup="listbox"></p-input-search>
25
+ ```
26
+
27
+ #### ✅ Recommended
28
+
29
+ ```html
30
+ <p-input-search name="search" label="Search vehicles" [aria]="{'role': 'combobox', 'aria-expanded': 'false', 'aria-haspopup': 'listbox'}"></p-input-search>
31
+ ```
32
+
33
+ ### Hidden label without accessible name
34
+
35
+ #### ❌ Anti-pattern
36
+
37
+ ```html
38
+ <p-input-search name="search" [hideLabel]="true"></p-input-search>
39
+ ```
40
+
41
+ #### ✅ Recommended
42
+
43
+ ```html
44
+ <p-input-search name="search" [hideLabel]="true" label="Search vehicles"></p-input-search>
45
+ ```
46
+
47
+ ### Validation feedback via state and message API
48
+
49
+ #### ❌ Anti-pattern
50
+
51
+ ```html
52
+ <p-input-search name="search" label="Search vehicles" [aria-invalid]="true" message="Invalid"></p-input-search>
53
+ ```
54
+
55
+ #### ✅ Recommended
56
+
57
+ ```html
58
+ <p-input-search name="search" label="Search vehicles" state="error" message="Enter at least 3 characters to search."></p-input-search>
59
+ ```
@@ -0,0 +1,38 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { PorscheDesignSystemModule } from '@porsche-design-system/components-angular';
3
+
4
+ @Component({
5
+ selector: 'porsche-design-system-app',
6
+ template: `
7
+ <div class="flex w-full max-w-md flex-col gap-static-xs self-start [&>p-input-search]:min-w-0">
8
+ <p-input-search label="Search" name="aria-sketch" [indicator]="true" [clear]="true" [aria]="{'role': 'combobox', 'aria-expanded': 'true', 'aria-haspopup': 'listbox', 'aria-autocomplete': 'list', 'aria-controls': 'listbox'}"></p-input-search>
9
+ <div id="listbox" role="listbox" [tabIndex]="0" aria-label="Search options" class="max-h-48 p-static-sm overflow-y-auto rounded-xl border-thin border-contrast-lower bg-background-base shadow-md ">
10
+ <div role="option" aria-selected="false" class="px-static-sm py-static-sm cursor-pointer bg-background-base hover:bg-frosted transition-colors duration-300 rounded-sm">
11
+ 718
12
+ </div>
13
+ <div role="option" aria-selected="false" class="px-static-sm py-static-sm cursor-pointer bg-background-base hover:bg-frosted transition-colors duration-300 rounded-sm">
14
+ 911
15
+ </div>
16
+ <div role="option" aria-selected="true" class="flex px-static-sm py-static-sm cursor-pointer bg-background-base hover:bg-frosted transition-colors duration-300 rounded-sm">
17
+ <span>
18
+ Cayenne
19
+ </span>
20
+ <p-icon name="check" color="primary" [aria-hidden]="true" class="ms-auto"></p-icon>
21
+ </div>
22
+ <div role="option" aria-selected="false" class="px-static-sm py-static-sm cursor-pointer bg-background-base hover:bg-frosted transition-colors duration-300 rounded-sm">
23
+ Macan
24
+ </div>
25
+ <div role="option" aria-selected="false" class="px-static-sm py-static-sm cursor-pointer bg-background-base hover:bg-frosted transition-colors duration-300 rounded-sm">
26
+ Panamera
27
+ </div>
28
+ <div role="option" aria-selected="false" class="px-static-sm py-static-sm cursor-pointer bg-background-base hover:bg-frosted transition-colors duration-300 rounded-sm">
29
+ Taycan
30
+ </div>
31
+ </div>
32
+ </div>
33
+ `,
34
+ changeDetection: ChangeDetectionStrategy.OnPush,
35
+ standalone: true,
36
+ imports: [PorscheDesignSystemModule], // <-- PDS module is imported here
37
+ })
38
+ export class ExampleComponent {}
@@ -0,0 +1,13 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { PorscheDesignSystemModule } from '@porsche-design-system/components-angular';
3
+
4
+ @Component({
5
+ selector: 'porsche-design-system-app',
6
+ template: `
7
+ <p-input-search label="Some label" name="Some name" [clear]="true" [indicator]="true"></p-input-search>
8
+ `,
9
+ changeDetection: ChangeDetectionStrategy.OnPush,
10
+ standalone: true,
11
+ imports: [PorscheDesignSystemModule], // <-- PDS module is imported here
12
+ })
13
+ export class ExampleComponent {}
@@ -0,0 +1,31 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
3
+ import { PorscheDesignSystemModule } from '@porsche-design-system/components-angular';
4
+
5
+ @Component({
6
+ selector: 'porsche-design-system-app',
7
+ template: `
8
+ <form [formGroup]="form" (ngSubmit)="onSubmit()" class="flex flex-col gap-fluid-sm">
9
+ <p-input-search formControlName="myInputSearch" [label]="'Some Label'" [indicator]="true" [clear]="true" />
10
+ <div class="flex gap-fluid-sm">
11
+ <p-button type="submit">Submit</p-button>
12
+ <p-button type="reset">Reset</p-button>
13
+ </div>
14
+ <p-text>Last submitted data: {{ submittedValue }}</p-text>
15
+ </form>
16
+ `,
17
+ changeDetection: ChangeDetectionStrategy.OnPush,
18
+ standalone: true,
19
+ imports: [PorscheDesignSystemModule, FormsModule, ReactiveFormsModule], // <-- PDS module is imported here
20
+ })
21
+ export class ExampleComponent {
22
+ form = new FormGroup({
23
+ myInputSearch: new FormControl<string>(''),
24
+ });
25
+
26
+ submittedValue: any = undefined;
27
+
28
+ onSubmit(): void {
29
+ this.submittedValue = JSON.stringify(this.form.value);
30
+ }
31
+ }
@@ -0,0 +1,44 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { PorscheDesignSystemModule } from '@porsche-design-system/components-angular';
3
+
4
+ @Component({
5
+ selector: 'porsche-design-system-app',
6
+ template: `
7
+ <p-input-search state="error">
8
+ <span slot="label">
9
+ Some label with a
10
+ <a href="https://designsystem.porsche.com" class="underline">
11
+ link
12
+ </a>
13
+ and a "label-after" slot.
14
+ </span>
15
+ <p-popover slot="label-after">
16
+ Some Popover content with a
17
+ <a href="https://designsystem.porsche.com" class="underline">
18
+ link
19
+ </a>
20
+ .
21
+ </p-popover>
22
+ <span slot="description">
23
+ Some description with a
24
+ <a href="https://designsystem.porsche.com" class="underline">
25
+ link
26
+ </a>
27
+ .
28
+ </span>
29
+ <p-icon slot="start" name="pin" color="contrast-medium" [aria-hidden]="true"></p-icon>
30
+ <p-button-pure slot="end" icon="locate" [hideLabel]="true" class="p-(--ref-p-input-slotted-padding) m-(--ref-p-input-slotted-margin)" [aria]="{'aria-label': 'Locate'}"></p-button-pure>
31
+ <span slot="message">
32
+ Some error message with a
33
+ <a href="https://designsystem.porsche.com" class="underline">
34
+ link
35
+ </a>
36
+ .
37
+ </span>
38
+ </p-input-search>
39
+ `,
40
+ changeDetection: ChangeDetectionStrategy.OnPush,
41
+ standalone: true,
42
+ imports: [PorscheDesignSystemModule], // <-- PDS module is imported here
43
+ })
44
+ export class ExampleComponent {}