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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/bin/pds-skill.js +259 -0
  3. package/fesm2022/porsche-design-system-components-angular.mjs.map +1 -1
  4. package/package.json +5 -2
  5. package/skill/SKILL.md +124 -0
  6. package/skill/references/components/p-accordion/examples/Default.ts +26 -0
  7. package/skill/references/components/p-accordion/examples/InteractiveElementsInSummary.ts +30 -0
  8. package/skill/references/components/p-accordion/examples/StickySummary.ts +26 -0
  9. package/skill/references/components/p-accordion/p-accordion.md +95 -0
  10. package/skill/references/components/p-ai-tag/examples/Default.ts +13 -0
  11. package/skill/references/components/p-ai-tag/examples/WithinCheckbox.ts +33 -0
  12. package/skill/references/components/p-ai-tag/examples/WithinFormLabel.ts +40 -0
  13. package/skill/references/components/p-ai-tag/examples/WithinImage.ts +16 -0
  14. package/skill/references/components/p-ai-tag/examples/WithinInputSearch.ts +15 -0
  15. package/skill/references/components/p-ai-tag/examples/WithinRadioGroup.ts +32 -0
  16. package/skill/references/components/p-ai-tag/examples/WithinTable.ts +94 -0
  17. package/skill/references/components/p-ai-tag/examples/WithinText.ts +17 -0
  18. package/skill/references/components/p-ai-tag/p-ai-tag.md +47 -0
  19. package/skill/references/components/p-banner/examples/Customization.ts +37 -0
  20. package/skill/references/components/p-banner/examples/Default.ts +26 -0
  21. package/skill/references/components/p-banner/p-banner.md +92 -0
  22. package/skill/references/components/p-button/examples/Default.ts +15 -0
  23. package/skill/references/components/p-button/examples/Form.ts +26 -0
  24. package/skill/references/components/p-button/examples/FormAttribute.ts +30 -0
  25. package/skill/references/components/p-button/p-button.md +118 -0
  26. package/skill/references/components/p-button-pure/examples/CustomClickableArea.ts +15 -0
  27. package/skill/references/components/p-button-pure/examples/Default.ts +15 -0
  28. package/skill/references/components/p-button-pure/examples/Form.ts +26 -0
  29. package/skill/references/components/p-button-pure/examples/FormAttribute.ts +30 -0
  30. package/skill/references/components/p-button-pure/p-button-pure.md +118 -0
  31. package/skill/references/components/p-button-tile/examples/ColorScheme.ts +18 -0
  32. package/skill/references/components/p-button-tile/examples/Default.ts +21 -0
  33. package/skill/references/components/p-button-tile/examples/FooterSlot.ts +32 -0
  34. package/skill/references/components/p-button-tile/examples/Hyphens.ts +38 -0
  35. package/skill/references/components/p-button-tile/examples/UiBehaviour.ts +44 -0
  36. package/skill/references/components/p-button-tile/p-button-tile.md +115 -0
  37. package/skill/references/components/p-canvas/examples/Default.ts +13 -0
  38. package/skill/references/components/p-canvas/p-canvas.md +91 -0
  39. package/skill/references/components/p-carousel/examples/Default.ts +26 -0
  40. package/skill/references/components/p-carousel/examples/DynamicSlides.ts +37 -0
  41. package/skill/references/components/p-carousel/examples/FlexibleWidths.ts +32 -0
  42. package/skill/references/components/p-carousel/examples/FocusOnCenterSlide.ts +65 -0
  43. package/skill/references/components/p-carousel/examples/Intl.ts +23 -0
  44. package/skill/references/components/p-carousel/examples/JumpToSlide.ts +50 -0
  45. package/skill/references/components/p-carousel/p-carousel.md +142 -0
  46. package/skill/references/components/p-checkbox/examples/Default.ts +13 -0
  47. package/skill/references/components/p-checkbox/examples/Form.ts +31 -0
  48. package/skill/references/components/p-checkbox/examples/Indeterminate.ts +16 -0
  49. package/skill/references/components/p-checkbox/examples/Slots.ts +57 -0
  50. package/skill/references/components/p-checkbox/examples/WrappedLabel.ts +27 -0
  51. package/skill/references/components/p-checkbox/p-checkbox.md +122 -0
  52. package/skill/references/components/p-crest/examples/CustomClickableArea.ts +13 -0
  53. package/skill/references/components/p-crest/examples/Default.ts +13 -0
  54. package/skill/references/components/p-crest/examples/Link.ts +13 -0
  55. package/skill/references/components/p-crest/p-crest.md +65 -0
  56. package/skill/references/components/p-display/examples/Color.ts +15 -0
  57. package/skill/references/components/p-display/examples/Default.ts +15 -0
  58. package/skill/references/components/p-display/examples/Semantics.ts +21 -0
  59. package/skill/references/components/p-display/examples/Size.ts +15 -0
  60. package/skill/references/components/p-display/examples/SizeResponsive.ts +15 -0
  61. package/skill/references/components/p-display/p-display.md +78 -0
  62. package/skill/references/components/p-divider/examples/Default.ts +13 -0
  63. package/skill/references/components/p-divider/examples/Responsive.ts +15 -0
  64. package/skill/references/components/p-divider/examples/Vertical.ts +15 -0
  65. package/skill/references/components/p-divider/p-divider.md +49 -0
  66. package/skill/references/components/p-drilldown/examples/CustomContent.ts +166 -0
  67. package/skill/references/components/p-drilldown/examples/Default.ts +119 -0
  68. package/skill/references/components/p-drilldown/p-drilldown.md +168 -0
  69. package/skill/references/components/p-fieldset/examples/Default.ts +15 -0
  70. package/skill/references/components/p-fieldset/examples/Required.ts +16 -0
  71. package/skill/references/components/p-fieldset/examples/SlottedLabel.ts +18 -0
  72. package/skill/references/components/p-fieldset/examples/SlottedMessage.ts +18 -0
  73. package/skill/references/components/p-fieldset/p-fieldset.md +88 -0
  74. package/skill/references/components/p-flag/examples/Default.ts +13 -0
  75. package/skill/references/components/p-flag/examples/ResponsiveSize.ts +13 -0
  76. package/skill/references/components/p-flag/examples/Size.ts +16 -0
  77. package/skill/references/components/p-flag/examples/SizeCssVar.ts +13 -0
  78. package/skill/references/components/p-flag/p-flag.md +68 -0
  79. package/skill/references/components/p-flyout/examples/CustomStyling.ts +47 -0
  80. package/skill/references/components/p-flyout/examples/Default.ts +44 -0
  81. package/skill/references/components/p-flyout/examples/Form.ts +47 -0
  82. package/skill/references/components/p-flyout/examples/StickyTop.ts +44 -0
  83. package/skill/references/components/p-flyout/p-flyout.md +128 -0
  84. package/skill/references/components/p-heading/examples/Color.ts +15 -0
  85. package/skill/references/components/p-heading/examples/Default.ts +15 -0
  86. package/skill/references/components/p-heading/examples/Semantics.ts +21 -0
  87. package/skill/references/components/p-heading/p-heading.md +78 -0
  88. package/skill/references/components/p-icon/examples/Color.ts +16 -0
  89. package/skill/references/components/p-icon/examples/ColorCssVar.ts +13 -0
  90. package/skill/references/components/p-icon/examples/Custom.ts +13 -0
  91. package/skill/references/components/p-icon/examples/Default.ts +13 -0
  92. package/skill/references/components/p-icon/examples/Overview.ts +591 -0
  93. package/skill/references/components/p-icon/examples/ResponsiveSize.ts +13 -0
  94. package/skill/references/components/p-icon/examples/Size.ts +16 -0
  95. package/skill/references/components/p-icon/examples/SizeCssVar.ts +13 -0
  96. package/skill/references/components/p-icon/p-icon.md +88 -0
  97. package/skill/references/components/p-inline-notification/examples/ActionButton.ts +29 -0
  98. package/skill/references/components/p-inline-notification/examples/Default.ts +13 -0
  99. package/skill/references/components/p-inline-notification/examples/EventHandling.ts +31 -0
  100. package/skill/references/components/p-inline-notification/p-inline-notification.md +74 -0
  101. package/skill/references/components/p-input-date/examples/Default.ts +13 -0
  102. package/skill/references/components/p-input-date/examples/Form.ts +31 -0
  103. package/skill/references/components/p-input-date/examples/Slots.ts +44 -0
  104. package/skill/references/components/p-input-date/p-input-date.md +138 -0
  105. package/skill/references/components/p-input-email/examples/Default.ts +13 -0
  106. package/skill/references/components/p-input-email/examples/Form.ts +31 -0
  107. package/skill/references/components/p-input-email/examples/Slots.ts +44 -0
  108. package/skill/references/components/p-input-email/p-input-email.md +142 -0
  109. package/skill/references/components/p-input-month/examples/Default.ts +13 -0
  110. package/skill/references/components/p-input-month/examples/Form.ts +31 -0
  111. package/skill/references/components/p-input-month/examples/Slots.ts +44 -0
  112. package/skill/references/components/p-input-month/p-input-month.md +138 -0
  113. package/skill/references/components/p-input-number/examples/Default.ts +13 -0
  114. package/skill/references/components/p-input-number/examples/Form.ts +31 -0
  115. package/skill/references/components/p-input-number/examples/Slots.ts +44 -0
  116. package/skill/references/components/p-input-number/p-input-number.md +146 -0
  117. package/skill/references/components/p-input-password/examples/Default.ts +13 -0
  118. package/skill/references/components/p-input-password/examples/Form.ts +31 -0
  119. package/skill/references/components/p-input-password/examples/Slots.ts +42 -0
  120. package/skill/references/components/p-input-password/examples/Toggle.ts +13 -0
  121. package/skill/references/components/p-input-password/p-input-password.md +141 -0
  122. package/skill/references/components/p-input-search/examples/AriaCombobox.ts +38 -0
  123. package/skill/references/components/p-input-search/examples/Default.ts +13 -0
  124. package/skill/references/components/p-input-search/examples/Form.ts +31 -0
  125. package/skill/references/components/p-input-search/examples/Slots.ts +44 -0
  126. package/skill/references/components/p-input-search/p-input-search.md +178 -0
  127. package/skill/references/components/p-input-tel/examples/Default.ts +13 -0
  128. package/skill/references/components/p-input-tel/examples/Form.ts +31 -0
  129. package/skill/references/components/p-input-tel/examples/Slots.ts +44 -0
  130. package/skill/references/components/p-input-tel/p-input-tel.md +141 -0
  131. package/skill/references/components/p-input-text/examples/Controlled.ts +36 -0
  132. package/skill/references/components/p-input-text/examples/Default.ts +13 -0
  133. package/skill/references/components/p-input-text/examples/Form.ts +31 -0
  134. package/skill/references/components/p-input-text/examples/Slots.ts +44 -0
  135. package/skill/references/components/p-input-text/p-input-text.md +146 -0
  136. package/skill/references/components/p-input-time/examples/Default.ts +13 -0
  137. package/skill/references/components/p-input-time/examples/Form.ts +31 -0
  138. package/skill/references/components/p-input-time/examples/Slots.ts +44 -0
  139. package/skill/references/components/p-input-time/p-input-time.md +140 -0
  140. package/skill/references/components/p-input-url/examples/Default.ts +13 -0
  141. package/skill/references/components/p-input-url/examples/Form.ts +31 -0
  142. package/skill/references/components/p-input-url/examples/Slots.ts +44 -0
  143. package/skill/references/components/p-input-url/p-input-url.md +141 -0
  144. package/skill/references/components/p-input-week/examples/Default.ts +13 -0
  145. package/skill/references/components/p-input-week/examples/Form.ts +31 -0
  146. package/skill/references/components/p-input-week/examples/Slots.ts +44 -0
  147. package/skill/references/components/p-input-week/p-input-week.md +138 -0
  148. package/skill/references/components/p-link/examples/Default.ts +15 -0
  149. package/skill/references/components/p-link/examples/FrameworkRouting.ts +17 -0
  150. package/skill/references/components/p-link/examples/Icon.ts +20 -0
  151. package/skill/references/components/p-link/p-link.md +101 -0
  152. package/skill/references/components/p-link-pure/examples/CustomClickableArea.ts +15 -0
  153. package/skill/references/components/p-link-pure/examples/Default.ts +15 -0
  154. package/skill/references/components/p-link-pure/examples/FrameworkRouting.ts +17 -0
  155. package/skill/references/components/p-link-pure/examples/Icon.ts +20 -0
  156. package/skill/references/components/p-link-pure/p-link-pure.md +110 -0
  157. package/skill/references/components/p-link-tile/examples/ColorScheme.ts +18 -0
  158. package/skill/references/components/p-link-tile/examples/Default.ts +21 -0
  159. package/skill/references/components/p-link-tile/examples/FooterSlot.ts +32 -0
  160. package/skill/references/components/p-link-tile/examples/Hyphens.ts +39 -0
  161. package/skill/references/components/p-link-tile/examples/UiBehaviour.ts +44 -0
  162. package/skill/references/components/p-link-tile/examples/WithVideo.ts +18 -0
  163. package/skill/references/components/p-link-tile/p-link-tile.md +105 -0
  164. package/skill/references/components/p-link-tile-product/examples/Default.ts +24 -0
  165. package/skill/references/components/p-link-tile-product/examples/FrameworkRouting.ts +27 -0
  166. package/skill/references/components/p-link-tile-product/p-link-tile-product.md +93 -0
  167. package/skill/references/components/p-modal/examples/AlertDialog.ts +41 -0
  168. package/skill/references/components/p-modal/examples/CustomStyling.ts +28 -0
  169. package/skill/references/components/p-modal/examples/Default.ts +41 -0
  170. package/skill/references/components/p-modal/examples/Scrollable.ts +45 -0
  171. package/skill/references/components/p-modal/p-modal.md +135 -0
  172. package/skill/references/components/p-model-signature/examples/CustomStyling.ts +17 -0
  173. package/skill/references/components/p-model-signature/examples/Default.ts +13 -0
  174. package/skill/references/components/p-model-signature/examples/MaskBlendMode.ts +35 -0
  175. package/skill/references/components/p-model-signature/examples/MaskImage.ts +15 -0
  176. package/skill/references/components/p-model-signature/examples/MaskVideo.ts +15 -0
  177. package/skill/references/components/p-model-signature/examples/SafeZone.ts +63 -0
  178. package/skill/references/components/p-model-signature/p-model-signature.md +62 -0
  179. package/skill/references/components/p-multi-select/examples/AsyncFilter.ts +149 -0
  180. package/skill/references/components/p-multi-select/examples/Default.ts +32 -0
  181. package/skill/references/components/p-multi-select/examples/Form.ts +38 -0
  182. package/skill/references/components/p-multi-select/examples/Optgroups.ts +45 -0
  183. package/skill/references/components/p-multi-select/examples/SelectedSlot.ts +103 -0
  184. package/skill/references/components/p-multi-select/examples/SetValue.ts +76 -0
  185. package/skill/references/components/p-multi-select/examples/Slots.ts +51 -0
  186. package/skill/references/components/p-multi-select/p-multi-select.md +197 -0
  187. package/skill/references/components/p-pagination/examples/Default.ts +13 -0
  188. package/skill/references/components/p-pagination/p-pagination.md +83 -0
  189. package/skill/references/components/p-pin-code/examples/CopyPaste.ts +13 -0
  190. package/skill/references/components/p-pin-code/examples/Default.ts +13 -0
  191. package/skill/references/components/p-pin-code/examples/Form.ts +31 -0
  192. package/skill/references/components/p-pin-code/examples/Slots.ts +42 -0
  193. package/skill/references/components/p-pin-code/p-pin-code.md +109 -0
  194. package/skill/references/components/p-popover/examples/Default.ts +17 -0
  195. package/skill/references/components/p-popover/examples/SlottedButton.ts +18 -0
  196. package/skill/references/components/p-popover/p-popover.md +116 -0
  197. package/skill/references/components/p-radio-group/examples/Default.ts +20 -0
  198. package/skill/references/components/p-radio-group/examples/Form.ts +38 -0
  199. package/skill/references/components/p-radio-group/examples/Slots.ts +72 -0
  200. package/skill/references/components/p-radio-group/p-radio-group.md +157 -0
  201. package/skill/references/components/p-scroller/examples/Default.ts +54 -0
  202. package/skill/references/components/p-scroller/examples/Height.ts +29 -0
  203. package/skill/references/components/p-scroller/examples/ScrollToPosition.ts +43 -0
  204. package/skill/references/components/p-scroller/p-scroller.md +93 -0
  205. package/skill/references/components/p-segmented-control/examples/Default.ts +29 -0
  206. package/skill/references/components/p-segmented-control/examples/Form.ts +37 -0
  207. package/skill/references/components/p-segmented-control/examples/Slots.ts +57 -0
  208. package/skill/references/components/p-segmented-control/examples/WithLabels.ts +29 -0
  209. package/skill/references/components/p-segmented-control/p-segmented-control.md +162 -0
  210. package/skill/references/components/p-select/examples/AsyncFilter.ts +149 -0
  211. package/skill/references/components/p-select/examples/Default.ts +32 -0
  212. package/skill/references/components/p-select/examples/Form.ts +38 -0
  213. package/skill/references/components/p-select/examples/Optgroups.ts +45 -0
  214. package/skill/references/components/p-select/examples/Required.ts +48 -0
  215. package/skill/references/components/p-select/examples/SelectedSlot.ts +130 -0
  216. package/skill/references/components/p-select/examples/SetValue.ts +71 -0
  217. package/skill/references/components/p-select/examples/Slots.ts +51 -0
  218. package/skill/references/components/p-select/examples/SlottedImages.ts +38 -0
  219. package/skill/references/components/p-select/p-select.md +194 -0
  220. package/skill/references/components/p-sheet/examples/Default.ts +33 -0
  221. package/skill/references/components/p-sheet/p-sheet.md +121 -0
  222. package/skill/references/components/p-spinner/examples/Color.ts +16 -0
  223. package/skill/references/components/p-spinner/examples/ColorCssVar.ts +13 -0
  224. package/skill/references/components/p-spinner/examples/Default.ts +13 -0
  225. package/skill/references/components/p-spinner/examples/ResponsiveSize.ts +13 -0
  226. package/skill/references/components/p-spinner/examples/Size.ts +16 -0
  227. package/skill/references/components/p-spinner/examples/SizeCssVar.ts +13 -0
  228. package/skill/references/components/p-spinner/p-spinner.md +96 -0
  229. package/skill/references/components/p-stepper-horizontal/examples/Default.ts +26 -0
  230. package/skill/references/components/p-stepper-horizontal/examples/FrameworkImplementation.ts +107 -0
  231. package/skill/references/components/p-stepper-horizontal/p-stepper-horizontal.md +109 -0
  232. package/skill/references/components/p-switch/examples/Default.ts +21 -0
  233. package/skill/references/components/p-switch/p-switch.md +103 -0
  234. package/skill/references/components/p-table/examples/Advanced.ts +162 -0
  235. package/skill/references/components/p-table/examples/CaptionProperty.ts +40 -0
  236. package/skill/references/components/p-table/examples/CaptionSlot.ts +43 -0
  237. package/skill/references/components/p-table/examples/Default.ts +120 -0
  238. package/skill/references/components/p-table/examples/HideLabel.ts +40 -0
  239. package/skill/references/components/p-table/examples/LayoutFixed.ts +53 -0
  240. package/skill/references/components/p-table/examples/Sorting.ts +79 -0
  241. package/skill/references/components/p-table/p-table.md +189 -0
  242. package/skill/references/components/p-tabs/examples/ActiveTab.ts +29 -0
  243. package/skill/references/components/p-tabs/examples/Default.ts +29 -0
  244. package/skill/references/components/p-tabs/examples/Gradient.ts +114 -0
  245. package/skill/references/components/p-tabs/examples/Labelling.ts +29 -0
  246. package/skill/references/components/p-tabs/p-tabs.md +136 -0
  247. package/skill/references/components/p-tabs-bar/examples/Default.ts +29 -0
  248. package/skill/references/components/p-tabs-bar/examples/Gradient.ts +80 -0
  249. package/skill/references/components/p-tabs-bar/examples/Labelling.ts +29 -0
  250. package/skill/references/components/p-tabs-bar/examples/Links.ts +23 -0
  251. package/skill/references/components/p-tabs-bar/p-tabs-bar.md +181 -0
  252. package/skill/references/components/p-tag/examples/Default.ts +15 -0
  253. package/skill/references/components/p-tag/examples/Multiline.ts +17 -0
  254. package/skill/references/components/p-tag/examples/SlottedButton.ts +44 -0
  255. package/skill/references/components/p-tag/examples/SlottedLink.ts +44 -0
  256. package/skill/references/components/p-tag/p-tag.md +66 -0
  257. package/skill/references/components/p-tag-dismissible/examples/Default.ts +15 -0
  258. package/skill/references/components/p-tag-dismissible/p-tag-dismissible.md +75 -0
  259. package/skill/references/components/p-text/examples/Default.ts +15 -0
  260. package/skill/references/components/p-text/examples/Semantics.ts +21 -0
  261. package/skill/references/components/p-text/examples/Size.ts +15 -0
  262. package/skill/references/components/p-text/examples/SizeResponsive.ts +15 -0
  263. package/skill/references/components/p-text/p-text.md +68 -0
  264. package/skill/references/components/p-text-list/examples/Default.ts +31 -0
  265. package/skill/references/components/p-text-list/p-text-list.md +68 -0
  266. package/skill/references/components/p-textarea/examples/Default.ts +13 -0
  267. package/skill/references/components/p-textarea/examples/Form.ts +31 -0
  268. package/skill/references/components/p-textarea/examples/Slots.ts +42 -0
  269. package/skill/references/components/p-textarea/p-textarea.md +122 -0
  270. package/skill/references/components/p-toast/examples/Default.ts +23 -0
  271. package/skill/references/components/p-toast/p-toast.md +61 -0
  272. package/skill/references/components/p-wordmark/examples/CustomClickableArea.ts +13 -0
  273. package/skill/references/components/p-wordmark/examples/Default.ts +13 -0
  274. package/skill/references/components/p-wordmark/examples/Size.ts +13 -0
  275. package/skill/references/components/p-wordmark/p-wordmark.md +66 -0
  276. package/skill/references/icons.md +5 -0
  277. package/skill/references/styles/emotion.md +439 -0
  278. package/skill/references/styles/scss.md +402 -0
  279. package/skill/references/styles/tailwindcss.md +356 -0
  280. package/skill/references/styles/vanilla-extract.md +444 -0
  281. package/skill/references/stylesheets.md +331 -0
  282. package/skill/references/tokens.md +323 -0
  283. package/types/porsche-design-system-components-angular.d.ts +2 -2
@@ -0,0 +1,149 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core';
2
+ import {
3
+ type InputSearchInputEventDetail,
4
+ PorscheDesignSystemModule,
5
+ PSelect,
6
+ type SelectChangeEventDetail,
7
+ type SelectToggleEventDetail,
8
+ } from '@porsche-design-system/components-angular';
9
+
10
+ @Component({
11
+ selector: 'porsche-design-system-app',
12
+ template: `
13
+ <p-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-select-option [value]="option.value">
44
+ {{ option.label }}
45
+ </p-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-select>
72
+
73
+ `,
74
+ changeDetection: ChangeDetectionStrategy.OnPush,
75
+ standalone: true,
76
+ imports: [PorscheDesignSystemModule],
77
+ })
78
+ export class ExampleComponent {
79
+ value?: PSelect['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<SelectChangeEventDetail>) {
141
+ this.value = event.detail.value;
142
+ }
143
+
144
+ onToggle(event: CustomEvent<SelectToggleEventDetail>) {
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-select name="options" label="Some Label" description="Some description">
8
+ <p-select-option value="a">
9
+ Option A
10
+ </p-select-option>
11
+ <p-select-option value="b">
12
+ Option B
13
+ </p-select-option>
14
+ <p-select-option value="c">
15
+ Option C
16
+ </p-select-option>
17
+ <p-select-option value="d">
18
+ Option D
19
+ </p-select-option>
20
+ <p-select-option value="e">
21
+ Option E
22
+ </p-select-option>
23
+ <p-select-option value="f">
24
+ Option F
25
+ </p-select-option>
26
+ </p-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 } 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-select name="mySelect" formControlName="mySelect" [label]="'Some Label'">
10
+ <p-select-option value="a">Option A</p-select-option>
11
+ <p-select-option value="b">Option B</p-select-option>
12
+ <p-select-option value="c">Option C</p-select-option>
13
+ <p-select-option value="d">Option D</p-select-option>
14
+ <p-select-option value="e">Option E</p-select-option>
15
+ <p-select-option value="f">Option F</p-select-option>
16
+ </p-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
+ mySelect: new FormControl<string | undefined>({ value: undefined, disabled: false }),
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-select name="options" label="Some Label" description="Some description">
8
+ <p-optgroup label="Some optgroup label 1">
9
+ <p-select-option value="a">
10
+ Option A
11
+ </p-select-option>
12
+ <p-select-option value="b">
13
+ Option B
14
+ </p-select-option>
15
+ <p-select-option value="c">
16
+ Option C
17
+ </p-select-option>
18
+ <p-select-option value="d">
19
+ Option D
20
+ </p-select-option>
21
+ <p-select-option value="e">
22
+ Option E
23
+ </p-select-option>
24
+ <p-select-option value="f">
25
+ Option F
26
+ </p-select-option>
27
+ </p-optgroup>
28
+ <p-optgroup label="Some optgroup label 2">
29
+ <p-select-option value="g">
30
+ Option G
31
+ </p-select-option>
32
+ <p-select-option value="h">
33
+ Option H
34
+ </p-select-option>
35
+ <p-select-option value="i">
36
+ Option I
37
+ </p-select-option>
38
+ </p-optgroup>
39
+ </p-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,48 @@
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 flex-col gap-static-sm">
8
+ <p-checkbox label="Required" name="required" [checked]="isRequired" (change)="onChangeRequired()" />
9
+ <p-checkbox label="Allow deselection" name="deselection" [checked]="hasDeselection" (change)="onChangeDeselection()" />
10
+ </div>
11
+
12
+ <form (submit)="onSubmit($event)" class="flex flex-col gap-fluid-sm mt-fluid-sm">
13
+ <p-select name="options" label="Some Label" [required]="isRequired">
14
+ @if (hasDeselection) {
15
+ <p-select-option></p-select-option>
16
+ }
17
+ <p-select-option value="1">Option 1</p-select-option>
18
+ <p-select-option value="2">Option 2</p-select-option>
19
+ <p-select-option value="3">Option 3</p-select-option>
20
+ </p-select>
21
+ <p-button type="submit">Submit</p-button>
22
+ </form>
23
+
24
+ <p-text>Last submitted data: {{ lastSubmittedData }}</p-text>
25
+ `,
26
+ changeDetection: ChangeDetectionStrategy.OnPush,
27
+ standalone: true,
28
+ imports: [PorscheDesignSystemModule],
29
+ })
30
+ export class ExampleComponent {
31
+ isRequired: boolean = true;
32
+ hasDeselection: boolean = false;
33
+ lastSubmittedData: string = 'none';
34
+
35
+ onChangeRequired() {
36
+ this.isRequired = !this.isRequired;
37
+ }
38
+
39
+ onChangeDeselection() {
40
+ this.hasDeselection = !this.hasDeselection;
41
+ }
42
+
43
+ onSubmit(e: Event): void {
44
+ e.preventDefault();
45
+ const formData = new FormData(e.target as HTMLFormElement);
46
+ this.lastSubmittedData = formData.get('options')?.toString() || 'none';
47
+ }
48
+ }
@@ -0,0 +1,130 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import {
3
+ type FlagName,
4
+ PorscheDesignSystemModule,
5
+ PSelect,
6
+ type SelectChangeEventDetail,
7
+ } from '@porsche-design-system/components-angular';
8
+
9
+ type Option = { label: string; code: FlagName; continent: string };
10
+
11
+ const optionsData: Option[] = [
12
+ {
13
+ label: 'China',
14
+ code: 'cn',
15
+ continent: 'Asia',
16
+ },
17
+ {
18
+ label: 'Japan',
19
+ code: 'jp',
20
+ continent: 'Asia',
21
+ },
22
+ {
23
+ label: 'South Korea',
24
+ code: 'kr',
25
+ continent: 'Asia',
26
+ },
27
+ {
28
+ label: 'Austria',
29
+ code: 'at',
30
+ continent: 'Europe',
31
+ },
32
+ {
33
+ label: 'France',
34
+ code: 'fr',
35
+ continent: 'Europe',
36
+ },
37
+ {
38
+ label: 'Germany',
39
+ code: 'de',
40
+ continent: 'Europe',
41
+ },
42
+ {
43
+ label: 'Great Britain',
44
+ code: 'gb',
45
+ continent: 'Europe',
46
+ },
47
+ {
48
+ label: 'Italy',
49
+ code: 'it',
50
+ continent: 'Europe',
51
+ },
52
+ {
53
+ label: 'Portugal',
54
+ code: 'pt',
55
+ continent: 'Europe',
56
+ },
57
+ {
58
+ label: 'Spain',
59
+ code: 'es',
60
+ continent: 'Europe',
61
+ },
62
+
63
+ {
64
+ label: 'Canada',
65
+ code: 'ca',
66
+ continent: 'North America',
67
+ },
68
+ {
69
+ label: 'USA',
70
+ code: 'us',
71
+ continent: 'North America',
72
+ },
73
+ ];
74
+
75
+ @Component({
76
+ selector: 'porsche-design-system-app',
77
+ template: `
78
+ <p-select
79
+ name="selected-slot-select"
80
+ label="Selected Slot"
81
+ [value]="value"
82
+ (change)="onChange($event)"
83
+ >
84
+ <span slot="selected" class="h-full flex items-center gap-fluid-sm grow">
85
+ @if (selectedOption) {
86
+ <p-flag [name]="selectedOption.code"></p-flag>
87
+ <p class="prose-text-sm truncate m-0">{{ selectedOption.label }}</p>
88
+ }
89
+ </span>
90
+ @for (entry of optgroups; track entry[0]) {
91
+ <p-optgroup [label]="entry[0]">
92
+ @for (option of entry[1]; track option.code) {
93
+ <p-select-option [value]="option.code">
94
+ <div class="w-full flex items-center gap-fluid-sm">
95
+ <p-flag [name]="option.code"></p-flag>
96
+ <p class="prose-text-sm m-0">{{ option.label }}</p>
97
+ </div>
98
+ </p-select-option>
99
+ }
100
+ </p-optgroup>
101
+ }
102
+ </p-select>
103
+ `,
104
+ changeDetection: ChangeDetectionStrategy.OnPush,
105
+ standalone: true,
106
+ imports: [PorscheDesignSystemModule],
107
+ })
108
+ export class ExampleComponent {
109
+ value?: PSelect['value'];
110
+ options: Option[] = optionsData;
111
+ selectedOption?: Option;
112
+
113
+ optgroups: [string, Option[]][] = Object.entries(
114
+ this.options.reduce(
115
+ (acc, item) => {
116
+ const key = item.continent;
117
+ if (!acc[key]) acc[key] = [];
118
+ acc[key].push(item);
119
+ return acc;
120
+ },
121
+ {} as Record<string, Option[]>
122
+ )
123
+ );
124
+
125
+ onChange(event: CustomEvent<SelectChangeEventDetail>) {
126
+ const value = event.detail.value;
127
+ this.value = value;
128
+ this.selectedOption = this.options.find((option) => option.code === value);
129
+ }
130
+ }
@@ -0,0 +1,71 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import {
3
+ PInputText,
4
+ PorscheDesignSystemModule,
5
+ PSelect,
6
+ SelectChangeEventDetail,
7
+ } from '@porsche-design-system/components-angular';
8
+
9
+ @Component({
10
+ selector: 'porsche-design-system-app',
11
+ template: `
12
+ <div class="flex flex-col gap-fluid-sm">
13
+ <p-input-text label="Value:" name="input-value" [value]="inputValue" (input)="onChangeInput($event)" placeholder="e.g. 1"></p-input-text>
14
+ <div class="flex gap-fluid-sm">
15
+ <p-button type="button" (click)="onSetValue()" [compact]="true">Set Value</p-button>
16
+ <p-button type="button" (click)="onResetValue()" [compact]="true">Reset value</p-button>
17
+ </div>
18
+ <p-select name="options" label="Some Label" [value]="selectedValue" (change)="onChange($event)">
19
+ @for (idx of optionIndices; track idx) {
20
+ <p-select-option [value]="(idx + 1).toString()"
21
+ >Option {{ idx + 1 }}</p-select-option
22
+ >
23
+ }
24
+ </p-select>
25
+ <div class="flex gap-fluid-sm">
26
+ <p-button type="button" (click)="onAddOption()" [compact]="true">Add option</p-button>
27
+ <p-button type="button" (click)="onRemoveOption()" [compact]="true">Remove last option</p-button>
28
+ </div>
29
+ </div>
30
+ `,
31
+ changeDetection: ChangeDetectionStrategy.OnPush,
32
+ standalone: true,
33
+ imports: [PorscheDesignSystemModule],
34
+ })
35
+ export class ExampleComponent {
36
+ selectedValue: PSelect['value'] = '1';
37
+ inputValue: PInputText['value'] = '';
38
+ optionCount: number = 3;
39
+
40
+ get optionIndices(): number[] {
41
+ return [...Array(this.optionCount).keys()];
42
+ }
43
+
44
+ onChangeInput(e: Event) {
45
+ this.inputValue = (e.target as HTMLInputElement).value;
46
+ }
47
+
48
+ onSetValue() {
49
+ this.selectedValue = this.inputValue;
50
+ }
51
+
52
+ onResetValue() {
53
+ this.selectedValue = '1';
54
+ this.inputValue = '';
55
+ }
56
+
57
+ onChange(e: CustomEvent<SelectChangeEventDetail>) {
58
+ this.selectedValue = e.detail.value;
59
+ this.inputValue = String(e.detail.value ?? '');
60
+ }
61
+
62
+ onAddOption() {
63
+ this.optionCount += 1;
64
+ }
65
+
66
+ onRemoveOption() {
67
+ if (this.optionCount > 0) {
68
+ this.optionCount -= 1;
69
+ }
70
+ }
71
+ }
@@ -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-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-select-option value="a">
37
+ Option A
38
+ </p-select-option>
39
+ <p-select-option value="b">
40
+ Option B
41
+ </p-select-option>
42
+ <p-select-option value="c">
43
+ Option C
44
+ </p-select-option>
45
+ </p-select>
46
+ `,
47
+ changeDetection: ChangeDetectionStrategy.OnPush,
48
+ standalone: true,
49
+ imports: [PorscheDesignSystemModule], // <-- PDS module is imported here
50
+ })
51
+ export class ExampleComponent {}
@@ -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
+ <p-select name="options" label="Some Label" description="Some description">
8
+ <p-select-option value="718">
9
+ <img src="assets/718.png" />
10
+ 718
11
+ </p-select-option>
12
+ <p-select-option value="911">
13
+ <img src="assets/911.png" />
14
+ 911
15
+ </p-select-option>
16
+ <p-select-option value="taycan">
17
+ <img src="assets/taycan.png" />
18
+ taycan
19
+ </p-select-option>
20
+ <p-select-option value="macan">
21
+ <img src="assets/macan.png" />
22
+ macan
23
+ </p-select-option>
24
+ <p-select-option value="cayenne">
25
+ <img src="assets/cayenne.png" />
26
+ cayenne
27
+ </p-select-option>
28
+ <p-select-option value="panamera">
29
+ <img src="assets/panamera.png" />
30
+ panamera
31
+ </p-select-option>
32
+ </p-select>
33
+ `,
34
+ changeDetection: ChangeDetectionStrategy.OnPush,
35
+ standalone: true,
36
+ imports: [PorscheDesignSystemModule], // <-- PDS module is imported here
37
+ })
38
+ export class ExampleComponent {}