@porsche-design-system/components-react 3.24.0 → 3.25.0-rc.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.
Files changed (103) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/cjs/lib/components/button-pure.wrapper.cjs +3 -3
  3. package/cjs/lib/components/button.wrapper.cjs +3 -3
  4. package/cjs/lib/components/sheet.wrapper.cjs +29 -0
  5. package/cjs/public-api.cjs +2 -0
  6. package/esm/lib/components/button-pure.wrapper.d.ts +8 -0
  7. package/esm/lib/components/button-pure.wrapper.mjs +3 -3
  8. package/esm/lib/components/button.wrapper.d.ts +8 -0
  9. package/esm/lib/components/button.wrapper.mjs +3 -3
  10. package/esm/lib/components/index.d.ts +1 -0
  11. package/esm/lib/components/sheet.wrapper.d.ts +72 -0
  12. package/esm/lib/components/sheet.wrapper.mjs +27 -0
  13. package/esm/lib/types.d.ts +7 -0
  14. package/esm/public-api.mjs +1 -0
  15. package/package.json +2 -2
  16. package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +163 -109
  17. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/button-pure.wrapper.cjs +4 -4
  18. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/button.wrapper.cjs +4 -4
  19. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/sheet.wrapper.cjs +40 -0
  20. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-pure.cjs +2 -0
  21. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button.cjs +2 -0
  22. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.cjs +3 -1
  23. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox-wrapper.cjs +1 -1
  24. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox.cjs +2 -2
  25. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.cjs +2 -2
  26. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.cjs +2 -2
  27. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-button-wrapper.cjs +1 -1
  28. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.cjs +1 -1
  29. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-wrapper.cjs +1 -1
  30. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.cjs +2 -2
  31. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/sheet.cjs +39 -0
  32. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text-field-wrapper.cjs +2 -2
  33. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea-wrapper.cjs +3 -3
  34. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.cjs +3 -3
  35. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/public-api.cjs +2 -0
  36. package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +113 -60
  37. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/button-pure.wrapper.mjs +4 -4
  38. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/button.wrapper.mjs +4 -4
  39. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/sheet.wrapper.mjs +38 -0
  40. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/accordion.mjs +2 -2
  41. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/banner.mjs +2 -2
  42. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-group.mjs +2 -2
  43. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-pure.mjs +4 -2
  44. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-tile.mjs +2 -2
  45. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button.mjs +4 -2
  46. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.mjs +2 -2
  47. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.mjs +5 -3
  48. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox-wrapper.mjs +3 -3
  49. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox.mjs +4 -4
  50. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/content-wrapper.mjs +2 -2
  51. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/crest.mjs +2 -2
  52. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/display.mjs +2 -2
  53. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/divider.mjs +2 -2
  54. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fieldset-wrapper.mjs +2 -2
  55. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fieldset.mjs +2 -2
  56. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flex-item.mjs +2 -2
  57. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flex.mjs +2 -2
  58. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout-multilevel-item.mjs +2 -2
  59. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout-multilevel.mjs +2 -2
  60. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout.mjs +2 -2
  61. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/grid-item.mjs +2 -2
  62. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/grid.mjs +2 -2
  63. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/heading.mjs +2 -2
  64. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/headline.mjs +2 -2
  65. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/icon.mjs +2 -2
  66. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/inline-notification.mjs +2 -2
  67. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-pure.mjs +2 -2
  68. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-social.mjs +2 -2
  69. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile-model-signature.mjs +2 -2
  70. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile-product.mjs +2 -2
  71. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile.mjs +2 -2
  72. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link.mjs +2 -2
  73. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/marque.mjs +2 -2
  74. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/modal.mjs +2 -2
  75. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/model-signature.mjs +2 -2
  76. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.mjs +2 -2
  77. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.mjs +4 -4
  78. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/optgroup.mjs +2 -2
  79. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pagination.mjs +2 -2
  80. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.mjs +4 -4
  81. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/popover.mjs +2 -2
  82. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-button-wrapper.mjs +3 -3
  83. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.mjs +2 -2
  84. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control-item.mjs +2 -2
  85. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.mjs +3 -3
  86. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-option.mjs +2 -2
  87. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-wrapper-dropdown.mjs +2 -2
  88. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-wrapper.mjs +3 -3
  89. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.mjs +4 -4
  90. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/sheet.mjs +37 -0
  91. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text-field-wrapper.mjs +2 -2
  92. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea-wrapper.mjs +3 -3
  93. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.mjs +3 -3
  94. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/public-api.mjs +1 -0
  95. package/ssr/esm/lib/components/button-pure.wrapper.d.ts +8 -0
  96. package/ssr/esm/lib/components/button.wrapper.d.ts +8 -0
  97. package/ssr/esm/lib/components/index.d.ts +1 -0
  98. package/ssr/esm/lib/components/sheet.wrapper.d.ts +72 -0
  99. package/ssr/esm/lib/dsr-components/button-pure.d.ts +1 -0
  100. package/ssr/esm/lib/dsr-components/button.d.ts +1 -0
  101. package/ssr/esm/lib/dsr-components/carousel.d.ts +1 -0
  102. package/ssr/esm/lib/dsr-components/sheet.d.ts +14 -0
  103. package/ssr/esm/lib/types.d.ts +7 -0
package/CHANGELOG.md CHANGED
@@ -14,6 +14,31 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
14
14
 
15
15
  ### [Unreleased]
16
16
 
17
+ ### [3.25.0-rc.1] - 2025-01-22
18
+
19
+ #### Fixed
20
+
21
+ - `Carousel`: throws error when object-like string is passed by `slides-per-page`
22
+ ([#3710](https://github.com/porsche-design-system/porsche-design-system/pull/3710))
23
+
24
+ ### [3.25.0-rc.0] - 2025-01-21
25
+
26
+ #### Added
27
+
28
+ - `Sheet` ([#3704](https://github.com/porsche-design-system/porsche-design-system/pull/3704))
29
+ - `Button`, `Button-Pure`: Add `form` prop to explicitly associate the component with a form, even when it's not
30
+ directly nested within it. ([#3648](https://github.com/porsche-design-system/porsche-design-system/pull/3648))
31
+
32
+ #### Changed
33
+
34
+ - `Table`: Enable `Table Head Cell` to be used within `Table Row` in addition to `Table Head Row` to further align with
35
+ table structure defined by W3C ([#3701](https://github.com/porsche-design-system/porsche-design-system/pull/3701))
36
+
37
+ #### Fixed
38
+
39
+ - `Textarea`, `Textarea Wrapper`, `Textfield Wrapper`: color contrast of `unit` prop and counter in `readonly` mode
40
+ meets WCAG 2.2 AA standard ([#3693](https://github.com/porsche-design-system/porsche-design-system/pull/3693))
41
+
17
42
  ### [3.24.0] - 2025-01-08
18
43
 
19
44
  ### [3.24.0-rc.1] - 2025-01-08
@@ -6,13 +6,13 @@ var react = require('react');
6
6
  var hooks = require('../../hooks.cjs');
7
7
  var utils = require('../../utils.cjs');
8
8
 
9
- const PButtonPure = /*#__PURE__*/ react.forwardRef(({ active = false, alignLabel = 'end', aria, disabled = false, hideLabel = false, icon = 'arrow-right', iconSource, loading = false, name, size = 'small', stretch = false, theme, type = 'submit', underline = false, value, weight = 'regular', className, ...rest }, ref) => {
9
+ const PButtonPure = /*#__PURE__*/ react.forwardRef(({ active = false, alignLabel = 'end', aria, disabled = false, form, hideLabel = false, icon = 'arrow-right', iconSource, loading = false, name, size = 'small', stretch = false, theme, type = 'submit', underline = false, value, weight = 'regular', className, ...rest }, ref) => {
10
10
  const elementRef = react.useRef(undefined);
11
11
  const WebComponentTag = hooks.usePrefix('p-button-pure');
12
- const propsToSync = [active, alignLabel, aria, disabled, hideLabel, icon, iconSource, loading, name, size, stretch, theme || hooks.useTheme(), type, underline, value, weight];
12
+ const propsToSync = [active, alignLabel, aria, disabled, form, hideLabel, icon, iconSource, loading, name, size, stretch, theme || hooks.useTheme(), type, underline, value, weight];
13
13
  hooks.useBrowserLayoutEffect(() => {
14
14
  const { current } = elementRef;
15
- ['active', 'alignLabel', 'aria', 'disabled', 'hideLabel', 'icon', 'iconSource', 'loading', 'name', 'size', 'stretch', 'theme', 'type', 'underline', 'value', 'weight'].forEach((propName, i) => (current[propName] = propsToSync[i]));
15
+ ['active', 'alignLabel', 'aria', 'disabled', 'form', 'hideLabel', 'icon', 'iconSource', 'loading', 'name', 'size', 'stretch', 'theme', 'type', 'underline', 'value', 'weight'].forEach((propName, i) => (current[propName] = propsToSync[i]));
16
16
  }, propsToSync);
17
17
  const props = {
18
18
  ...rest,
@@ -6,13 +6,13 @@ var react = require('react');
6
6
  var hooks = require('../../hooks.cjs');
7
7
  var utils = require('../../utils.cjs');
8
8
 
9
- const PButton = /*#__PURE__*/ react.forwardRef(({ aria, compact = false, disabled = false, hideLabel = false, icon = 'none', iconSource, loading = false, name, theme, type = 'submit', value, variant = 'primary', className, ...rest }, ref) => {
9
+ const PButton = /*#__PURE__*/ react.forwardRef(({ aria, compact = false, disabled = false, form, hideLabel = false, icon = 'none', iconSource, loading = false, name, theme, type = 'submit', value, variant = 'primary', className, ...rest }, ref) => {
10
10
  const elementRef = react.useRef(undefined);
11
11
  const WebComponentTag = hooks.usePrefix('p-button');
12
- const propsToSync = [aria, compact, disabled, hideLabel, icon, iconSource, loading, name, theme || hooks.useTheme(), type, value, variant];
12
+ const propsToSync = [aria, compact, disabled, form, hideLabel, icon, iconSource, loading, name, theme || hooks.useTheme(), type, value, variant];
13
13
  hooks.useBrowserLayoutEffect(() => {
14
14
  const { current } = elementRef;
15
- ['aria', 'compact', 'disabled', 'hideLabel', 'icon', 'iconSource', 'loading', 'name', 'theme', 'type', 'value', 'variant'].forEach((propName, i) => (current[propName] = propsToSync[i]));
15
+ ['aria', 'compact', 'disabled', 'form', 'hideLabel', 'icon', 'iconSource', 'loading', 'name', 'theme', 'type', 'value', 'variant'].forEach((propName, i) => (current[propName] = propsToSync[i]));
16
16
  }, propsToSync);
17
17
  const props = {
18
18
  ...rest,
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react = require('react');
6
+ var hooks = require('../../hooks.cjs');
7
+ var utils = require('../../utils.cjs');
8
+
9
+ const PSheet = /*#__PURE__*/ react.forwardRef(({ aria, disableBackdropClick = false, dismissButton = true, onDismiss, onMotionHiddenEnd, onMotionVisibleEnd, open = false, theme, className, ...rest }, ref) => {
10
+ const elementRef = react.useRef(undefined);
11
+ hooks.useEventCallback(elementRef, 'dismiss', onDismiss);
12
+ hooks.useEventCallback(elementRef, 'motionHiddenEnd', onMotionHiddenEnd);
13
+ hooks.useEventCallback(elementRef, 'motionVisibleEnd', onMotionVisibleEnd);
14
+ const WebComponentTag = hooks.usePrefix('p-sheet');
15
+ const propsToSync = [aria, disableBackdropClick, dismissButton, open, theme || hooks.useTheme()];
16
+ hooks.useBrowserLayoutEffect(() => {
17
+ const { current } = elementRef;
18
+ ['aria', 'disableBackdropClick', 'dismissButton', 'open', 'theme'].forEach((propName, i) => (current[propName] = propsToSync[i]));
19
+ }, propsToSync);
20
+ const props = {
21
+ ...rest,
22
+ class: hooks.useMergedClass(elementRef, className),
23
+ ref: utils.syncRef(elementRef, ref)
24
+ };
25
+ // @ts-ignore
26
+ return jsxRuntime.jsx(WebComponentTag, { ...props });
27
+ });
28
+
29
+ exports.PSheet = PSheet;
@@ -50,6 +50,7 @@ var segmentedControlItem_wrapper = require('./lib/components/segmented-control-i
50
50
  var select_wrapper = require('./lib/components/select.wrapper.cjs');
51
51
  var selectOption_wrapper = require('./lib/components/select-option.wrapper.cjs');
52
52
  var selectWrapper_wrapper = require('./lib/components/select-wrapper.wrapper.cjs');
53
+ var sheet_wrapper = require('./lib/components/sheet.wrapper.cjs');
53
54
  var spinner_wrapper = require('./lib/components/spinner.wrapper.cjs');
54
55
  var stepperHorizontal_wrapper = require('./lib/components/stepper-horizontal.wrapper.cjs');
55
56
  var stepperHorizontalItem_wrapper = require('./lib/components/stepper-horizontal-item.wrapper.cjs');
@@ -133,6 +134,7 @@ exports.PSegmentedControlItem = segmentedControlItem_wrapper.PSegmentedControlIt
133
134
  exports.PSelect = select_wrapper.PSelect;
134
135
  exports.PSelectOption = selectOption_wrapper.PSelectOption;
135
136
  exports.PSelectWrapper = selectWrapper_wrapper.PSelectWrapper;
137
+ exports.PSheet = sheet_wrapper.PSheet;
136
138
  exports.PSpinner = spinner_wrapper.PSpinner;
137
139
  exports.PStepperHorizontal = stepperHorizontal_wrapper.PStepperHorizontal;
138
140
  exports.PStepperHorizontalItem = stepperHorizontalItem_wrapper.PStepperHorizontalItem;
@@ -17,6 +17,10 @@ export type PButtonPureProps = BaseProps & {
17
17
  * Disables the button. No events will be triggered while disabled state is active.
18
18
  */
19
19
  disabled?: boolean;
20
+ /**
21
+ * The id of a form element the button should be associated with.
22
+ */
23
+ form?: string;
20
24
  /**
21
25
  * Show or hide label. For better accessibility it is recommended to show the label.
22
26
  */
@@ -84,6 +88,10 @@ export declare const PButtonPure: import("react").ForwardRefExoticComponent<impo
84
88
  * Disables the button. No events will be triggered while disabled state is active.
85
89
  */
86
90
  disabled?: boolean;
91
+ /**
92
+ * The id of a form element the button should be associated with.
93
+ */
94
+ form?: string;
87
95
  /**
88
96
  * Show or hide label. For better accessibility it is recommended to show the label.
89
97
  */
@@ -4,13 +4,13 @@ import { forwardRef, useRef } from 'react';
4
4
  import { usePrefix, useTheme, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
5
5
  import { syncRef } from '../../utils.mjs';
6
6
 
7
- const PButtonPure = /*#__PURE__*/ forwardRef(({ active = false, alignLabel = 'end', aria, disabled = false, hideLabel = false, icon = 'arrow-right', iconSource, loading = false, name, size = 'small', stretch = false, theme, type = 'submit', underline = false, value, weight = 'regular', className, ...rest }, ref) => {
7
+ const PButtonPure = /*#__PURE__*/ forwardRef(({ active = false, alignLabel = 'end', aria, disabled = false, form, hideLabel = false, icon = 'arrow-right', iconSource, loading = false, name, size = 'small', stretch = false, theme, type = 'submit', underline = false, value, weight = 'regular', className, ...rest }, ref) => {
8
8
  const elementRef = useRef(undefined);
9
9
  const WebComponentTag = usePrefix('p-button-pure');
10
- const propsToSync = [active, alignLabel, aria, disabled, hideLabel, icon, iconSource, loading, name, size, stretch, theme || useTheme(), type, underline, value, weight];
10
+ const propsToSync = [active, alignLabel, aria, disabled, form, hideLabel, icon, iconSource, loading, name, size, stretch, theme || useTheme(), type, underline, value, weight];
11
11
  useBrowserLayoutEffect(() => {
12
12
  const { current } = elementRef;
13
- ['active', 'alignLabel', 'aria', 'disabled', 'hideLabel', 'icon', 'iconSource', 'loading', 'name', 'size', 'stretch', 'theme', 'type', 'underline', 'value', 'weight'].forEach((propName, i) => (current[propName] = propsToSync[i]));
13
+ ['active', 'alignLabel', 'aria', 'disabled', 'form', 'hideLabel', 'icon', 'iconSource', 'loading', 'name', 'size', 'stretch', 'theme', 'type', 'underline', 'value', 'weight'].forEach((propName, i) => (current[propName] = propsToSync[i]));
14
14
  }, propsToSync);
15
15
  const props = {
16
16
  ...rest,
@@ -13,6 +13,10 @@ export type PButtonProps = BaseProps & {
13
13
  * Disables the button. No events will be triggered while disabled state is active.
14
14
  */
15
15
  disabled?: boolean;
16
+ /**
17
+ * The id of a form element the button should be associated with.
18
+ */
19
+ form?: string;
16
20
  /**
17
21
  * Show or hide label. For better accessibility it is recommended to show the label.
18
22
  */
@@ -63,6 +67,10 @@ export declare const PButton: import("react").ForwardRefExoticComponent<import("
63
67
  * Disables the button. No events will be triggered while disabled state is active.
64
68
  */
65
69
  disabled?: boolean;
70
+ /**
71
+ * The id of a form element the button should be associated with.
72
+ */
73
+ form?: string;
66
74
  /**
67
75
  * Show or hide label. For better accessibility it is recommended to show the label.
68
76
  */
@@ -4,13 +4,13 @@ import { forwardRef, useRef } from 'react';
4
4
  import { usePrefix, useTheme, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
5
5
  import { syncRef } from '../../utils.mjs';
6
6
 
7
- const PButton = /*#__PURE__*/ forwardRef(({ aria, compact = false, disabled = false, hideLabel = false, icon = 'none', iconSource, loading = false, name, theme, type = 'submit', value, variant = 'primary', className, ...rest }, ref) => {
7
+ const PButton = /*#__PURE__*/ forwardRef(({ aria, compact = false, disabled = false, form, hideLabel = false, icon = 'none', iconSource, loading = false, name, theme, type = 'submit', value, variant = 'primary', className, ...rest }, ref) => {
8
8
  const elementRef = useRef(undefined);
9
9
  const WebComponentTag = usePrefix('p-button');
10
- const propsToSync = [aria, compact, disabled, hideLabel, icon, iconSource, loading, name, theme || useTheme(), type, value, variant];
10
+ const propsToSync = [aria, compact, disabled, form, hideLabel, icon, iconSource, loading, name, theme || useTheme(), type, value, variant];
11
11
  useBrowserLayoutEffect(() => {
12
12
  const { current } = elementRef;
13
- ['aria', 'compact', 'disabled', 'hideLabel', 'icon', 'iconSource', 'loading', 'name', 'theme', 'type', 'value', 'variant'].forEach((propName, i) => (current[propName] = propsToSync[i]));
13
+ ['aria', 'compact', 'disabled', 'form', 'hideLabel', 'icon', 'iconSource', 'loading', 'name', 'theme', 'type', 'value', 'variant'].forEach((propName, i) => (current[propName] = propsToSync[i]));
14
14
  }, propsToSync);
15
15
  const props = {
16
16
  ...rest,
@@ -47,6 +47,7 @@ export * from './segmented-control-item.wrapper';
47
47
  export * from './select.wrapper';
48
48
  export * from './select-option.wrapper';
49
49
  export * from './select-wrapper.wrapper';
50
+ export * from './sheet.wrapper';
50
51
  export * from './spinner.wrapper';
51
52
  export * from './stepper-horizontal.wrapper';
52
53
  export * from './stepper-horizontal-item.wrapper';
@@ -0,0 +1,72 @@
1
+ import type { BaseProps } from '../../BaseProps';
2
+ import type { SelectedAriaAttributes, SheetAriaAttribute, SheetMotionHiddenEndEventDetail, SheetMotionVisibleEndEventDetail, Theme } from '../types';
3
+ export type PSheetProps = BaseProps & {
4
+ /**
5
+ * Add ARIA attributes.
6
+ */
7
+ aria?: SelectedAriaAttributes<SheetAriaAttribute>;
8
+ /**
9
+ * If true, the sheet will not be closable via backdrop click.
10
+ */
11
+ disableBackdropClick?: boolean;
12
+ /**
13
+ * If false, the sheet will not have a dismiss button.
14
+ */
15
+ dismissButton?: boolean;
16
+ /**
17
+ * Emitted when the component requests to be dismissed.
18
+ */
19
+ onDismiss?: (event: CustomEvent<void>) => void;
20
+ /**
21
+ * Emitted when the sheet is closed and the transition is finished.
22
+ */
23
+ onMotionHiddenEnd?: (event: CustomEvent<SheetMotionHiddenEndEventDetail>) => void;
24
+ /**
25
+ * Emitted when the sheet is opened and the transition is finished.
26
+ */
27
+ onMotionVisibleEnd?: (event: CustomEvent<SheetMotionVisibleEndEventDetail>) => void;
28
+ /**
29
+ * If true, the sheet is open.
30
+ */
31
+ open: boolean;
32
+ /**
33
+ * Adapts the sheet color depending on the theme.
34
+ */
35
+ theme?: Theme;
36
+ };
37
+ export declare const PSheet: import("react").ForwardRefExoticComponent<import("react").DOMAttributes<{}> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
38
+ /**
39
+ * Add ARIA attributes.
40
+ */
41
+ aria?: SelectedAriaAttributes<SheetAriaAttribute>;
42
+ /**
43
+ * If true, the sheet will not be closable via backdrop click.
44
+ */
45
+ disableBackdropClick?: boolean;
46
+ /**
47
+ * If false, the sheet will not have a dismiss button.
48
+ */
49
+ dismissButton?: boolean;
50
+ /**
51
+ * Emitted when the component requests to be dismissed.
52
+ */
53
+ onDismiss?: (event: CustomEvent<void>) => void;
54
+ /**
55
+ * Emitted when the sheet is closed and the transition is finished.
56
+ */
57
+ onMotionHiddenEnd?: (event: CustomEvent<SheetMotionHiddenEndEventDetail>) => void;
58
+ /**
59
+ * Emitted when the sheet is opened and the transition is finished.
60
+ */
61
+ onMotionVisibleEnd?: (event: CustomEvent<SheetMotionVisibleEndEventDetail>) => void;
62
+ /**
63
+ * If true, the sheet is open.
64
+ */
65
+ open: boolean;
66
+ /**
67
+ * Adapts the sheet color depending on the theme.
68
+ */
69
+ theme?: Theme;
70
+ } & {
71
+ children?: import("react").ReactNode | undefined;
72
+ } & import("react").RefAttributes<HTMLElement>>;
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { forwardRef, useRef } from 'react';
4
+ import { useEventCallback, usePrefix, useTheme, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
5
+ import { syncRef } from '../../utils.mjs';
6
+
7
+ const PSheet = /*#__PURE__*/ forwardRef(({ aria, disableBackdropClick = false, dismissButton = true, onDismiss, onMotionHiddenEnd, onMotionVisibleEnd, open = false, theme, className, ...rest }, ref) => {
8
+ const elementRef = useRef(undefined);
9
+ useEventCallback(elementRef, 'dismiss', onDismiss);
10
+ useEventCallback(elementRef, 'motionHiddenEnd', onMotionHiddenEnd);
11
+ useEventCallback(elementRef, 'motionVisibleEnd', onMotionVisibleEnd);
12
+ const WebComponentTag = usePrefix('p-sheet');
13
+ const propsToSync = [aria, disableBackdropClick, dismissButton, open, theme || useTheme()];
14
+ useBrowserLayoutEffect(() => {
15
+ const { current } = elementRef;
16
+ ['aria', 'disableBackdropClick', 'dismissButton', 'open', 'theme'].forEach((propName, i) => (current[propName] = propsToSync[i]));
17
+ }, propsToSync);
18
+ const props = {
19
+ ...rest,
20
+ class: useMergedClass(elementRef, className),
21
+ ref: syncRef(elementRef, ref)
22
+ };
23
+ // @ts-ignore
24
+ return jsx(WebComponentTag, { ...props });
25
+ });
26
+
27
+ export { PSheet };
@@ -1250,6 +1250,13 @@ declare const DROPDOWN_DIRECTIONS: readonly [
1250
1250
  ];
1251
1251
  export type SelectWrapperDropdownDirection = (typeof DROPDOWN_DIRECTIONS)[number];
1252
1252
  export type SelectWrapperState = FormState;
1253
+ declare const SHEET_ARIA_ATTRIBUTES: readonly [
1254
+ "aria-label",
1255
+ "role"
1256
+ ];
1257
+ export type SheetAriaAttribute = (typeof SHEET_ARIA_ATTRIBUTES)[number];
1258
+ export type SheetMotionVisibleEndEventDetail = TransitionEvent;
1259
+ export type SheetMotionHiddenEndEventDetail = TransitionEvent;
1253
1260
  declare const SPINNER_SIZES: readonly [
1254
1261
  "small",
1255
1262
  "medium",
@@ -48,6 +48,7 @@ export { PSegmentedControlItem } from './lib/components/segmented-control-item.w
48
48
  export { PSelect } from './lib/components/select.wrapper.mjs';
49
49
  export { PSelectOption } from './lib/components/select-option.wrapper.mjs';
50
50
  export { PSelectWrapper } from './lib/components/select-wrapper.wrapper.mjs';
51
+ export { PSheet } from './lib/components/sheet.wrapper.mjs';
51
52
  export { PSpinner } from './lib/components/spinner.wrapper.mjs';
52
53
  export { PStepperHorizontal } from './lib/components/stepper-horizontal.wrapper.mjs';
53
54
  export { PStepperHorizontalItem } from './lib/components/stepper-horizontal-item.wrapper.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@porsche-design-system/components-react",
3
- "version": "3.24.0",
3
+ "version": "3.25.0-rc.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.24.0"
20
+ "@porsche-design-system/components-js": "3.25.0-rc.1"
21
21
  },
22
22
  "peerDependencies": {
23
23
  "ag-grid-community": ">= 32.0.0 <33.0.0",