@porsche-design-system/components-react 4.2.0-rc.2 → 4.2.0-rc.3

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,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
14
14
 
15
15
  ## [Unreleased]
16
16
 
17
+ ## [4.2.0-rc.3] - 2026-06-09
18
+
19
+ ### Fixed
20
+
21
+ - `Flyout`, `Modal`, `Sheet`: content no longer disappears in Chromium when many elements with a frosted
22
+ `backdrop-filter` (e.g. `p-tag`) are rendered
23
+ ([#4490](https://github.com/porsche-design-system/porsche-design-system/pull/4490))
24
+
17
25
  ## [4.2.0-rc.2] - 2026-06-04
18
26
 
19
27
  ### Added
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@porsche-design-system/components-react",
3
- "version": "4.2.0-rc.2",
3
+ "version": "4.2.0-rc.3",
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.2.0-rc.2"
24
+ "@porsche-design-system/components-js": "4.2.0-rc.3"
25
25
  },
26
26
  "peerDependencies": {
27
27
  "ag-grid-community": ">= 35.0.0 <36.0.0",
@@ -4132,7 +4132,7 @@ const OPTION_LIST_SAFE_ZONE = 6;
4132
4132
 
4133
4133
  const getCDNBaseURL = () => global.PORSCHE_DESIGN_SYSTEM_CDN_URL + "/porsche-design-system";
4134
4134
 
4135
- const prefix = `[Porsche Design System v${"4.2.0-rc.2"}]` // this part isn't covered by unit tests
4135
+ const prefix = `[Porsche Design System v${"4.2.0-rc.3"}]` // this part isn't covered by unit tests
4136
4136
  ;
4137
4137
  const consoleError = (...messages) => {
4138
4138
  console.error(prefix, ...messages);
@@ -6139,7 +6139,7 @@ const dialogBorderRadius = ref(radius3Xl);
6139
6139
  const dialogPaddingTop = ref(spacingFluidMd$1);
6140
6140
  const dialogPaddingBottom = `calc(${dialogBorderRadius} + ${ref(spacingFluidMd$1)})`;
6141
6141
  const dialogPaddingInline = ref(spacingFluidLg);
6142
- const dialogGridJssStyle = () => {
6142
+ const dialogGridJssStyle = (clipPath = 'none') => {
6143
6143
  return {
6144
6144
  position: 'relative',
6145
6145
  display: 'grid',
@@ -6148,7 +6148,8 @@ const dialogGridJssStyle = () => {
6148
6148
  paddingTop: dialogPaddingTop,
6149
6149
  paddingBottom: dialogPaddingBottom,
6150
6150
  alignContent: 'flex-start',
6151
- overflow: 'clip',
6151
+ // `overflow: clip` can't be used due to a Chromium bug that drops descendant backdrop-filter tiles (e.g. frosted p-tag); `clip-path` clips slotted content to the rounded corners without the faulty paint-containment box while keeping the scroll behavior intact
6152
+ clipPath,
6152
6153
  };
6153
6154
  };
6154
6155
  const getDialogColorJssStyle = () => {
@@ -7334,11 +7335,20 @@ const getComponentCss$V = (isOpen, background, backdrop, position, hasHeader, ha
7334
7335
  },
7335
7336
  },
7336
7337
  flyout: {
7337
- ...dialogGridJssStyle(),
7338
+ ...dialogGridJssStyle(isPositionStart
7339
+ ? `inset(0 round 0 ${dialogBorderRadius} ${dialogBorderRadius} 0)` // position 'start': round inline-end (right in LTR) corners only
7340
+ : `inset(0 round ${dialogBorderRadius} 0 0 ${dialogBorderRadius})` // position 'end': round inline-start (left in LTR) corners only
7341
+ ),
7338
7342
  ...getDialogColorJssStyle(),
7339
7343
  width: ref(cssVariableWidth$2, 'auto'),
7340
7344
  minWidth: '320px',
7341
7345
  maxWidth: '100vw',
7346
+ // `clip-path` uses physical corners, so mirror for RTL to keep parity with the logical border*Radius below
7347
+ '&:dir(rtl)': {
7348
+ clipPath: isPositionStart
7349
+ ? `inset(0 round ${dialogBorderRadius} 0 0 ${dialogBorderRadius})`
7350
+ : `inset(0 round 0 ${dialogBorderRadius} ${dialogBorderRadius} 0)`,
7351
+ },
7342
7352
  ...(isPositionStart
7343
7353
  ? {
7344
7354
  borderStartEndRadius: dialogBorderRadius,
@@ -8147,7 +8157,7 @@ const getComponentCss$C = (isOpen, background, backdrop, fullscreen, hasDismissB
8147
8157
  },
8148
8158
  scroller: getScrollerJssStyle('fullscreen'),
8149
8159
  modal: {
8150
- ...dialogGridJssStyle(),
8160
+ ...dialogGridJssStyle(`inset(0 round ${dialogBorderRadius})`),
8151
8161
  ...getDialogColorJssStyle(),
8152
8162
  ...getDialogTransitionJssStyle(isOpen, '^'),
8153
8163
  ...buildResponsiveStyles(fullscreen, (fullscreenValue) => fullscreenValue
@@ -8158,6 +8168,7 @@ const getComponentCss$C = (isOpen, background, backdrop, fullscreen, hasDismissB
8158
8168
  placeSelf: 'stretch',
8159
8169
  margin: 0,
8160
8170
  borderRadius: 0,
8171
+ clipPath: 'none', // fullscreen has square corners, so disable corner clipping
8161
8172
  }
8162
8173
  : {
8163
8174
  width: ref(cssVariableWidth$1, 'auto'),
@@ -9218,7 +9229,7 @@ const getComponentCss$n = (isOpen, background, hasDismissButton) => {
9218
9229
  },
9219
9230
  scroller: getScrollerJssStyle('fullscreen'),
9220
9231
  sheet: {
9221
- ...dialogGridJssStyle(),
9232
+ ...dialogGridJssStyle(`inset(0 round ${dialogBorderRadius} ${dialogBorderRadius} 0 0)`), // round top corners only
9222
9233
  ...getDialogColorJssStyle(),
9223
9234
  ...getDialogTransitionJssStyle(isOpen, '^'),
9224
9235
  width: '100%',
@@ -3465,7 +3465,7 @@ const hasShowPickerSupport = () => (hasDocument &&
3465
3465
  'showPicker' in HTMLInputElement.prototype &&
3466
3466
  CSS.supports('selector(::-webkit-calendar-picker-indicator)'));
3467
3467
 
3468
- const prefix = `[Porsche Design System v${"4.2.0-rc.2"}]` // this part isn't covered by unit tests
3468
+ const prefix = `[Porsche Design System v${"4.2.0-rc.3"}]` // this part isn't covered by unit tests
3469
3469
  ;
3470
3470
  const consoleError$1 = (...messages) => {
3471
3471
  console.error(prefix, ...messages);
@@ -4130,7 +4130,7 @@ const OPTION_LIST_SAFE_ZONE = 6;
4130
4130
 
4131
4131
  const getCDNBaseURL = () => global.PORSCHE_DESIGN_SYSTEM_CDN_URL + "/porsche-design-system";
4132
4132
 
4133
- const prefix = `[Porsche Design System v${"4.2.0-rc.2"}]` // this part isn't covered by unit tests
4133
+ const prefix = `[Porsche Design System v${"4.2.0-rc.3"}]` // this part isn't covered by unit tests
4134
4134
  ;
4135
4135
  const consoleError = (...messages) => {
4136
4136
  console.error(prefix, ...messages);
@@ -6137,7 +6137,7 @@ const dialogBorderRadius = ref(radius3Xl);
6137
6137
  const dialogPaddingTop = ref(spacingFluidMd$1);
6138
6138
  const dialogPaddingBottom = `calc(${dialogBorderRadius} + ${ref(spacingFluidMd$1)})`;
6139
6139
  const dialogPaddingInline = ref(spacingFluidLg);
6140
- const dialogGridJssStyle = () => {
6140
+ const dialogGridJssStyle = (clipPath = 'none') => {
6141
6141
  return {
6142
6142
  position: 'relative',
6143
6143
  display: 'grid',
@@ -6146,7 +6146,8 @@ const dialogGridJssStyle = () => {
6146
6146
  paddingTop: dialogPaddingTop,
6147
6147
  paddingBottom: dialogPaddingBottom,
6148
6148
  alignContent: 'flex-start',
6149
- overflow: 'clip',
6149
+ // `overflow: clip` can't be used due to a Chromium bug that drops descendant backdrop-filter tiles (e.g. frosted p-tag); `clip-path` clips slotted content to the rounded corners without the faulty paint-containment box while keeping the scroll behavior intact
6150
+ clipPath,
6150
6151
  };
6151
6152
  };
6152
6153
  const getDialogColorJssStyle = () => {
@@ -7332,11 +7333,20 @@ const getComponentCss$V = (isOpen, background, backdrop, position, hasHeader, ha
7332
7333
  },
7333
7334
  },
7334
7335
  flyout: {
7335
- ...dialogGridJssStyle(),
7336
+ ...dialogGridJssStyle(isPositionStart
7337
+ ? `inset(0 round 0 ${dialogBorderRadius} ${dialogBorderRadius} 0)` // position 'start': round inline-end (right in LTR) corners only
7338
+ : `inset(0 round ${dialogBorderRadius} 0 0 ${dialogBorderRadius})` // position 'end': round inline-start (left in LTR) corners only
7339
+ ),
7336
7340
  ...getDialogColorJssStyle(),
7337
7341
  width: ref(cssVariableWidth$2, 'auto'),
7338
7342
  minWidth: '320px',
7339
7343
  maxWidth: '100vw',
7344
+ // `clip-path` uses physical corners, so mirror for RTL to keep parity with the logical border*Radius below
7345
+ '&:dir(rtl)': {
7346
+ clipPath: isPositionStart
7347
+ ? `inset(0 round ${dialogBorderRadius} 0 0 ${dialogBorderRadius})`
7348
+ : `inset(0 round 0 ${dialogBorderRadius} ${dialogBorderRadius} 0)`,
7349
+ },
7340
7350
  ...(isPositionStart
7341
7351
  ? {
7342
7352
  borderStartEndRadius: dialogBorderRadius,
@@ -8145,7 +8155,7 @@ const getComponentCss$C = (isOpen, background, backdrop, fullscreen, hasDismissB
8145
8155
  },
8146
8156
  scroller: getScrollerJssStyle('fullscreen'),
8147
8157
  modal: {
8148
- ...dialogGridJssStyle(),
8158
+ ...dialogGridJssStyle(`inset(0 round ${dialogBorderRadius})`),
8149
8159
  ...getDialogColorJssStyle(),
8150
8160
  ...getDialogTransitionJssStyle(isOpen, '^'),
8151
8161
  ...buildResponsiveStyles(fullscreen, (fullscreenValue) => fullscreenValue
@@ -8156,6 +8166,7 @@ const getComponentCss$C = (isOpen, background, backdrop, fullscreen, hasDismissB
8156
8166
  placeSelf: 'stretch',
8157
8167
  margin: 0,
8158
8168
  borderRadius: 0,
8169
+ clipPath: 'none', // fullscreen has square corners, so disable corner clipping
8159
8170
  }
8160
8171
  : {
8161
8172
  width: ref(cssVariableWidth$1, 'auto'),
@@ -9216,7 +9227,7 @@ const getComponentCss$n = (isOpen, background, hasDismissButton) => {
9216
9227
  },
9217
9228
  scroller: getScrollerJssStyle('fullscreen'),
9218
9229
  sheet: {
9219
- ...dialogGridJssStyle(),
9230
+ ...dialogGridJssStyle(`inset(0 round ${dialogBorderRadius} ${dialogBorderRadius} 0 0)`), // round top corners only
9220
9231
  ...getDialogColorJssStyle(),
9221
9232
  ...getDialogTransitionJssStyle(isOpen, '^'),
9222
9233
  width: '100%',
@@ -3463,7 +3463,7 @@ const hasShowPickerSupport = () => (hasDocument &&
3463
3463
  'showPicker' in HTMLInputElement.prototype &&
3464
3464
  CSS.supports('selector(::-webkit-calendar-picker-indicator)'));
3465
3465
 
3466
- const prefix = `[Porsche Design System v${"4.2.0-rc.2"}]` // this part isn't covered by unit tests
3466
+ const prefix = `[Porsche Design System v${"4.2.0-rc.3"}]` // this part isn't covered by unit tests
3467
3467
  ;
3468
3468
  const consoleError$1 = (...messages) => {
3469
3469
  console.error(prefix, ...messages);