@porsche-design-system/components-react 4.2.0-rc.0 → 4.2.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.
Files changed (240) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/cjs/lib/components/accordion.wrapper.cjs +3 -3
  3. package/cjs/lib/components/ai-tag.wrapper.cjs +26 -0
  4. package/cjs/public-api.cjs +2 -0
  5. package/esm/BaseProps.d.ts +1 -1
  6. package/esm/lib/components/accordion.wrapper.d.ts +12 -2
  7. package/esm/lib/components/accordion.wrapper.mjs +3 -3
  8. package/esm/lib/components/ai-tag.wrapper.d.ts +26 -0
  9. package/esm/lib/components/ai-tag.wrapper.mjs +24 -0
  10. package/esm/lib/components/banner.wrapper.d.ts +1 -1
  11. package/esm/lib/components/button-pure.wrapper.d.ts +1 -1
  12. package/esm/lib/components/button-tile.wrapper.d.ts +1 -1
  13. package/esm/lib/components/button.wrapper.d.ts +1 -1
  14. package/esm/lib/components/canvas.wrapper.d.ts +1 -1
  15. package/esm/lib/components/carousel.wrapper.d.ts +1 -1
  16. package/esm/lib/components/checkbox.wrapper.d.ts +1 -1
  17. package/esm/lib/components/crest.wrapper.d.ts +1 -1
  18. package/esm/lib/components/display.wrapper.d.ts +1 -1
  19. package/esm/lib/components/divider.wrapper.d.ts +1 -1
  20. package/esm/lib/components/drilldown-item.wrapper.d.ts +1 -1
  21. package/esm/lib/components/drilldown-link.wrapper.d.ts +1 -1
  22. package/esm/lib/components/drilldown.wrapper.d.ts +1 -1
  23. package/esm/lib/components/fieldset.wrapper.d.ts +1 -1
  24. package/esm/lib/components/flag.wrapper.d.ts +1 -1
  25. package/esm/lib/components/flyout.wrapper.d.ts +1 -1
  26. package/esm/lib/components/heading.wrapper.d.ts +1 -1
  27. package/esm/lib/components/icon.wrapper.d.ts +1 -1
  28. package/esm/lib/components/index.d.ts +1 -0
  29. package/esm/lib/components/inline-notification.wrapper.d.ts +1 -1
  30. package/esm/lib/components/input-date.wrapper.d.ts +3 -3
  31. package/esm/lib/components/input-email.wrapper.d.ts +3 -3
  32. package/esm/lib/components/input-month.wrapper.d.ts +3 -3
  33. package/esm/lib/components/input-number.wrapper.d.ts +3 -3
  34. package/esm/lib/components/input-password.wrapper.d.ts +3 -3
  35. package/esm/lib/components/input-search.wrapper.d.ts +3 -3
  36. package/esm/lib/components/input-tel.wrapper.d.ts +3 -3
  37. package/esm/lib/components/input-text.wrapper.d.ts +3 -3
  38. package/esm/lib/components/input-time.wrapper.d.ts +3 -3
  39. package/esm/lib/components/input-url.wrapper.d.ts +3 -3
  40. package/esm/lib/components/input-week.wrapper.d.ts +3 -3
  41. package/esm/lib/components/link-pure.wrapper.d.ts +1 -1
  42. package/esm/lib/components/link-tile-product.wrapper.d.ts +1 -1
  43. package/esm/lib/components/link-tile.wrapper.d.ts +1 -1
  44. package/esm/lib/components/link.wrapper.d.ts +1 -1
  45. package/esm/lib/components/modal.wrapper.d.ts +1 -1
  46. package/esm/lib/components/model-signature.wrapper.d.ts +1 -1
  47. package/esm/lib/components/multi-select-option.wrapper.d.ts +3 -3
  48. package/esm/lib/components/multi-select.wrapper.d.ts +5 -5
  49. package/esm/lib/components/optgroup.wrapper.d.ts +1 -1
  50. package/esm/lib/components/pagination.wrapper.d.ts +1 -1
  51. package/esm/lib/components/pin-code.wrapper.d.ts +1 -1
  52. package/esm/lib/components/popover.wrapper.d.ts +1 -1
  53. package/esm/lib/components/radio-group-option.wrapper.d.ts +1 -1
  54. package/esm/lib/components/radio-group.wrapper.d.ts +1 -1
  55. package/esm/lib/components/scroller.wrapper.d.ts +1 -1
  56. package/esm/lib/components/segmented-control-item.wrapper.d.ts +1 -1
  57. package/esm/lib/components/segmented-control.wrapper.d.ts +1 -1
  58. package/esm/lib/components/select-option.wrapper.d.ts +5 -5
  59. package/esm/lib/components/select.wrapper.d.ts +5 -5
  60. package/esm/lib/components/sheet.wrapper.d.ts +1 -1
  61. package/esm/lib/components/spinner.wrapper.d.ts +1 -1
  62. package/esm/lib/components/stepper-horizontal-item.wrapper.d.ts +1 -1
  63. package/esm/lib/components/stepper-horizontal.wrapper.d.ts +1 -1
  64. package/esm/lib/components/switch.wrapper.d.ts +1 -1
  65. package/esm/lib/components/table-body.wrapper.d.ts +1 -1
  66. package/esm/lib/components/table-cell.wrapper.d.ts +1 -1
  67. package/esm/lib/components/table-head-cell.wrapper.d.ts +1 -1
  68. package/esm/lib/components/table-head-row.wrapper.d.ts +1 -1
  69. package/esm/lib/components/table-head.wrapper.d.ts +1 -1
  70. package/esm/lib/components/table-row.wrapper.d.ts +1 -1
  71. package/esm/lib/components/table.wrapper.d.ts +1 -1
  72. package/esm/lib/components/tabs-bar.wrapper.d.ts +1 -1
  73. package/esm/lib/components/tabs-item.wrapper.d.ts +1 -1
  74. package/esm/lib/components/tabs.wrapper.d.ts +1 -1
  75. package/esm/lib/components/tag-dismissible.wrapper.d.ts +1 -1
  76. package/esm/lib/components/tag.wrapper.d.ts +1 -1
  77. package/esm/lib/components/text-list-item.wrapper.d.ts +1 -1
  78. package/esm/lib/components/text-list.wrapper.d.ts +1 -1
  79. package/esm/lib/components/text.wrapper.d.ts +1 -1
  80. package/esm/lib/components/textarea.wrapper.d.ts +3 -3
  81. package/esm/lib/components/toast.wrapper.d.ts +1 -1
  82. package/esm/lib/components/wordmark.wrapper.d.ts +1 -1
  83. package/esm/lib/types.d.ts +221 -2
  84. package/esm/public-api.mjs +1 -0
  85. package/meta/cjs/index.cjs +12 -0
  86. package/meta/esm/index.d.ts +1 -0
  87. package/meta/esm/index.mjs +1 -0
  88. package/meta/package.json +6 -0
  89. package/package.json +24 -21
  90. package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +1382 -1214
  91. package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +176 -3
  92. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/accordion.wrapper.cjs +4 -4
  93. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/ai-tag.wrapper.cjs +36 -0
  94. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/accordion.cjs +1 -1
  95. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/ai-tag.cjs +18 -0
  96. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox.cjs +0 -1
  97. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/dialog-base.cjs +1 -1
  98. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-base.cjs +2 -2
  99. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.cjs +5 -1
  100. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-email.cjs +5 -1
  101. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-month.cjs +5 -1
  102. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-number.cjs +5 -1
  103. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.cjs +5 -1
  104. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-search.cjs +5 -1
  105. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-tel.cjs +5 -1
  106. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-text.cjs +7 -3
  107. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.cjs +5 -1
  108. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-url.cjs +5 -1
  109. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-week.cjs +5 -1
  110. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.cjs +10 -5
  111. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.cjs +5 -1
  112. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.cjs +8 -4
  113. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/public-api.cjs +2 -0
  114. package/ssr/esm/BaseProps.d.ts +1 -1
  115. package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +1381 -1214
  116. package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +175 -4
  117. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/accordion.wrapper.mjs +4 -4
  118. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/ai-tag.wrapper.mjs +34 -0
  119. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/accordion.mjs +2 -2
  120. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/ai-tag.mjs +16 -0
  121. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox.mjs +0 -1
  122. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/dialog-base.mjs +1 -1
  123. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-base.mjs +2 -2
  124. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.mjs +5 -1
  125. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-email.mjs +5 -1
  126. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-month.mjs +5 -1
  127. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-number.mjs +5 -1
  128. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.mjs +5 -1
  129. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-search.mjs +5 -1
  130. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-tel.mjs +5 -1
  131. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-text.mjs +7 -3
  132. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.mjs +5 -1
  133. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-url.mjs +5 -1
  134. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-week.mjs +5 -1
  135. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.mjs +10 -5
  136. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.mjs +5 -1
  137. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.mjs +8 -4
  138. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/public-api.mjs +1 -0
  139. package/ssr/esm/lib/components/accordion.wrapper.d.ts +12 -2
  140. package/ssr/esm/lib/components/ai-tag.wrapper.d.ts +26 -0
  141. package/ssr/esm/lib/components/banner.wrapper.d.ts +1 -1
  142. package/ssr/esm/lib/components/button-pure.wrapper.d.ts +1 -1
  143. package/ssr/esm/lib/components/button-tile.wrapper.d.ts +1 -1
  144. package/ssr/esm/lib/components/button.wrapper.d.ts +1 -1
  145. package/ssr/esm/lib/components/canvas.wrapper.d.ts +1 -1
  146. package/ssr/esm/lib/components/carousel.wrapper.d.ts +1 -1
  147. package/ssr/esm/lib/components/checkbox.wrapper.d.ts +1 -1
  148. package/ssr/esm/lib/components/crest.wrapper.d.ts +1 -1
  149. package/ssr/esm/lib/components/display.wrapper.d.ts +1 -1
  150. package/ssr/esm/lib/components/divider.wrapper.d.ts +1 -1
  151. package/ssr/esm/lib/components/drilldown-item.wrapper.d.ts +1 -1
  152. package/ssr/esm/lib/components/drilldown-link.wrapper.d.ts +1 -1
  153. package/ssr/esm/lib/components/drilldown.wrapper.d.ts +1 -1
  154. package/ssr/esm/lib/components/fieldset.wrapper.d.ts +1 -1
  155. package/ssr/esm/lib/components/flag.wrapper.d.ts +1 -1
  156. package/ssr/esm/lib/components/flyout.wrapper.d.ts +1 -1
  157. package/ssr/esm/lib/components/heading.wrapper.d.ts +1 -1
  158. package/ssr/esm/lib/components/icon.wrapper.d.ts +1 -1
  159. package/ssr/esm/lib/components/index.d.ts +1 -0
  160. package/ssr/esm/lib/components/inline-notification.wrapper.d.ts +1 -1
  161. package/ssr/esm/lib/components/input-date.wrapper.d.ts +3 -3
  162. package/ssr/esm/lib/components/input-email.wrapper.d.ts +3 -3
  163. package/ssr/esm/lib/components/input-month.wrapper.d.ts +3 -3
  164. package/ssr/esm/lib/components/input-number.wrapper.d.ts +3 -3
  165. package/ssr/esm/lib/components/input-password.wrapper.d.ts +3 -3
  166. package/ssr/esm/lib/components/input-search.wrapper.d.ts +3 -3
  167. package/ssr/esm/lib/components/input-tel.wrapper.d.ts +3 -3
  168. package/ssr/esm/lib/components/input-text.wrapper.d.ts +3 -3
  169. package/ssr/esm/lib/components/input-time.wrapper.d.ts +3 -3
  170. package/ssr/esm/lib/components/input-url.wrapper.d.ts +3 -3
  171. package/ssr/esm/lib/components/input-week.wrapper.d.ts +3 -3
  172. package/ssr/esm/lib/components/link-pure.wrapper.d.ts +1 -1
  173. package/ssr/esm/lib/components/link-tile-product.wrapper.d.ts +1 -1
  174. package/ssr/esm/lib/components/link-tile.wrapper.d.ts +1 -1
  175. package/ssr/esm/lib/components/link.wrapper.d.ts +1 -1
  176. package/ssr/esm/lib/components/modal.wrapper.d.ts +1 -1
  177. package/ssr/esm/lib/components/model-signature.wrapper.d.ts +1 -1
  178. package/ssr/esm/lib/components/multi-select-option.wrapper.d.ts +3 -3
  179. package/ssr/esm/lib/components/multi-select.wrapper.d.ts +5 -5
  180. package/ssr/esm/lib/components/optgroup.wrapper.d.ts +1 -1
  181. package/ssr/esm/lib/components/pagination.wrapper.d.ts +1 -1
  182. package/ssr/esm/lib/components/pin-code.wrapper.d.ts +1 -1
  183. package/ssr/esm/lib/components/popover.wrapper.d.ts +1 -1
  184. package/ssr/esm/lib/components/radio-group-option.wrapper.d.ts +1 -1
  185. package/ssr/esm/lib/components/radio-group.wrapper.d.ts +1 -1
  186. package/ssr/esm/lib/components/scroller.wrapper.d.ts +1 -1
  187. package/ssr/esm/lib/components/segmented-control-item.wrapper.d.ts +1 -1
  188. package/ssr/esm/lib/components/segmented-control.wrapper.d.ts +1 -1
  189. package/ssr/esm/lib/components/select-option.wrapper.d.ts +5 -5
  190. package/ssr/esm/lib/components/select.wrapper.d.ts +5 -5
  191. package/ssr/esm/lib/components/sheet.wrapper.d.ts +1 -1
  192. package/ssr/esm/lib/components/spinner.wrapper.d.ts +1 -1
  193. package/ssr/esm/lib/components/stepper-horizontal-item.wrapper.d.ts +1 -1
  194. package/ssr/esm/lib/components/stepper-horizontal.wrapper.d.ts +1 -1
  195. package/ssr/esm/lib/components/switch.wrapper.d.ts +1 -1
  196. package/ssr/esm/lib/components/table-body.wrapper.d.ts +1 -1
  197. package/ssr/esm/lib/components/table-cell.wrapper.d.ts +1 -1
  198. package/ssr/esm/lib/components/table-head-cell.wrapper.d.ts +1 -1
  199. package/ssr/esm/lib/components/table-head-row.wrapper.d.ts +1 -1
  200. package/ssr/esm/lib/components/table-head.wrapper.d.ts +1 -1
  201. package/ssr/esm/lib/components/table-row.wrapper.d.ts +1 -1
  202. package/ssr/esm/lib/components/table.wrapper.d.ts +1 -1
  203. package/ssr/esm/lib/components/tabs-bar.wrapper.d.ts +1 -1
  204. package/ssr/esm/lib/components/tabs-item.wrapper.d.ts +1 -1
  205. package/ssr/esm/lib/components/tabs.wrapper.d.ts +1 -1
  206. package/ssr/esm/lib/components/tag-dismissible.wrapper.d.ts +1 -1
  207. package/ssr/esm/lib/components/tag.wrapper.d.ts +1 -1
  208. package/ssr/esm/lib/components/text-list-item.wrapper.d.ts +1 -1
  209. package/ssr/esm/lib/components/text-list.wrapper.d.ts +1 -1
  210. package/ssr/esm/lib/components/text.wrapper.d.ts +1 -1
  211. package/ssr/esm/lib/components/textarea.wrapper.d.ts +3 -3
  212. package/ssr/esm/lib/components/toast.wrapper.d.ts +1 -1
  213. package/ssr/esm/lib/components/wordmark.wrapper.d.ts +1 -1
  214. package/ssr/esm/lib/dsr-components/ai-tag.d.ts +6 -0
  215. package/ssr/esm/lib/dsr-components/input-base.d.ts +1 -0
  216. package/ssr/esm/lib/dsr-components/input-date.d.ts +1 -0
  217. package/ssr/esm/lib/dsr-components/input-email.d.ts +1 -0
  218. package/ssr/esm/lib/dsr-components/input-month.d.ts +1 -0
  219. package/ssr/esm/lib/dsr-components/input-number.d.ts +1 -0
  220. package/ssr/esm/lib/dsr-components/input-password.d.ts +1 -0
  221. package/ssr/esm/lib/dsr-components/input-search.d.ts +1 -0
  222. package/ssr/esm/lib/dsr-components/input-tel.d.ts +1 -0
  223. package/ssr/esm/lib/dsr-components/input-text.d.ts +1 -0
  224. package/ssr/esm/lib/dsr-components/input-time.d.ts +1 -0
  225. package/ssr/esm/lib/dsr-components/input-url.d.ts +1 -0
  226. package/ssr/esm/lib/dsr-components/input-week.d.ts +1 -0
  227. package/ssr/esm/lib/dsr-components/multi-select.d.ts +1 -1
  228. package/ssr/esm/lib/dsr-components/select.d.ts +1 -0
  229. package/ssr/esm/lib/dsr-components/textarea.d.ts +1 -0
  230. package/ssr/esm/lib/types.d.ts +221 -2
  231. package/{global-styles → stylesheets}/cn/font-face.css +1 -1
  232. package/{global-styles → stylesheets}/cn/index.css +138 -106
  233. package/{global-styles → stylesheets}/color-scheme.css +47 -44
  234. package/{global-styles → stylesheets}/font-face.css +1 -1
  235. package/{global-styles → stylesheets}/index.css +138 -106
  236. package/stylesheets/normalize.css +18 -0
  237. package/{global-styles → stylesheets}/variables.css +80 -58
  238. package/tailwindcss/index.css +569 -301
  239. package/global-styles/legacy-radius.css +0 -5
  240. package/global-styles/normalize.css +0 -11
@@ -25,6 +25,10 @@ class DSRInputTel extends react.Component {
25
25
  initialLoading = false;
26
26
  inputElement;
27
27
  defaultValue;
28
+ // Native input.value is always a string; coerce number/null/undefined to mirror native behavior.
29
+ get parsedValue() {
30
+ return String(this.props.value ?? '');
31
+ }
28
32
  formResetCallback() {
29
33
  // triggers value watcher
30
34
  }
@@ -36,7 +40,7 @@ class DSRInputTel extends react.Component {
36
40
  render() {
37
41
  splitChildren.splitChildren(this.props.children);
38
42
  const style = minifyCss.minifyCss(stylesEntry.getInputTelCss(this.props.disabled, this.props.loading, this.props.hideLabel, this.props.state, this.props.compact, this.props.readOnly));
39
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxRuntime.jsx(inputBase.InputBase, { children: this.props.children, host: null, label: this.props.label, description: this.props.description, id: "input-tel", name: this.props.name, form: this.props.form, type: "tel", required: this.props.required, placeholder: this.props.placeholder, maxLength: this.props.maxLength, minLength: this.props.minLength, value: this.props.value, readOnly: this.props.readOnly, autoComplete: this.props.autoComplete, disabled: this.props.disabled, state: this.props.state, message: this.props.message, loading: this.props.loading, pattern: this.props.pattern, initialLoading: this.props.initialLoading, ...(this.props.indicator && {
43
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxRuntime.jsx(inputBase.InputBase, { children: this.props.children, host: null, label: this.props.label, description: this.props.description, id: "input-tel", name: this.props.name, form: this.props.form, type: "tel", required: this.props.required, placeholder: this.props.placeholder, maxLength: this.props.maxLength, minLength: this.props.minLength, value: this.parsedValue, readOnly: this.props.readOnly, autoComplete: this.props.autoComplete, disabled: this.props.disabled, state: this.props.state, message: this.props.message, loading: this.props.loading, pattern: this.props.pattern, initialLoading: this.props.initialLoading, ...(this.props.indicator && {
40
44
  start: jsxRuntime.jsx(icon_wrapper.PIcon, { "aria-hidden": "true", name: "phone", color: "contrast-low" }),
41
45
  }) })] }), this.props.children] }));
42
46
  }
@@ -23,6 +23,10 @@ class DSRInputText extends react.Component {
23
23
  initialLoading = false;
24
24
  inputElement;
25
25
  defaultValue;
26
+ // Native input.value is always a string; coerce number/null/undefined to mirror native behavior.
27
+ get parsedValue() {
28
+ return String(this.props.value ?? '');
29
+ }
26
30
  formResetCallback() {
27
31
  // triggers value watcher
28
32
  }
@@ -34,10 +38,10 @@ class DSRInputText extends react.Component {
34
38
  render() {
35
39
  splitChildren.splitChildren(this.props.children);
36
40
  const style = minifyCss.minifyCss(stylesEntry.getInputTextCss(this.props.disabled, this.props.loading, this.props.hideLabel, this.props.state, this.props.compact, this.props.readOnly, this.props.counter));
37
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxRuntime.jsx(inputBase.InputBase, { children: this.props.children, host: null, label: this.props.label, description: this.props.description, id: "input-text", name: this.props.name, form: this.props.form, type: "text", required: this.props.required, placeholder: this.props.placeholder, maxLength: this.props.maxLength, minLength: this.props.minLength, value: this.props.value, readOnly: this.props.readOnly, autoComplete: this.props.autoComplete, disabled: this.props.disabled, state: this.props.state, message: this.props.message, spellCheck: this.props.spellCheck, loading: this.props.loading, initialLoading: this.props.initialLoading, ...(this.props.counter && {
41
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxRuntime.jsx(inputBase.InputBase, { children: this.props.children, host: null, label: this.props.label, description: this.props.description, id: "input-text", name: this.props.name, form: this.props.form, type: "text", required: this.props.required, placeholder: this.props.placeholder, maxLength: this.props.maxLength, minLength: this.props.minLength, value: this.parsedValue, readOnly: this.props.readOnly, autoComplete: this.props.autoComplete, disabled: this.props.disabled, state: this.props.state, message: this.props.message, spellCheck: this.props.spellCheck, loading: this.props.loading, initialLoading: this.props.initialLoading, ...(this.props.inputMode !== '' && { inputMode: this.props.inputMode }), ...(this.props.counter && {
38
42
  end: (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("span", { className: "sr-only", "aria-live": "polite", children: this.props.maxLength
39
- ? `You have ${this.props.maxLength - this.props.value.length} out of ${this.props.maxLength} characters left`
40
- : `${this.props.value.length} characters entered` }), jsxRuntime.jsx("span", { className: "counter", "aria-hidden": "true", children: this.props.maxLength ? `${this.props.value.length}/${this.props.maxLength}` : `${this.props.value.length}` })] })),
43
+ ? `You have ${this.props.maxLength - this.parsedValue.length} out of ${this.props.maxLength} characters left`
44
+ : `${this.parsedValue.length} characters entered` }), jsxRuntime.jsx("span", { className: "counter", "aria-hidden": "true", children: this.props.maxLength ? `${this.parsedValue.length}/${this.props.maxLength}` : `${this.parsedValue.length}` })] })),
41
45
  }) })] }), this.props.children] }));
42
46
  }
43
47
  }
@@ -26,6 +26,10 @@ class DSRInputTime extends react.Component {
26
26
  initialLoading = false;
27
27
  inputElement;
28
28
  defaultValue;
29
+ // Native input.value is always a string; coerce null/undefined to mirror native behavior.
30
+ get parsedValue() {
31
+ return String(this.props.value ?? '');
32
+ }
29
33
  formResetCallback() {
30
34
  // triggers value watcher
31
35
  }
@@ -37,7 +41,7 @@ class DSRInputTime extends react.Component {
37
41
  render() {
38
42
  splitChildren.splitChildren(this.props.children);
39
43
  const style = minifyCss.minifyCss(stylesEntry.getInputTimeCss(this.props.disabled, this.props.loading, this.props.hideLabel, this.props.state, this.props.compact, this.props.readOnly));
40
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxRuntime.jsx(inputBase.InputBase, { children: this.props.children, host: null, label: this.props.label, description: this.props.description, id: "input-time", name: this.props.name, form: this.props.form, type: "time", required: this.props.required, max: this.props.max, min: this.props.min, value: this.props.value, readOnly: this.props.readOnly, autoComplete: this.props.autoComplete, disabled: this.props.disabled, state: this.props.state, message: this.props.message, step: this.props.step, loading: this.props.loading, initialLoading: this.props.initialLoading, ...(utilsEntry.hasShowPickerSupport() && {
44
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxRuntime.jsx(inputBase.InputBase, { children: this.props.children, host: null, label: this.props.label, description: this.props.description, id: "input-time", name: this.props.name, form: this.props.form, type: "time", required: this.props.required, max: this.props.max, min: this.props.min, value: this.parsedValue, readOnly: this.props.readOnly, autoComplete: this.props.autoComplete, disabled: this.props.disabled, state: this.props.state, message: this.props.message, step: this.props.step, loading: this.props.loading, initialLoading: this.props.initialLoading, ...(utilsEntry.hasShowPickerSupport() && {
41
45
  end: (jsxRuntime.jsx(buttonPure_wrapper.PButtonPure, { tabIndex: this.props.disabled ? -1 : null, hideLabel: true, className: "button", type: "button", icon: "clock", disabled: this.props.disabled || this.props.readOnly, children: "Open time picker" })),
42
46
  }) })] }), this.props.children] }));
43
47
  }
@@ -25,6 +25,10 @@ class DSRInputUrl extends react.Component {
25
25
  initialLoading = false;
26
26
  inputElement;
27
27
  defaultValue;
28
+ // Native input.value is always a string; coerce number/null/undefined to mirror native behavior.
29
+ get parsedValue() {
30
+ return String(this.props.value ?? '');
31
+ }
28
32
  formResetCallback() {
29
33
  // triggers value watcher
30
34
  }
@@ -36,7 +40,7 @@ class DSRInputUrl extends react.Component {
36
40
  render() {
37
41
  splitChildren.splitChildren(this.props.children);
38
42
  const style = minifyCss.minifyCss(stylesEntry.getInputUrlCss(this.props.disabled, this.props.loading, this.props.hideLabel, this.props.state, this.props.compact, this.props.readOnly));
39
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxRuntime.jsx(inputBase.InputBase, { children: this.props.children, host: null, label: this.props.label, description: this.props.description, id: "input-url", name: this.props.name, form: this.props.form, type: "url", required: this.props.required, placeholder: this.props.placeholder, maxLength: this.props.maxLength, minLength: this.props.minLength, value: this.props.value, readOnly: this.props.readOnly, autoComplete: this.props.autoComplete, disabled: this.props.disabled, state: this.props.state, message: this.props.message, loading: this.props.loading, pattern: this.props.pattern, initialLoading: this.props.initialLoading, ...(this.props.indicator && {
43
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxRuntime.jsx(inputBase.InputBase, { children: this.props.children, host: null, label: this.props.label, description: this.props.description, id: "input-url", name: this.props.name, form: this.props.form, type: "url", required: this.props.required, placeholder: this.props.placeholder, maxLength: this.props.maxLength, minLength: this.props.minLength, value: this.parsedValue, readOnly: this.props.readOnly, autoComplete: this.props.autoComplete, disabled: this.props.disabled, state: this.props.state, message: this.props.message, loading: this.props.loading, pattern: this.props.pattern, initialLoading: this.props.initialLoading, ...(this.props.indicator && {
40
44
  start: jsxRuntime.jsx(icon_wrapper.PIcon, { "aria-hidden": "true", name: "linked", color: "contrast-low" }),
41
45
  }) })] }), this.props.children] }));
42
46
  }
@@ -26,6 +26,10 @@ class DSRInputWeek extends react.Component {
26
26
  initialLoading = false;
27
27
  inputElement;
28
28
  defaultValue;
29
+ // Native input.value is always a string; coerce null/undefined to mirror native behavior.
30
+ get parsedValue() {
31
+ return String(this.props.value ?? '');
32
+ }
29
33
  formResetCallback() {
30
34
  // triggers value watcher
31
35
  }
@@ -37,7 +41,7 @@ class DSRInputWeek extends react.Component {
37
41
  render() {
38
42
  splitChildren.splitChildren(this.props.children);
39
43
  const style = minifyCss.minifyCss(stylesEntry.getInputWeekCss(this.props.disabled, this.props.loading, this.props.hideLabel, this.props.state, this.props.compact, this.props.readOnly));
40
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxRuntime.jsx(inputBase.InputBase, { children: this.props.children, host: null, label: this.props.label, description: this.props.description, id: "input-week", name: this.props.name, form: this.props.form, type: "week", required: this.props.required, max: this.props.max, min: this.props.min, value: this.props.value, readOnly: this.props.readOnly, autoComplete: this.props.autoComplete, disabled: this.props.disabled, state: this.props.state, message: this.props.message, step: this.props.step, loading: this.props.loading, initialLoading: this.props.initialLoading, ...(utilsEntry.hasShowPickerSupport() && {
44
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxRuntime.jsx(inputBase.InputBase, { children: this.props.children, host: null, label: this.props.label, description: this.props.description, id: "input-week", name: this.props.name, form: this.props.form, type: "week", required: this.props.required, max: this.props.max, min: this.props.min, value: this.parsedValue, readOnly: this.props.readOnly, autoComplete: this.props.autoComplete, disabled: this.props.disabled, state: this.props.state, message: this.props.message, step: this.props.step, loading: this.props.loading, initialLoading: this.props.initialLoading, ...(utilsEntry.hasShowPickerSupport() && {
41
45
  end: (jsxRuntime.jsx(buttonPure_wrapper.PButtonPure, { tabIndex: this.props.disabled ? -1 : null, hideLabel: true, className: "button", type: "button", icon: "calendar", disabled: this.props.disabled || this.props.readOnly, children: "Open date picker" })),
42
46
  }) })] }), this.props.children] }));
43
47
  }
@@ -47,10 +47,15 @@ class DSRMultiSelect extends react.Component {
47
47
  hasNativePopoverSupport = utilsEntry.getHasNativePopoverSupport();
48
48
  cleanUpAutoUpdate;
49
49
  currentlyHighlightedOption = null;
50
- setFormValue(value) {
50
+ setFormValue() {
51
+ if (this.props.value == null || this.props.value.length === 0) {
52
+ // null excludes the control from form submission (mirrors native behavior)
53
+ this.props.internals?.setFormValue(null);
54
+ return;
55
+ }
51
56
  const formData = new FormData();
52
- for (const val of value) {
53
- formData.append(this.props.name, val);
57
+ for (const val of this.props.value) {
58
+ formData.append(this.props.name, String(val));
54
59
  }
55
60
  this.props.internals?.setFormValue(formData);
56
61
  }
@@ -60,7 +65,7 @@ class DSRMultiSelect extends react.Component {
60
65
  formStateRestoreCallback() {
61
66
  }
62
67
  formResetCallback() {
63
- this.props.setFormValue(this.props.defaultValue);
68
+ // triggers value watcher which syncs form value
64
69
  }
65
70
  render() {
66
71
  const { children, namedSlotChildren, otherChildren } = splitChildren.splitChildren(this.props.children);
@@ -71,7 +76,7 @@ class DSRMultiSelect extends react.Component {
71
76
  const selectDescriptionId = (this.props.description || namedSlotChildren.filter(({ props: { slot } }) => slot === 'description').length > 0) ? utilsEntry.descriptionId : undefined;
72
77
  const selectMessageId = (this.props.message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(this.props.state) ? stateMessage.messageId : undefined;
73
78
  const style = minifyCss.minifyCss(stylesEntry.getMultiSelectCss(this.props.isOpen, this.props.disabled, this.props.hideLabel, this.props.state, this.props.compact));
74
- 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: buttonId, isRequired: this.props.required, isDisabled: this.props.disabled }), jsxRuntime.jsxs("button", { "aria-invalid": this.props.state === 'error' ? 'true' : null, type: "button", role: "combobox", id: buttonId, tabIndex: 0, ...utilsEntry.getComboboxAriaAttributes(this.props.isOpen, this.props.required, (this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0) && utilsEntry.labelId, selectMessageId, selectDescriptionId, listboxId), disabled: this.props.disabled, onBlur: this.props.onComboBlur, children: [hasCustomSelectedSlot ? (jsxRuntime.jsx("slot", { name: "selected" })) : (jsxRuntime.jsx("span", { children: this.selectedOptions.map((option) => (option.textContent ?? '').toString().trim()).join(', ') })), this.props.value.length > 0 && (jsxRuntime.jsx(buttonPure_wrapper.PButtonPure, { type: "button", className: "button", icon: "close", hideLabel: true, disabled: this.props.disabled, children: "Reset selection" })), jsxRuntime.jsx(icon_wrapper.PIcon, { className: "icon", name: "arrow-head-down", color: "primary", "aria-hidden": "true" })] }), jsxRuntime.jsxs("div", { popover: "manual", tabIndex: 0, children: [hasCustomFilterSlot ? (jsxRuntime.jsx("slot", { name: "filter" })) : (jsxRuntime.jsx(inputSearch_wrapper.PInputSearch, { className: "filter", name: "filter", label: "Filter options", hideLabel: true, autoComplete: "off", clear: true, indicator: true, compact: true, onBlur: (e) => e.stopPropagation() })), jsxRuntime.jsxs("div", { id: listboxId, className: "options", ...utilsEntry.getListboxAriaAttributes(this.props.required, (this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0) && utilsEntry.labelId, selectMessageId, selectDescriptionId, true), onPointerMove: this.props.onPointerMove, onBlur: (e) => e.stopPropagation(), children: [!this.props.hasFilterResults && jsxRuntime.jsx(noResultsOption.NoResultsOption, {}), jsxRuntime.jsx("slot", { name: "options-status" }), jsxRuntime.jsx("slot", {})] })] }), 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, host: null })] })] }), this.props.children] }));
79
+ 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: buttonId, isRequired: this.props.required, isDisabled: this.props.disabled }), jsxRuntime.jsxs("button", { "aria-invalid": this.props.state === 'error' ? 'true' : null, type: "button", role: "combobox", id: buttonId, tabIndex: 0, ...utilsEntry.getComboboxAriaAttributes(this.props.isOpen, this.props.required, (this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0) && utilsEntry.labelId, selectMessageId, selectDescriptionId, listboxId), disabled: this.props.disabled, onBlur: this.props.onComboBlur, children: [hasCustomSelectedSlot ? (jsxRuntime.jsx("slot", { name: "selected" })) : (jsxRuntime.jsx("span", { children: this.selectedOptions.map((option) => (option.textContent ?? '').toString().trim()).join(', ') })), this.props.value?.length > 0 && (jsxRuntime.jsx(buttonPure_wrapper.PButtonPure, { type: "button", className: "button", icon: "close", hideLabel: true, disabled: this.props.disabled, children: "Reset selection" })), jsxRuntime.jsx(icon_wrapper.PIcon, { className: "icon", name: "arrow-head-down", color: "primary", "aria-hidden": "true" })] }), jsxRuntime.jsxs("div", { popover: "manual", tabIndex: 0, children: [hasCustomFilterSlot ? (jsxRuntime.jsx("slot", { name: "filter" })) : (jsxRuntime.jsx(inputSearch_wrapper.PInputSearch, { className: "filter", name: "filter", label: "Filter options", hideLabel: true, autoComplete: "off", clear: true, indicator: true, compact: true, onBlur: (e) => e.stopPropagation() })), jsxRuntime.jsxs("div", { id: listboxId, className: "options", ...utilsEntry.getListboxAriaAttributes(this.props.required, (this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0) && utilsEntry.labelId, selectMessageId, selectDescriptionId, true), onPointerMove: this.props.onPointerMove, onBlur: (e) => e.stopPropagation(), children: [!this.props.hasFilterResults && jsxRuntime.jsx(noResultsOption.NoResultsOption, {}), jsxRuntime.jsx("slot", { name: "options-status" }), jsxRuntime.jsx("slot", {})] })] }), 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, host: null })] })] }), this.props.children] }));
75
80
  }
76
81
  }
77
82
 
@@ -50,13 +50,17 @@ class DSRSelect extends react.Component {
50
50
  get hasFilter() {
51
51
  return !!(this.props.filter || this.props.filterSlot);
52
52
  }
53
+ setFormValue() {
54
+ // `null`/`undefined` → `undefined`, removing the select from form submission (mirrors native behavior)
55
+ this.props.internals?.setFormValue(this.props.value === null || this.props.value === undefined ? undefined : String(this.props.value));
56
+ }
53
57
  formDisabledCallback() {
54
58
  // Called when a parent fieldset is disabled or enabled
55
59
  }
56
60
  formStateRestoreCallback() {
57
61
  }
58
62
  formResetCallback() {
59
- this.props.internals?.setFormValue(this.props.defaultValue);
63
+ // triggers value watcher which syncs form value
60
64
  }
61
65
  render() {
62
66
  const { children, namedSlotChildren, otherChildren } = splitChildren.splitChildren(this.props.children);
@@ -22,8 +22,12 @@ class DSRTextarea extends react.Component {
22
22
  internals;
23
23
  defaultValue;
24
24
  textAreaElement;
25
+ // Native input.value is always a string; coerce null/undefined to mirror native behavior.
26
+ get parsedValue() {
27
+ return String(this.props.value ?? '');
28
+ }
25
29
  formResetCallback() {
26
- this.props.internals?.setFormValue(this.props.defaultValue);
30
+ // triggers value watcher
27
31
  }
28
32
  formDisabledCallback() {
29
33
  // Called when a parent fieldset is disabled or enabled
@@ -36,9 +40,9 @@ class DSRTextarea extends react.Component {
36
40
  const textareaDescriptionId = (this.props.description || namedSlotChildren.filter(({ props: { slot } }) => slot === 'description').length > 0) ? utilsEntry.descriptionId : undefined;
37
41
  const textareaMessageId = (this.props.message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(this.props.state) ? stateMessage.messageId : undefined;
38
42
  const style = minifyCss.minifyCss(stylesEntry.getTextareaCss(this.props.disabled, this.props.readOnly, this.props.hideLabel, this.props.state, this.props.compact, this.props.counter, this.props.resize));
39
- 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, htmlFor: id, label: this.props.label, description: this.props.description, isRequired: this.props.required, isDisabled: this.props.disabled }), jsxRuntime.jsxs("div", { className: "wrapper", children: [jsxRuntime.jsx("textarea", { "aria-describedby": utilsEntry.setAriaIDREF(textareaMessageId, textareaDescriptionId), "aria-invalid": this.props.state === 'error' ? 'true' : null, id: id, onBlur: this.props.onBlur, name: this.props.name, defaultValue: this.props.value, form: this.props.form, disabled: this.props.disabled, required: this.props.required, placeholder: this.props.placeholder, maxLength: this.props.maxLength, minLength: this.props.minLength, rows: this.props.rows, readOnly: this.props.readOnly, spellCheck: this.props.spellCheck, autoComplete: this.props.autoComplete, wrap: this.props.wrap }), this.props.counter && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("span", { className: "sr-only", "aria-live": "polite", children: this.props.maxLength
40
- ? `You have ${this.props.maxLength - this.props.value.length} out of ${this.props.maxLength} characters left`
41
- : `${this.props.value.length} characters entered` }), jsxRuntime.jsx("span", { className: "counter", "aria-hidden": "true", children: this.props.maxLength ? `${this.props.value.length}/${this.props.maxLength}` : `${this.props.value.length}` })] }))] }), 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, host: null })] })] }), this.props.children] }));
43
+ 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, htmlFor: id, label: this.props.label, description: this.props.description, isRequired: this.props.required, isDisabled: this.props.disabled }), jsxRuntime.jsxs("div", { className: "wrapper", children: [jsxRuntime.jsx("textarea", { "aria-describedby": utilsEntry.setAriaIDREF(textareaMessageId, textareaDescriptionId), "aria-invalid": this.props.state === 'error' ? 'true' : null, id: id, onBlur: this.props.onBlur, name: this.props.name, defaultValue: this.parsedValue, form: this.props.form, disabled: this.props.disabled, required: this.props.required, placeholder: this.props.placeholder, maxLength: this.props.maxLength, minLength: this.props.minLength, rows: this.props.rows, readOnly: this.props.readOnly, spellCheck: this.props.spellCheck, autoComplete: this.props.autoComplete, wrap: this.props.wrap }), this.props.counter && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("span", { className: "sr-only", "aria-live": "polite", children: this.props.maxLength
44
+ ? `You have ${this.props.maxLength - this.parsedValue.length} out of ${this.props.maxLength} characters left`
45
+ : `${this.parsedValue.length} characters entered` }), jsxRuntime.jsx("span", { className: "counter", "aria-hidden": "true", children: this.props.maxLength ? `${this.parsedValue.length}/${this.props.maxLength}` : `${this.parsedValue.length}` })] }))] }), 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, host: null })] })] }), this.props.children] }));
42
46
  }
43
47
  }
44
48
 
@@ -3,6 +3,7 @@
3
3
  var componentsJs = require('@porsche-design-system/components-js');
4
4
  var hooks = require('./hooks.cjs');
5
5
  var accordion_wrapper = require('./lib/components/accordion.wrapper.cjs');
6
+ var aiTag_wrapper = require('./lib/components/ai-tag.wrapper.cjs');
6
7
  var banner_wrapper = require('./lib/components/banner.wrapper.cjs');
7
8
  var button_wrapper = require('./lib/components/button.wrapper.cjs');
8
9
  var buttonPure_wrapper = require('./lib/components/button-pure.wrapper.cjs');
@@ -87,6 +88,7 @@ Object.defineProperty(exports, "componentsReady", {
87
88
  exports.skipCheckForPorscheDesignSystemProviderDuringTests = hooks.skipCheckForPorscheDesignSystemProviderDuringTests;
88
89
  exports.useToastManager = hooks.useToastManager;
89
90
  exports.PAccordion = accordion_wrapper.PAccordion;
91
+ exports.PAiTag = aiTag_wrapper.PAiTag;
90
92
  exports.PBanner = banner_wrapper.PBanner;
91
93
  exports.PButton = button_wrapper.PButton;
92
94
  exports.PButtonPure = buttonPure_wrapper.PButtonPure;
@@ -1,2 +1,2 @@
1
1
  import type { DOMAttributes, HTMLAttributes } from 'react';
2
- export type BaseProps = Omit<DOMAttributes<{}>, 'onChange' | 'onInput' | 'onToggle'> & Pick<HTMLAttributes<{}>, 'suppressHydrationWarning' | 'autoFocus' | 'className' | 'dir' | 'hidden' | 'id' | 'inert' | 'lang' | 'slot' | 'style' | 'tabIndex' | 'title' | 'translate' | 'role'>;
2
+ export type BaseProps = Omit<DOMAttributes<{}>, 'onChange' | 'onInput' | 'onToggle'> & Pick<HTMLAttributes<{}>, 'suppressHydrationWarning' | 'autoFocus' | 'className' | 'dir' | 'hidden' | 'id' | 'inert' | 'inputMode' | 'lang' | 'slot' | 'style' | 'tabIndex' | 'title' | 'translate' | 'role'>;