@porsche-design-system/components-react 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.
- package/CHANGELOG.md +32 -0
- package/bin/pds-skill.js +346 -0
- package/esm/lib/components/button.wrapper.d.ts +2 -2
- package/esm/lib/components/link.wrapper.d.ts +2 -2
- package/package.json +4 -3
- package/skills/pds-knowledge-react/SKILL.md +136 -0
- package/skills/pds-knowledge-react/references/components/p-accordion/accessibility.md +63 -0
- package/skills/pds-knowledge-react/references/components/p-accordion/examples/Default.tsx +24 -0
- package/skills/pds-knowledge-react/references/components/p-accordion/examples/InteractiveElementsInSummary.tsx +28 -0
- package/skills/pds-knowledge-react/references/components/p-accordion/examples/StickySummary.tsx +24 -0
- package/skills/pds-knowledge-react/references/components/p-accordion/p-accordion.md +99 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinCheckbox.tsx +30 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinFormLabel.tsx +37 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinImage.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinInputSearch.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinRadioGroup.tsx +29 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinTable.tsx +91 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinText.tsx +14 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/p-ai-tag.md +47 -0
- package/skills/pds-knowledge-react/references/components/p-banner/accessibility.md +37 -0
- package/skills/pds-knowledge-react/references/components/p-banner/examples/Customization.tsx +35 -0
- package/skills/pds-knowledge-react/references/components/p-banner/examples/Default.tsx +24 -0
- package/skills/pds-knowledge-react/references/components/p-banner/p-banner.md +96 -0
- package/skills/pds-knowledge-react/references/components/p-button/accessibility.md +61 -0
- package/skills/pds-knowledge-react/references/components/p-button/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-button/examples/Form.tsx +28 -0
- package/skills/pds-knowledge-react/references/components/p-button/examples/FormAttribute.tsx +31 -0
- package/skills/pds-knowledge-react/references/components/p-button/p-button.md +122 -0
- package/skills/pds-knowledge-react/references/components/p-button-pure/accessibility.md +61 -0
- package/skills/pds-knowledge-react/references/components/p-button-pure/examples/CustomClickableArea.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-button-pure/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-button-pure/examples/Form.tsx +28 -0
- package/skills/pds-knowledge-react/references/components/p-button-pure/examples/FormAttribute.tsx +32 -0
- package/skills/pds-knowledge-react/references/components/p-button-pure/p-button-pure.md +122 -0
- package/skills/pds-knowledge-react/references/components/p-button-tile/accessibility.md +31 -0
- package/skills/pds-knowledge-react/references/components/p-button-tile/examples/ColorScheme.tsx +15 -0
- package/skills/pds-knowledge-react/references/components/p-button-tile/examples/Default.tsx +18 -0
- package/skills/pds-knowledge-react/references/components/p-button-tile/examples/FooterSlot.tsx +29 -0
- package/skills/pds-knowledge-react/references/components/p-button-tile/examples/Hyphens.tsx +33 -0
- package/skills/pds-knowledge-react/references/components/p-button-tile/examples/UiBehaviour.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-button-tile/p-button-tile.md +119 -0
- package/skills/pds-knowledge-react/references/components/p-canvas/examples/Default.tsx +111 -0
- package/skills/pds-knowledge-react/references/components/p-canvas/p-canvas.md +95 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/accessibility.md +61 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/examples/Default.tsx +23 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/examples/DynamicSlides.tsx +32 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/examples/FlexibleWidths.tsx +29 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/examples/FocusOnCenterSlide.tsx +56 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/examples/Intl.tsx +20 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/examples/JumpToSlide.tsx +42 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/p-carousel.md +146 -0
- package/skills/pds-knowledge-react/references/components/p-checkbox/accessibility.md +31 -0
- package/skills/pds-knowledge-react/references/components/p-checkbox/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-checkbox/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-checkbox/examples/Indeterminate.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-checkbox/examples/Slots.tsx +54 -0
- package/skills/pds-knowledge-react/references/components/p-checkbox/examples/WrappedLabel.tsx +24 -0
- package/skills/pds-knowledge-react/references/components/p-checkbox/p-checkbox.md +126 -0
- package/skills/pds-knowledge-react/references/components/p-crest/accessibility.md +17 -0
- package/skills/pds-knowledge-react/references/components/p-crest/examples/CustomClickableArea.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-crest/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-crest/examples/Link.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-crest/p-crest.md +69 -0
- package/skills/pds-knowledge-react/references/components/p-display/examples/Color.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-display/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-display/examples/Semantics.tsx +18 -0
- package/skills/pds-knowledge-react/references/components/p-display/examples/Size.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-display/examples/SizeResponsive.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-display/p-display.md +78 -0
- package/skills/pds-knowledge-react/references/components/p-divider/accessibility.md +41 -0
- package/skills/pds-knowledge-react/references/components/p-divider/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-divider/examples/Responsive.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-divider/examples/Vertical.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-divider/p-divider.md +53 -0
- package/skills/pds-knowledge-react/references/components/p-drilldown/accessibility.md +65 -0
- package/skills/pds-knowledge-react/references/components/p-drilldown/examples/CustomContent.tsx +164 -0
- package/skills/pds-knowledge-react/references/components/p-drilldown/examples/Default.tsx +117 -0
- package/skills/pds-knowledge-react/references/components/p-drilldown/p-drilldown.md +172 -0
- package/skills/pds-knowledge-react/references/components/p-fieldset/accessibility.md +37 -0
- package/skills/pds-knowledge-react/references/components/p-fieldset/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-fieldset/examples/Required.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-fieldset/examples/SlottedLabel.tsx +15 -0
- package/skills/pds-knowledge-react/references/components/p-fieldset/examples/SlottedMessage.tsx +15 -0
- package/skills/pds-knowledge-react/references/components/p-fieldset/p-fieldset.md +92 -0
- package/skills/pds-knowledge-react/references/components/p-flag/accessibility.md +39 -0
- package/skills/pds-knowledge-react/references/components/p-flag/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-flag/examples/ResponsiveSize.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-flag/examples/Size.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-flag/examples/SizeCssVar.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-flag/p-flag.md +72 -0
- package/skills/pds-knowledge-react/references/components/p-flyout/accessibility.md +80 -0
- package/skills/pds-knowledge-react/references/components/p-flyout/examples/CustomStyling.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-flyout/examples/Default.tsx +42 -0
- package/skills/pds-knowledge-react/references/components/p-flyout/examples/Form.tsx +54 -0
- package/skills/pds-knowledge-react/references/components/p-flyout/examples/StickyTop.tsx +42 -0
- package/skills/pds-knowledge-react/references/components/p-flyout/p-flyout.md +132 -0
- package/skills/pds-knowledge-react/references/components/p-heading/accessibility.md +29 -0
- package/skills/pds-knowledge-react/references/components/p-heading/examples/Color.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-heading/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-heading/examples/Semantics.tsx +18 -0
- package/skills/pds-knowledge-react/references/components/p-heading/p-heading.md +82 -0
- package/skills/pds-knowledge-react/references/components/p-icon/accessibility.md +39 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/Color.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/ColorCssVar.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/Custom.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/Overview.tsx +588 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/ResponsiveSize.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/Size.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/SizeCssVar.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-icon/p-icon.md +92 -0
- package/skills/pds-knowledge-react/references/components/p-inline-notification/accessibility.md +36 -0
- package/skills/pds-knowledge-react/references/components/p-inline-notification/examples/ActionButton.tsx +25 -0
- package/skills/pds-knowledge-react/references/components/p-inline-notification/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-inline-notification/examples/EventHandling.tsx +25 -0
- package/skills/pds-knowledge-react/references/components/p-inline-notification/p-inline-notification.md +78 -0
- package/skills/pds-knowledge-react/references/components/p-input-date/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-date/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-date/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-date/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-date/p-input-date.md +146 -0
- package/skills/pds-knowledge-react/references/components/p-input-email/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-email/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-email/examples/Form.tsx +51 -0
- package/skills/pds-knowledge-react/references/components/p-input-email/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-email/p-input-email.md +150 -0
- package/skills/pds-knowledge-react/references/components/p-input-month/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-month/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-month/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-month/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-month/p-input-month.md +146 -0
- package/skills/pds-knowledge-react/references/components/p-input-number/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-number/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-number/examples/Form.tsx +51 -0
- package/skills/pds-knowledge-react/references/components/p-input-number/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-number/p-input-number.md +154 -0
- package/skills/pds-knowledge-react/references/components/p-input-password/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-password/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-password/examples/Form.tsx +51 -0
- package/skills/pds-knowledge-react/references/components/p-input-password/examples/Slots.tsx +39 -0
- package/skills/pds-knowledge-react/references/components/p-input-password/examples/Toggle.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-password/p-input-password.md +149 -0
- package/skills/pds-knowledge-react/references/components/p-input-search/accessibility.md +59 -0
- package/skills/pds-knowledge-react/references/components/p-input-search/examples/AriaCombobox.tsx +35 -0
- package/skills/pds-knowledge-react/references/components/p-input-search/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-search/examples/Form.tsx +52 -0
- package/skills/pds-knowledge-react/references/components/p-input-search/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-search/p-input-search.md +186 -0
- package/skills/pds-knowledge-react/references/components/p-input-tel/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-tel/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-tel/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-tel/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-tel/p-input-tel.md +149 -0
- package/skills/pds-knowledge-react/references/components/p-input-text/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-text/examples/Controlled.tsx +36 -0
- package/skills/pds-knowledge-react/references/components/p-input-text/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-text/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-text/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-text/p-input-text.md +154 -0
- package/skills/pds-knowledge-react/references/components/p-input-time/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-time/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-time/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-time/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-time/p-input-time.md +148 -0
- package/skills/pds-knowledge-react/references/components/p-input-url/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-url/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-url/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-url/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-url/p-input-url.md +149 -0
- package/skills/pds-knowledge-react/references/components/p-input-week/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-week/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-week/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-week/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-week/p-input-week.md +146 -0
- package/skills/pds-knowledge-react/references/components/p-link/accessibility.md +73 -0
- package/skills/pds-knowledge-react/references/components/p-link/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-link/examples/FrameworkRouting.tsx +14 -0
- package/skills/pds-knowledge-react/references/components/p-link/examples/Icon.tsx +17 -0
- package/skills/pds-knowledge-react/references/components/p-link/p-link.md +105 -0
- package/skills/pds-knowledge-react/references/components/p-link-pure/accessibility.md +73 -0
- package/skills/pds-knowledge-react/references/components/p-link-pure/examples/CustomClickableArea.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-link-pure/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-link-pure/examples/FrameworkRouting.tsx +14 -0
- package/skills/pds-knowledge-react/references/components/p-link-pure/examples/Icon.tsx +17 -0
- package/skills/pds-knowledge-react/references/components/p-link-pure/p-link-pure.md +114 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/accessibility.md +31 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/examples/ColorScheme.tsx +15 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/examples/Default.tsx +18 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/examples/FooterSlot.tsx +29 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/examples/Hyphens.tsx +34 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/examples/UiBehaviour.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/examples/WithVideo.tsx +15 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/p-link-tile.md +109 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile-product/examples/Default.tsx +22 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile-product/examples/FrameworkRouting.tsx +25 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile-product/p-link-tile-product.md +93 -0
- package/skills/pds-knowledge-react/references/components/p-modal/accessibility.md +80 -0
- package/skills/pds-knowledge-react/references/components/p-modal/examples/AlertDialog.tsx +39 -0
- package/skills/pds-knowledge-react/references/components/p-modal/examples/CustomStyling.tsx +26 -0
- package/skills/pds-knowledge-react/references/components/p-modal/examples/Default.tsx +39 -0
- package/skills/pds-knowledge-react/references/components/p-modal/examples/Scrollable.tsx +43 -0
- package/skills/pds-knowledge-react/references/components/p-modal/p-modal.md +139 -0
- package/skills/pds-knowledge-react/references/components/p-model-signature/examples/CustomStyling.tsx +14 -0
- package/skills/pds-knowledge-react/references/components/p-model-signature/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-model-signature/examples/MaskBlendMode.tsx +32 -0
- package/skills/pds-knowledge-react/references/components/p-model-signature/examples/MaskImage.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-model-signature/examples/MaskVideo.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-model-signature/examples/SafeZone.tsx +60 -0
- package/skills/pds-knowledge-react/references/components/p-model-signature/p-model-signature.md +62 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/accessibility.md +78 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/examples/AsyncFilter.tsx +136 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/examples/Default.tsx +29 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/examples/Form.tsx +53 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/examples/Optgroups.tsx +42 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/examples/SelectedSlot.tsx +94 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/examples/SetValue.tsx +80 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/examples/Slots.tsx +48 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/p-multi-select.md +201 -0
- package/skills/pds-knowledge-react/references/components/p-pagination/accessibility.md +23 -0
- package/skills/pds-knowledge-react/references/components/p-pagination/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-pagination/p-pagination.md +87 -0
- package/skills/pds-knowledge-react/references/components/p-pin-code/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-pin-code/examples/CopyPaste.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-pin-code/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-pin-code/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-pin-code/examples/Slots.tsx +39 -0
- package/skills/pds-knowledge-react/references/components/p-pin-code/p-pin-code.md +113 -0
- package/skills/pds-knowledge-react/references/components/p-popover/accessibility.md +61 -0
- package/skills/pds-knowledge-react/references/components/p-popover/examples/Default.tsx +14 -0
- package/skills/pds-knowledge-react/references/components/p-popover/examples/SlottedButton.tsx +15 -0
- package/skills/pds-knowledge-react/references/components/p-popover/p-popover.md +120 -0
- package/skills/pds-knowledge-react/references/components/p-radio-group/accessibility.md +63 -0
- package/skills/pds-knowledge-react/references/components/p-radio-group/examples/Default.tsx +17 -0
- package/skills/pds-knowledge-react/references/components/p-radio-group/examples/Form.tsx +53 -0
- package/skills/pds-knowledge-react/references/components/p-radio-group/examples/Slots.tsx +69 -0
- package/skills/pds-knowledge-react/references/components/p-radio-group/p-radio-group.md +161 -0
- package/skills/pds-knowledge-react/references/components/p-scroller/accessibility.md +31 -0
- package/skills/pds-knowledge-react/references/components/p-scroller/examples/Default.tsx +51 -0
- package/skills/pds-knowledge-react/references/components/p-scroller/examples/Height.tsx +26 -0
- package/skills/pds-knowledge-react/references/components/p-scroller/examples/ScrollToPosition.tsx +58 -0
- package/skills/pds-knowledge-react/references/components/p-scroller/p-scroller.md +97 -0
- package/skills/pds-knowledge-react/references/components/p-segmented-control/accessibility.md +67 -0
- package/skills/pds-knowledge-react/references/components/p-segmented-control/examples/Default.tsx +26 -0
- package/skills/pds-knowledge-react/references/components/p-segmented-control/examples/Form.tsx +52 -0
- package/skills/pds-knowledge-react/references/components/p-segmented-control/examples/Slots.tsx +54 -0
- package/skills/pds-knowledge-react/references/components/p-segmented-control/examples/WithLabels.tsx +26 -0
- package/skills/pds-knowledge-react/references/components/p-segmented-control/p-segmented-control.md +166 -0
- package/skills/pds-knowledge-react/references/components/p-select/accessibility.md +140 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/AsyncFilter.tsx +136 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/Default.tsx +29 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/Form.tsx +53 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/Optgroups.tsx +42 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/Required.tsx +48 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/SelectedSlot.tsx +124 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/SetValue.tsx +80 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/Slots.tsx +48 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/SlottedImages.tsx +35 -0
- package/skills/pds-knowledge-react/references/components/p-select/p-select.md +198 -0
- package/skills/pds-knowledge-react/references/components/p-sheet/accessibility.md +80 -0
- package/skills/pds-knowledge-react/references/components/p-sheet/examples/Default.tsx +31 -0
- package/skills/pds-knowledge-react/references/components/p-sheet/p-sheet.md +125 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/accessibility.md +31 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/examples/Color.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/examples/ColorCssVar.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/examples/ResponsiveSize.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/examples/Size.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/examples/SizeCssVar.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/p-spinner.md +100 -0
- package/skills/pds-knowledge-react/references/components/p-stepper-horizontal/accessibility.md +34 -0
- package/skills/pds-knowledge-react/references/components/p-stepper-horizontal/examples/Default.tsx +23 -0
- package/skills/pds-knowledge-react/references/components/p-stepper-horizontal/examples/FrameworkImplementation.tsx +100 -0
- package/skills/pds-knowledge-react/references/components/p-stepper-horizontal/p-stepper-horizontal.md +113 -0
- package/skills/pds-knowledge-react/references/components/p-switch/accessibility.md +35 -0
- package/skills/pds-knowledge-react/references/components/p-switch/examples/Default.tsx +19 -0
- package/skills/pds-knowledge-react/references/components/p-switch/p-switch.md +107 -0
- package/skills/pds-knowledge-react/references/components/p-table/accessibility.md +47 -0
- package/skills/pds-knowledge-react/references/components/p-table/examples/Advanced.tsx +186 -0
- package/skills/pds-knowledge-react/references/components/p-table/examples/CaptionProperty.tsx +37 -0
- package/skills/pds-knowledge-react/references/components/p-table/examples/CaptionSlot.tsx +40 -0
- package/skills/pds-knowledge-react/references/components/p-table/examples/Default.tsx +117 -0
- package/skills/pds-knowledge-react/references/components/p-table/examples/HideLabel.tsx +37 -0
- package/skills/pds-knowledge-react/references/components/p-table/examples/LayoutFixed.tsx +50 -0
- package/skills/pds-knowledge-react/references/components/p-table/examples/Sorting.tsx +87 -0
- package/skills/pds-knowledge-react/references/components/p-table/p-table.md +193 -0
- package/skills/pds-knowledge-react/references/components/p-tabs/accessibility.md +56 -0
- package/skills/pds-knowledge-react/references/components/p-tabs/examples/ActiveTab.tsx +26 -0
- package/skills/pds-knowledge-react/references/components/p-tabs/examples/Default.tsx +26 -0
- package/skills/pds-knowledge-react/references/components/p-tabs/examples/Gradient.tsx +111 -0
- package/skills/pds-knowledge-react/references/components/p-tabs/examples/Labelling.tsx +26 -0
- package/skills/pds-knowledge-react/references/components/p-tabs/p-tabs.md +140 -0
- package/skills/pds-knowledge-react/references/components/p-tabs-bar/accessibility.md +61 -0
- package/skills/pds-knowledge-react/references/components/p-tabs-bar/examples/Default.tsx +27 -0
- package/skills/pds-knowledge-react/references/components/p-tabs-bar/examples/Gradient.tsx +78 -0
- package/skills/pds-knowledge-react/references/components/p-tabs-bar/examples/Labelling.tsx +27 -0
- package/skills/pds-knowledge-react/references/components/p-tabs-bar/examples/Links.tsx +20 -0
- package/skills/pds-knowledge-react/references/components/p-tabs-bar/p-tabs-bar.md +185 -0
- package/skills/pds-knowledge-react/references/components/p-tag/accessibility.md +19 -0
- package/skills/pds-knowledge-react/references/components/p-tag/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-tag/examples/Multiline.tsx +14 -0
- package/skills/pds-knowledge-react/references/components/p-tag/examples/SlottedButton.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-tag/examples/SlottedLink.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-tag/p-tag.md +70 -0
- package/skills/pds-knowledge-react/references/components/p-tag-dismissible/accessibility.md +35 -0
- package/skills/pds-knowledge-react/references/components/p-tag-dismissible/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-tag-dismissible/p-tag-dismissible.md +79 -0
- package/skills/pds-knowledge-react/references/components/p-text/accessibility.md +21 -0
- package/skills/pds-knowledge-react/references/components/p-text/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-text/examples/Semantics.tsx +18 -0
- package/skills/pds-knowledge-react/references/components/p-text/examples/Size.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-text/examples/SizeResponsive.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-text/p-text.md +72 -0
- package/skills/pds-knowledge-react/references/components/p-text-list/accessibility.md +31 -0
- package/skills/pds-knowledge-react/references/components/p-text-list/examples/Default.tsx +28 -0
- package/skills/pds-knowledge-react/references/components/p-text-list/p-text-list.md +72 -0
- package/skills/pds-knowledge-react/references/components/p-textarea/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-textarea/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-textarea/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-textarea/examples/Slots.tsx +39 -0
- package/skills/pds-knowledge-react/references/components/p-textarea/p-textarea.md +126 -0
- package/skills/pds-knowledge-react/references/components/p-toast/examples/Default.tsx +22 -0
- package/skills/pds-knowledge-react/references/components/p-toast/p-toast.md +61 -0
- package/skills/pds-knowledge-react/references/components/p-wordmark/accessibility.md +31 -0
- package/skills/pds-knowledge-react/references/components/p-wordmark/examples/CustomClickableArea.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-wordmark/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-wordmark/examples/Size.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-wordmark/p-wordmark.md +70 -0
- package/skills/pds-knowledge-react/references/icons.md +5 -0
- package/skills/pds-knowledge-react/references/styles/emotion.md +439 -0
- package/skills/pds-knowledge-react/references/styles/scss.md +402 -0
- package/skills/pds-knowledge-react/references/styles/tailwindcss.md +356 -0
- package/skills/pds-knowledge-react/references/styles/vanilla-extract.md +444 -0
- package/skills/pds-knowledge-react/references/stylesheets.md +331 -0
- package/skills/pds-knowledge-react/references/tokens.md +323 -0
- package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +5 -5
- package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +1 -1
- package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +5 -5
- package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +1 -1
- package/ssr/esm/lib/components/button.wrapper.d.ts +2 -2
- package/ssr/esm/lib/components/link.wrapper.d.ts +2 -2
package/skills/pds-knowledge-react/references/components/p-model-signature/p-model-signature.md
ADDED
|
@@ -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.tsx](./examples/Default.tsx) |
|
|
58
|
+
| Safe Zone | The `safe-zone` prop's default is `modelSignatureSafeZoneDefault`, which ensures a visual balance across all model signatures. | [./examples/SafeZone.tsx](./examples/SafeZone.tsx) |
|
|
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.tsx](./examples/MaskBlendMode.tsx) |
|
|
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.tsx](./examples/MaskImage.tsx) |
|
|
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.tsx](./examples/MaskVideo.tsx) |
|
|
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.tsx](./examples/CustomStyling.tsx) |
|
|
@@ -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
|
+
```tsx
|
|
10
|
+
<PMultiSelect name="features">
|
|
11
|
+
<PMultiSelectOption value="">
|
|
12
|
+
Select features
|
|
13
|
+
</PMultiSelectOption>
|
|
14
|
+
<PMultiSelectOption value="sport">
|
|
15
|
+
Sport Chrono Package
|
|
16
|
+
</PMultiSelectOption>
|
|
17
|
+
</PMultiSelect>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
#### ✅ Recommended
|
|
21
|
+
|
|
22
|
+
```tsx
|
|
23
|
+
<PMultiSelect label="Optional features" name="features" description="Select all features for your configuration.">
|
|
24
|
+
<PMultiSelectOption value="sport">
|
|
25
|
+
Sport Chrono Package
|
|
26
|
+
</PMultiSelectOption>
|
|
27
|
+
<PMultiSelectOption value="audio">
|
|
28
|
+
BOSE Surround Sound
|
|
29
|
+
</PMultiSelectOption>
|
|
30
|
+
</PMultiSelect>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Hidden label without accessible name
|
|
34
|
+
|
|
35
|
+
#### ❌ Anti-pattern
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
<PMultiSelect name="features" hideLabel={true}>
|
|
39
|
+
<PMultiSelectOption value="sport">
|
|
40
|
+
Sport Chrono Package
|
|
41
|
+
</PMultiSelectOption>
|
|
42
|
+
</PMultiSelect>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
#### ✅ Recommended
|
|
46
|
+
|
|
47
|
+
```tsx
|
|
48
|
+
<PMultiSelect label="Optional features" name="features" hideLabel={true}>
|
|
49
|
+
<PMultiSelectOption value="sport">
|
|
50
|
+
Sport Chrono Package
|
|
51
|
+
</PMultiSelectOption>
|
|
52
|
+
</PMultiSelect>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Validation feedback via state and message API
|
|
56
|
+
|
|
57
|
+
#### ❌ Anti-pattern
|
|
58
|
+
|
|
59
|
+
```tsx
|
|
60
|
+
<PMultiSelect label="Optional features" name="features" aria-invalid={true} message="Required">
|
|
61
|
+
<PMultiSelectOption value="sport">
|
|
62
|
+
Sport Chrono Package
|
|
63
|
+
</PMultiSelectOption>
|
|
64
|
+
</PMultiSelect>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
#### ✅ Recommended
|
|
68
|
+
|
|
69
|
+
```tsx
|
|
70
|
+
<PMultiSelect label="Optional features" name="features" required={true} state="error" message="Select at least one feature to continue.">
|
|
71
|
+
<PMultiSelectOption value="sport">
|
|
72
|
+
Sport Chrono Package
|
|
73
|
+
</PMultiSelectOption>
|
|
74
|
+
<PMultiSelectOption value="audio">
|
|
75
|
+
BOSE Surround Sound
|
|
76
|
+
</PMultiSelectOption>
|
|
77
|
+
</PMultiSelect>
|
|
78
|
+
```
|
package/skills/pds-knowledge-react/references/components/p-multi-select/examples/AsyncFilter.tsx
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
type InputSearchInputEventDetail,
|
|
4
|
+
type MultiSelectChangeEventDetail,
|
|
5
|
+
type MultiSelectToggleEventDetail,
|
|
6
|
+
PIcon,
|
|
7
|
+
PInputSearch,
|
|
8
|
+
PMultiSelect,
|
|
9
|
+
PMultiSelectOption,
|
|
10
|
+
type PMultiSelectProps,
|
|
11
|
+
} from '@porsche-design-system/components-react';
|
|
12
|
+
import { useCallback, useRef, useState } from 'react';
|
|
13
|
+
|
|
14
|
+
const useDebounce = <T,>(callback: (value: T) => void, delay = 400) => {
|
|
15
|
+
const timer = useRef<number | undefined>(undefined);
|
|
16
|
+
return (value: T) => {
|
|
17
|
+
if (timer.current) clearTimeout(timer.current);
|
|
18
|
+
timer.current = window.setTimeout(() => callback(value), delay);
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const Example = () => {
|
|
23
|
+
const [value, setValue] = useState<PMultiSelectProps['value']>([]);
|
|
24
|
+
const [options, setOptions] = useState<{ value: string; label: string }[]>([]);
|
|
25
|
+
|
|
26
|
+
const [searchValue, setSearchValue] = useState('');
|
|
27
|
+
const [initialLoading, setInitialLoading] = useState(false);
|
|
28
|
+
const [loading, setLoading] = useState(false);
|
|
29
|
+
const [error, setError] = useState<string | null>(null);
|
|
30
|
+
|
|
31
|
+
const hasLoadedOnce = useRef(false);
|
|
32
|
+
const currentFetchId = useRef(0);
|
|
33
|
+
|
|
34
|
+
// 💡Consider using a data-fetching library like React Query or SWR here.
|
|
35
|
+
// They provide built-in caching, deduplication, retries, and loading/error state management,
|
|
36
|
+
// which would make this async logic cleaner and more reliable than manual fetch handling.
|
|
37
|
+
const fetchOptions = useCallback(async (term?: string, isInitial?: boolean) => {
|
|
38
|
+
const fetchId = ++currentFetchId.current;
|
|
39
|
+
isInitial ? setInitialLoading(true) : setLoading(true);
|
|
40
|
+
try {
|
|
41
|
+
const url = term
|
|
42
|
+
? `https://jsonplaceholder.typicode.com/users?username_like=${term}`
|
|
43
|
+
: `https://jsonplaceholder.typicode.com/users`;
|
|
44
|
+
|
|
45
|
+
const res = await fetch(url);
|
|
46
|
+
const data: { id: number; name: string; username: string }[] = await res.json();
|
|
47
|
+
|
|
48
|
+
// Ignore stale results
|
|
49
|
+
if (fetchId !== currentFetchId.current) return;
|
|
50
|
+
|
|
51
|
+
const newOptions = data.map((user) => ({
|
|
52
|
+
value: user.id.toString(),
|
|
53
|
+
label: `${user.name} (${user.username})`,
|
|
54
|
+
}));
|
|
55
|
+
|
|
56
|
+
setOptions(newOptions);
|
|
57
|
+
setError(null);
|
|
58
|
+
hasLoadedOnce.current = true;
|
|
59
|
+
} catch (err) {
|
|
60
|
+
console.error('Failed to fetch options', err);
|
|
61
|
+
setOptions([]);
|
|
62
|
+
setError('Failed to load options');
|
|
63
|
+
} finally {
|
|
64
|
+
isInitial ? setInitialLoading(false) : setLoading(false);
|
|
65
|
+
}
|
|
66
|
+
}, []);
|
|
67
|
+
|
|
68
|
+
const debouncedFetch = useDebounce(fetchOptions, 400);
|
|
69
|
+
|
|
70
|
+
const onInput = (e: CustomEvent<InputSearchInputEventDetail>) => {
|
|
71
|
+
const term = (e.target as HTMLElement & { value: string }).value;
|
|
72
|
+
setSearchValue(term);
|
|
73
|
+
debouncedFetch(term.trim() || undefined);
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const onChange = (e: CustomEvent<MultiSelectChangeEventDetail>) => {
|
|
77
|
+
setValue((e.target as HTMLElement & { value: string[] }).value);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const onToggle = async (e: CustomEvent<MultiSelectToggleEventDetail>) => {
|
|
81
|
+
if (e.detail.open && !hasLoadedOnce.current) {
|
|
82
|
+
fetchOptions(undefined, true);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
return (
|
|
87
|
+
<PMultiSelect name="async-search-select" label="Async Search" value={value} onChange={onChange} onToggle={onToggle}>
|
|
88
|
+
<PInputSearch
|
|
89
|
+
slot="filter"
|
|
90
|
+
name="search"
|
|
91
|
+
value={searchValue}
|
|
92
|
+
loading={loading}
|
|
93
|
+
clear
|
|
94
|
+
indicator
|
|
95
|
+
compact
|
|
96
|
+
autoComplete="off"
|
|
97
|
+
onInput={onInput}
|
|
98
|
+
// Prevent bubbling
|
|
99
|
+
onBlur={(e: any) => e.stopPropagation()}
|
|
100
|
+
onChange={(e: any) => e.stopPropagation()}
|
|
101
|
+
/>
|
|
102
|
+
|
|
103
|
+
{/* Initial skeleton loading */}
|
|
104
|
+
{initialLoading &&
|
|
105
|
+
!error &&
|
|
106
|
+
Array.from({ length: 9 }).map((_, i) => <div key={i} slot="options-status" className="skeleton h-[40px]" />)}
|
|
107
|
+
|
|
108
|
+
{/* Options */}
|
|
109
|
+
{options.map((opt) => (
|
|
110
|
+
<PMultiSelectOption key={opt.value} value={opt.value}>
|
|
111
|
+
{opt.label}
|
|
112
|
+
</PMultiSelectOption>
|
|
113
|
+
))}
|
|
114
|
+
|
|
115
|
+
{/* No filter results */}
|
|
116
|
+
{!initialLoading && options.length === 0 && !error && (
|
|
117
|
+
<div
|
|
118
|
+
slot="options-status"
|
|
119
|
+
className="text-contrast-medium cursor-not-allowed py-static-sm px-[12px]"
|
|
120
|
+
role="alert"
|
|
121
|
+
>
|
|
122
|
+
<span aria-hidden="true">–</span>
|
|
123
|
+
<span className="sr-only">No results found</span>
|
|
124
|
+
</div>
|
|
125
|
+
)}
|
|
126
|
+
|
|
127
|
+
{/* Error state */}
|
|
128
|
+
{error && (
|
|
129
|
+
<div slot="options-status" className="flex gap-static-sm py-static-sm px-[12px]" role="alert">
|
|
130
|
+
<PIcon name="information" color="error" />
|
|
131
|
+
<span className="text-error">{error}</span>
|
|
132
|
+
</div>
|
|
133
|
+
)}
|
|
134
|
+
</PMultiSelect>
|
|
135
|
+
);
|
|
136
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PMultiSelect, PMultiSelectOption } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PMultiSelect name="name" label="Some Label" description="Some description">
|
|
8
|
+
<PMultiSelectOption value="a">
|
|
9
|
+
Option A
|
|
10
|
+
</PMultiSelectOption>
|
|
11
|
+
<PMultiSelectOption value="b">
|
|
12
|
+
Option B
|
|
13
|
+
</PMultiSelectOption>
|
|
14
|
+
<PMultiSelectOption value="c">
|
|
15
|
+
Option C
|
|
16
|
+
</PMultiSelectOption>
|
|
17
|
+
<PMultiSelectOption value="d">
|
|
18
|
+
Option D
|
|
19
|
+
</PMultiSelectOption>
|
|
20
|
+
<PMultiSelectOption value="e">
|
|
21
|
+
Option E
|
|
22
|
+
</PMultiSelectOption>
|
|
23
|
+
<PMultiSelectOption value="f">
|
|
24
|
+
Option F
|
|
25
|
+
</PMultiSelectOption>
|
|
26
|
+
</PMultiSelect>
|
|
27
|
+
</>
|
|
28
|
+
)
|
|
29
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
type MultiSelectChangeEventDetail,
|
|
4
|
+
PButton,
|
|
5
|
+
PMultiSelect,
|
|
6
|
+
PMultiSelectOption,
|
|
7
|
+
type PMultiSelectProps,
|
|
8
|
+
PText,
|
|
9
|
+
} from '@porsche-design-system/components-react';
|
|
10
|
+
import { FormEvent, useState } from 'react';
|
|
11
|
+
|
|
12
|
+
export const Example = () => {
|
|
13
|
+
const [form, setForm] = useState({ myMultiSelect: [] });
|
|
14
|
+
const [lastSubmittedData, setLastSubmittedData] = useState<any>();
|
|
15
|
+
|
|
16
|
+
const onChange = (e: CustomEvent<MultiSelectChangeEventDetail>) => {
|
|
17
|
+
const { name, value } = e.target as HTMLElement & PMultiSelectProps;
|
|
18
|
+
setForm((prev) => ({
|
|
19
|
+
...prev,
|
|
20
|
+
[name]: value,
|
|
21
|
+
}));
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const onSubmit = (e: FormEvent<HTMLFormElement>) => {
|
|
25
|
+
e.preventDefault();
|
|
26
|
+
setLastSubmittedData(JSON.stringify(form));
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const onReset = (e: FormEvent<HTMLFormElement>) => {
|
|
30
|
+
e.preventDefault();
|
|
31
|
+
setForm({ myMultiSelect: [] });
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<>
|
|
36
|
+
<form onSubmit={onSubmit} onReset={onReset} className="flex flex-col gap-fluid-sm">
|
|
37
|
+
<PMultiSelect name="myMultiSelect" label="Some Label" value={form.myMultiSelect} onChange={onChange}>
|
|
38
|
+
<PMultiSelectOption value="a">Option A</PMultiSelectOption>
|
|
39
|
+
<PMultiSelectOption value="b">Option B</PMultiSelectOption>
|
|
40
|
+
<PMultiSelectOption value="c">Option C</PMultiSelectOption>
|
|
41
|
+
<PMultiSelectOption value="d">Option D</PMultiSelectOption>
|
|
42
|
+
<PMultiSelectOption value="e">Option E</PMultiSelectOption>
|
|
43
|
+
<PMultiSelectOption value="f">Option F</PMultiSelectOption>
|
|
44
|
+
</PMultiSelect>
|
|
45
|
+
<div className="flex gap-fluid-sm">
|
|
46
|
+
<PButton type="submit">Submit</PButton>
|
|
47
|
+
<PButton type="reset">Reset</PButton>
|
|
48
|
+
</div>
|
|
49
|
+
<PText>Last submitted data: {lastSubmittedData}</PText>
|
|
50
|
+
</form>
|
|
51
|
+
</>
|
|
52
|
+
);
|
|
53
|
+
};
|
package/skills/pds-knowledge-react/references/components/p-multi-select/examples/Optgroups.tsx
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PMultiSelect, PMultiSelectOption, POptgroup } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PMultiSelect name="options" label="Some Label">
|
|
8
|
+
<POptgroup label="Some optgroup label 1">
|
|
9
|
+
<PMultiSelectOption value="a">
|
|
10
|
+
Option A
|
|
11
|
+
</PMultiSelectOption>
|
|
12
|
+
<PMultiSelectOption value="b">
|
|
13
|
+
Option B
|
|
14
|
+
</PMultiSelectOption>
|
|
15
|
+
<PMultiSelectOption value="c">
|
|
16
|
+
Option C
|
|
17
|
+
</PMultiSelectOption>
|
|
18
|
+
<PMultiSelectOption value="d">
|
|
19
|
+
Option D
|
|
20
|
+
</PMultiSelectOption>
|
|
21
|
+
<PMultiSelectOption value="e">
|
|
22
|
+
Option E
|
|
23
|
+
</PMultiSelectOption>
|
|
24
|
+
<PMultiSelectOption value="f">
|
|
25
|
+
Option F
|
|
26
|
+
</PMultiSelectOption>
|
|
27
|
+
</POptgroup>
|
|
28
|
+
<POptgroup label="Some optgroup label 2">
|
|
29
|
+
<PMultiSelectOption value="g">
|
|
30
|
+
Option G
|
|
31
|
+
</PMultiSelectOption>
|
|
32
|
+
<PMultiSelectOption value="h">
|
|
33
|
+
Option H
|
|
34
|
+
</PMultiSelectOption>
|
|
35
|
+
<PMultiSelectOption value="i">
|
|
36
|
+
Option I
|
|
37
|
+
</PMultiSelectOption>
|
|
38
|
+
</POptgroup>
|
|
39
|
+
</PMultiSelect>
|
|
40
|
+
</>
|
|
41
|
+
)
|
|
42
|
+
}
|
package/skills/pds-knowledge-react/references/components/p-multi-select/examples/SelectedSlot.tsx
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
type MultiSelectChangeEventDetail,
|
|
4
|
+
PMultiSelect,
|
|
5
|
+
PMultiSelectOption,
|
|
6
|
+
type PMultiSelectProps,
|
|
7
|
+
PTag,
|
|
8
|
+
} from '@porsche-design-system/components-react';
|
|
9
|
+
import { useState } from 'react';
|
|
10
|
+
|
|
11
|
+
type Option = { value: string; label: string; description: string; tags: string[]; imgSrc: string };
|
|
12
|
+
|
|
13
|
+
const optionsData: Option[] = [
|
|
14
|
+
{
|
|
15
|
+
value: '718',
|
|
16
|
+
label: '718',
|
|
17
|
+
description: 'Präziser Sportwagen mit Mittelmotor',
|
|
18
|
+
tags: ['Benzin'],
|
|
19
|
+
imgSrc: 'assets/718.png',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
value: '911',
|
|
23
|
+
label: '911',
|
|
24
|
+
description: 'Ikonischer Sportwagen mit Heckmotor',
|
|
25
|
+
tags: ['Benzin'],
|
|
26
|
+
imgSrc: 'assets/911.png',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
value: 'taycan',
|
|
30
|
+
label: 'Taycan',
|
|
31
|
+
description: 'Elektrischer Sportwagen',
|
|
32
|
+
tags: ['Elektro'],
|
|
33
|
+
imgSrc: 'assets/taycan.png',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
value: 'macan',
|
|
37
|
+
label: 'Macan',
|
|
38
|
+
tags: ['Elektro'],
|
|
39
|
+
description: 'Sportlicher Kompakt-SUV',
|
|
40
|
+
imgSrc: 'assets/macan.png',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
value: 'cayenne',
|
|
44
|
+
label: 'Cayenne',
|
|
45
|
+
tags: ['Hybrid', 'Benzin'],
|
|
46
|
+
description: 'Vielseitiger SUV',
|
|
47
|
+
imgSrc: 'assets/cayenne.png',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
value: 'panamera',
|
|
51
|
+
label: 'Panamera',
|
|
52
|
+
tags: ['Hybrid', 'Benzin'],
|
|
53
|
+
description: 'Luxuslimousine mit hohem Komfort',
|
|
54
|
+
imgSrc: 'assets/panamera.png',
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
|
|
58
|
+
export const Example = () => {
|
|
59
|
+
const [value, setValue] = useState<PMultiSelectProps['value']>([]);
|
|
60
|
+
const [options] = useState<Option[]>(optionsData);
|
|
61
|
+
const [selectedOptions, setSelectedOptions] = useState<Option[]>([]);
|
|
62
|
+
|
|
63
|
+
const onChange = (e: CustomEvent<MultiSelectChangeEventDetail>) => {
|
|
64
|
+
const value = (e.target as HTMLElement & { value: string[] }).value;
|
|
65
|
+
setValue(value);
|
|
66
|
+
setSelectedOptions(options.filter((option) => value.includes(option.value)));
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
return (
|
|
70
|
+
<PMultiSelect name="selected-slot-select" label="Selected Slot" value={value} onChange={onChange}>
|
|
71
|
+
<span slot="selected" className="h-full flex items-center">
|
|
72
|
+
<span className="truncate">{selectedOptions.map((option) => option.label).join(', ')}</span>
|
|
73
|
+
</span>
|
|
74
|
+
{options.map((option) => (
|
|
75
|
+
<PMultiSelectOption key={option.value} value={option.value}>
|
|
76
|
+
<div className="w-full flex gap-fluid-sm">
|
|
77
|
+
<img src={option.imgSrc} alt="" className="h-[34px] w-auto self-center" />
|
|
78
|
+
<div className="flex flex-col justify-center flex-1 min-w-0">
|
|
79
|
+
<p className="prose-text-sm m-0">{option.label}</p>
|
|
80
|
+
<p className="prose-text-2xs m-0">{option.description}</p>
|
|
81
|
+
</div>
|
|
82
|
+
<div className="self-center flex gap-fluid-sm">
|
|
83
|
+
{option.tags.map((tag) => (
|
|
84
|
+
<PTag key={tag} variant="info" compact={true}>
|
|
85
|
+
{tag}
|
|
86
|
+
</PTag>
|
|
87
|
+
))}
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
</PMultiSelectOption>
|
|
91
|
+
))}
|
|
92
|
+
</PMultiSelect>
|
|
93
|
+
);
|
|
94
|
+
};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
type InputTextInputEventDetail,
|
|
4
|
+
type MultiSelectChangeEventDetail,
|
|
5
|
+
PButton,
|
|
6
|
+
PInputText,
|
|
7
|
+
PMultiSelect,
|
|
8
|
+
PMultiSelectOption,
|
|
9
|
+
type PMultiSelectProps,
|
|
10
|
+
} from '@porsche-design-system/components-react';
|
|
11
|
+
import { useState } from 'react';
|
|
12
|
+
|
|
13
|
+
export const Example = () => {
|
|
14
|
+
const [selectedValues, setSelectedValues] = useState<PMultiSelectProps['value']>([]);
|
|
15
|
+
const [inputValue, setInputValue] = useState('');
|
|
16
|
+
const [optionCount, setOptionCount] = useState(3);
|
|
17
|
+
|
|
18
|
+
const onChangeInput = (e: CustomEvent<InputTextInputEventDetail>) => {
|
|
19
|
+
setInputValue((e.detail.target as HTMLInputElement).value);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const onSetValue = () => {
|
|
23
|
+
setSelectedValues(inputValue.split(','));
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const onResetValue = () => {
|
|
27
|
+
setSelectedValues([]);
|
|
28
|
+
setInputValue('');
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const onChange = (e: CustomEvent<MultiSelectChangeEventDetail>) => {
|
|
32
|
+
setSelectedValues(e.detail.value);
|
|
33
|
+
setInputValue(e.detail.value.join(','));
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const onAddOption = () => {
|
|
37
|
+
setOptionCount((prev) => prev + 1);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const onRemoveOption = () => {
|
|
41
|
+
if (optionCount > 0) {
|
|
42
|
+
setOptionCount((prev) => prev - 1);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<div className="flex flex-col gap-fluid-sm">
|
|
48
|
+
<PInputText
|
|
49
|
+
name="input-value"
|
|
50
|
+
label="Value:"
|
|
51
|
+
placeholder="e.g. 1,2"
|
|
52
|
+
value={inputValue}
|
|
53
|
+
onInput={(e) => onChangeInput(e as CustomEvent<InputTextInputEventDetail>)}
|
|
54
|
+
/>
|
|
55
|
+
<div className="flex gap-fluid-sm">
|
|
56
|
+
<PButton type="button" onClick={onSetValue} compact={true}>
|
|
57
|
+
Set Value
|
|
58
|
+
</PButton>
|
|
59
|
+
<PButton type="button" onClick={onResetValue} compact={true}>
|
|
60
|
+
Reset value
|
|
61
|
+
</PButton>
|
|
62
|
+
</div>
|
|
63
|
+
<PMultiSelect name="options" label="Some Label" value={selectedValues} onChange={onChange}>
|
|
64
|
+
{[...Array(optionCount).keys()].map((idx) => (
|
|
65
|
+
<PMultiSelectOption key={idx} value={`${idx + 1}`}>
|
|
66
|
+
Option {idx + 1}
|
|
67
|
+
</PMultiSelectOption>
|
|
68
|
+
))}
|
|
69
|
+
</PMultiSelect>
|
|
70
|
+
<div className="flex gap-fluid-sm">
|
|
71
|
+
<PButton type="button" onClick={onAddOption} compact={true}>
|
|
72
|
+
Add option
|
|
73
|
+
</PButton>
|
|
74
|
+
<PButton type="button" onClick={onRemoveOption} compact={true}>
|
|
75
|
+
Remove last option
|
|
76
|
+
</PButton>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
);
|
|
80
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PMultiSelect, PMultiSelectOption, PPopover } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PMultiSelect name="options" state="error">
|
|
8
|
+
<span slot="label" id="some-label-id">
|
|
9
|
+
Some label with a
|
|
10
|
+
<a href="https://designsystem.porsche.com" className="underline">
|
|
11
|
+
link
|
|
12
|
+
</a>
|
|
13
|
+
and a "label-after" slot.
|
|
14
|
+
</span>
|
|
15
|
+
<PPopover slot="label-after">
|
|
16
|
+
Some Popover content with a
|
|
17
|
+
<a href="https://designsystem.porsche.com" className="underline">
|
|
18
|
+
link
|
|
19
|
+
</a>
|
|
20
|
+
.
|
|
21
|
+
</PPopover>
|
|
22
|
+
<span slot="description" id="some-description-id">
|
|
23
|
+
Some description with a
|
|
24
|
+
<a href="https://designsystem.porsche.com" className="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" className="underline">
|
|
32
|
+
link
|
|
33
|
+
</a>
|
|
34
|
+
.
|
|
35
|
+
</span>
|
|
36
|
+
<PMultiSelectOption value="a">
|
|
37
|
+
Option A
|
|
38
|
+
</PMultiSelectOption>
|
|
39
|
+
<PMultiSelectOption value="b">
|
|
40
|
+
Option B
|
|
41
|
+
</PMultiSelectOption>
|
|
42
|
+
<PMultiSelectOption value="c">
|
|
43
|
+
Option C
|
|
44
|
+
</PMultiSelectOption>
|
|
45
|
+
</PMultiSelect>
|
|
46
|
+
</>
|
|
47
|
+
)
|
|
48
|
+
}
|