@porsche-design-system/components-react 3.32.1-rc.0 → 3.32.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -14,6 +14,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
14
14
 
15
15
  ## [Unreleased]
16
16
 
17
+ ## [3.32.1] - 2026-02-24
18
+
17
19
  ## [3.32.1-rc.0] - 2026-02-20
18
20
 
19
21
  ### Fixed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@porsche-design-system/components-react",
3
- "version": "3.32.1-rc.0",
3
+ "version": "3.32.1",
4
4
  "description": "Porsche Design System is a component library designed to help developers create the best experience for software or services distributed by Dr. Ing. h.c. F. Porsche AG.",
5
5
  "keywords": [
6
6
  "porsche",
@@ -17,7 +17,7 @@
17
17
  "license": "SEE LICENSE IN LICENSE",
18
18
  "homepage": "https://designsystem.porsche.com",
19
19
  "dependencies": {
20
- "@porsche-design-system/components-js": "3.32.1-rc.0"
20
+ "@porsche-design-system/components-js": "3.32.1"
21
21
  },
22
22
  "peerDependencies": {
23
23
  "ag-grid-community": ">= 35.0.0 <36.0.0",
@@ -3643,7 +3643,7 @@ const hasShowPickerSupport = () => (hasDocument &&
3643
3643
  'showPicker' in HTMLInputElement.prototype &&
3644
3644
  CSS.supports('selector(::-webkit-calendar-picker-indicator)'));
3645
3645
 
3646
- const prefix = `[Porsche Design System v${"3.32.1-rc.0"}]` // this part isn't covered by unit tests
3646
+ const prefix = `[Porsche Design System v${"3.32.1"}]` // this part isn't covered by unit tests
3647
3647
  ;
3648
3648
  const consoleError = (...messages) => {
3649
3649
  console.error(prefix, ...messages); // eslint-disable-line no-console
@@ -6277,6 +6277,7 @@ const getFunctionalComponentInputBaseStyles = (disabled, loading, hideLabel, sta
6277
6277
  [`${cssVarButtonPurePadding}`]: `calc(1px * ${buttonCompensation})`,
6278
6278
  [`${cssVarButtonPureMargin}`]: `calc(-1px * ${buttonCompensation})`,
6279
6279
  }),
6280
+ // Alignment and direction of placeholder is set always to the right in RTL mode, because it is expected to have rtl language as placeholder value
6280
6281
  '&(:dir(rtl)) input::placeholder': {
6281
6282
  direction: 'rtl',
6282
6283
  textAlign: 'end',
@@ -8231,7 +8232,11 @@ const getComponentCss$X = (disabled, loading, hideLabel, state, compact, readOnl
8231
8232
  '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
8232
8233
  WebkitAppearance: 'none',
8233
8234
  },
8234
- }, {
8235
+ },
8236
+ // Overwrites direction to ltr for rtl languages to prevent issues with the email input, e.g. cursor jumping to the
8237
+ // end of the input when typing in the middle of the text. This is necessary because email addresses are assumed
8238
+ // to be always written in ltr direction and the input needs to accommodate that, even in rtl contexts.
8239
+ {
8235
8240
  '&(:dir(rtl)) .wrapper, &(:dir(rtl)) input:placeholder-shown': {
8236
8241
  direction: 'ltr',
8237
8242
  },
@@ -8370,7 +8375,11 @@ const getComponentCss$S = (disabled, loading, hideLabel, state, compact, readOnl
8370
8375
  '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
8371
8376
  WebkitAppearance: 'none',
8372
8377
  },
8373
- }, {
8378
+ },
8379
+ // Overwrites direction to ltr for rtl languages to prevent issues with the tel input, e.g. cursor jumping to the
8380
+ // end of the input when typing in the middle of the text. This is necessary because tel values are assumed
8381
+ // to be always written in ltr direction and the input needs to accommodate that, even in rtl contexts.
8382
+ {
8374
8383
  '&(:dir(rtl)) .wrapper, &(:dir(rtl)) input:placeholder-shown': {
8375
8384
  direction: 'ltr',
8376
8385
  },
@@ -8455,7 +8464,11 @@ const getComponentCss$P = (disabled, loading, hideLabel, state, compact, readOnl
8455
8464
  '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
8456
8465
  WebkitAppearance: 'none',
8457
8466
  },
8458
- }, {
8467
+ },
8468
+ // Overwrites direction to ltr for rtl languages to prevent issues with the url input, e.g. cursor jumping to the
8469
+ // end of the input when typing in the middle of the text. This is necessary because url addresses are assumed
8470
+ // to be always written in ltr direction and the input needs to accommodate that, even in rtl contexts.
8471
+ {
8459
8472
  '&(:dir(rtl)) .wrapper, &(:dir(rtl)) input:placeholder-shown': {
8460
8473
  direction: 'ltr',
8461
8474
  },
@@ -3446,7 +3446,7 @@ const hasShowPickerSupport = () => (hasDocument &&
3446
3446
  'showPicker' in HTMLInputElement.prototype &&
3447
3447
  CSS.supports('selector(::-webkit-calendar-picker-indicator)'));
3448
3448
 
3449
- const prefix = `[Porsche Design System v${"3.32.1-rc.0"}]` // this part isn't covered by unit tests
3449
+ const prefix = `[Porsche Design System v${"3.32.1"}]` // this part isn't covered by unit tests
3450
3450
  ;
3451
3451
  const consoleError$1 = (...messages) => {
3452
3452
  console.error(prefix, ...messages); // eslint-disable-line no-console
@@ -21,7 +21,8 @@ id, label: label$1, description, loading, initialLoading, required, disabled, st
21
21
  // refElement,
22
22
  start, end, }) => {
23
23
  const { namedSlotChildren } = splitChildren.splitChildren(children);
24
- return (jsxRuntime.jsxs("div", { className: "root", children: [jsxRuntime.jsx(label.Label, { hasLabel: !!label$1 || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0, hasDescription: !!description || namedSlotChildren.filter(({ props: { slot } }) => slot === 'description').length > 0, host: null, label: label$1, description: description, htmlFor: id, isRequired: required, isLoading: loading, isDisabled: disabled }), jsxRuntime.jsxs("div", { className: "wrapper", children: [jsxRuntime.jsx("slot", { name: "start" }), start, jsxRuntime.jsx("input", { "aria-describedby": loading ? loadingMessage.loadingId : `${utilsEntry.descriptionId} ${stateMessage.messageId}`, "aria-invalid": state === 'error' ? 'true' : null, "aria-disabled": disabled || loading ? 'true' : null, "aria-readonly": readOnly ? 'true' : null, id: id, name: name, form: form, type: type, required: required, placeholder: placeholder || null, maxLength: maxLength, minLength: minLength, spellCheck: spellCheck, max: max, min: min, step: step, defaultValue: value, readOnly: readOnly, autoComplete: autoComplete, disabled: disabled, pattern: pattern, multiple: multiple, dir: "auto" }), end, jsxRuntime.jsx("slot", { name: "end" }), loading && jsxRuntime.jsx(spinner_wrapper.PSpinner, { className: "spinner", size: "inherit", theme: theme, "aria-hidden": "true" })] }), jsxRuntime.jsx(stateMessage.StateMessage, { hasMessage: (message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(state), state: state, message: message, theme: theme, host: null }), jsxRuntime.jsx(loadingMessage.LoadingMessage, { loading: loading, initialLoading: initialLoading })] }));
24
+ return (jsxRuntime.jsxs("div", { className: "root", children: [jsxRuntime.jsx(label.Label, { hasLabel: !!label$1 || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0, hasDescription: !!description || namedSlotChildren.filter(({ props: { slot } }) => slot === 'description').length > 0, host: null, label: label$1, description: description, htmlFor: id, isRequired: required, isLoading: loading, isDisabled: disabled }), jsxRuntime.jsxs("div", { className: "wrapper", children: [jsxRuntime.jsx("slot", { name: "start" }), start, jsxRuntime.jsx("input", { "aria-describedby": loading ? loadingMessage.loadingId : `${utilsEntry.descriptionId} ${stateMessage.messageId}`, "aria-invalid": state === 'error' ? 'true' : null, "aria-disabled": disabled || loading ? 'true' : null, "aria-readonly": readOnly ? 'true' : null, id: id, name: name, form: form, type: type, required: required, placeholder: placeholder || null, maxLength: maxLength, minLength: minLength, spellCheck: spellCheck, max: max, min: min, step: step, defaultValue: value, readOnly: readOnly, autoComplete: autoComplete, disabled: disabled, pattern: pattern, multiple: multiple, dir: "auto" // This is the default: let the browser decide in which direction the value should be placed.
25
+ }), end, jsxRuntime.jsx("slot", { name: "end" }), loading && jsxRuntime.jsx(spinner_wrapper.PSpinner, { className: "spinner", size: "inherit", theme: theme, "aria-hidden": "true" })] }), jsxRuntime.jsx(stateMessage.StateMessage, { hasMessage: (message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(state), state: state, message: message, theme: theme, host: null }), jsxRuntime.jsx(loadingMessage.LoadingMessage, { loading: loading, initialLoading: initialLoading })] }));
25
26
  };
26
27
 
27
28
  exports.InputBase = InputBase;
@@ -3641,7 +3641,7 @@ const hasShowPickerSupport = () => (hasDocument &&
3641
3641
  'showPicker' in HTMLInputElement.prototype &&
3642
3642
  CSS.supports('selector(::-webkit-calendar-picker-indicator)'));
3643
3643
 
3644
- const prefix = `[Porsche Design System v${"3.32.1-rc.0"}]` // this part isn't covered by unit tests
3644
+ const prefix = `[Porsche Design System v${"3.32.1"}]` // this part isn't covered by unit tests
3645
3645
  ;
3646
3646
  const consoleError = (...messages) => {
3647
3647
  console.error(prefix, ...messages); // eslint-disable-line no-console
@@ -6275,6 +6275,7 @@ const getFunctionalComponentInputBaseStyles = (disabled, loading, hideLabel, sta
6275
6275
  [`${cssVarButtonPurePadding}`]: `calc(1px * ${buttonCompensation})`,
6276
6276
  [`${cssVarButtonPureMargin}`]: `calc(-1px * ${buttonCompensation})`,
6277
6277
  }),
6278
+ // Alignment and direction of placeholder is set always to the right in RTL mode, because it is expected to have rtl language as placeholder value
6278
6279
  '&(:dir(rtl)) input::placeholder': {
6279
6280
  direction: 'rtl',
6280
6281
  textAlign: 'end',
@@ -8229,7 +8230,11 @@ const getComponentCss$X = (disabled, loading, hideLabel, state, compact, readOnl
8229
8230
  '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
8230
8231
  WebkitAppearance: 'none',
8231
8232
  },
8232
- }, {
8233
+ },
8234
+ // Overwrites direction to ltr for rtl languages to prevent issues with the email input, e.g. cursor jumping to the
8235
+ // end of the input when typing in the middle of the text. This is necessary because email addresses are assumed
8236
+ // to be always written in ltr direction and the input needs to accommodate that, even in rtl contexts.
8237
+ {
8233
8238
  '&(:dir(rtl)) .wrapper, &(:dir(rtl)) input:placeholder-shown': {
8234
8239
  direction: 'ltr',
8235
8240
  },
@@ -8368,7 +8373,11 @@ const getComponentCss$S = (disabled, loading, hideLabel, state, compact, readOnl
8368
8373
  '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
8369
8374
  WebkitAppearance: 'none',
8370
8375
  },
8371
- }, {
8376
+ },
8377
+ // Overwrites direction to ltr for rtl languages to prevent issues with the tel input, e.g. cursor jumping to the
8378
+ // end of the input when typing in the middle of the text. This is necessary because tel values are assumed
8379
+ // to be always written in ltr direction and the input needs to accommodate that, even in rtl contexts.
8380
+ {
8372
8381
  '&(:dir(rtl)) .wrapper, &(:dir(rtl)) input:placeholder-shown': {
8373
8382
  direction: 'ltr',
8374
8383
  },
@@ -8453,7 +8462,11 @@ const getComponentCss$P = (disabled, loading, hideLabel, state, compact, readOnl
8453
8462
  '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
8454
8463
  WebkitAppearance: 'none',
8455
8464
  },
8456
- }, {
8465
+ },
8466
+ // Overwrites direction to ltr for rtl languages to prevent issues with the url input, e.g. cursor jumping to the
8467
+ // end of the input when typing in the middle of the text. This is necessary because url addresses are assumed
8468
+ // to be always written in ltr direction and the input needs to accommodate that, even in rtl contexts.
8469
+ {
8457
8470
  '&(:dir(rtl)) .wrapper, &(:dir(rtl)) input:placeholder-shown': {
8458
8471
  direction: 'ltr',
8459
8472
  },
@@ -3444,7 +3444,7 @@ const hasShowPickerSupport = () => (hasDocument &&
3444
3444
  'showPicker' in HTMLInputElement.prototype &&
3445
3445
  CSS.supports('selector(::-webkit-calendar-picker-indicator)'));
3446
3446
 
3447
- const prefix = `[Porsche Design System v${"3.32.1-rc.0"}]` // this part isn't covered by unit tests
3447
+ const prefix = `[Porsche Design System v${"3.32.1"}]` // this part isn't covered by unit tests
3448
3448
  ;
3449
3449
  const consoleError$1 = (...messages) => {
3450
3450
  console.error(prefix, ...messages); // eslint-disable-line no-console
@@ -19,7 +19,8 @@ id, label, description, loading, initialLoading, required, disabled, state, mess
19
19
  // refElement,
20
20
  start, end, }) => {
21
21
  const { namedSlotChildren } = splitChildren(children);
22
- return (jsxs("div", { className: "root", children: [jsx(Label, { hasLabel: !!label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0, hasDescription: !!description || namedSlotChildren.filter(({ props: { slot } }) => slot === 'description').length > 0, host: null, label: label, description: description, htmlFor: id, isRequired: required, isLoading: loading, isDisabled: disabled }), jsxs("div", { className: "wrapper", children: [jsx("slot", { name: "start" }), start, jsx("input", { "aria-describedby": loading ? loadingId : `${descriptionId} ${messageId}`, "aria-invalid": state === 'error' ? 'true' : null, "aria-disabled": disabled || loading ? 'true' : null, "aria-readonly": readOnly ? 'true' : null, id: id, name: name, form: form, type: type, required: required, placeholder: placeholder || null, maxLength: maxLength, minLength: minLength, spellCheck: spellCheck, max: max, min: min, step: step, defaultValue: value, readOnly: readOnly, autoComplete: autoComplete, disabled: disabled, pattern: pattern, multiple: multiple, dir: "auto" }), end, jsx("slot", { name: "end" }), loading && jsx(PSpinner, { className: "spinner", size: "inherit", theme: theme, "aria-hidden": "true" })] }), jsx(StateMessage, { hasMessage: (message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(state), state: state, message: message, theme: theme, host: null }), jsx(LoadingMessage, { loading: loading, initialLoading: initialLoading })] }));
22
+ return (jsxs("div", { className: "root", children: [jsx(Label, { hasLabel: !!label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0, hasDescription: !!description || namedSlotChildren.filter(({ props: { slot } }) => slot === 'description').length > 0, host: null, label: label, description: description, htmlFor: id, isRequired: required, isLoading: loading, isDisabled: disabled }), jsxs("div", { className: "wrapper", children: [jsx("slot", { name: "start" }), start, jsx("input", { "aria-describedby": loading ? loadingId : `${descriptionId} ${messageId}`, "aria-invalid": state === 'error' ? 'true' : null, "aria-disabled": disabled || loading ? 'true' : null, "aria-readonly": readOnly ? 'true' : null, id: id, name: name, form: form, type: type, required: required, placeholder: placeholder || null, maxLength: maxLength, minLength: minLength, spellCheck: spellCheck, max: max, min: min, step: step, defaultValue: value, readOnly: readOnly, autoComplete: autoComplete, disabled: disabled, pattern: pattern, multiple: multiple, dir: "auto" // This is the default: let the browser decide in which direction the value should be placed.
23
+ }), end, jsx("slot", { name: "end" }), loading && jsx(PSpinner, { className: "spinner", size: "inherit", theme: theme, "aria-hidden": "true" })] }), jsx(StateMessage, { hasMessage: (message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(state), state: state, message: message, theme: theme, host: null }), jsx(LoadingMessage, { loading: loading, initialLoading: initialLoading })] }));
23
24
  };
24
25
 
25
26
  export { InputBase };