@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
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# p-select accessibility integration examples
|
|
2
|
+
|
|
3
|
+
## Integration examples
|
|
4
|
+
|
|
5
|
+
### Prompt option used instead of a label
|
|
6
|
+
|
|
7
|
+
#### ❌ Anti-pattern
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
<PSelect name="model">
|
|
11
|
+
<PSelectOption value="">
|
|
12
|
+
Select a model
|
|
13
|
+
</PSelectOption>
|
|
14
|
+
<PSelectOption value="carrera">
|
|
15
|
+
911 Carrera
|
|
16
|
+
</PSelectOption>
|
|
17
|
+
<PSelectOption value="carrera-s">
|
|
18
|
+
911 Carrera S
|
|
19
|
+
</PSelectOption>
|
|
20
|
+
</PSelect>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
#### ✅ Recommended
|
|
24
|
+
|
|
25
|
+
```tsx
|
|
26
|
+
<PSelect label="Porsche model" name="model" description="Choose the model for your configuration.">
|
|
27
|
+
<PSelectOption value="carrera">
|
|
28
|
+
911 Carrera
|
|
29
|
+
</PSelectOption>
|
|
30
|
+
<PSelectOption value="carrera-s">
|
|
31
|
+
911 Carrera S
|
|
32
|
+
</PSelectOption>
|
|
33
|
+
</PSelect>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Ambiguous option labels without field context
|
|
37
|
+
|
|
38
|
+
#### ❌ Anti-pattern
|
|
39
|
+
|
|
40
|
+
```tsx
|
|
41
|
+
<PSelect label="Model" name="model">
|
|
42
|
+
<PSelectOption value="base">
|
|
43
|
+
Base
|
|
44
|
+
</PSelectOption>
|
|
45
|
+
<PSelectOption value="s">
|
|
46
|
+
S
|
|
47
|
+
</PSelectOption>
|
|
48
|
+
</PSelect>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
#### ✅ Recommended
|
|
52
|
+
|
|
53
|
+
```tsx
|
|
54
|
+
<PSelect label="Porsche 911 trim" name="model" description="Select the trim level for your configuration.">
|
|
55
|
+
<PSelectOption value="carrera">
|
|
56
|
+
911 Carrera
|
|
57
|
+
</PSelectOption>
|
|
58
|
+
<PSelectOption value="carrera-s">
|
|
59
|
+
911 Carrera S
|
|
60
|
+
</PSelectOption>
|
|
61
|
+
</PSelect>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Hidden label without accessible name
|
|
65
|
+
|
|
66
|
+
#### ❌ Anti-pattern
|
|
67
|
+
|
|
68
|
+
```tsx
|
|
69
|
+
<PSelect name="model" hideLabel={true}>
|
|
70
|
+
<PSelectOption value="carrera">
|
|
71
|
+
911 Carrera
|
|
72
|
+
</PSelectOption>
|
|
73
|
+
</PSelect>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
#### ✅ Recommended
|
|
77
|
+
|
|
78
|
+
```tsx
|
|
79
|
+
<PSelect label="Porsche model" name="model" hideLabel={true}>
|
|
80
|
+
<PSelectOption value="carrera">
|
|
81
|
+
911 Carrera
|
|
82
|
+
</PSelectOption>
|
|
83
|
+
</PSelect>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Validation feedback via state and message API
|
|
87
|
+
|
|
88
|
+
#### ❌ Anti-pattern
|
|
89
|
+
|
|
90
|
+
```tsx
|
|
91
|
+
<PSelect label="Porsche model" name="model" aria-invalid={true} message="Required">
|
|
92
|
+
<PSelectOption value="carrera">
|
|
93
|
+
911 Carrera
|
|
94
|
+
</PSelectOption>
|
|
95
|
+
<PSelectOption value="carrera-s">
|
|
96
|
+
911 Carrera S
|
|
97
|
+
</PSelectOption>
|
|
98
|
+
</PSelect>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### ✅ Recommended
|
|
102
|
+
|
|
103
|
+
```tsx
|
|
104
|
+
<PSelect label="Porsche model" name="model" state="error" message="Select a model to continue with your configuration.">
|
|
105
|
+
<PSelectOption value="carrera">
|
|
106
|
+
911 Carrera
|
|
107
|
+
</PSelectOption>
|
|
108
|
+
<PSelectOption value="carrera-s">
|
|
109
|
+
911 Carrera S
|
|
110
|
+
</PSelectOption>
|
|
111
|
+
</PSelect>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Error state without recovery guidance
|
|
115
|
+
|
|
116
|
+
#### ❌ Anti-pattern
|
|
117
|
+
|
|
118
|
+
```tsx
|
|
119
|
+
<PSelect label="Porsche model" name="model" state="error" message="Invalid">
|
|
120
|
+
<PSelectOption value="carrera">
|
|
121
|
+
911 Carrera
|
|
122
|
+
</PSelectOption>
|
|
123
|
+
<PSelectOption value="carrera-s">
|
|
124
|
+
911 Carrera S
|
|
125
|
+
</PSelectOption>
|
|
126
|
+
</PSelect>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
#### ✅ Recommended
|
|
130
|
+
|
|
131
|
+
```tsx
|
|
132
|
+
<PSelect label="Porsche model" name="model" required={true} state="error" message="Select a Porsche model. This field is required to continue.">
|
|
133
|
+
<PSelectOption value="carrera">
|
|
134
|
+
911 Carrera
|
|
135
|
+
</PSelectOption>
|
|
136
|
+
<PSelectOption value="carrera-s">
|
|
137
|
+
911 Carrera S
|
|
138
|
+
</PSelectOption>
|
|
139
|
+
</PSelect>
|
|
140
|
+
```
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
type InputSearchInputEventDetail,
|
|
4
|
+
PIcon,
|
|
5
|
+
PInputSearch,
|
|
6
|
+
PSelect,
|
|
7
|
+
PSelectOption,
|
|
8
|
+
type PSelectProps,
|
|
9
|
+
type SelectChangeEventDetail,
|
|
10
|
+
type SelectToggleEventDetail,
|
|
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<PSelectProps['value']>(undefined);
|
|
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<SelectChangeEventDetail>) => {
|
|
77
|
+
setValue((e.target as HTMLElement & { value: string }).value);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const onToggle = async (e: CustomEvent<SelectToggleEventDetail>) => {
|
|
81
|
+
if (e.detail.open && !hasLoadedOnce.current) {
|
|
82
|
+
fetchOptions(undefined, true);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
return (
|
|
87
|
+
<PSelect 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
|
+
<PSelectOption key={opt.value} value={opt.value}>
|
|
111
|
+
{opt.label}
|
|
112
|
+
</PSelectOption>
|
|
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
|
+
</PSelect>
|
|
135
|
+
);
|
|
136
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PSelect, PSelectOption } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PSelect name="options" label="Some Label" description="Some description">
|
|
8
|
+
<PSelectOption value="a">
|
|
9
|
+
Option A
|
|
10
|
+
</PSelectOption>
|
|
11
|
+
<PSelectOption value="b">
|
|
12
|
+
Option B
|
|
13
|
+
</PSelectOption>
|
|
14
|
+
<PSelectOption value="c">
|
|
15
|
+
Option C
|
|
16
|
+
</PSelectOption>
|
|
17
|
+
<PSelectOption value="d">
|
|
18
|
+
Option D
|
|
19
|
+
</PSelectOption>
|
|
20
|
+
<PSelectOption value="e">
|
|
21
|
+
Option E
|
|
22
|
+
</PSelectOption>
|
|
23
|
+
<PSelectOption value="f">
|
|
24
|
+
Option F
|
|
25
|
+
</PSelectOption>
|
|
26
|
+
</PSelect>
|
|
27
|
+
</>
|
|
28
|
+
)
|
|
29
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
PButton,
|
|
4
|
+
PSelect,
|
|
5
|
+
PSelectOption,
|
|
6
|
+
type PSelectProps,
|
|
7
|
+
PText,
|
|
8
|
+
type SelectChangeEventDetail,
|
|
9
|
+
} from '@porsche-design-system/components-react';
|
|
10
|
+
import { FormEvent, useState } from 'react';
|
|
11
|
+
|
|
12
|
+
export const Example = () => {
|
|
13
|
+
const [form, setForm] = useState({ mySelect: undefined });
|
|
14
|
+
const [lastSubmittedData, setLastSubmittedData] = useState<any>();
|
|
15
|
+
|
|
16
|
+
const onChange = (e: CustomEvent<SelectChangeEventDetail>) => {
|
|
17
|
+
const { name, value } = e.target as HTMLElement & PSelectProps;
|
|
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({ mySelect: undefined });
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<>
|
|
36
|
+
<form onSubmit={onSubmit} onReset={onReset} className="flex flex-col gap-fluid-sm">
|
|
37
|
+
<PSelect name="mySelect" label="Some Label" value={form.mySelect} onChange={onChange}>
|
|
38
|
+
<PSelectOption value="a">Option A</PSelectOption>
|
|
39
|
+
<PSelectOption value="b">Option B</PSelectOption>
|
|
40
|
+
<PSelectOption value="c">Option C</PSelectOption>
|
|
41
|
+
<PSelectOption value="d">Option D</PSelectOption>
|
|
42
|
+
<PSelectOption value="e">Option E</PSelectOption>
|
|
43
|
+
<PSelectOption value="f">Option F</PSelectOption>
|
|
44
|
+
</PSelect>
|
|
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
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { POptgroup, PSelect, PSelectOption } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PSelect name="options" label="Some Label" description="Some description">
|
|
8
|
+
<POptgroup label="Some optgroup label 1">
|
|
9
|
+
<PSelectOption value="a">
|
|
10
|
+
Option A
|
|
11
|
+
</PSelectOption>
|
|
12
|
+
<PSelectOption value="b">
|
|
13
|
+
Option B
|
|
14
|
+
</PSelectOption>
|
|
15
|
+
<PSelectOption value="c">
|
|
16
|
+
Option C
|
|
17
|
+
</PSelectOption>
|
|
18
|
+
<PSelectOption value="d">
|
|
19
|
+
Option D
|
|
20
|
+
</PSelectOption>
|
|
21
|
+
<PSelectOption value="e">
|
|
22
|
+
Option E
|
|
23
|
+
</PSelectOption>
|
|
24
|
+
<PSelectOption value="f">
|
|
25
|
+
Option F
|
|
26
|
+
</PSelectOption>
|
|
27
|
+
</POptgroup>
|
|
28
|
+
<POptgroup label="Some optgroup label 2">
|
|
29
|
+
<PSelectOption value="g">
|
|
30
|
+
Option G
|
|
31
|
+
</PSelectOption>
|
|
32
|
+
<PSelectOption value="h">
|
|
33
|
+
Option H
|
|
34
|
+
</PSelectOption>
|
|
35
|
+
<PSelectOption value="i">
|
|
36
|
+
Option I
|
|
37
|
+
</PSelectOption>
|
|
38
|
+
</POptgroup>
|
|
39
|
+
</PSelect>
|
|
40
|
+
</>
|
|
41
|
+
)
|
|
42
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PButton, PCheckbox, PSelect, PSelectOption, PText } from '@porsche-design-system/components-react';
|
|
3
|
+
import { type SubmitEvent, useState } from 'react';
|
|
4
|
+
|
|
5
|
+
export const Example = () => {
|
|
6
|
+
const [lastSubmittedData, setLastSubmittedData] = useState('none');
|
|
7
|
+
const [isRequired, setIsRequired] = useState(true);
|
|
8
|
+
const [hasDeselection, setHasDeselection] = useState(false);
|
|
9
|
+
|
|
10
|
+
const onChangeRequired = () => {
|
|
11
|
+
setIsRequired((prev) => !prev);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const onChangeDeselection = () => {
|
|
15
|
+
setHasDeselection((prev) => !prev);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const onSubmit = (e: SubmitEvent<HTMLFormElement>) => {
|
|
19
|
+
e.preventDefault();
|
|
20
|
+
const formData = new FormData(e.currentTarget);
|
|
21
|
+
setLastSubmittedData(formData.get('options')?.toString() || 'none');
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<>
|
|
26
|
+
<div className="flex flex-col gap-static-sm">
|
|
27
|
+
<PCheckbox label="Required" name="required" checked={isRequired} onChange={onChangeRequired} />
|
|
28
|
+
<PCheckbox
|
|
29
|
+
label="Allow deselection"
|
|
30
|
+
name="deselection"
|
|
31
|
+
checked={hasDeselection}
|
|
32
|
+
onChange={onChangeDeselection}
|
|
33
|
+
/>
|
|
34
|
+
</div>
|
|
35
|
+
<form onSubmit={onSubmit} className="flex flex-col gap-fluid-sm mt-fluid-sm">
|
|
36
|
+
<PSelect name="options" label="Some Label" required={isRequired}>
|
|
37
|
+
{hasDeselection && <PSelectOption></PSelectOption>}
|
|
38
|
+
<PSelectOption value="1">Option 1</PSelectOption>
|
|
39
|
+
<PSelectOption value="2">Option 2</PSelectOption>
|
|
40
|
+
<PSelectOption value="3">Option 3</PSelectOption>
|
|
41
|
+
</PSelect>
|
|
42
|
+
<PButton type="submit">Submit</PButton>
|
|
43
|
+
</form>
|
|
44
|
+
|
|
45
|
+
<PText>Last submitted data: {lastSubmittedData}</PText>
|
|
46
|
+
</>
|
|
47
|
+
);
|
|
48
|
+
};
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
PFlag,
|
|
4
|
+
type PFlagProps,
|
|
5
|
+
POptgroup,
|
|
6
|
+
PSelect,
|
|
7
|
+
PSelectOption,
|
|
8
|
+
type PSelectProps,
|
|
9
|
+
type SelectChangeEventDetail,
|
|
10
|
+
} from '@porsche-design-system/components-react';
|
|
11
|
+
import { useState } from 'react';
|
|
12
|
+
|
|
13
|
+
type Option = { label: string; code: PFlagProps['name']; continent: string };
|
|
14
|
+
|
|
15
|
+
const optionsData: Option[] = [
|
|
16
|
+
{
|
|
17
|
+
label: 'China',
|
|
18
|
+
code: 'cn',
|
|
19
|
+
continent: 'Asia',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
label: 'Japan',
|
|
23
|
+
code: 'jp',
|
|
24
|
+
continent: 'Asia',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
label: 'South Korea',
|
|
28
|
+
code: 'kr',
|
|
29
|
+
continent: 'Asia',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
label: 'Austria',
|
|
33
|
+
code: 'at',
|
|
34
|
+
continent: 'Europe',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
label: 'France',
|
|
38
|
+
code: 'fr',
|
|
39
|
+
continent: 'Europe',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
label: 'Germany',
|
|
43
|
+
code: 'de',
|
|
44
|
+
continent: 'Europe',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
label: 'Great Britain',
|
|
48
|
+
code: 'gb',
|
|
49
|
+
continent: 'Europe',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
label: 'Italy',
|
|
53
|
+
code: 'it',
|
|
54
|
+
continent: 'Europe',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
label: 'Portugal',
|
|
58
|
+
code: 'pt',
|
|
59
|
+
continent: 'Europe',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
label: 'Spain',
|
|
63
|
+
code: 'es',
|
|
64
|
+
continent: 'Europe',
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
{
|
|
68
|
+
label: 'Canada',
|
|
69
|
+
code: 'ca',
|
|
70
|
+
continent: 'North America',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
label: 'USA',
|
|
74
|
+
code: 'us',
|
|
75
|
+
continent: 'North America',
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
|
|
79
|
+
export const Example = () => {
|
|
80
|
+
const [value, setValue] = useState<PSelectProps['value']>(undefined);
|
|
81
|
+
const [options] = useState<Option[]>(optionsData);
|
|
82
|
+
const [selectedOption, setSelectedOption] = useState<Option | undefined>(undefined);
|
|
83
|
+
|
|
84
|
+
const optgroups: Record<string, Option[]> = options.reduce(
|
|
85
|
+
(acc, item) => {
|
|
86
|
+
const key = item.continent;
|
|
87
|
+
if (!acc[key]) acc[key] = [];
|
|
88
|
+
acc[key].push(item);
|
|
89
|
+
return acc;
|
|
90
|
+
},
|
|
91
|
+
{} as Record<string, Option[]>
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
const onChange = (e: CustomEvent<SelectChangeEventDetail>) => {
|
|
95
|
+
const value = (e.target as HTMLElement & { value: string }).value;
|
|
96
|
+
setValue(value);
|
|
97
|
+
setSelectedOption(options.find((option) => option.code === value));
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
return (
|
|
101
|
+
<PSelect name="selected-slot-select" label="Selected Slot" value={value} onChange={onChange}>
|
|
102
|
+
<span slot="selected" className="h-full flex items-center gap-fluid-sm grow">
|
|
103
|
+
{selectedOption && (
|
|
104
|
+
<>
|
|
105
|
+
<PFlag name={selectedOption.code}></PFlag>
|
|
106
|
+
<p className="prose-text-sm truncate m-0">{selectedOption.label}</p>
|
|
107
|
+
</>
|
|
108
|
+
)}
|
|
109
|
+
</span>
|
|
110
|
+
{Object.entries(optgroups).map(([continent, options]) => (
|
|
111
|
+
<POptgroup key={continent} label={continent}>
|
|
112
|
+
{options.map((option) => (
|
|
113
|
+
<PSelectOption key={option.code} value={option.code}>
|
|
114
|
+
<div className="w-full flex items-center gap-fluid-sm">
|
|
115
|
+
<PFlag name={option.code}></PFlag>
|
|
116
|
+
<p className="prose-text-sm m-0">{option.label}</p>
|
|
117
|
+
</div>
|
|
118
|
+
</PSelectOption>
|
|
119
|
+
))}
|
|
120
|
+
</POptgroup>
|
|
121
|
+
))}
|
|
122
|
+
</PSelect>
|
|
123
|
+
);
|
|
124
|
+
};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
type InputTextInputEventDetail,
|
|
4
|
+
PButton,
|
|
5
|
+
PInputText,
|
|
6
|
+
PSelect,
|
|
7
|
+
PSelectOption,
|
|
8
|
+
type PSelectProps,
|
|
9
|
+
SelectChangeEventDetail,
|
|
10
|
+
} from '@porsche-design-system/components-react';
|
|
11
|
+
import { useState } from 'react';
|
|
12
|
+
|
|
13
|
+
export const Example = () => {
|
|
14
|
+
const [selectedValue, setSelectedValue] = useState<PSelectProps['value']>('1');
|
|
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
|
+
setSelectedValue(inputValue);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const onResetValue = () => {
|
|
27
|
+
setSelectedValue('1');
|
|
28
|
+
setInputValue('');
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const onChange = (e: CustomEvent<SelectChangeEventDetail>) => {
|
|
32
|
+
setSelectedValue(e.detail.value);
|
|
33
|
+
setInputValue(String(e.detail.value ?? ''));
|
|
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"
|
|
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
|
+
<PSelect name="options" label="Some Label" value={selectedValue} onChange={onChange}>
|
|
64
|
+
{[...Array(optionCount).keys()].map((idx) => (
|
|
65
|
+
<PSelectOption key={idx} value={`${idx + 1}`}>
|
|
66
|
+
Option {idx + 1}
|
|
67
|
+
</PSelectOption>
|
|
68
|
+
))}
|
|
69
|
+
</PSelect>
|
|
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
|
+
};
|