@porsche-design-system/components-react 4.6.0-rc.1 → 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 +61 -2
- package/OSS_NOTICE +5532 -2115
- package/cjs/lib/components/ai-tag.wrapper.cjs +1 -1
- package/cjs/lib/components/radio-group.wrapper.cjs +1 -1
- package/esm/lib/components/ai-tag.wrapper.d.ts +4 -4
- package/esm/lib/components/ai-tag.wrapper.mjs +1 -1
- package/esm/lib/components/input-number.wrapper.d.ts +6 -6
- package/esm/lib/components/input-text.wrapper.d.ts +6 -6
- package/esm/lib/components/multi-select-option.wrapper.d.ts +2 -2
- package/esm/lib/components/pin-code.wrapper.d.ts +6 -6
- package/esm/lib/components/radio-group-option.wrapper.d.ts +4 -4
- package/esm/lib/components/radio-group.wrapper.d.ts +4 -6
- package/esm/lib/components/radio-group.wrapper.mjs +1 -1
- package/esm/lib/components/segmented-control.wrapper.d.ts +4 -4
- package/esm/lib/components/wordmark.wrapper.d.ts +2 -2
- package/esm/lib/types.d.ts +184 -213
- package/package.json +6 -2
- package/skills/pds-knowledge-react/SKILL.md +3 -3
- package/skills/pds-knowledge-react/references/components/p-ai-tag/p-ai-tag.md +2 -2
- package/skills/pds-knowledge-react/references/components/p-button/p-button.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-button-pure/p-button-pure.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-button-tile/p-button-tile.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-carousel/p-carousel.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-icon/examples/Overview.tsx +6 -0
- package/skills/pds-knowledge-react/references/components/p-icon/p-icon.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-inline-notification/p-inline-notification.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-input-number/p-input-number.md +3 -3
- package/skills/pds-knowledge-react/references/components/p-input-text/p-input-text.md +3 -3
- package/skills/pds-knowledge-react/references/components/p-link/p-link.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-link-pure/p-link-pure.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-multi-select/examples/AsyncFilter.tsx +29 -6
- package/skills/pds-knowledge-react/references/components/p-multi-select/p-multi-select.md +2 -2
- package/skills/pds-knowledge-react/references/components/p-pin-code/p-pin-code.md +2 -2
- package/skills/pds-knowledge-react/references/components/p-radio-group/examples/Form.tsx +2 -2
- package/skills/pds-knowledge-react/references/components/p-radio-group/p-radio-group.md +3 -3
- package/skills/pds-knowledge-react/references/components/p-segmented-control/p-segmented-control.md +2 -2
- package/skills/pds-knowledge-react/references/components/p-select/examples/AsyncFilter.tsx +29 -6
- package/skills/pds-knowledge-react/references/components/p-select/p-select.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-tag/p-tag.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-wordmark/p-wordmark.md +1 -1
- package/skills/pds-knowledge-react/references/icons.md +1 -1
- package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +203 -4
- package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +241 -40
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/ai-tag.wrapper.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/radio-group.wrapper.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.cjs +4 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/filter-status-announcer.cjs +7 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.cjs +3 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/no-results-option.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.cjs +7 -3
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group.cjs +4 -0
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.cjs +5 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.cjs +3 -4
- package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +203 -5
- package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +237 -41
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/ai-tag.wrapper.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/radio-group.wrapper.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.mjs +4 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/filter-status-announcer.mjs +5 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.mjs +3 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/no-results-option.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.mjs +7 -3
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group.mjs +4 -0
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.mjs +5 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.mjs +3 -4
- package/ssr/esm/lib/components/ai-tag.wrapper.d.ts +4 -4
- package/ssr/esm/lib/components/input-number.wrapper.d.ts +6 -6
- package/ssr/esm/lib/components/input-text.wrapper.d.ts +6 -6
- package/ssr/esm/lib/components/multi-select-option.wrapper.d.ts +2 -2
- package/ssr/esm/lib/components/pin-code.wrapper.d.ts +6 -6
- package/ssr/esm/lib/components/radio-group-option.wrapper.d.ts +4 -4
- package/ssr/esm/lib/components/radio-group.wrapper.d.ts +4 -6
- package/ssr/esm/lib/components/segmented-control.wrapper.d.ts +4 -4
- package/ssr/esm/lib/components/wordmark.wrapper.d.ts +2 -2
- package/ssr/esm/lib/dsr-components/carousel.d.ts +3 -0
- package/ssr/esm/lib/dsr-components/filter-status-announcer.d.ts +6 -0
- package/ssr/esm/lib/dsr-components/multi-select.d.ts +1 -0
- package/ssr/esm/lib/dsr-components/pin-code.d.ts +1 -0
- package/ssr/esm/lib/dsr-components/radio-group.d.ts +1 -0
- package/ssr/esm/lib/dsr-components/segmented-control.d.ts +1 -0
- package/ssr/esm/lib/dsr-components/select.d.ts +1 -1
- package/ssr/esm/lib/types.d.ts +184 -213
package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.mjs
CHANGED
|
@@ -26,8 +26,12 @@ class DSRPinCode extends Component {
|
|
|
26
26
|
initialLoading = false;
|
|
27
27
|
defaultValue;
|
|
28
28
|
inputElements = [];
|
|
29
|
+
// Coerce number/null/undefined to string for internal handling
|
|
30
|
+
get parsedValue() {
|
|
31
|
+
return String(this.props.value ?? '');
|
|
32
|
+
}
|
|
29
33
|
formResetCallback() {
|
|
30
|
-
this.props.internals?.setFormValue(this.props.defaultValue);
|
|
34
|
+
this.props.internals?.setFormValue(String(this.props.defaultValue ?? '')); // coerce defaultValue to string for form value
|
|
31
35
|
}
|
|
32
36
|
formDisabledCallback() {
|
|
33
37
|
// Called when a parent fieldset is disabled or enabled
|
|
@@ -43,8 +47,8 @@ class DSRPinCode extends Component {
|
|
|
43
47
|
const inputDescriptionId = (this.props.description || namedSlotChildren.filter(({ props: { slot } }) => slot === 'description').length > 0) ? descriptionId : undefined;
|
|
44
48
|
const inputMessageId = (this.props.message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(this.props.state) ? messageId : undefined;
|
|
45
49
|
const style = minifyCss(getComponentCss$w(this.props.hideLabel, this.props.state, this.props.disabled, this.props.loading, this.props.length, this.props.compact));
|
|
46
|
-
return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxs("fieldset", { className: "root", disabled: this.props.disabled, ...getFieldsetAriaAttributes(this.props.required, this.props.state === 'error'), "aria-describedby": setAriaIDREF(this.props.loading && loadingId, inputMessageId, inputDescriptionId), "aria-labelledby": (this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0) ? labelId : null, children: [jsx(Label, { hasLabel: this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0, hasDescription: this.props.description || namedSlotChildren.filter(({ props: { slot } }) => slot === 'description').length > 0, host: null, label: this.props.label, description: this.props.description, htmlFor: currentInputId, isRequired: this.props.required, isLoading: this.props.loading, isDisabled: this.props.disabled }), jsxs("div", { className: "wrapper", dir: "ltr", children: [Array.from(new Array(this.props.length), (_, index) => (jsx("input", { name: this.props.name, form: this.props.form, ...(isCurrentInput(index, this.
|
|
47
|
-
, defaultValue: this.
|
|
50
|
+
return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxs("fieldset", { className: "root", disabled: this.props.disabled, ...getFieldsetAriaAttributes(this.props.required, this.props.state === 'error'), "aria-describedby": setAriaIDREF(this.props.loading && loadingId, inputMessageId, inputDescriptionId), "aria-labelledby": (this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0) ? labelId : null, children: [jsx(Label, { hasLabel: this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0, hasDescription: this.props.description || namedSlotChildren.filter(({ props: { slot } }) => slot === 'description').length > 0, host: null, label: this.props.label, description: this.props.description, htmlFor: currentInputId, isRequired: this.props.required, isLoading: this.props.loading, isDisabled: this.props.disabled }), jsxs("div", { className: "wrapper", dir: "ltr", children: [Array.from(new Array(this.props.length), (_, index) => (jsx("input", { name: this.props.name, form: this.props.form, ...(isCurrentInput(index, this.parsedValue, this.props.length) && { id: currentInputId }), type: this.props.type === 'number' ? 'text' : this.props.type, "aria-label": `${index + 1}-${this.props.length}`, "aria-describedby": setAriaIDREF(inputLabelId, inputMessageId), "aria-invalid": this.props.state === 'error' ? 'true' : null, "aria-disabled": this.props.loading ? 'true' : null, autoComplete: "one-time-code", pattern: "\\d*", inputMode: "numeric" // get numeric keyboard on mobile
|
|
51
|
+
, defaultValue: this.parsedValue[index] === ' ' ? null : this.parsedValue[index], disabled: this.props.disabled, required: this.props.required, onBlur: this.props.onInputBlur }, index))), this.props.loading && jsx(PSpinner, { className: "spinner", size: "inherit", "aria-hidden": "true" })] }), jsx(StateMessage, { hasMessage: (this.props.message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(this.props.state), state: this.props.state, message: this.props.message, host: null }), jsx(LoadingMessage, { loading: this.props.loading, initialLoading: this.props.initialLoading })] })] }), this.props.children] }));
|
|
48
52
|
}
|
|
49
53
|
}
|
|
50
54
|
|
package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group.mjs
CHANGED
|
@@ -26,6 +26,10 @@ class DSRRadioGroup extends Component {
|
|
|
26
26
|
defaultValue;
|
|
27
27
|
radioGroupOptions = [];
|
|
28
28
|
preventOptionUpdate = false; // Used to prevent value watcher from updating options when options are already updated
|
|
29
|
+
setFormValue() {
|
|
30
|
+
// `null`/`undefined` → `undefined`, removing the radio group from form submission
|
|
31
|
+
this.props.internals?.setFormValue(this.props.value === null || this.props.value === undefined ? undefined : String(this.props.value));
|
|
32
|
+
}
|
|
29
33
|
formResetCallback() {
|
|
30
34
|
// triggers value watcher
|
|
31
35
|
}
|
|
@@ -22,8 +22,12 @@ class DSRSegmentedControl extends Component {
|
|
|
22
22
|
host;
|
|
23
23
|
internals;
|
|
24
24
|
defaultValue;
|
|
25
|
+
setFormValue() {
|
|
26
|
+
// `null`/`undefined` → `undefined`, removing the segmented-control from form submission
|
|
27
|
+
this.props.internals?.setFormValue(this.props.value === null || this.props.value === undefined ? undefined : String(this.props.value));
|
|
28
|
+
}
|
|
25
29
|
formResetCallback() {
|
|
26
|
-
|
|
30
|
+
// triggers value watcher
|
|
27
31
|
}
|
|
28
32
|
formDisabledCallback() {
|
|
29
33
|
// Called when a parent fieldset is disabled or enabled
|
package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.mjs
CHANGED
|
@@ -9,6 +9,7 @@ import { Label } from './label.mjs';
|
|
|
9
9
|
import { messageId, StateMessage } from './state-message.mjs';
|
|
10
10
|
import { PIcon } from '../components/icon.wrapper.mjs';
|
|
11
11
|
import { PInputSearch } from '../components/input-search.wrapper.mjs';
|
|
12
|
+
import { FilterStatusAnnouncer } from './filter-status-announcer.mjs';
|
|
12
13
|
import { NoResultsOption } from './no-results-option.mjs';
|
|
13
14
|
|
|
14
15
|
/**
|
|
@@ -29,6 +30,7 @@ class DSRSelect extends Component {
|
|
|
29
30
|
// In the React wrapper, all props are synced as properties on the element ref, so reflecting "name" as an attribute ensures it is properly handled in the form submission process.
|
|
30
31
|
isOpen = false;
|
|
31
32
|
hasFilterResults = true;
|
|
33
|
+
filterStatusMessage = '';
|
|
32
34
|
selectedOption;
|
|
33
35
|
internals;
|
|
34
36
|
defaultValue;
|
|
@@ -45,9 +47,6 @@ class DSRSelect extends Component {
|
|
|
45
47
|
hasNativePopoverSupport = getHasNativePopoverSupport();
|
|
46
48
|
cleanUpAutoUpdate;
|
|
47
49
|
currentlyHighlightedOption = null;
|
|
48
|
-
get hasFilter() {
|
|
49
|
-
return !!(this.props.filter || this.props.filterSlot);
|
|
50
|
-
}
|
|
51
50
|
setFormValue() {
|
|
52
51
|
// `null`/`undefined` → `undefined`, removing the select from form submission (mirrors native behavior)
|
|
53
52
|
this.props.internals?.setFormValue(this.props.value === null || this.props.value === undefined ? undefined : String(this.props.value));
|
|
@@ -71,7 +70,7 @@ class DSRSelect extends Component {
|
|
|
71
70
|
const style = minifyCss(getComponentCss$o(this.props.isOpen, this.props.disabled, this.props.hideLabel, this.props.state, this.props.compact));
|
|
72
71
|
return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxs("div", { className: "root", children: [jsx(Label, { hasLabel: this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0, hasDescription: this.props.description || namedSlotChildren.filter(({ props: { slot } }) => slot === 'description').length > 0, host: null, label: this.props.label, description: this.props.description, htmlFor: buttonId, isRequired: this.props.required, isDisabled: this.props.disabled }), jsxs("button", { "aria-invalid": this.props.state === 'error' ? 'true' : null, type: "button", role: "combobox", id: buttonId,
|
|
73
72
|
// only needed for Safari to recognize focus state on click
|
|
74
|
-
tabIndex: 0, ...getComboboxAriaAttributes(this.props.isOpen, this.props.required, (this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0) && labelId, selectMessageId, selectDescriptionId, listboxId), "aria-autocomplete": "none", disabled: this.props.disabled, onBlur: this.props.onComboBlur, children: [hasCustomSelectedSlot ? (jsx("slot", { name: "selected" })) : (jsxs(Fragment, { children: [this.selectedOption?.querySelector?.('img') && (jsx("img", { src: this.selectedOption.querySelector('img').src, alt: "" })), jsx("span", { children: this.selectedOption?.textContent ?? '' })] })), jsx(PIcon, { className: "icon", name: "arrow-head-down", color: "primary", "aria-hidden": "true" })] }), jsxs("div", { popover: "manual", tabIndex: 0, children: [this.props.filter && !hasCustomFilterSlot && (jsx(PInputSearch, { className: "filter", name: "filter", label: "Filter options", hideLabel: true, autoComplete: "off", clear: true, indicator: true, compact: true, onBlur: (e) => e.stopPropagation() })), hasCustomFilterSlot && jsx("slot", { name: "filter" }), jsxs("div", { id: listboxId, className: "options", ...getListboxAriaAttributes(this.props.required, (this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0) && labelId, selectMessageId, selectDescriptionId, false), tabIndex: -1, onPointerMove: this.props.onPointerMove, onBlur: (e) => e.stopPropagation(), children: [this.props.filter && !this.props.hasFilterResults && jsx(NoResultsOption, {}), jsx("slot", { name: "options-status" }), jsx("slot", {})] })] }), jsx(StateMessage, { hasMessage: (this.props.message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(this.props.state), state: this.props.state, message: this.props.message, host: null })] })] }), this.props.children] }));
|
|
73
|
+
tabIndex: 0, ...getComboboxAriaAttributes(this.props.isOpen, this.props.required, (this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0) && labelId, selectMessageId, selectDescriptionId, listboxId), "aria-autocomplete": "none", disabled: this.props.disabled, onBlur: this.props.onComboBlur, children: [hasCustomSelectedSlot ? (jsx("slot", { name: "selected" })) : (jsxs(Fragment, { children: [this.selectedOption?.querySelector?.('img') && (jsx("img", { src: this.selectedOption.querySelector('img').src, alt: "" })), jsx("span", { children: this.selectedOption?.textContent ?? '' })] })), jsx(PIcon, { className: "icon", name: "arrow-head-down", color: "primary", "aria-hidden": "true" })] }), jsxs("div", { popover: "manual", tabIndex: 0, children: [this.props.filter && !hasCustomFilterSlot && (jsxs(Fragment, { children: [jsx(PInputSearch, { className: "filter", name: "filter", label: "Filter options", hideLabel: true, autoComplete: "off", clear: true, indicator: true, compact: true, onBlur: (e) => e.stopPropagation() }), jsx(FilterStatusAnnouncer, { message: this.props.filterStatusMessage })] })), hasCustomFilterSlot && jsx("slot", { name: "filter" }), jsxs("div", { id: listboxId, className: "options", ...getListboxAriaAttributes(this.props.required, (this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0) && labelId, selectMessageId, selectDescriptionId, false), tabIndex: -1, onPointerMove: this.props.onPointerMove, onBlur: (e) => e.stopPropagation(), children: [this.props.filter && !this.props.hasFilterResults && jsx(NoResultsOption, {}), jsx("slot", { name: "options-status" }), jsx("slot", {})] })] }), jsx(StateMessage, { hasMessage: (this.props.message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(this.props.state), state: this.props.state, message: this.props.message, host: null })] })] }), this.props.children] }));
|
|
75
74
|
}
|
|
76
75
|
}
|
|
77
76
|
|
|
@@ -2,8 +2,8 @@ import type { BaseProps } from '../../BaseProps';
|
|
|
2
2
|
import type { AiTagLocale, AiTagVariant } from '../types';
|
|
3
3
|
export type PAiTagProps = BaseProps & {
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
* @default '
|
|
5
|
+
* Market locale for the AI text (BCP47, e.g. `en-US`). Language-only `en` is supported for international markets. POSIX forms (e.g. `en_US`) are deprecated but still accepted. Copy is resolved by language; unknown languages fall back to English.
|
|
6
|
+
* @default 'en-US'
|
|
7
7
|
*/
|
|
8
8
|
locale?: AiTagLocale;
|
|
9
9
|
/**
|
|
@@ -14,8 +14,8 @@ export type PAiTagProps = BaseProps & {
|
|
|
14
14
|
};
|
|
15
15
|
export declare const PAiTag: import("react").ForwardRefExoticComponent<Omit<import("react").DOMAttributes<{}>, "onChange" | "onInput" | "onToggle"> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "inputMode" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
|
-
* @default '
|
|
17
|
+
* Market locale for the AI text (BCP47, e.g. `en-US`). Language-only `en` is supported for international markets. POSIX forms (e.g. `en_US`) are deprecated but still accepted. Copy is resolved by language; unknown languages fall back to English.
|
|
18
|
+
* @default 'en-US'
|
|
19
19
|
*/
|
|
20
20
|
locale?: AiTagLocale;
|
|
21
21
|
/**
|
|
@@ -66,11 +66,11 @@ export type PInputNumberProps = BaseProps & {
|
|
|
66
66
|
*/
|
|
67
67
|
onBlur?: (event: CustomEvent<InputNumberBlurEventDetail>) => void;
|
|
68
68
|
/**
|
|
69
|
-
* Emitted when the number input loses focus after its value was changed.
|
|
69
|
+
* Emitted when the number input loses focus after its value was changed. The component value and native event target value are strings after user input.
|
|
70
70
|
*/
|
|
71
71
|
onChange?: (event: CustomEvent<InputNumberChangeEventDetail>) => void;
|
|
72
72
|
/**
|
|
73
|
-
* Emitted when the value has been changed as a direct result of a user action.
|
|
73
|
+
* Emitted when the value has been changed as a direct result of a user action. The component value and native event target value are strings.
|
|
74
74
|
*/
|
|
75
75
|
onInput?: (event: CustomEvent<InputNumberInputEventDetail>) => void;
|
|
76
76
|
/**
|
|
@@ -99,7 +99,7 @@ export type PInputNumberProps = BaseProps & {
|
|
|
99
99
|
*/
|
|
100
100
|
step?: number;
|
|
101
101
|
/**
|
|
102
|
-
* Sets the current numeric value
|
|
102
|
+
* Sets the current numeric value. Strings and numbers are accepted for programmatic assignment, but user input updates the value as a string to mirror native input behavior.
|
|
103
103
|
* @default ''
|
|
104
104
|
*/
|
|
105
105
|
value?: string | number | null;
|
|
@@ -170,11 +170,11 @@ export declare const PInputNumber: import("react").ForwardRefExoticComponent<Omi
|
|
|
170
170
|
*/
|
|
171
171
|
onBlur?: (event: CustomEvent<InputNumberBlurEventDetail>) => void;
|
|
172
172
|
/**
|
|
173
|
-
* Emitted when the number input loses focus after its value was changed.
|
|
173
|
+
* Emitted when the number input loses focus after its value was changed. The component value and native event target value are strings after user input.
|
|
174
174
|
*/
|
|
175
175
|
onChange?: (event: CustomEvent<InputNumberChangeEventDetail>) => void;
|
|
176
176
|
/**
|
|
177
|
-
* Emitted when the value has been changed as a direct result of a user action.
|
|
177
|
+
* Emitted when the value has been changed as a direct result of a user action. The component value and native event target value are strings.
|
|
178
178
|
*/
|
|
179
179
|
onInput?: (event: CustomEvent<InputNumberInputEventDetail>) => void;
|
|
180
180
|
/**
|
|
@@ -203,7 +203,7 @@ export declare const PInputNumber: import("react").ForwardRefExoticComponent<Omi
|
|
|
203
203
|
*/
|
|
204
204
|
step?: number;
|
|
205
205
|
/**
|
|
206
|
-
* Sets the current numeric value
|
|
206
|
+
* Sets the current numeric value. Strings and numbers are accepted for programmatic assignment, but user input updates the value as a string to mirror native input behavior.
|
|
207
207
|
* @default ''
|
|
208
208
|
*/
|
|
209
209
|
value?: string | number | null;
|
|
@@ -66,11 +66,11 @@ export type PInputTextProps = BaseProps & {
|
|
|
66
66
|
*/
|
|
67
67
|
onBlur?: (event: CustomEvent<InputTextBlurEventDetail>) => void;
|
|
68
68
|
/**
|
|
69
|
-
* Emitted when the input loses focus after its value was changed.
|
|
69
|
+
* Emitted when the input loses focus after its value was changed. The component value and native event target value are strings after user input.
|
|
70
70
|
*/
|
|
71
71
|
onChange?: (event: CustomEvent<InputTextChangeEventDetail>) => void;
|
|
72
72
|
/**
|
|
73
|
-
* Emitted on every value change as the user types.
|
|
73
|
+
* Emitted on every value change as the user types. The component value and native event target value are strings.
|
|
74
74
|
*/
|
|
75
75
|
onInput?: (event: CustomEvent<InputTextInputEventDetail>) => void;
|
|
76
76
|
/**
|
|
@@ -98,7 +98,7 @@ export type PInputTextProps = BaseProps & {
|
|
|
98
98
|
*/
|
|
99
99
|
state?: InputTextState;
|
|
100
100
|
/**
|
|
101
|
-
* Sets the current text value
|
|
101
|
+
* Sets the current text value. Numbers are accepted for programmatic assignment, but user input updates the value as a string.
|
|
102
102
|
* @default ''
|
|
103
103
|
*/
|
|
104
104
|
value?: string | number | null;
|
|
@@ -169,11 +169,11 @@ export declare const PInputText: import("react").ForwardRefExoticComponent<Omit<
|
|
|
169
169
|
*/
|
|
170
170
|
onBlur?: (event: CustomEvent<InputTextBlurEventDetail>) => void;
|
|
171
171
|
/**
|
|
172
|
-
* Emitted when the input loses focus after its value was changed.
|
|
172
|
+
* Emitted when the input loses focus after its value was changed. The component value and native event target value are strings after user input.
|
|
173
173
|
*/
|
|
174
174
|
onChange?: (event: CustomEvent<InputTextChangeEventDetail>) => void;
|
|
175
175
|
/**
|
|
176
|
-
* Emitted on every value change as the user types.
|
|
176
|
+
* Emitted on every value change as the user types. The component value and native event target value are strings.
|
|
177
177
|
*/
|
|
178
178
|
onInput?: (event: CustomEvent<InputTextInputEventDetail>) => void;
|
|
179
179
|
/**
|
|
@@ -201,7 +201,7 @@ export declare const PInputText: import("react").ForwardRefExoticComponent<Omit<
|
|
|
201
201
|
*/
|
|
202
202
|
state?: InputTextState;
|
|
203
203
|
/**
|
|
204
|
-
* Sets the current text value
|
|
204
|
+
* Sets the current text value. Numbers are accepted for programmatic assignment, but user input updates the value as a string.
|
|
205
205
|
* @default ''
|
|
206
206
|
*/
|
|
207
207
|
value?: string | number | null;
|
|
@@ -6,7 +6,7 @@ export type PMultiSelectOptionProps = BaseProps & {
|
|
|
6
6
|
*/
|
|
7
7
|
disabled?: boolean;
|
|
8
8
|
/**
|
|
9
|
-
* Sets the value submitted with the form data when
|
|
9
|
+
* Sets the required option value submitted with the form data when selected. Must be a string or number.
|
|
10
10
|
*/
|
|
11
11
|
value: string | number;
|
|
12
12
|
};
|
|
@@ -17,7 +17,7 @@ export declare const PMultiSelectOption: import("react").ForwardRefExoticCompone
|
|
|
17
17
|
*/
|
|
18
18
|
disabled?: boolean;
|
|
19
19
|
/**
|
|
20
|
-
* Sets the value submitted with the form data when
|
|
20
|
+
* Sets the required option value submitted with the form data when selected. Must be a string or number.
|
|
21
21
|
*/
|
|
22
22
|
value: string | number;
|
|
23
23
|
} & {
|
|
@@ -54,7 +54,7 @@ export type PPinCodeProps = BaseProps & {
|
|
|
54
54
|
*/
|
|
55
55
|
onBlur?: (event: CustomEvent<void>) => void;
|
|
56
56
|
/**
|
|
57
|
-
* Emitted when the pin code value changes as the user types, carrying
|
|
57
|
+
* Emitted when the pin code value changes as the user types, carrying `{ value: string; isComplete: boolean }` in the event detail.
|
|
58
58
|
*/
|
|
59
59
|
onChange?: (event: CustomEvent<PinCodeChangeEventDetail>) => void;
|
|
60
60
|
/**
|
|
@@ -73,10 +73,10 @@ export type PPinCodeProps = BaseProps & {
|
|
|
73
73
|
*/
|
|
74
74
|
type?: PinCodeType;
|
|
75
75
|
/**
|
|
76
|
-
* Sets the current concatenated value
|
|
76
|
+
* Sets the current concatenated value. Numbers are accepted for programmatic assignment, but user input updates the value as a string.
|
|
77
77
|
* @default ''
|
|
78
78
|
*/
|
|
79
|
-
value?: string;
|
|
79
|
+
value?: string | number | null;
|
|
80
80
|
};
|
|
81
81
|
export declare const PPinCode: import("react").ForwardRefExoticComponent<Omit<import("react").DOMAttributes<{}>, "onChange" | "onInput" | "onToggle"> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "inputMode" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
|
|
82
82
|
/**
|
|
@@ -132,7 +132,7 @@ export declare const PPinCode: import("react").ForwardRefExoticComponent<Omit<im
|
|
|
132
132
|
*/
|
|
133
133
|
onBlur?: (event: CustomEvent<void>) => void;
|
|
134
134
|
/**
|
|
135
|
-
* Emitted when the pin code value changes as the user types, carrying
|
|
135
|
+
* Emitted when the pin code value changes as the user types, carrying `{ value: string; isComplete: boolean }` in the event detail.
|
|
136
136
|
*/
|
|
137
137
|
onChange?: (event: CustomEvent<PinCodeChangeEventDetail>) => void;
|
|
138
138
|
/**
|
|
@@ -151,10 +151,10 @@ export declare const PPinCode: import("react").ForwardRefExoticComponent<Omit<im
|
|
|
151
151
|
*/
|
|
152
152
|
type?: PinCodeType;
|
|
153
153
|
/**
|
|
154
|
-
* Sets the current concatenated value
|
|
154
|
+
* Sets the current concatenated value. Numbers are accepted for programmatic assignment, but user input updates the value as a string.
|
|
155
155
|
* @default ''
|
|
156
156
|
*/
|
|
157
|
-
value?: string;
|
|
157
|
+
value?: string | number | null;
|
|
158
158
|
} & {
|
|
159
159
|
children?: import("react").ReactNode | undefined;
|
|
160
160
|
} & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -15,9 +15,9 @@ export type PRadioGroupOptionProps = BaseProps & {
|
|
|
15
15
|
*/
|
|
16
16
|
loading?: boolean;
|
|
17
17
|
/**
|
|
18
|
-
* Sets the
|
|
18
|
+
* 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.
|
|
19
19
|
*/
|
|
20
|
-
value
|
|
20
|
+
value: string | number;
|
|
21
21
|
};
|
|
22
22
|
export declare const PRadioGroupOption: import("react").ForwardRefExoticComponent<Omit<import("react").DOMAttributes<{}>, "onChange" | "onInput" | "onToggle"> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "inputMode" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
|
|
23
23
|
/**
|
|
@@ -35,9 +35,9 @@ export declare const PRadioGroupOption: import("react").ForwardRefExoticComponen
|
|
|
35
35
|
*/
|
|
36
36
|
loading?: boolean;
|
|
37
37
|
/**
|
|
38
|
-
* Sets the
|
|
38
|
+
* 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.
|
|
39
39
|
*/
|
|
40
|
-
value
|
|
40
|
+
value: string | number;
|
|
41
41
|
} & {
|
|
42
42
|
children?: import("react").ReactNode | undefined;
|
|
43
43
|
} & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -68,10 +68,9 @@ export type PRadioGroupProps = BaseProps & {
|
|
|
68
68
|
*/
|
|
69
69
|
state?: RadioGroupState;
|
|
70
70
|
/**
|
|
71
|
-
* Sets the currently selected value that pre-selects the matching radio option and reflects user changes.
|
|
72
|
-
* @default ''
|
|
71
|
+
* 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.
|
|
73
72
|
*/
|
|
74
|
-
value?: string;
|
|
73
|
+
value?: string | number | null;
|
|
75
74
|
};
|
|
76
75
|
export declare const PRadioGroup: import("react").ForwardRefExoticComponent<Omit<import("react").DOMAttributes<{}>, "onChange" | "onInput" | "onToggle"> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "inputMode" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
|
|
77
76
|
/**
|
|
@@ -141,10 +140,9 @@ export declare const PRadioGroup: import("react").ForwardRefExoticComponent<Omit
|
|
|
141
140
|
*/
|
|
142
141
|
state?: RadioGroupState;
|
|
143
142
|
/**
|
|
144
|
-
* Sets the currently selected value that pre-selects the matching radio option and reflects user changes.
|
|
145
|
-
* @default ''
|
|
143
|
+
* 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.
|
|
146
144
|
*/
|
|
147
|
-
value?: string;
|
|
145
|
+
value?: string | number | null;
|
|
148
146
|
} & {
|
|
149
147
|
children?: import("react").ReactNode | undefined;
|
|
150
148
|
} & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -68,9 +68,9 @@ export type PSegmentedControlProps = BaseProps & {
|
|
|
68
68
|
*/
|
|
69
69
|
state?: SegmentedControlState;
|
|
70
70
|
/**
|
|
71
|
-
* Sets the currently selected item's value and pre-selects the matching option when the component renders.
|
|
71
|
+
* 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.
|
|
72
72
|
*/
|
|
73
|
-
value?: string | number;
|
|
73
|
+
value?: string | number | null;
|
|
74
74
|
};
|
|
75
75
|
export declare const PSegmentedControl: import("react").ForwardRefExoticComponent<Omit<import("react").DOMAttributes<{}>, "onChange" | "onInput" | "onToggle"> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "inputMode" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
|
|
76
76
|
/**
|
|
@@ -140,9 +140,9 @@ export declare const PSegmentedControl: import("react").ForwardRefExoticComponen
|
|
|
140
140
|
*/
|
|
141
141
|
state?: SegmentedControlState;
|
|
142
142
|
/**
|
|
143
|
-
* Sets the currently selected item's value and pre-selects the matching option when the component renders.
|
|
143
|
+
* 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.
|
|
144
144
|
*/
|
|
145
|
-
value?: string | number;
|
|
145
|
+
value?: string | number | null;
|
|
146
146
|
} & {
|
|
147
147
|
children?: import("react").ReactNode | undefined;
|
|
148
148
|
} & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -10,7 +10,7 @@ export type PWordmarkProps = BaseProps & {
|
|
|
10
10
|
*/
|
|
11
11
|
href?: string;
|
|
12
12
|
/**
|
|
13
|
-
* Sets the display size of the Porsche wordmark SVG using predefined PDS size tokens
|
|
13
|
+
* Sets the display size of the Porsche wordmark SVG using predefined PDS size tokens.
|
|
14
14
|
* @default 'small'
|
|
15
15
|
*/
|
|
16
16
|
size?: WordmarkSize;
|
|
@@ -30,7 +30,7 @@ export declare const PWordmark: import("react").ForwardRefExoticComponent<Omit<i
|
|
|
30
30
|
*/
|
|
31
31
|
href?: string;
|
|
32
32
|
/**
|
|
33
|
-
* Sets the display size of the Porsche wordmark SVG using predefined PDS size tokens
|
|
33
|
+
* Sets the display size of the Porsche wordmark SVG using predefined PDS size tokens.
|
|
34
34
|
* @default 'small'
|
|
35
35
|
*/
|
|
36
36
|
size?: WordmarkSize;
|
|
@@ -16,7 +16,10 @@ export declare class DSRCarousel extends Component<any> {
|
|
|
16
16
|
private btnPrev;
|
|
17
17
|
private btnNext;
|
|
18
18
|
private paginationEl;
|
|
19
|
+
private slideStatusEl;
|
|
19
20
|
private slides;
|
|
21
|
+
/** Skips the next live-region update when navigation was caused by focusing a slide. */
|
|
22
|
+
private suppressNextStatusAnnounce;
|
|
20
23
|
private get splideSlides();
|
|
21
24
|
private get hasNavigation();
|
|
22
25
|
render(): JSX.Element;
|
|
@@ -14,6 +14,7 @@ export declare class DSRPinCode extends Component<any> {
|
|
|
14
14
|
private initialLoading;
|
|
15
15
|
private defaultValue;
|
|
16
16
|
private inputElements;
|
|
17
|
+
private get parsedValue();
|
|
17
18
|
formResetCallback(): void;
|
|
18
19
|
formDisabledCallback(): void;
|
|
19
20
|
formStateRestoreCallback(): void;
|
|
@@ -14,6 +14,7 @@ export declare class DSRRadioGroup extends Component<any> {
|
|
|
14
14
|
private defaultValue;
|
|
15
15
|
private radioGroupOptions;
|
|
16
16
|
private preventOptionUpdate;
|
|
17
|
+
setFormValue(): void;
|
|
17
18
|
formResetCallback(): void;
|
|
18
19
|
formDisabledCallback(): void;
|
|
19
20
|
formStateRestoreCallback(): void;
|
|
@@ -16,6 +16,7 @@ export declare class DSRSelect extends Component<any> {
|
|
|
16
16
|
host: HTMLElement;
|
|
17
17
|
private isOpen;
|
|
18
18
|
private hasFilterResults;
|
|
19
|
+
private filterStatusMessage;
|
|
19
20
|
private selectedOption;
|
|
20
21
|
private internals;
|
|
21
22
|
private defaultValue;
|
|
@@ -32,7 +33,6 @@ export declare class DSRSelect extends Component<any> {
|
|
|
32
33
|
private hasNativePopoverSupport;
|
|
33
34
|
private cleanUpAutoUpdate;
|
|
34
35
|
private currentlyHighlightedOption;
|
|
35
|
-
private get hasFilter();
|
|
36
36
|
setFormValue(): void;
|
|
37
37
|
formDisabledCallback(): void;
|
|
38
38
|
formStateRestoreCallback(): void;
|