@porsche-design-system/components-react 4.3.0 → 4.4.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 (38) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/cjs/lib/components/popover.wrapper.cjs +4 -3
  3. package/esm/lib/components/popover.wrapper.d.ts +26 -2
  4. package/esm/lib/components/popover.wrapper.mjs +5 -4
  5. package/package.json +2 -2
  6. package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +354 -143
  7. package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +1 -1
  8. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/popover.wrapper.cjs +5 -4
  9. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/banner.cjs +15 -5
  10. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/dialog-base.cjs +3 -7
  11. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown.cjs +3 -0
  12. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fc-dismiss-button.cjs +16 -0
  13. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout.cjs +14 -1
  14. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/inline-notification.cjs +2 -2
  15. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/modal.cjs +14 -1
  16. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/popover.cjs +65 -16
  17. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/sheet.cjs +14 -1
  18. package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +354 -144
  19. package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +1 -1
  20. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/popover.wrapper.mjs +6 -5
  21. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/banner.mjs +15 -5
  22. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/dialog-base.mjs +3 -7
  23. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown.mjs +3 -0
  24. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fc-dismiss-button.mjs +14 -0
  25. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout.mjs +14 -1
  26. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/inline-notification.mjs +2 -2
  27. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/modal.mjs +14 -1
  28. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/popover.mjs +66 -17
  29. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/sheet.mjs +14 -1
  30. package/ssr/esm/lib/components/popover.wrapper.d.ts +26 -2
  31. package/ssr/esm/lib/dsr-components/banner.d.ts +2 -0
  32. package/ssr/esm/lib/dsr-components/dialog-base.d.ts +2 -2
  33. package/ssr/esm/lib/dsr-components/drilldown.d.ts +1 -0
  34. package/ssr/esm/lib/dsr-components/fc-dismiss-button.d.ts +16 -0
  35. package/ssr/esm/lib/dsr-components/flyout.d.ts +1 -0
  36. package/ssr/esm/lib/dsr-components/modal.d.ts +1 -0
  37. package/ssr/esm/lib/dsr-components/popover.d.ts +16 -7
  38. package/ssr/esm/lib/dsr-components/sheet.d.ts +1 -0
package/CHANGELOG.md CHANGED
@@ -14,6 +14,37 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
14
14
 
15
15
  ## [Unreleased]
16
16
 
17
+ ## [4.4.0-rc.1] - 2026-07-10
18
+
19
+ ### Fixed
20
+
21
+ - `Flyout`, `Modal`, `Sheet` ([#4578](https://github.com/porsche-design-system/porsche-design-system/pull/4578)):
22
+ - enable selecting text within dialog element
23
+ - prevent dialog from being dismissed when a text selection started inside the dialog is released on the backdrop
24
+ - `Popover`, `Banner`: prevent entry animation from playing when initially rendered in an open state
25
+ ([#4578](https://github.com/porsche-design-system/porsche-design-system/pull/4578))
26
+
27
+ ## [4.4.0-rc.0] - 2026-07-06
28
+
29
+ ### Added
30
+
31
+ - `Popover` ([#4562](https://github.com/porsche-design-system/porsche-design-system/pull/4562)):
32
+ - Support for controlled and uncontrolled usage: when the `open` prop is omitted the component manages its own
33
+ visibility (uncontrolled), when it is set the consumer owns the open state via a custom trigger projected through
34
+ the named `button` slot (controlled)
35
+ - `open` prop to control the popover's visibility in controlled mode
36
+ - `compact` prop to reduce padding and spacing for a more compact layout, useful in space-constrained interfaces
37
+ - `dismiss` event emitted in controlled mode when the user requests to close the popover via the `Escape` key, an
38
+ outside click, or when keyboard focus leaves the popover (`Tab` / `Shift+Tab`)
39
+ - CSS variables to customize the popover panel: `--p-popover-w`, `--p-popover-h`, `--p-popover-min-w`,
40
+ `--p-popover-min-h`, `--p-popover-max-w`, `--p-popover-max-h`, `--p-popover-px`, `--p-popover-py` and
41
+ `--p-popover-radius`
42
+
43
+ ### Changed
44
+
45
+ - `Popover`: Improved visual appearance
46
+ ([#4562](https://github.com/porsche-design-system/porsche-design-system/pull/4562))
47
+
17
48
  ## [4.3.0] - 2026-06-24
18
49
 
19
50
  ## [4.3.0-rc.0] - 2026-06-24
@@ -6,13 +6,14 @@ var react = require('react');
6
6
  var hooks = require('../../hooks.cjs');
7
7
  var utils = require('../../utils.cjs');
8
8
 
9
- const PPopover = /*#__PURE__*/ react.forwardRef(({ aria, description, direction = 'bottom', className, ...rest }, ref) => {
9
+ const PPopover = /*#__PURE__*/ react.forwardRef(({ aria, compact, description, direction = 'bottom', onDismiss, open, className, ...rest }, ref) => {
10
10
  const elementRef = react.useRef(undefined);
11
+ hooks.useEventCallback(elementRef, 'dismiss', onDismiss);
11
12
  const WebComponentTag = hooks.usePrefix('p-popover');
12
- const propsToSync = [aria, description, direction];
13
+ const propsToSync = [aria, compact, description, direction, open];
13
14
  hooks.useBrowserLayoutEffect(() => {
14
15
  const { current } = elementRef;
15
- ['aria', 'description', 'direction'].forEach((propName, i) => (current[propName] = propsToSync[i]));
16
+ ['aria', 'compact', 'description', 'direction', 'open'].forEach((propName, i) => (current[propName] = propsToSync[i]));
16
17
  }, propsToSync);
17
18
  const props = {
18
19
  ...rest,
@@ -6,7 +6,11 @@ export type PPopoverProps = BaseProps & {
6
6
  */
7
7
  aria?: SelectedAriaAttributes<PopoverAriaAttribute>;
8
8
  /**
9
- * Sets the text content displayed inside the popover panel when it is open, providing contextual help or information.
9
+ * Reduces padding and spacing for a more compact layout, useful in space-constrained interfaces.
10
+ */
11
+ compact?: boolean;
12
+ /**
13
+ * Sets the text content displayed inside the popover panel when it is open, providing contextual help or information. Takes precedence over the default slot when both are provided.
10
14
  */
11
15
  description?: string;
12
16
  /**
@@ -14,6 +18,14 @@ export type PPopoverProps = BaseProps & {
14
18
  * @default 'bottom'
15
19
  */
16
20
  direction?: PopoverDirection;
21
+ /**
22
+ * Emitted in controlled mode when the user requests to close the popover via the Escape key, an outside click, or when keyboard focus leaves the popover (Tab / Shift+Tab).
23
+ */
24
+ onDismiss?: (event: CustomEvent<void>) => void;
25
+ /**
26
+ * Controls whether the popover is visible. When set (controlled mode), visibility follows this prop and the consumer owns the open state via a slotted `button`. When omitted (uncontrolled mode), the component manages visibility itself.
27
+ */
28
+ open?: boolean;
17
29
  };
18
30
  export declare const PPopover: import("react").ForwardRefExoticComponent<Omit<import("react").DOMAttributes<{}>, "onChange" | "onInput" | "onToggle"> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "inputMode" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
19
31
  /**
@@ -21,7 +33,11 @@ export declare const PPopover: import("react").ForwardRefExoticComponent<Omit<im
21
33
  */
22
34
  aria?: SelectedAriaAttributes<PopoverAriaAttribute>;
23
35
  /**
24
- * Sets the text content displayed inside the popover panel when it is open, providing contextual help or information.
36
+ * Reduces padding and spacing for a more compact layout, useful in space-constrained interfaces.
37
+ */
38
+ compact?: boolean;
39
+ /**
40
+ * Sets the text content displayed inside the popover panel when it is open, providing contextual help or information. Takes precedence over the default slot when both are provided.
25
41
  */
26
42
  description?: string;
27
43
  /**
@@ -29,6 +45,14 @@ export declare const PPopover: import("react").ForwardRefExoticComponent<Omit<im
29
45
  * @default 'bottom'
30
46
  */
31
47
  direction?: PopoverDirection;
48
+ /**
49
+ * Emitted in controlled mode when the user requests to close the popover via the Escape key, an outside click, or when keyboard focus leaves the popover (Tab / Shift+Tab).
50
+ */
51
+ onDismiss?: (event: CustomEvent<void>) => void;
52
+ /**
53
+ * Controls whether the popover is visible. When set (controlled mode), visibility follows this prop and the consumer owns the open state via a slotted `button`. When omitted (uncontrolled mode), the component manages visibility itself.
54
+ */
55
+ open?: boolean;
32
56
  } & {
33
57
  children?: import("react").ReactNode | undefined;
34
58
  } & import("react").RefAttributes<HTMLElement>>;
@@ -1,16 +1,17 @@
1
1
  "use client";
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef, useRef } from 'react';
4
- import { usePrefix, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
4
+ import { useEventCallback, usePrefix, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
5
5
  import { syncRef } from '../../utils.mjs';
6
6
 
7
- const PPopover = /*#__PURE__*/ forwardRef(({ aria, description, direction = 'bottom', className, ...rest }, ref) => {
7
+ const PPopover = /*#__PURE__*/ forwardRef(({ aria, compact, description, direction = 'bottom', onDismiss, open, className, ...rest }, ref) => {
8
8
  const elementRef = useRef(undefined);
9
+ useEventCallback(elementRef, 'dismiss', onDismiss);
9
10
  const WebComponentTag = usePrefix('p-popover');
10
- const propsToSync = [aria, description, direction];
11
+ const propsToSync = [aria, compact, description, direction, open];
11
12
  useBrowserLayoutEffect(() => {
12
13
  const { current } = elementRef;
13
- ['aria', 'description', 'direction'].forEach((propName, i) => (current[propName] = propsToSync[i]));
14
+ ['aria', 'compact', 'description', 'direction', 'open'].forEach((propName, i) => (current[propName] = propsToSync[i]));
14
15
  }, propsToSync);
15
16
  const props = {
16
17
  ...rest,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@porsche-design-system/components-react",
3
- "version": "4.3.0",
3
+ "version": "4.4.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",
@@ -21,7 +21,7 @@
21
21
  "url": "https://github.com/porsche-design-system/porsche-design-system"
22
22
  },
23
23
  "dependencies": {
24
- "@porsche-design-system/components-js": "4.3.0"
24
+ "@porsche-design-system/components-js": "4.4.0-rc.1"
25
25
  },
26
26
  "peerDependencies": {
27
27
  "ag-grid-community": ">= 35.0.0 <36.0.0",