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

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,13 @@ 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-rc.0] - 2026-02-20
18
+
19
+ ### Fixed
20
+
21
+ - `Input Email`, `Input Password`, `Input Tel`, `Pin Code`: optimize input direction and behavior in RTL mode
22
+ ([#4209](https://github.com/porsche-design-system/porsche-design-system/pull/4209))
23
+
17
24
  ## [3.32.0] - 2026-02-04
18
25
 
19
26
  ## [3.32.0-rc.2] - 2026-02-03
@@ -23,11 +30,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
23
30
  - `Checkbox`, `Input-*`, `Multi-Select`, `Pin Code`, `Radio Button Group`, `Segmented-Control`, `Select`, `Textarea`:
24
31
  New slot `label-after` to add custom content (e.g. `Popover`) after the `label` element
25
32
  ([#4181](https://github.com/porsche-design-system/porsche-design-system/pull/4181))
26
- - `Angular`: Bumped peer dependency to support Angular new major version 21 ([#4178](https://github.com/porsche-design-system/porsche-design-system/pull/4178))
33
+ - `Angular`: Bumped peer dependency to support Angular new major version 21
34
+ ([#4178](https://github.com/porsche-design-system/porsche-design-system/pull/4178))
27
35
  - `Carousel`:
28
- - `width` prop now supports `wide` and `full` values ([#4180](https://github.com/porsche-design-system/porsche-design-system/pull/4180))
29
- - `--p-carousel-px` CSS custom property introduced to control horizontal padding (when used, the `width` prop has no effect anymore)
36
+ - `width` prop now supports `wide` and `full` values
30
37
  ([#4180](https://github.com/porsche-design-system/porsche-design-system/pull/4180))
38
+ - `--p-carousel-px` CSS custom property introduced to control horizontal padding (when used, the `width` prop has no
39
+ effect anymore) ([#4180](https://github.com/porsche-design-system/porsche-design-system/pull/4180))
31
40
 
32
41
  ## [3.32.0-rc.1] - 2026-01-12
33
42
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@porsche-design-system/components-react",
3
- "version": "3.32.0",
3
+ "version": "3.32.1-rc.0",
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.0"
20
+ "@porsche-design-system/components-js": "3.32.1-rc.0"
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.0"}]` // this part isn't covered by unit tests
3646
+ const prefix = `[Porsche Design System v${"3.32.1-rc.0"}]` // 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
@@ -6249,7 +6249,7 @@ const cssVarButtonPurePadding = '--ref-p-input-slotted-padding';
6249
6249
  * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
6250
6250
  */
6251
6251
  const cssVarButtonPureMargin = '--ref-p-input-slotted-margin';
6252
- const getFunctionalComponentInputBaseStyles = (disabled, loading, hideLabel, state, compact, readOnly, theme, additionalInputJssStyle) => {
6252
+ const getFunctionalComponentInputBaseStyles = (disabled, loading, hideLabel, state, compact, readOnly, theme, additionalInputJssStyle, additionalHostJssStyle) => {
6253
6253
  const scalingVar = getScalingVar$4(compact);
6254
6254
  const paddingBlock = `max(2px, ${formElementPaddingVertical} * ${scalingVar})`;
6255
6255
  const paddingInline = `max(2px, ${formElementPaddingHorizontal} * ${scalingVar})`;
@@ -6277,6 +6277,11 @@ const getFunctionalComponentInputBaseStyles = (disabled, loading, hideLabel, sta
6277
6277
  [`${cssVarButtonPurePadding}`]: `calc(1px * ${buttonCompensation})`,
6278
6278
  [`${cssVarButtonPureMargin}`]: `calc(-1px * ${buttonCompensation})`,
6279
6279
  }),
6280
+ '&(:dir(rtl)) input::placeholder': {
6281
+ direction: 'rtl',
6282
+ textAlign: 'end',
6283
+ },
6284
+ ...additionalHostJssStyle,
6280
6285
  },
6281
6286
  ...getFunctionalComponentLabelAfterStyles(disabled),
6282
6287
  ...preventFoucOfNestedElementsStyles,
@@ -8226,6 +8231,10 @@ const getComponentCss$X = (disabled, loading, hideLabel, state, compact, readOnl
8226
8231
  '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
8227
8232
  WebkitAppearance: 'none',
8228
8233
  },
8234
+ }, {
8235
+ '&(:dir(rtl)) .wrapper, &(:dir(rtl)) input:placeholder-shown': {
8236
+ direction: 'ltr',
8237
+ },
8229
8238
  }),
8230
8239
  'sr-only': getHiddenTextJssStyle(),
8231
8240
  });
@@ -8361,6 +8370,10 @@ const getComponentCss$S = (disabled, loading, hideLabel, state, compact, readOnl
8361
8370
  '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
8362
8371
  WebkitAppearance: 'none',
8363
8372
  },
8373
+ }, {
8374
+ '&(:dir(rtl)) .wrapper, &(:dir(rtl)) input:placeholder-shown': {
8375
+ direction: 'ltr',
8376
+ },
8364
8377
  }),
8365
8378
  'sr-only': getHiddenTextJssStyle(),
8366
8379
  });
@@ -8442,6 +8455,10 @@ const getComponentCss$P = (disabled, loading, hideLabel, state, compact, readOnl
8442
8455
  '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
8443
8456
  WebkitAppearance: 'none',
8444
8457
  },
8458
+ }, {
8459
+ '&(:dir(rtl)) .wrapper, &(:dir(rtl)) input:placeholder-shown': {
8460
+ direction: 'ltr',
8461
+ },
8445
8462
  }),
8446
8463
  'sr-only': getHiddenTextJssStyle(),
8447
8464
  });
@@ -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.0"}]` // this part isn't covered by unit tests
3449
+ const prefix = `[Porsche Design System v${"3.32.1-rc.0"}]` // 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,7 @@ 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, maxLength: maxLength, minLength: minLength, spellCheck: spellCheck, max: max, min: min, step: step, defaultValue: value, readOnly: readOnly, autoComplete: autoComplete, disabled: disabled, pattern: pattern, multiple: multiple }), 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" }), 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
25
  };
26
26
 
27
27
  exports.InputBase = InputBase;
@@ -42,7 +42,7 @@ class DSRPinCode extends react.Component {
42
42
  this.inputElements = [];
43
43
  const currentInputId = 'current-input';
44
44
  const style = minifyCss.minifyCss(stylesEntry.getPinCodeCss(this.props.hideLabel, this.props.state, this.props.disabled, this.props.loading, this.props.length, this.props.compact, this.props.theme));
45
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxRuntime.jsxs("div", { className: "root", children: [jsxRuntime.jsx(label.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 }), jsxRuntime.jsxs("div", { className: "wrapper", children: [Array.from(new Array(this.props.length), (_, index) => (jsxRuntime.jsx("input", { name: this.props.name, form: this.props.form, ...(utilsEntry.isCurrentInput(index, this.props.value, this.props.length) && { id: currentInputId }), type: this.props.type === 'number' ? 'text' : this.props.type, "aria-label": `${index + 1}-${this.props.length}`, "aria-describedby": `${utilsEntry.labelId} ${utilsEntry.descriptionId} ${stateMessage.messageId}`, "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
45
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxRuntime.jsxs("div", { className: "root", children: [jsxRuntime.jsx(label.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 }), jsxRuntime.jsxs("div", { className: "wrapper", dir: "ltr", children: [Array.from(new Array(this.props.length), (_, index) => (jsxRuntime.jsx("input", { name: this.props.name, form: this.props.form, ...(utilsEntry.isCurrentInput(index, this.props.value, this.props.length) && { id: currentInputId }), type: this.props.type === 'number' ? 'text' : this.props.type, "aria-label": `${index + 1}-${this.props.length}`, "aria-describedby": `${utilsEntry.labelId} ${utilsEntry.descriptionId} ${stateMessage.messageId}`, "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
46
46
  , defaultValue: this.props.value[index] === ' ' ? null : this.props.value[index], disabled: this.props.disabled, required: this.props.required, onBlur: this.props.onInputBlur }, index))), this.props.loading && (jsxRuntime.jsx(spinner_wrapper.PSpinner, { className: "spinner", size: "inherit", theme: this.props.theme, "aria-hidden": "true" }))] }), jsxRuntime.jsx(stateMessage.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, theme: this.props.theme, host: null }), jsxRuntime.jsx(loadingMessage.LoadingMessage, { loading: this.props.loading, initialLoading: this.props.initialLoading })] })] }), this.props.children] }));
47
47
  }
48
48
  }
@@ -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.0"}]` // this part isn't covered by unit tests
3644
+ const prefix = `[Porsche Design System v${"3.32.1-rc.0"}]` // 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
@@ -6247,7 +6247,7 @@ const cssVarButtonPurePadding = '--ref-p-input-slotted-padding';
6247
6247
  * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
6248
6248
  */
6249
6249
  const cssVarButtonPureMargin = '--ref-p-input-slotted-margin';
6250
- const getFunctionalComponentInputBaseStyles = (disabled, loading, hideLabel, state, compact, readOnly, theme, additionalInputJssStyle) => {
6250
+ const getFunctionalComponentInputBaseStyles = (disabled, loading, hideLabel, state, compact, readOnly, theme, additionalInputJssStyle, additionalHostJssStyle) => {
6251
6251
  const scalingVar = getScalingVar$4(compact);
6252
6252
  const paddingBlock = `max(2px, ${formElementPaddingVertical} * ${scalingVar})`;
6253
6253
  const paddingInline = `max(2px, ${formElementPaddingHorizontal} * ${scalingVar})`;
@@ -6275,6 +6275,11 @@ const getFunctionalComponentInputBaseStyles = (disabled, loading, hideLabel, sta
6275
6275
  [`${cssVarButtonPurePadding}`]: `calc(1px * ${buttonCompensation})`,
6276
6276
  [`${cssVarButtonPureMargin}`]: `calc(-1px * ${buttonCompensation})`,
6277
6277
  }),
6278
+ '&(:dir(rtl)) input::placeholder': {
6279
+ direction: 'rtl',
6280
+ textAlign: 'end',
6281
+ },
6282
+ ...additionalHostJssStyle,
6278
6283
  },
6279
6284
  ...getFunctionalComponentLabelAfterStyles(disabled),
6280
6285
  ...preventFoucOfNestedElementsStyles,
@@ -8224,6 +8229,10 @@ const getComponentCss$X = (disabled, loading, hideLabel, state, compact, readOnl
8224
8229
  '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
8225
8230
  WebkitAppearance: 'none',
8226
8231
  },
8232
+ }, {
8233
+ '&(:dir(rtl)) .wrapper, &(:dir(rtl)) input:placeholder-shown': {
8234
+ direction: 'ltr',
8235
+ },
8227
8236
  }),
8228
8237
  'sr-only': getHiddenTextJssStyle(),
8229
8238
  });
@@ -8359,6 +8368,10 @@ const getComponentCss$S = (disabled, loading, hideLabel, state, compact, readOnl
8359
8368
  '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
8360
8369
  WebkitAppearance: 'none',
8361
8370
  },
8371
+ }, {
8372
+ '&(:dir(rtl)) .wrapper, &(:dir(rtl)) input:placeholder-shown': {
8373
+ direction: 'ltr',
8374
+ },
8362
8375
  }),
8363
8376
  'sr-only': getHiddenTextJssStyle(),
8364
8377
  });
@@ -8440,6 +8453,10 @@ const getComponentCss$P = (disabled, loading, hideLabel, state, compact, readOnl
8440
8453
  '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
8441
8454
  WebkitAppearance: 'none',
8442
8455
  },
8456
+ }, {
8457
+ '&(:dir(rtl)) .wrapper, &(:dir(rtl)) input:placeholder-shown': {
8458
+ direction: 'ltr',
8459
+ },
8443
8460
  }),
8444
8461
  'sr-only': getHiddenTextJssStyle(),
8445
8462
  });
@@ -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.0"}]` // this part isn't covered by unit tests
3447
+ const prefix = `[Porsche Design System v${"3.32.1-rc.0"}]` // 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,7 @@ 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, maxLength: maxLength, minLength: minLength, spellCheck: spellCheck, max: max, min: min, step: step, defaultValue: value, readOnly: readOnly, autoComplete: autoComplete, disabled: disabled, pattern: pattern, multiple: multiple }), 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" }), 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
23
  };
24
24
 
25
25
  export { InputBase };
@@ -40,7 +40,7 @@ class DSRPinCode extends Component {
40
40
  this.inputElements = [];
41
41
  const currentInputId = 'current-input';
42
42
  const style = minifyCss(getComponentCss$B(this.props.hideLabel, this.props.state, this.props.disabled, this.props.loading, this.props.length, this.props.compact, this.props.theme));
43
- 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: currentInputId, isRequired: this.props.required, isLoading: this.props.loading, isDisabled: this.props.disabled }), jsxs("div", { className: "wrapper", children: [Array.from(new Array(this.props.length), (_, index) => (jsx("input", { name: this.props.name, form: this.props.form, ...(isCurrentInput(index, this.props.value, this.props.length) && { id: currentInputId }), type: this.props.type === 'number' ? 'text' : this.props.type, "aria-label": `${index + 1}-${this.props.length}`, "aria-describedby": `${labelId} ${descriptionId} ${messageId}`, "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
43
+ 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: 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.props.value, this.props.length) && { id: currentInputId }), type: this.props.type === 'number' ? 'text' : this.props.type, "aria-label": `${index + 1}-${this.props.length}`, "aria-describedby": `${labelId} ${descriptionId} ${messageId}`, "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
44
44
  , defaultValue: this.props.value[index] === ' ' ? null : this.props.value[index], disabled: this.props.disabled, required: this.props.required, onBlur: this.props.onInputBlur }, index))), this.props.loading && (jsx(PSpinner, { className: "spinner", size: "inherit", theme: this.props.theme, "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, theme: this.props.theme, host: null }), jsx(LoadingMessage, { loading: this.props.loading, initialLoading: this.props.initialLoading })] })] }), this.props.children] }));
45
45
  }
46
46
  }