@porsche-design-system/components-angular 4.6.0-rc.0 → 4.6.0-rc.2
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 +85 -2
- package/OSS_NOTICE +5532 -2115
- package/ag-grid/package.json +6 -0
- package/bin/pds-skill.js +166 -79
- package/emotion/package.json +6 -0
- package/fesm2022/porsche-design-system-components-angular.mjs +233 -233
- package/fesm2022/porsche-design-system-components-angular.mjs.map +1 -1
- package/jsdom-polyfill/package.json +5 -0
- package/meta/package.json +6 -0
- package/package.json +6 -2
- package/partials/package.json +6 -0
- package/{skill → skills/pds-knowledge-angular}/SKILL.md +5 -5
- package/skills/pds-knowledge-angular/references/components/p-accordion/accessibility.md +63 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-accordion/p-accordion.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-ai-tag/p-ai-tag.md +47 -0
- package/skills/pds-knowledge-angular/references/components/p-banner/accessibility.md +35 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-banner/p-banner.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-button/accessibility.md +61 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-button/p-button.md +5 -1
- package/skills/pds-knowledge-angular/references/components/p-button-pure/accessibility.md +61 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-button-pure/p-button-pure.md +5 -1
- package/skills/pds-knowledge-angular/references/components/p-button-tile/accessibility.md +31 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-button-tile/p-button-tile.md +5 -1
- package/skills/pds-knowledge-angular/references/components/p-canvas/examples/Default.ts +105 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-canvas/p-canvas.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-carousel/accessibility.md +61 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-carousel/p-carousel.md +5 -1
- package/skills/pds-knowledge-angular/references/components/p-checkbox/accessibility.md +31 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-checkbox/p-checkbox.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-crest/accessibility.md +17 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-crest/p-crest.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-divider/accessibility.md +41 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-divider/p-divider.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-drilldown/accessibility.md +65 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-drilldown/p-drilldown.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-fieldset/accessibility.md +37 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-fieldset/p-fieldset.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-flag/accessibility.md +39 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-flag/p-flag.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-flyout/accessibility.md +80 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-flyout/p-flyout.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-heading/accessibility.md +29 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-heading/p-heading.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-icon/accessibility.md +39 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/Overview.ts +6 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/p-icon.md +5 -1
- package/skills/pds-knowledge-angular/references/components/p-inline-notification/accessibility.md +38 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-inline-notification/p-inline-notification.md +5 -1
- package/skills/pds-knowledge-angular/references/components/p-input-date/accessibility.md +45 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-input-date/p-input-date.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-input-email/accessibility.md +45 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-input-email/p-input-email.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-input-month/accessibility.md +45 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-input-month/p-input-month.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-input-number/accessibility.md +45 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-input-number/p-input-number.md +7 -3
- package/skills/pds-knowledge-angular/references/components/p-input-password/accessibility.md +45 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-input-password/p-input-password.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-input-search/accessibility.md +59 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-input-search/p-input-search.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-input-tel/accessibility.md +45 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-input-tel/p-input-tel.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-input-text/accessibility.md +45 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-input-text/p-input-text.md +7 -3
- package/skills/pds-knowledge-angular/references/components/p-input-time/accessibility.md +45 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-input-time/p-input-time.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-input-url/accessibility.md +45 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-input-url/p-input-url.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-input-week/accessibility.md +45 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-input-week/p-input-week.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-link/accessibility.md +73 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-link/p-link.md +5 -1
- package/skills/pds-knowledge-angular/references/components/p-link-pure/accessibility.md +73 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-link-pure/p-link-pure.md +5 -1
- package/skills/pds-knowledge-angular/references/components/p-link-tile/accessibility.md +31 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile/p-link-tile.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-modal/accessibility.md +80 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-modal/p-modal.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-multi-select/accessibility.md +78 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/examples/AsyncFilter.ts +32 -5
- package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/examples/Form.ts +3 -3
- package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/examples/SelectedSlot.ts +2 -2
- package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/p-multi-select.md +6 -2
- package/skills/pds-knowledge-angular/references/components/p-pagination/accessibility.md +23 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-pagination/p-pagination.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-pin-code/accessibility.md +45 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-pin-code/examples/Form.ts +2 -2
- package/{skill → skills/pds-knowledge-angular}/references/components/p-pin-code/p-pin-code.md +6 -2
- package/skills/pds-knowledge-angular/references/components/p-popover/accessibility.md +61 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-popover/p-popover.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-radio-group/accessibility.md +63 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-radio-group/examples/Form.ts +2 -2
- package/{skill → skills/pds-knowledge-angular}/references/components/p-radio-group/p-radio-group.md +7 -3
- package/skills/pds-knowledge-angular/references/components/p-scroller/accessibility.md +31 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-scroller/p-scroller.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-segmented-control/accessibility.md +67 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-segmented-control/examples/Form.ts +2 -2
- package/{skill → skills/pds-knowledge-angular}/references/components/p-segmented-control/p-segmented-control.md +6 -2
- package/skills/pds-knowledge-angular/references/components/p-select/accessibility.md +140 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/AsyncFilter.ts +32 -5
- package/{skill → skills/pds-knowledge-angular}/references/components/p-select/p-select.md +5 -1
- package/skills/pds-knowledge-angular/references/components/p-sheet/accessibility.md +80 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-sheet/p-sheet.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-spinner/accessibility.md +33 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-spinner/p-spinner.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-stepper-horizontal/accessibility.md +34 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-stepper-horizontal/p-stepper-horizontal.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-switch/accessibility.md +35 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-switch/p-switch.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-table/accessibility.md +47 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-table/examples/Sorting.ts +11 -10
- package/{skill → skills/pds-knowledge-angular}/references/components/p-table/p-table.md +5 -1
- package/skills/pds-knowledge-angular/references/components/p-tabs/accessibility.md +56 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs/p-tabs.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-tabs-bar/accessibility.md +61 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs-bar/p-tabs-bar.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-tag/accessibility.md +19 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-tag/p-tag.md +5 -1
- package/skills/pds-knowledge-angular/references/components/p-tag-dismissible/accessibility.md +35 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-tag-dismissible/p-tag-dismissible.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-text/accessibility.md +21 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-text/p-text.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-text-list/accessibility.md +31 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-text-list/p-text-list.md +4 -0
- package/skills/pds-knowledge-angular/references/components/p-textarea/accessibility.md +45 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-textarea/p-textarea.md +4 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-toast/p-toast.md +1 -1
- package/skills/pds-knowledge-angular/references/components/p-wordmark/accessibility.md +31 -0
- package/{skill → skills/pds-knowledge-angular}/references/components/p-wordmark/p-wordmark.md +5 -1
- package/skills/pds-knowledge-angular/references/icons.md +5 -0
- package/{skill → skills/pds-knowledge-angular}/references/styles/tailwindcss.md +1 -1
- package/testing/package.json +5 -0
- package/tokens/package.json +6 -0
- package/types/porsche-design-system-components-angular.d.ts +203 -233
- package/vanilla-extract/package.json +6 -0
- package/skill/references/components/p-ai-tag/p-ai-tag.md +0 -47
- package/skill/references/components/p-canvas/examples/Default.ts +0 -13
- package/skill/references/icons.md +0 -5
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-accordion/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-accordion/examples/InteractiveElementsInSummary.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-accordion/examples/StickySummary.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/WithinCheckbox.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/WithinFormLabel.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/WithinImage.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/WithinInputSearch.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/WithinRadioGroup.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/WithinTable.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-ai-tag/examples/WithinText.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-banner/examples/Customization.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-banner/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-button/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-button/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-button/examples/FormAttribute.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-pure/examples/CustomClickableArea.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-pure/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-pure/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-pure/examples/FormAttribute.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-tile/examples/ColorScheme.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-tile/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-tile/examples/FooterSlot.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-tile/examples/Hyphens.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-button-tile/examples/UiBehaviour.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-carousel/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-carousel/examples/DynamicSlides.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-carousel/examples/FlexibleWidths.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-carousel/examples/FocusOnCenterSlide.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-carousel/examples/Intl.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-carousel/examples/JumpToSlide.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-checkbox/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-checkbox/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-checkbox/examples/Indeterminate.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-checkbox/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-checkbox/examples/WrappedLabel.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-crest/examples/CustomClickableArea.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-crest/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-crest/examples/Link.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-display/examples/Color.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-display/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-display/examples/Semantics.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-display/examples/Size.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-display/examples/SizeResponsive.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-display/p-display.md +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-divider/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-divider/examples/Responsive.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-divider/examples/Vertical.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-drilldown/examples/CustomContent.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-drilldown/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-fieldset/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-fieldset/examples/Required.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-fieldset/examples/SlottedLabel.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-fieldset/examples/SlottedMessage.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-flag/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-flag/examples/ResponsiveSize.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-flag/examples/Size.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-flag/examples/SizeCssVar.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-flyout/examples/CustomStyling.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-flyout/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-flyout/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-flyout/examples/StickyTop.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-heading/examples/Color.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-heading/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-heading/examples/Semantics.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/Color.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/ColorCssVar.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/Custom.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/ResponsiveSize.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/Size.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-icon/examples/SizeCssVar.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-inline-notification/examples/ActionButton.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-inline-notification/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-inline-notification/examples/EventHandling.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-date/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-date/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-date/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-email/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-email/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-email/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-month/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-month/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-month/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-number/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-number/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-number/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-password/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-password/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-password/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-password/examples/Toggle.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-search/examples/AriaCombobox.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-search/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-search/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-search/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-tel/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-tel/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-tel/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-text/examples/Controlled.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-text/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-text/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-text/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-time/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-time/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-time/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-url/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-url/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-url/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-week/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-week/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-input-week/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link/examples/FrameworkRouting.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link/examples/Icon.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-pure/examples/CustomClickableArea.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-pure/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-pure/examples/FrameworkRouting.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-pure/examples/Icon.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile/examples/ColorScheme.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile/examples/FooterSlot.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile/examples/Hyphens.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile/examples/UiBehaviour.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile/examples/WithVideo.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile-product/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile-product/examples/FrameworkRouting.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-link-tile-product/p-link-tile-product.md +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-modal/examples/AlertDialog.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-modal/examples/CustomStyling.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-modal/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-modal/examples/Scrollable.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-model-signature/examples/CustomStyling.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-model-signature/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-model-signature/examples/MaskBlendMode.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-model-signature/examples/MaskImage.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-model-signature/examples/MaskVideo.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-model-signature/examples/SafeZone.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-model-signature/p-model-signature.md +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/examples/Optgroups.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/examples/SetValue.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-multi-select/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-pagination/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-pin-code/examples/CopyPaste.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-pin-code/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-pin-code/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-popover/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-popover/examples/SlottedButton.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-radio-group/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-radio-group/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-scroller/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-scroller/examples/Height.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-scroller/examples/ScrollToPosition.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-segmented-control/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-segmented-control/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-segmented-control/examples/WithLabels.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/Optgroups.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/Required.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/SelectedSlot.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/SetValue.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-select/examples/SlottedImages.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-sheet/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-spinner/examples/Color.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-spinner/examples/ColorCssVar.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-spinner/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-spinner/examples/ResponsiveSize.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-spinner/examples/Size.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-spinner/examples/SizeCssVar.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-stepper-horizontal/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-stepper-horizontal/examples/FrameworkImplementation.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-switch/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-table/examples/Advanced.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-table/examples/CaptionProperty.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-table/examples/CaptionSlot.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-table/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-table/examples/HideLabel.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-table/examples/LayoutFixed.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs/examples/ActiveTab.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs/examples/Gradient.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs/examples/Labelling.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs-bar/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs-bar/examples/Gradient.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs-bar/examples/Labelling.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-tabs-bar/examples/Links.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-tag/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-tag/examples/Multiline.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-tag/examples/SlottedButton.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-tag/examples/SlottedLink.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-tag-dismissible/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-text/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-text/examples/Semantics.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-text/examples/Size.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-text/examples/SizeResponsive.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-text-list/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-textarea/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-textarea/examples/Form.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-textarea/examples/Slots.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-toast/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-wordmark/examples/CustomClickableArea.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-wordmark/examples/Default.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/components/p-wordmark/examples/Size.ts +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/styles/emotion.md +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/styles/scss.md +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/styles/vanilla-extract.md +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/stylesheets.md +0 -0
- /package/{skill → skills/pds-knowledge-angular}/references/tokens.md +0 -0
package/{skill → skills/pds-knowledge-angular}/references/components/p-pin-code/p-pin-code.md
RENAMED
|
@@ -58,6 +58,10 @@ In general, avoid using the `disabled="true"` state. Disabled elements are no lo
|
|
|
58
58
|
- **Do** use the component state/message API so validation and status changes are announced.
|
|
59
59
|
- **Don't** use `hide-label` without an accessible name.
|
|
60
60
|
|
|
61
|
+
## Integration examples
|
|
62
|
+
|
|
63
|
+
See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
|
|
64
|
+
|
|
61
65
|
## API
|
|
62
66
|
|
|
63
67
|
### Properties
|
|
@@ -77,14 +81,14 @@ In general, avoid using the `disabled="true"` state. Disabled elements are no lo
|
|
|
77
81
|
| `required` | `boolean` | `false` | Marks the pin code as required so the form cannot be submitted until all fields are filled. |
|
|
78
82
|
| `state` | `'none'` `'error'` `'success'` | `'none'` | Sets the validation state of the pin code, which controls its visual appearance and feedback message style (`none`, `success`, `error`). |
|
|
79
83
|
| `type` | `'number'` `'password'` | `'number'` | Controls whether the individual input fields mask their content as password dots (`password`) or show digits (`number`). |
|
|
80
|
-
| `value` | `string` | `''` | Sets the current concatenated value
|
|
84
|
+
| `value` | `string | number | null` | `''` | Sets the current concatenated value. Numbers are accepted for programmatic assignment, but user input updates the value as a string. |
|
|
81
85
|
|
|
82
86
|
### Events
|
|
83
87
|
|
|
84
88
|
| Event | Type | Description |
|
|
85
89
|
| --- | --- | --- |
|
|
86
90
|
| `blur` | `CustomEvent<void>` | Emitted when the pin code component loses focus after the user finishes entering characters. |
|
|
87
|
-
| `change` | `CustomEvent<PinCodeChangeEventDetail>`<br>`{ value: string; isComplete: boolean }` | Emitted when the pin code value changes as the user types, carrying
|
|
91
|
+
| `change` | `CustomEvent<PinCodeChangeEventDetail>`<br>`{ value: string; isComplete: boolean }` | Emitted when the pin code value changes as the user types, carrying `{ value: string; isComplete: boolean }` in the event detail. |
|
|
88
92
|
|
|
89
93
|
### Controlled properties
|
|
90
94
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# p-popover accessibility integration examples
|
|
2
|
+
|
|
3
|
+
## Integration examples
|
|
4
|
+
|
|
5
|
+
### ARIA on component host vs aria prop
|
|
6
|
+
|
|
7
|
+
#### ❌ Anti-pattern
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<p-popover aria-label="Specification details" description="Additional specification details."></p-popover>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
#### ✅ Recommended
|
|
14
|
+
|
|
15
|
+
```html
|
|
16
|
+
<p-popover [aria]="{'aria-label': 'Specification details'}" description="Additional specification details."></p-popover>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Custom slotted trigger without accessible name
|
|
20
|
+
|
|
21
|
+
#### ❌ Anti-pattern
|
|
22
|
+
|
|
23
|
+
```html
|
|
24
|
+
<p-popover>
|
|
25
|
+
<button slot="button" type="button"></button>
|
|
26
|
+
Additional specification details.
|
|
27
|
+
</p-popover>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
#### ✅ Recommended
|
|
31
|
+
|
|
32
|
+
```html
|
|
33
|
+
<p-popover description="Additional specification details."></p-popover>
|
|
34
|
+
|
|
35
|
+
<!-- or provide an accessible name on a custom slotted button -->
|
|
36
|
+
|
|
37
|
+
<p-popover>
|
|
38
|
+
<button slot="button" type="button" ariaLabel="Specification details">
|
|
39
|
+
i
|
|
40
|
+
</button>
|
|
41
|
+
Additional specification details.
|
|
42
|
+
</p-popover>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Custom slotted trigger without aria-expanded
|
|
46
|
+
|
|
47
|
+
#### ❌ Anti-pattern
|
|
48
|
+
|
|
49
|
+
```html
|
|
50
|
+
<p-popover>
|
|
51
|
+
<button slot="button" type="button"></button>
|
|
52
|
+
</p-popover>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
#### ✅ Recommended
|
|
56
|
+
|
|
57
|
+
```html
|
|
58
|
+
<p-popover>
|
|
59
|
+
<button slot="button" type="button" ariaExpanded="false"></button>
|
|
60
|
+
</p-popover>
|
|
61
|
+
```
|
|
@@ -65,6 +65,10 @@ In **controlled** mode the consumer owns the `open` state, so the slotted trigge
|
|
|
65
65
|
- **Don't** use an unnamed custom slotted trigger button.
|
|
66
66
|
- **Don't** add native `aria-*` attributes directly on the component host.
|
|
67
67
|
|
|
68
|
+
## Integration examples
|
|
69
|
+
|
|
70
|
+
See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
|
|
71
|
+
|
|
68
72
|
## API
|
|
69
73
|
|
|
70
74
|
### Properties
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# p-radio-group accessibility integration examples
|
|
2
|
+
|
|
3
|
+
## Integration examples
|
|
4
|
+
|
|
5
|
+
### Missing group label
|
|
6
|
+
|
|
7
|
+
#### ❌ Anti-pattern
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<p-radio-group name="fuel">
|
|
11
|
+
<p-radio-group-option value="electric" label="Electric"></p-radio-group-option>
|
|
12
|
+
<p-radio-group-option value="hybrid" label="Hybrid"></p-radio-group-option>
|
|
13
|
+
</p-radio-group>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
#### ✅ Recommended
|
|
17
|
+
|
|
18
|
+
```html
|
|
19
|
+
<p-radio-group label="Powertrain" name="fuel" description="Select your preferred powertrain.">
|
|
20
|
+
<p-radio-group-option value="electric" label="Electric"></p-radio-group-option>
|
|
21
|
+
<p-radio-group-option value="hybrid" label="Hybrid"></p-radio-group-option>
|
|
22
|
+
</p-radio-group>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Hidden label without accessible name
|
|
26
|
+
|
|
27
|
+
#### ❌ Anti-pattern
|
|
28
|
+
|
|
29
|
+
```html
|
|
30
|
+
<p-radio-group name="fuel" [hideLabel]="true">
|
|
31
|
+
<p-radio-group-option value="electric" label="Electric"></p-radio-group-option>
|
|
32
|
+
<p-radio-group-option value="hybrid" label="Hybrid"></p-radio-group-option>
|
|
33
|
+
</p-radio-group>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
#### ✅ Recommended
|
|
37
|
+
|
|
38
|
+
```html
|
|
39
|
+
<p-radio-group label="Powertrain" name="fuel" [hideLabel]="true">
|
|
40
|
+
<p-radio-group-option value="electric" label="Electric"></p-radio-group-option>
|
|
41
|
+
<p-radio-group-option value="hybrid" label="Hybrid"></p-radio-group-option>
|
|
42
|
+
</p-radio-group>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Validation feedback via state and message API
|
|
46
|
+
|
|
47
|
+
#### ❌ Anti-pattern
|
|
48
|
+
|
|
49
|
+
```html
|
|
50
|
+
<p-radio-group label="Powertrain" name="fuel" [aria-invalid]="true" message="Required">
|
|
51
|
+
<p-radio-group-option value="electric" label="Electric"></p-radio-group-option>
|
|
52
|
+
<p-radio-group-option value="hybrid" label="Hybrid"></p-radio-group-option>
|
|
53
|
+
</p-radio-group>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
#### ✅ Recommended
|
|
57
|
+
|
|
58
|
+
```html
|
|
59
|
+
<p-radio-group label="Powertrain" name="fuel" [required]="true" state="error" message="Select a powertrain to continue.">
|
|
60
|
+
<p-radio-group-option value="electric" label="Electric"></p-radio-group-option>
|
|
61
|
+
<p-radio-group-option value="hybrid" label="Hybrid"></p-radio-group-option>
|
|
62
|
+
</p-radio-group>
|
|
63
|
+
```
|
package/{skill → skills/pds-knowledge-angular}/references/components/p-radio-group/examples/Form.ts
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
2
|
import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
3
|
-
import { PorscheDesignSystemModule } from '@porsche-design-system/components-angular';
|
|
3
|
+
import { PorscheDesignSystemModule, type PRadioGroupProps } from '@porsche-design-system/components-angular';
|
|
4
4
|
|
|
5
5
|
@Component({
|
|
6
6
|
selector: 'porsche-design-system-app',
|
|
@@ -27,7 +27,7 @@ import { PorscheDesignSystemModule } from '@porsche-design-system/components-ang
|
|
|
27
27
|
})
|
|
28
28
|
export class ExampleComponent {
|
|
29
29
|
form = new FormGroup({
|
|
30
|
-
myRadioGroup: new FormControl<
|
|
30
|
+
myRadioGroup: new FormControl<PRadioGroupProps['value']>(null),
|
|
31
31
|
});
|
|
32
32
|
|
|
33
33
|
submittedValue: any = undefined;
|
package/{skill → skills/pds-knowledge-angular}/references/components/p-radio-group/p-radio-group.md
RENAMED
|
@@ -6,7 +6,7 @@ The `p-radio-group` component is a versatile custom form element that enables th
|
|
|
6
6
|
>
|
|
7
7
|
> The `blur` event is emitted whenever the focused `p-radio-group-option` changes — not only when the entire `p-radio-group` loses focus. This means that switching between options within the same group will also trigger a `blur` event for the previously focused option.
|
|
8
8
|
|
|
9
|
-
Options are slotted using the `p-radio-group-option` component. Each option needs
|
|
9
|
+
Options are slotted using the `p-radio-group-option` component. Each option needs an assigned `string` or `number` value. The `p-radio-group` value matches an option strictly by type and value, so a number does not match the equivalent string. `undefined` and `null` are reserved for the radio group's unselected state and are not valid option values. Initial selection states can only be achieved using the `value` property on the `p-radio-group` component. If an option should be visible but not selectable, it can be disabled using the `disabled` attribute.
|
|
10
10
|
|
|
11
11
|
A `label` is a caption which informs the user what information a particular form field is asking for. The `p-radio-group` component can be used with or without a label, but it's recommended to keep the label visible for better accessibility whenever possible. When used without a label, it's best practice to provide a descriptive label text for screen readers.
|
|
12
12
|
|
|
@@ -70,6 +70,10 @@ In general, avoid using the `disabled` state. Disabled elements are no longer fo
|
|
|
70
70
|
- **Don't** rely on adjacent text instead of the group `label` prop.
|
|
71
71
|
- **Don't** use `hide-label` without an accessible name.
|
|
72
72
|
|
|
73
|
+
## Integration examples
|
|
74
|
+
|
|
75
|
+
See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
|
|
76
|
+
|
|
73
77
|
## Tests
|
|
74
78
|
|
|
75
79
|
### Automated
|
|
@@ -105,7 +109,7 @@ In general, avoid using the `disabled` state. Disabled elements are no longer fo
|
|
|
105
109
|
| `name` _(required)_ | `string` | `undefined` | Sets the shared name attribute for all radio buttons in the group, grouping them for mutually exclusive selection. |
|
|
106
110
|
| `required` | `boolean` | `false` | Marks the radio group as required so the form cannot be submitted until one option is selected. |
|
|
107
111
|
| `state` | `'none'` `'error'` `'success'` | `'none'` | Sets the validation state of the radio group, controlling its visual appearance and feedback message style (`none`, `success`, `error`). |
|
|
108
|
-
| `value` | `string` | `
|
|
112
|
+
| `value` | `string | number | null` | `undefined` | Sets the currently selected value that pre-selects the matching radio option and reflects user changes. Matches an option strictly by type and value, meaning string or number only match an option whose value has the same type and equal value. Use undefined or null for no preselection; these values never match an option because every option requires a string or number value. Please note that FormData always serializes values as strings, so when participating in a native (uncontrolled) form a number value is restored as string via formStateRestoreCallback and will no longer strictly match a number-typed option. This limitation only applies to native form state restoration; in controlled forms (where the consumer manages value directly via the change event), the number type is preserved end-to-end. |
|
|
109
113
|
|
|
110
114
|
### Events
|
|
111
115
|
|
|
@@ -139,7 +143,7 @@ Allowed parent: `p-radio-group`.
|
|
|
139
143
|
| `disabled` | `boolean` | `false` | Prevents this option from being selected and excludes its value from form submissions while it is disabled. |
|
|
140
144
|
| `label` | `string` | `undefined` | Sets the visible label text displayed next to the radio button that the user reads to identify the option. |
|
|
141
145
|
| `loading` _(experimental)_ | `boolean` | `false` | @experimental Disables this option and shows a spinner to indicate that this particular option is in a loading state. |
|
|
142
|
-
| `value` | `string` | `undefined` | Sets the
|
|
146
|
+
| `value` _(required)_ | `string | number` | `undefined` | Sets the required option value. Must be a string or number and is selected when it strictly matches the parent `p-radio-group` value by type and value. |
|
|
143
147
|
|
|
144
148
|
#### Slots
|
|
145
149
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# p-scroller accessibility integration examples
|
|
2
|
+
|
|
3
|
+
## Integration examples
|
|
4
|
+
|
|
5
|
+
### ARIA on component host vs aria prop
|
|
6
|
+
|
|
7
|
+
#### ❌ Anti-pattern
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<p-scroller aria-label="Section tags" aria-description="Section tags for the section overview">
|
|
11
|
+
<p-tag>
|
|
12
|
+
Overview
|
|
13
|
+
</p-tag>
|
|
14
|
+
<p-tag>
|
|
15
|
+
Equipment
|
|
16
|
+
</p-tag>
|
|
17
|
+
</p-scroller>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
#### ✅ Recommended
|
|
21
|
+
|
|
22
|
+
```html
|
|
23
|
+
<p-scroller [aria]="{'aria-label': 'Section tags', 'aria-description': 'Section tags for the section overview'}">
|
|
24
|
+
<p-tag>
|
|
25
|
+
Overview
|
|
26
|
+
</p-tag>
|
|
27
|
+
<p-tag>
|
|
28
|
+
Equipment
|
|
29
|
+
</p-tag>
|
|
30
|
+
</p-scroller>
|
|
31
|
+
```
|
package/{skill → skills/pds-knowledge-angular}/references/components/p-scroller/p-scroller.md
RENAMED
|
@@ -57,6 +57,10 @@ If the `p-scroller` component is accessed by keyboard navigation and is focused,
|
|
|
57
57
|
- **Do** pass `aria-label` and `aria-description` via the `aria` prop, not as host attributes.
|
|
58
58
|
- **Don't** add native `aria-*` attributes directly on the component host.
|
|
59
59
|
|
|
60
|
+
## Integration examples
|
|
61
|
+
|
|
62
|
+
See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
|
|
63
|
+
|
|
60
64
|
## API
|
|
61
65
|
|
|
62
66
|
### Properties
|
package/skills/pds-knowledge-angular/references/components/p-segmented-control/accessibility.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# p-segmented-control accessibility integration examples
|
|
2
|
+
|
|
3
|
+
## Integration examples
|
|
4
|
+
|
|
5
|
+
### Missing group label
|
|
6
|
+
|
|
7
|
+
#### ❌ Anti-pattern
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<p-segmented-control name="size">
|
|
11
|
+
<p-segmented-control-item value="s">
|
|
12
|
+
S
|
|
13
|
+
</p-segmented-control-item>
|
|
14
|
+
<p-segmented-control-item value="m">
|
|
15
|
+
M
|
|
16
|
+
</p-segmented-control-item>
|
|
17
|
+
</p-segmented-control>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
#### ✅ Recommended
|
|
21
|
+
|
|
22
|
+
```html
|
|
23
|
+
<p-segmented-control label="T-shirt size" name="size" description="Select your preferred size.">
|
|
24
|
+
<p-segmented-control-item value="s">
|
|
25
|
+
S
|
|
26
|
+
</p-segmented-control-item>
|
|
27
|
+
<p-segmented-control-item value="m">
|
|
28
|
+
M
|
|
29
|
+
</p-segmented-control-item>
|
|
30
|
+
</p-segmented-control>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Hidden label without accessible name
|
|
34
|
+
|
|
35
|
+
#### ❌ Anti-pattern
|
|
36
|
+
|
|
37
|
+
```html
|
|
38
|
+
<p-segmented-control name="size" [hideLabel]="true">
|
|
39
|
+
<p-segmented-control-item value="s">
|
|
40
|
+
S
|
|
41
|
+
</p-segmented-control-item>
|
|
42
|
+
</p-segmented-control>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
#### ✅ Recommended
|
|
46
|
+
|
|
47
|
+
```html
|
|
48
|
+
<p-segmented-control label="T-shirt size" name="size" [hideLabel]="true">
|
|
49
|
+
<p-segmented-control-item value="s">
|
|
50
|
+
S
|
|
51
|
+
</p-segmented-control-item>
|
|
52
|
+
</p-segmented-control>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Validation feedback via state and message API
|
|
56
|
+
|
|
57
|
+
#### ❌ Anti-pattern
|
|
58
|
+
|
|
59
|
+
```html
|
|
60
|
+
<p-segmented-control label="T-shirt size" name="size" [aria-invalid]="true" message="Required"></p-segmented-control>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
#### ✅ Recommended
|
|
64
|
+
|
|
65
|
+
```html
|
|
66
|
+
<p-segmented-control label="T-shirt size" name="size" [required]="true" state="error" message="Select a size to continue."></p-segmented-control>
|
|
67
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
2
|
import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
3
|
-
import { PorscheDesignSystemModule } from '@porsche-design-system/components-angular';
|
|
3
|
+
import { PorscheDesignSystemModule, PSegmentedControlProps } from '@porsche-design-system/components-angular';
|
|
4
4
|
|
|
5
5
|
@Component({
|
|
6
6
|
selector: 'porsche-design-system-app',
|
|
@@ -26,7 +26,7 @@ import { PorscheDesignSystemModule } from '@porsche-design-system/components-ang
|
|
|
26
26
|
})
|
|
27
27
|
export class ExampleComponent {
|
|
28
28
|
form = new FormGroup({
|
|
29
|
-
mySegmentedControl: new FormControl<
|
|
29
|
+
mySegmentedControl: new FormControl<PSegmentedControlProps['value']>(null),
|
|
30
30
|
});
|
|
31
31
|
|
|
32
32
|
submittedValue: any = undefined;
|
|
@@ -86,6 +86,10 @@ In general, avoid using the `disabled` state. Disabled elements are no longer fo
|
|
|
86
86
|
- **Don't** add native `aria-*` attributes directly on the component host.
|
|
87
87
|
- **Don't** use `hide-label` without an accessible name.
|
|
88
88
|
|
|
89
|
+
## Integration examples
|
|
90
|
+
|
|
91
|
+
See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
|
|
92
|
+
|
|
89
93
|
## API
|
|
90
94
|
|
|
91
95
|
### Properties
|
|
@@ -104,7 +108,7 @@ In general, avoid using the `disabled` state. Disabled elements are no longer fo
|
|
|
104
108
|
| `noWrap` | `boolean` | `false` | Prevents items from wrapping to new rows and renders them in a single horizontally scrollable row instead. |
|
|
105
109
|
| `required` | `boolean` | `false` | Marks the segmented control as required so the form cannot be submitted until one option is selected. |
|
|
106
110
|
| `state` | `'none'` `'error'` `'success'` | `'none'` | Sets the validation state of the segmented control, controlling its visual appearance and feedback message style (`none`, `success`, `error`). |
|
|
107
|
-
| `value` | `string | number` | `undefined` | Sets the currently selected item's value and pre-selects the matching option when the component renders. |
|
|
111
|
+
| `value` | `string | number | null` | `undefined` | Sets the currently selected item's value and pre-selects the matching option when the component renders. Matches an item strictly by type and value, meaning string or number only match an item whose value has the same type and equal value. Use undefined or null for no preselection. Please note that FormData always serializes values as strings, so when participating in a native (uncontrolled) form a number value is restored as string via formStateRestoreCallback and will no longer strictly match a number-typed item. This limitation only applies to native form state restoration; in controlled forms (where the consumer manages value directly via the change event), the number type is preserved end-to-end. |
|
|
108
112
|
|
|
109
113
|
### Events
|
|
110
114
|
|
|
@@ -141,7 +145,7 @@ Allowed parent: `p-segmented-control`.
|
|
|
141
145
|
| --- | --- | --- | --- |
|
|
142
146
|
| `aria` | `SegmentedControlItemAriaAttribute` | `undefined` | Sets ARIA attributes on the item's button element to improve accessibility for screen readers. |
|
|
143
147
|
| `disabled` | `boolean` | `false` | Prevents this item from being selected and visually dims it; the parent's value will not change to this item's value. |
|
|
144
|
-
| `icon` | `''`<br>one of
|
|
148
|
+
| `icon` | `''`<br>one of 293 icon names — see [icon names](references/icons.md) | `undefined` | Sets an icon rendered inside the item button using an icon name from the PDS icon library. |
|
|
145
149
|
| `iconSource` | `string` | `undefined` | Sets a URL to a custom SVG icon for the item button, overriding the built-in icon set. |
|
|
146
150
|
| `label` | `string` | `undefined` | Sets a visible text label rendered inside the item button, used when no slotted content is provided. |
|
|
147
151
|
| `value` _(required)_ | `string | number` | `undefined` | Sets the value emitted by the parent `p-segmented-control` when this item is selected. This property is*required**. |
|
|
@@ -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
|
+
```html
|
|
10
|
+
<p-select name="model">
|
|
11
|
+
<p-select-option value="">
|
|
12
|
+
Select a model
|
|
13
|
+
</p-select-option>
|
|
14
|
+
<p-select-option value="carrera">
|
|
15
|
+
911 Carrera
|
|
16
|
+
</p-select-option>
|
|
17
|
+
<p-select-option value="carrera-s">
|
|
18
|
+
911 Carrera S
|
|
19
|
+
</p-select-option>
|
|
20
|
+
</p-select>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
#### ✅ Recommended
|
|
24
|
+
|
|
25
|
+
```html
|
|
26
|
+
<p-select label="Porsche model" name="model" description="Choose the model for your configuration.">
|
|
27
|
+
<p-select-option value="carrera">
|
|
28
|
+
911 Carrera
|
|
29
|
+
</p-select-option>
|
|
30
|
+
<p-select-option value="carrera-s">
|
|
31
|
+
911 Carrera S
|
|
32
|
+
</p-select-option>
|
|
33
|
+
</p-select>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Ambiguous option labels without field context
|
|
37
|
+
|
|
38
|
+
#### ❌ Anti-pattern
|
|
39
|
+
|
|
40
|
+
```html
|
|
41
|
+
<p-select label="Model" name="model">
|
|
42
|
+
<p-select-option value="base">
|
|
43
|
+
Base
|
|
44
|
+
</p-select-option>
|
|
45
|
+
<p-select-option value="s">
|
|
46
|
+
S
|
|
47
|
+
</p-select-option>
|
|
48
|
+
</p-select>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
#### ✅ Recommended
|
|
52
|
+
|
|
53
|
+
```html
|
|
54
|
+
<p-select label="Porsche 911 trim" name="model" description="Select the trim level for your configuration.">
|
|
55
|
+
<p-select-option value="carrera">
|
|
56
|
+
911 Carrera
|
|
57
|
+
</p-select-option>
|
|
58
|
+
<p-select-option value="carrera-s">
|
|
59
|
+
911 Carrera S
|
|
60
|
+
</p-select-option>
|
|
61
|
+
</p-select>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Hidden label without accessible name
|
|
65
|
+
|
|
66
|
+
#### ❌ Anti-pattern
|
|
67
|
+
|
|
68
|
+
```html
|
|
69
|
+
<p-select name="model" [hideLabel]="true">
|
|
70
|
+
<p-select-option value="carrera">
|
|
71
|
+
911 Carrera
|
|
72
|
+
</p-select-option>
|
|
73
|
+
</p-select>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
#### ✅ Recommended
|
|
77
|
+
|
|
78
|
+
```html
|
|
79
|
+
<p-select label="Porsche model" name="model" [hideLabel]="true">
|
|
80
|
+
<p-select-option value="carrera">
|
|
81
|
+
911 Carrera
|
|
82
|
+
</p-select-option>
|
|
83
|
+
</p-select>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Validation feedback via state and message API
|
|
87
|
+
|
|
88
|
+
#### ❌ Anti-pattern
|
|
89
|
+
|
|
90
|
+
```html
|
|
91
|
+
<p-select label="Porsche model" name="model" [aria-invalid]="true" message="Required">
|
|
92
|
+
<p-select-option value="carrera">
|
|
93
|
+
911 Carrera
|
|
94
|
+
</p-select-option>
|
|
95
|
+
<p-select-option value="carrera-s">
|
|
96
|
+
911 Carrera S
|
|
97
|
+
</p-select-option>
|
|
98
|
+
</p-select>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### ✅ Recommended
|
|
102
|
+
|
|
103
|
+
```html
|
|
104
|
+
<p-select label="Porsche model" name="model" state="error" message="Select a model to continue with your configuration.">
|
|
105
|
+
<p-select-option value="carrera">
|
|
106
|
+
911 Carrera
|
|
107
|
+
</p-select-option>
|
|
108
|
+
<p-select-option value="carrera-s">
|
|
109
|
+
911 Carrera S
|
|
110
|
+
</p-select-option>
|
|
111
|
+
</p-select>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Error state without recovery guidance
|
|
115
|
+
|
|
116
|
+
#### ❌ Anti-pattern
|
|
117
|
+
|
|
118
|
+
```html
|
|
119
|
+
<p-select label="Porsche model" name="model" state="error" message="Invalid">
|
|
120
|
+
<p-select-option value="carrera">
|
|
121
|
+
911 Carrera
|
|
122
|
+
</p-select-option>
|
|
123
|
+
<p-select-option value="carrera-s">
|
|
124
|
+
911 Carrera S
|
|
125
|
+
</p-select-option>
|
|
126
|
+
</p-select>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
#### ✅ Recommended
|
|
130
|
+
|
|
131
|
+
```html
|
|
132
|
+
<p-select label="Porsche model" name="model" [required]="true" state="error" message="Select a Porsche model. This field is required to continue.">
|
|
133
|
+
<p-select-option value="carrera">
|
|
134
|
+
911 Carrera
|
|
135
|
+
</p-select-option>
|
|
136
|
+
<p-select-option value="carrera-s">
|
|
137
|
+
911 Carrera S
|
|
138
|
+
</p-select-option>
|
|
139
|
+
</p-select>
|
|
140
|
+
```
|
|
@@ -31,6 +31,9 @@ import {
|
|
|
31
31
|
(change)="$event.stopPropagation()"
|
|
32
32
|
></p-input-search>
|
|
33
33
|
|
|
34
|
+
<!-- Persistent status announcer for assistive technologies (keep always in the DOM) -->
|
|
35
|
+
<div slot="options-status" class="sr-only" aria-live="polite" aria-atomic="true">{{ filterStatusMessage }}</div>
|
|
36
|
+
|
|
34
37
|
<!-- Initial skeleton loading -->
|
|
35
38
|
@if (initialLoading && !error) {
|
|
36
39
|
@for (_ of [1,2,3,4,5,6,7,8,9]; track $index) {
|
|
@@ -45,15 +48,14 @@ import {
|
|
|
45
48
|
</p-select-option>
|
|
46
49
|
}
|
|
47
50
|
|
|
48
|
-
<!-- No filter results -->
|
|
49
|
-
@if (!initialLoading && options.length === 0 && !error) {
|
|
51
|
+
<!-- No filter results (visual only; announcements come from the live region) -->
|
|
52
|
+
@if (!initialLoading && !loading && options.length === 0 && !error) {
|
|
50
53
|
<div
|
|
51
54
|
slot="options-status"
|
|
52
55
|
class="text-contrast-medium cursor-not-allowed py-static-sm px-[12px]"
|
|
53
|
-
|
|
56
|
+
aria-hidden="true"
|
|
54
57
|
>
|
|
55
|
-
|
|
56
|
-
<span class="sr-only">No results found</span>
|
|
58
|
+
–
|
|
57
59
|
</div>
|
|
58
60
|
}
|
|
59
61
|
|
|
@@ -83,6 +85,7 @@ export class ExampleComponent {
|
|
|
83
85
|
initialLoading = false;
|
|
84
86
|
loading = false;
|
|
85
87
|
error: string | null = null;
|
|
88
|
+
filterStatusMessage = '';
|
|
86
89
|
|
|
87
90
|
private hasLoadedOnce = false;
|
|
88
91
|
private currentFetchId = 0;
|
|
@@ -94,6 +97,7 @@ export class ExampleComponent {
|
|
|
94
97
|
const fetchId = ++this.currentFetchId;
|
|
95
98
|
if (isInitial) this.initialLoading = true;
|
|
96
99
|
else this.loading = true;
|
|
100
|
+
this.updateFilterStatusMessage();
|
|
97
101
|
|
|
98
102
|
this.cdr.markForCheck();
|
|
99
103
|
|
|
@@ -122,6 +126,7 @@ export class ExampleComponent {
|
|
|
122
126
|
} finally {
|
|
123
127
|
if (isInitial) this.initialLoading = false;
|
|
124
128
|
else this.loading = false;
|
|
129
|
+
this.updateFilterStatusMessage();
|
|
125
130
|
|
|
126
131
|
this.cdr.markForCheck();
|
|
127
132
|
}
|
|
@@ -146,4 +151,26 @@ export class ExampleComponent {
|
|
|
146
151
|
this.fetchOptions(undefined, true);
|
|
147
152
|
}
|
|
148
153
|
}
|
|
154
|
+
|
|
155
|
+
private updateFilterStatusMessage(): void {
|
|
156
|
+
if (this.error) {
|
|
157
|
+
this.filterStatusMessage = '';
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (this.initialLoading || this.loading) {
|
|
161
|
+
this.filterStatusMessage = 'Loading options';
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const term = this.searchValue.trim();
|
|
165
|
+
if (!term) {
|
|
166
|
+
this.filterStatusMessage = '';
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
if (this.options.length === 0) {
|
|
170
|
+
this.filterStatusMessage = 'No results found';
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
this.filterStatusMessage =
|
|
174
|
+
this.options.length === 1 ? '1 result available' : `${this.options.length} results available`;
|
|
175
|
+
}
|
|
149
176
|
}
|
|
@@ -79,6 +79,10 @@ In general, avoid using the `disabled` state. Disabled elements are no longer fo
|
|
|
79
79
|
- **Don't** use very short or ambiguous option labels when context is important.
|
|
80
80
|
- **Don't** use `hide-label` without an accessible name.
|
|
81
81
|
|
|
82
|
+
## Integration examples
|
|
83
|
+
|
|
84
|
+
See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
|
|
85
|
+
|
|
82
86
|
## API
|
|
83
87
|
|
|
84
88
|
### Properties
|
|
@@ -137,7 +141,7 @@ Allowed parents: `p-multi-select`, `p-optgroup`.
|
|
|
137
141
|
| Property | Type | Default | Description |
|
|
138
142
|
| --- | --- | --- | --- |
|
|
139
143
|
| `disabled` | `boolean` | `false` | Disables the option, preventing it from being selected. |
|
|
140
|
-
| `value` _(required)_ | `string | number` | `undefined` | Sets the value submitted with the form data when
|
|
144
|
+
| `value` _(required)_ | `string | number` | `undefined` | Sets the required option value submitted with the form data when selected. Must be a string or number. |
|
|
141
145
|
|
|
142
146
|
#### Slots
|
|
143
147
|
|