@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,62 @@
1
+ # p-model-signature
2
+
3
+ The `p-model-signature` component is purely visual and renders the different signatures of Porsche car models. It can be used to overlay background images or enhance cards and teasers to be more dynamic and recognizable.
4
+
5
+ ## Usage
6
+
7
+ ### Do:
8
+
9
+ - Use signatures for emotional introduction and communication of model series.
10
+ - Consider using model signatures only occasionally, for example, within the Link Tile component for a specific model line.
11
+ - Use model signatures as a subtle, larger background watermark, paired with appropriate visualization of vehicle detail pages.
12
+ - Use as a headline-like element on model series overview pages.
13
+
14
+ ### Don't:
15
+
16
+ - Avoid including signatures for specific derivatives such as a Panamera 4 Sport Turismo
17
+ - Platinum Edition or a 911 Targa 4S or in line with the text.
18
+ - The model signature should have sufficient spacing from the text.
19
+ - Avoid repeating the same model series signature within the interface.
20
+ - For example, do not display the 911 signatures twice or more in a viewport.
21
+
22
+ ## Accessibility support
23
+
24
+ This component does not include any special accessibility features.
25
+
26
+ ## API
27
+
28
+ ### Properties
29
+
30
+ | Property | Type | Default | Description |
31
+ | --- | --- | --- | --- |
32
+ | `color` | `'primary'` `'contrast-low'` `'contrast-medium'` `'contrast-high'` `'inherit'` | `'primary'` | Sets the fill color of the signature using PDS color tokens. |
33
+ | `fetchPriority` | `'low'` `'high'` `'auto'` | `'auto'` | Sets the browser's fetch priority hint for the signature asset (`auto`, `high`, `low`). |
34
+ | `lazy` | `boolean` | `false` | Defers loading the signature until it enters the viewport to improve initial page performance. |
35
+ | `model` | `'718'` `'911'` `'boxster'` `'cayenne'` `'cayman'` `'gt3-rs'` `'gt3'` `'gts'` `'macan'` `'panamera'` `'taycan'` `'turbo-s'` `'turbo'` | `'911'` | Selects the Porsche model whose typographic signature SVG is displayed. |
36
+ | `safeZone` | `boolean` | `true` | When enabled, adds invisible padding so all model signatures visually align to a consistent baseline. |
37
+ | `size` | `'small'` `'inherit'` | `'small'` | Sets the display size of the signature using predefined PDS sizes. Use `inherit` with a CSS `width` or `height` on the host for custom sizing. |
38
+
39
+ ### Slots
40
+
41
+ | Slot | Required | Allowed tag names | Description |
42
+ | --- | --- | --- | --- |
43
+ | _(default)_ | no | — | Default slot for an img or video tag when using the model-signature as a mask. |
44
+
45
+ ### CSS Variables
46
+
47
+ | CSS Variable | Default | Description |
48
+ | --- | --- | --- |
49
+ | `--p-model-signature-width` | — | Overrides the width of the model signature. |
50
+ | `--p-model-signature-height` | `auto` | Overrides the height of the model signature. |
51
+ | `--p-model-signature-color` | — | Overrides the fill color of the model signature. Overrides the `color` property when set. |
52
+
53
+ ## Examples
54
+
55
+ | Example | When to use | File |
56
+ | --- | --- | --- |
57
+ | Default | Minimal default configuration. | [./examples/Default.ts](./examples/Default.ts) |
58
+ | Safe Zone | The `safe-zone` prop's default is `modelSignatureSafeZoneDefault`, which ensures a visual balance across all model signatures. | [./examples/SafeZone.ts](./examples/SafeZone.ts) |
59
+ | Mask: Blend Mode | If `p-model-signature` should be blended with its background, the CSS property [mix-blend-mode](https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode) can be used (`{{ blendMode }}` will produce the best results). | [./examples/MaskBlendMode.ts](./examples/MaskBlendMode.ts) |
60
+ | Mask: Image | > **Experimental** > > The following example shows what is technically possible but has not yet been approved by the Porsche Brand Guide. | [./examples/MaskImage.ts](./examples/MaskImage.ts) |
61
+ | Mask: Video | > **Experimental** > > The following example shows what is technically possible but has not yet been approved by the Porsche Brand Guide. | [./examples/MaskVideo.ts](./examples/MaskVideo.ts) |
62
+ | Custom styling | The `p-model-signature` color can be changed by setting the `color` prop to `inherit` and applying some CSS `color`. | [./examples/CustomStyling.ts](./examples/CustomStyling.ts) |
@@ -0,0 +1,78 @@
1
+ # p-multi-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-multi-select name="features">
11
+ <p-multi-select-option value="">
12
+ Select features
13
+ </p-multi-select-option>
14
+ <p-multi-select-option value="sport">
15
+ Sport Chrono Package
16
+ </p-multi-select-option>
17
+ </p-multi-select>
18
+ ```
19
+
20
+ #### ✅ Recommended
21
+
22
+ ```html
23
+ <p-multi-select label="Optional features" name="features" description="Select all features for your configuration.">
24
+ <p-multi-select-option value="sport">
25
+ Sport Chrono Package
26
+ </p-multi-select-option>
27
+ <p-multi-select-option value="audio">
28
+ BOSE Surround Sound
29
+ </p-multi-select-option>
30
+ </p-multi-select>
31
+ ```
32
+
33
+ ### Hidden label without accessible name
34
+
35
+ #### ❌ Anti-pattern
36
+
37
+ ```html
38
+ <p-multi-select name="features" [hideLabel]="true">
39
+ <p-multi-select-option value="sport">
40
+ Sport Chrono Package
41
+ </p-multi-select-option>
42
+ </p-multi-select>
43
+ ```
44
+
45
+ #### ✅ Recommended
46
+
47
+ ```html
48
+ <p-multi-select label="Optional features" name="features" [hideLabel]="true">
49
+ <p-multi-select-option value="sport">
50
+ Sport Chrono Package
51
+ </p-multi-select-option>
52
+ </p-multi-select>
53
+ ```
54
+
55
+ ### Validation feedback via state and message API
56
+
57
+ #### ❌ Anti-pattern
58
+
59
+ ```html
60
+ <p-multi-select label="Optional features" name="features" [aria-invalid]="true" message="Required">
61
+ <p-multi-select-option value="sport">
62
+ Sport Chrono Package
63
+ </p-multi-select-option>
64
+ </p-multi-select>
65
+ ```
66
+
67
+ #### ✅ Recommended
68
+
69
+ ```html
70
+ <p-multi-select label="Optional features" name="features" [required]="true" state="error" message="Select at least one feature to continue.">
71
+ <p-multi-select-option value="sport">
72
+ Sport Chrono Package
73
+ </p-multi-select-option>
74
+ <p-multi-select-option value="audio">
75
+ BOSE Surround Sound
76
+ </p-multi-select-option>
77
+ </p-multi-select>
78
+ ```
@@ -0,0 +1,149 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core';
2
+ import {
3
+ type InputSearchInputEventDetail,
4
+ type MultiSelectChangeEventDetail,
5
+ type MultiSelectToggleEventDetail,
6
+ PMultiSelect,
7
+ PorscheDesignSystemModule,
8
+ } from '@porsche-design-system/components-angular';
9
+
10
+ @Component({
11
+ selector: 'porsche-design-system-app',
12
+ template: `
13
+ <p-multi-select
14
+ name="async-search-select"
15
+ label="Async Search"
16
+ [value]="value"
17
+ (change)="onChange($event)"
18
+ (toggle)="onToggle($event)"
19
+ >
20
+ <p-input-search
21
+ slot="filter"
22
+ name="search"
23
+ [value]="searchValue"
24
+ [loading]="loading"
25
+ [clear]="true"
26
+ [indicator]="true"
27
+ [compact]="true"
28
+ [autoComplete]="'off'"
29
+ (input)="onInput($event)"
30
+ (blur)="$event.stopPropagation()"
31
+ (change)="$event.stopPropagation()"
32
+ ></p-input-search>
33
+
34
+ <!-- Initial skeleton loading -->
35
+ @if (initialLoading && !error) {
36
+ @for (_ of [1,2,3,4,5,6,7,8,9]; track $index) {
37
+ <div slot="options-status" class="skeleton h-[40px]"></div>
38
+ }
39
+ }
40
+
41
+ <!-- Options -->
42
+ @for (option of options; track option.value) {
43
+ <p-multi-select-option [value]="option.value">
44
+ {{ option.label }}
45
+ </p-multi-select-option>
46
+ }
47
+
48
+ <!-- No filter results -->
49
+ @if (!initialLoading && options.length === 0 && !error) {
50
+ <div
51
+ slot="options-status"
52
+ class="text-contrast-medium cursor-not-allowed py-static-sm px-[12px]"
53
+ role="alert"
54
+ >
55
+ <span aria-hidden="true">–</span>
56
+ <span class="sr-only">No results found</span>
57
+ </div>
58
+ }
59
+
60
+ <!-- Error state -->
61
+ @if (error) {
62
+ <div
63
+ slot="options-status"
64
+ class="flex gap-static-sm py-static-sm px-[12px]"
65
+ role="alert"
66
+ >
67
+ <p-icon name="information" color="error"></p-icon>
68
+ <span class="text-error">{{ error }}</span>
69
+ </div>
70
+ }
71
+ </p-multi-select>
72
+
73
+ `,
74
+ changeDetection: ChangeDetectionStrategy.OnPush,
75
+ standalone: true,
76
+ imports: [PorscheDesignSystemModule],
77
+ })
78
+ export class ExampleComponent {
79
+ value?: PMultiSelect['value'] = [];
80
+ options: { value: string; label: string }[] = [];
81
+
82
+ searchValue = '';
83
+ initialLoading = false;
84
+ loading = false;
85
+ error: string | null = null;
86
+
87
+ private hasLoadedOnce = false;
88
+ private currentFetchId = 0;
89
+ private debounceTimer?: number;
90
+
91
+ constructor(private cdr: ChangeDetectorRef) {}
92
+
93
+ async fetchOptions(term?: string, isInitial = false) {
94
+ const fetchId = ++this.currentFetchId;
95
+ if (isInitial) this.initialLoading = true;
96
+ else this.loading = true;
97
+
98
+ this.cdr.markForCheck();
99
+
100
+ try {
101
+ const url = term
102
+ ? `https://jsonplaceholder.typicode.com/users?username_like=${term}`
103
+ : `https://jsonplaceholder.typicode.com/users`;
104
+
105
+ const res = await fetch(url);
106
+ const data: { id: number; name: string; username: string }[] = await res.json();
107
+
108
+ // Ignore stale results
109
+ if (fetchId !== this.currentFetchId) return;
110
+
111
+ this.options = data.map((user) => ({
112
+ value: user.id.toString(),
113
+ label: `${user.name} (${user.username})`,
114
+ }));
115
+
116
+ this.error = null;
117
+ this.hasLoadedOnce = true;
118
+ } catch (err) {
119
+ console.error('Failed to fetch options', err);
120
+ this.options = [];
121
+ this.error = 'Failed to load options';
122
+ } finally {
123
+ if (isInitial) this.initialLoading = false;
124
+ else this.loading = false;
125
+
126
+ this.cdr.markForCheck();
127
+ }
128
+ }
129
+
130
+ onInput(event: CustomEvent<InputSearchInputEventDetail>) {
131
+ const term = (event.target as HTMLInputElement).value;
132
+ this.searchValue = term;
133
+
134
+ if (this.debounceTimer) clearTimeout(this.debounceTimer);
135
+ this.debounceTimer = window.setTimeout(() => {
136
+ this.fetchOptions(term.trim() || undefined);
137
+ }, 400);
138
+ }
139
+
140
+ onChange(event: CustomEvent<MultiSelectChangeEventDetail>) {
141
+ this.value = (event.target as HTMLElement & { value: string[] }).value;
142
+ }
143
+
144
+ onToggle(event: CustomEvent<MultiSelectToggleEventDetail>) {
145
+ if (event.detail.open && !this.hasLoadedOnce) {
146
+ this.fetchOptions(undefined, true);
147
+ }
148
+ }
149
+ }
@@ -0,0 +1,32 @@
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-multi-select name="name" label="Some Label" description="Some description">
8
+ <p-multi-select-option value="a">
9
+ Option A
10
+ </p-multi-select-option>
11
+ <p-multi-select-option value="b">
12
+ Option B
13
+ </p-multi-select-option>
14
+ <p-multi-select-option value="c">
15
+ Option C
16
+ </p-multi-select-option>
17
+ <p-multi-select-option value="d">
18
+ Option D
19
+ </p-multi-select-option>
20
+ <p-multi-select-option value="e">
21
+ Option E
22
+ </p-multi-select-option>
23
+ <p-multi-select-option value="f">
24
+ Option F
25
+ </p-multi-select-option>
26
+ </p-multi-select>
27
+ `,
28
+ changeDetection: ChangeDetectionStrategy.OnPush,
29
+ standalone: true,
30
+ imports: [PorscheDesignSystemModule], // <-- PDS module is imported here
31
+ })
32
+ export class ExampleComponent {}
@@ -0,0 +1,38 @@
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-multi-select formControlName="myMultiSelect" [label]="'Some Label'" >
10
+ <p-multi-select-option value="a">Option A</p-multi-select-option>
11
+ <p-multi-select-option value="b">Option B</p-multi-select-option>
12
+ <p-multi-select-option value="c">Option C</p-multi-select-option>
13
+ <p-multi-select-option value="d">Option D</p-multi-select-option>
14
+ <p-multi-select-option value="e">Option E</p-multi-select-option>
15
+ <p-multi-select-option value="f">Option F</p-multi-select-option>
16
+ </p-multi-select>
17
+ <div class="flex gap-fluid-sm">
18
+ <p-button type="submit">Submit</p-button>
19
+ <p-button type="reset">Reset</p-button>
20
+ </div>
21
+ <p-text>Last submitted data: {{ submittedValue }}</p-text>
22
+ </form>
23
+ `,
24
+ changeDetection: ChangeDetectionStrategy.OnPush,
25
+ standalone: true,
26
+ imports: [PorscheDesignSystemModule, FormsModule, ReactiveFormsModule], // <-- PDS module is imported here
27
+ })
28
+ export class ExampleComponent {
29
+ form = new FormGroup({
30
+ myMultiSelect: new FormControl<string[]>([]),
31
+ });
32
+
33
+ submittedValue: any = undefined;
34
+
35
+ onSubmit(): void {
36
+ this.submittedValue = JSON.stringify(this.form.value);
37
+ }
38
+ }
@@ -0,0 +1,45 @@
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-multi-select name="options" label="Some Label">
8
+ <p-optgroup label="Some optgroup label 1">
9
+ <p-multi-select-option value="a">
10
+ Option A
11
+ </p-multi-select-option>
12
+ <p-multi-select-option value="b">
13
+ Option B
14
+ </p-multi-select-option>
15
+ <p-multi-select-option value="c">
16
+ Option C
17
+ </p-multi-select-option>
18
+ <p-multi-select-option value="d">
19
+ Option D
20
+ </p-multi-select-option>
21
+ <p-multi-select-option value="e">
22
+ Option E
23
+ </p-multi-select-option>
24
+ <p-multi-select-option value="f">
25
+ Option F
26
+ </p-multi-select-option>
27
+ </p-optgroup>
28
+ <p-optgroup label="Some optgroup label 2">
29
+ <p-multi-select-option value="g">
30
+ Option G
31
+ </p-multi-select-option>
32
+ <p-multi-select-option value="h">
33
+ Option H
34
+ </p-multi-select-option>
35
+ <p-multi-select-option value="i">
36
+ Option I
37
+ </p-multi-select-option>
38
+ </p-optgroup>
39
+ </p-multi-select>
40
+ `,
41
+ changeDetection: ChangeDetectionStrategy.OnPush,
42
+ standalone: true,
43
+ imports: [PorscheDesignSystemModule], // <-- PDS module is imported here
44
+ })
45
+ export class ExampleComponent {}
@@ -0,0 +1,103 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import {
3
+ type MultiSelectChangeEventDetail,
4
+ PMultiSelect,
5
+ PorscheDesignSystemModule,
6
+ } from '@porsche-design-system/components-angular';
7
+
8
+ type Option = { value: string; label: string; description: string; tags: string[]; imgSrc: string };
9
+
10
+ const optionsData: Option[] = [
11
+ {
12
+ value: '718',
13
+ label: '718',
14
+ description: 'Präziser Sportwagen mit Mittelmotor',
15
+ tags: ['Benzin'],
16
+ imgSrc: 'assets/718.png',
17
+ },
18
+ {
19
+ value: '911',
20
+ label: '911',
21
+ description: 'Ikonischer Sportwagen mit Heckmotor',
22
+ tags: ['Benzin'],
23
+ imgSrc: 'assets/911.png',
24
+ },
25
+ {
26
+ value: 'taycan',
27
+ label: 'Taycan',
28
+ description: 'Elektrischer Sportwagen',
29
+ tags: ['Elektro'],
30
+ imgSrc: 'assets/taycan.png',
31
+ },
32
+ {
33
+ value: 'macan',
34
+ label: 'Macan',
35
+ tags: ['Elektro'],
36
+ description: 'Sportlicher Kompakt-SUV',
37
+ imgSrc: 'assets/macan.png',
38
+ },
39
+ {
40
+ value: 'cayenne',
41
+ label: 'Cayenne',
42
+ tags: ['Hybrid', 'Benzin'],
43
+ description: 'Vielseitiger SUV',
44
+ imgSrc: 'assets/cayenne.png',
45
+ },
46
+ {
47
+ value: 'panamera',
48
+ label: 'Panamera',
49
+ tags: ['Hybrid', 'Benzin'],
50
+ description: 'Luxuslimousine mit hohem Komfort',
51
+ imgSrc: 'assets/panamera.png',
52
+ },
53
+ ];
54
+
55
+ @Component({
56
+ selector: 'porsche-design-system-app',
57
+ template: `
58
+ <p-multi-select
59
+ name="selected-slot-select"
60
+ label="Selected Slot"
61
+ [value]="value"
62
+ (change)="onChange($event)"
63
+ >
64
+ <span slot="selected" class="h-full flex items-center">
65
+ <span class="truncate">{{ selectedLabels }}</span>
66
+ </span>
67
+ @for (option of options; track option.value) {
68
+ <p-multi-select-option [value]="option.value">
69
+ <div class="w-full flex gap-fluid-sm">
70
+ <img [src]="option.imgSrc" alt="" class="h-[34px] w-auto self-center" />
71
+ <div class="flex flex-col justify-center flex-1 min-w-0">
72
+ <p class="prose-text-sm m-0">{{ option.label }}</p>
73
+ <p class="prose-text-2xs m-0">{{ option.description }}</p>
74
+ </div>
75
+ <div class="self-center flex gap-fluid-sm">
76
+ @for (tag of option.tags; track tag) {
77
+ <p-tag color="info-soft" [compact]="true">{{ tag }}</p-tag>
78
+ }
79
+ </div>
80
+ </div>
81
+ </p-multi-select-option>
82
+ }
83
+ </p-multi-select>
84
+ `,
85
+ changeDetection: ChangeDetectionStrategy.OnPush,
86
+ standalone: true,
87
+ imports: [PorscheDesignSystemModule],
88
+ })
89
+ export class ExampleComponent {
90
+ value: PMultiSelect['value'] = [];
91
+ options: Option[] = optionsData;
92
+ selectedOptions: Option[] = [];
93
+
94
+ get selectedLabels(): string {
95
+ return this.selectedOptions.map((option) => option.label).join(', ');
96
+ }
97
+
98
+ onChange(event: CustomEvent<MultiSelectChangeEventDetail>) {
99
+ const { value } = event.detail;
100
+ this.value = value;
101
+ this.selectedOptions = this.options.filter((option) => (value as string[]).includes(option.value));
102
+ }
103
+ }
@@ -0,0 +1,76 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import {
3
+ MultiSelectChangeEventDetail,
4
+ type PMultiSelectProps,
5
+ PorscheDesignSystemModule,
6
+ } from '@porsche-design-system/components-angular';
7
+
8
+ @Component({
9
+ selector: 'porsche-design-system-app',
10
+ template: `
11
+ <div class="flex flex-col gap-fluid-sm">
12
+ <p-input-text
13
+ label="Value:"
14
+ name="input-value"
15
+ [value]="inputValue"
16
+ (input)="onChangeInput($event)"
17
+ placeholder="e.g. 1,2"
18
+ ></p-input-text>
19
+ <div class="flex gap-fluid-sm">
20
+ <p-button type="button" (click)="onSetValue()" [compact]="true">Set Value</p-button>
21
+ <p-button type="button" (click)="onResetValue()" [compact]="true">Reset value</p-button>
22
+ </div>
23
+ <p-multi-select name="options" label="Some Label" [value]="selectedValues" (change)="onChange($event)">
24
+ @for (idx of optionIndices; track idx) {
25
+ <p-multi-select-option [value]="(idx + 1).toString()"
26
+ >Option {{ idx + 1 }}</p-multi-select-option
27
+ >
28
+ }
29
+ </p-multi-select>
30
+ <div class="flex gap-fluid-sm">
31
+ <p-button type="button" (click)="onAddOption()" [compact]="true">Add option</p-button>
32
+ <p-button type="button" (click)="onRemoveOption()" [compact]="true">Remove last option</p-button>
33
+ </div>
34
+ </div>
35
+ `,
36
+ changeDetection: ChangeDetectionStrategy.OnPush,
37
+ standalone: true,
38
+ imports: [PorscheDesignSystemModule],
39
+ })
40
+ export class ExampleComponent {
41
+ selectedValues: PMultiSelectProps['value'] = [];
42
+ inputValue: string = '';
43
+ optionCount: number = 3;
44
+
45
+ get optionIndices(): number[] {
46
+ return [...Array(this.optionCount).keys()];
47
+ }
48
+
49
+ onChangeInput(e: Event) {
50
+ this.inputValue = (e.target as HTMLInputElement).value;
51
+ }
52
+
53
+ onSetValue() {
54
+ this.selectedValues = this.inputValue.split(',');
55
+ }
56
+
57
+ onResetValue() {
58
+ this.selectedValues = [];
59
+ this.inputValue = '';
60
+ }
61
+
62
+ onChange(e: CustomEvent<MultiSelectChangeEventDetail>) {
63
+ this.selectedValues = e.detail.value;
64
+ this.inputValue = e.detail.value.join(',');
65
+ }
66
+
67
+ onAddOption() {
68
+ this.optionCount += 1;
69
+ }
70
+
71
+ onRemoveOption() {
72
+ if (this.optionCount > 0) {
73
+ this.optionCount -= 1;
74
+ }
75
+ }
76
+ }
@@ -0,0 +1,51 @@
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-multi-select name="options" state="error">
8
+ <span slot="label" id="some-label-id">
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" id="some-description-id">
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" id="some-message-id">
30
+ Some error message with a
31
+ <a href="https://designsystem.porsche.com" class="underline">
32
+ link
33
+ </a>
34
+ .
35
+ </span>
36
+ <p-multi-select-option value="a">
37
+ Option A
38
+ </p-multi-select-option>
39
+ <p-multi-select-option value="b">
40
+ Option B
41
+ </p-multi-select-option>
42
+ <p-multi-select-option value="c">
43
+ Option C
44
+ </p-multi-select-option>
45
+ </p-multi-select>
46
+ `,
47
+ changeDetection: ChangeDetectionStrategy.OnPush,
48
+ standalone: true,
49
+ imports: [PorscheDesignSystemModule], // <-- PDS module is imported here
50
+ })
51
+ export class ExampleComponent {}