@porsche-design-system/components-react 3.27.0-rc.5 → 3.27.0-rc.6

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 (49) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/cjs/lib/components/carousel.wrapper.cjs +3 -3
  3. package/cjs/lib/components/table.wrapper.cjs +3 -3
  4. package/esm/lib/components/carousel.wrapper.d.ts +11 -3
  5. package/esm/lib/components/carousel.wrapper.mjs +3 -3
  6. package/esm/lib/components/table.wrapper.d.ts +17 -1
  7. package/esm/lib/components/table.wrapper.mjs +3 -3
  8. package/esm/lib/types.d.ts +13 -0
  9. package/package.json +2 -2
  10. package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +533 -790
  11. package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +42 -23
  12. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/carousel.wrapper.cjs +4 -4
  13. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/table.wrapper.cjs +4 -4
  14. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.cjs +1 -1
  15. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.cjs +1 -1
  16. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.cjs +8 -14
  17. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/optgroup.cjs +2 -4
  18. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/popover.cjs +4 -4
  19. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-wrapper-dropdown.cjs +7 -8
  20. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.cjs +15 -19
  21. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table.cjs +1 -1
  22. package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +521 -778
  23. package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +40 -23
  24. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/carousel.wrapper.mjs +4 -4
  25. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/table.wrapper.mjs +4 -4
  26. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.mjs +1 -1
  27. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.mjs +1 -1
  28. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.mjs +9 -15
  29. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/optgroup.mjs +4 -6
  30. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pagination.mjs +2 -2
  31. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.mjs +2 -2
  32. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/popover.mjs +6 -6
  33. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-button-wrapper.mjs +2 -2
  34. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.mjs +2 -2
  35. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control-item.mjs +2 -2
  36. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.mjs +2 -2
  37. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-option.mjs +2 -2
  38. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-wrapper-dropdown.mjs +9 -10
  39. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-wrapper.mjs +2 -2
  40. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.mjs +16 -20
  41. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-cell.mjs +2 -2
  42. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table.mjs +2 -2
  43. package/ssr/esm/lib/components/carousel.wrapper.d.ts +11 -3
  44. package/ssr/esm/lib/components/table.wrapper.d.ts +17 -1
  45. package/ssr/esm/lib/dsr-components/multi-select.d.ts +4 -4
  46. package/ssr/esm/lib/dsr-components/popover.d.ts +2 -2
  47. package/ssr/esm/lib/dsr-components/select-wrapper-dropdown.d.ts +4 -4
  48. package/ssr/esm/lib/dsr-components/select.d.ts +5 -6
  49. package/ssr/esm/lib/types.d.ts +13 -0
package/CHANGELOG.md CHANGED
@@ -14,6 +14,38 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
14
14
 
15
15
  ### [Unreleased]
16
16
 
17
+ ### [3.27.0-rc.6] - 2025-02-28
18
+
19
+ #### Changed
20
+
21
+ - `Carousel`: Center layout of Carousel on mobile view
22
+ ([#3765](https://github.com/porsche-design-system/porsche-design-system/pull/3765))
23
+ - `Carousel`: `auto` value of `slides-per-page` prop is breakpoint customizable
24
+ ([#3767](https://github.com/porsche-design-system/porsche-design-system/pull/3767))
25
+
26
+ #### Added
27
+
28
+ - `Table`: `compact` prop to enable a smaller, space-saving version for compact layouts
29
+ ([#3758](https://github.com/porsche-design-system/porsche-design-system/pull/3758))
30
+ - `Table`: `layout` prop to render table with `table-layout: fixed` css for manual control of column widths
31
+ ([#3758](https://github.com/porsche-design-system/porsche-design-system/pull/3758))
32
+ - `Carousel`: `align-controls` prop to align the controls slot to the left or center (overwrites auto-alignment)
33
+ ([#3766](https://github.com/porsche-design-system/porsche-design-system/pull/3766))
34
+
35
+ #### Changed
36
+
37
+ - `Select`, `Multi Select`, `Select Wrapper`:
38
+ - gets rendered on `#top-layer` which enables it to be shown correctly even when used e.g. within a scroll container
39
+ or overflow context ([#3754](https://github.com/porsche-design-system/porsche-design-system/pull/3754))
40
+ - gets positioned by [CSS Anchor Positioning](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_anchor_positioning)
41
+ or [Floating UI](https://floating-ui.com) as fallback for browsers not supporting it yet
42
+ ([#3754](https://github.com/porsche-design-system/porsche-design-system/pull/3754))
43
+ - modernized visual appearance, dynamic max-height based on viewport and fade in animation of option list
44
+ ([#3754](https://github.com/porsche-design-system/porsche-design-system/pull/3754))
45
+ - `Select`, `Select Wrapper`:
46
+ - focus outline becomes default focus style when no filter is used
47
+ ([#3754](https://github.com/porsche-design-system/porsche-design-system/pull/3754))
48
+
17
49
  ### [3.27.0-rc.5] - 2025-02-20
18
50
 
19
51
  #### Fixed
@@ -6,15 +6,15 @@ var react = require('react');
6
6
  var hooks = require('../../hooks.cjs');
7
7
  var utils = require('../../utils.cjs');
8
8
 
9
- const PCarousel = /*#__PURE__*/ react.forwardRef(({ activeSlideIndex = 0, alignHeader = 'start', aria, description, disablePagination, focusOnCenterSlide = false, gradientColor = 'none', heading, headingSize = 'x-large', intl, onCarouselChange, onUpdate, pagination = true, rewind = true, skipLinkTarget, slidesPerPage = 1, theme, trimSpace = true, width = 'basic', wrapContent, className, ...rest }, ref) => {
9
+ const PCarousel = /*#__PURE__*/ react.forwardRef(({ activeSlideIndex = 0, alignControls = 'auto', alignHeader = 'start', aria, description, disablePagination, focusOnCenterSlide = false, gradientColor = 'none', heading, headingSize = 'x-large', intl, onCarouselChange, onUpdate, pagination = true, rewind = true, skipLinkTarget, slidesPerPage = 1, theme, trimSpace = true, width = 'basic', wrapContent, className, ...rest }, ref) => {
10
10
  const elementRef = react.useRef(undefined);
11
11
  hooks.useEventCallback(elementRef, 'carouselChange', onCarouselChange);
12
12
  hooks.useEventCallback(elementRef, 'update', onUpdate);
13
13
  const WebComponentTag = hooks.usePrefix('p-carousel');
14
- const propsToSync = [activeSlideIndex, alignHeader, aria, description, disablePagination, focusOnCenterSlide, gradientColor, heading, headingSize, intl, pagination, rewind, skipLinkTarget, slidesPerPage, theme || hooks.useTheme(), trimSpace, width, wrapContent];
14
+ const propsToSync = [activeSlideIndex, alignControls, alignHeader, aria, description, disablePagination, focusOnCenterSlide, gradientColor, heading, headingSize, intl, pagination, rewind, skipLinkTarget, slidesPerPage, theme || hooks.useTheme(), trimSpace, width, wrapContent];
15
15
  hooks.useBrowserLayoutEffect(() => {
16
16
  const { current } = elementRef;
17
- ['activeSlideIndex', 'alignHeader', 'aria', 'description', 'disablePagination', 'focusOnCenterSlide', 'gradientColor', 'heading', 'headingSize', 'intl', 'pagination', 'rewind', 'skipLinkTarget', 'slidesPerPage', 'theme', 'trimSpace', 'width', 'wrapContent'].forEach((propName, i) => (current[propName] = propsToSync[i]));
17
+ ['activeSlideIndex', 'alignControls', 'alignHeader', 'aria', 'description', 'disablePagination', 'focusOnCenterSlide', 'gradientColor', 'heading', 'headingSize', 'intl', 'pagination', 'rewind', 'skipLinkTarget', 'slidesPerPage', 'theme', 'trimSpace', 'width', 'wrapContent'].forEach((propName, i) => (current[propName] = propsToSync[i]));
18
18
  }, propsToSync);
19
19
  const props = {
20
20
  ...rest,
@@ -6,15 +6,15 @@ var react = require('react');
6
6
  var hooks = require('../../hooks.cjs');
7
7
  var utils = require('../../utils.cjs');
8
8
 
9
- const PTable = /*#__PURE__*/ react.forwardRef(({ caption, onSortingChange, onUpdate, theme, className, ...rest }, ref) => {
9
+ const PTable = /*#__PURE__*/ react.forwardRef(({ caption, compact = false, layout = 'auto', onSortingChange, onUpdate, theme, className, ...rest }, ref) => {
10
10
  const elementRef = react.useRef(undefined);
11
11
  hooks.useEventCallback(elementRef, 'sortingChange', onSortingChange);
12
12
  hooks.useEventCallback(elementRef, 'update', onUpdate);
13
13
  const WebComponentTag = hooks.usePrefix('p-table');
14
- const propsToSync = [caption, theme || hooks.useTheme()];
14
+ const propsToSync = [caption, compact, layout, theme || hooks.useTheme()];
15
15
  hooks.useBrowserLayoutEffect(() => {
16
16
  const { current } = elementRef;
17
- ['caption', 'theme'].forEach((propName, i) => (current[propName] = propsToSync[i]));
17
+ ['caption', 'compact', 'layout', 'theme'].forEach((propName, i) => (current[propName] = propsToSync[i]));
18
18
  }, propsToSync);
19
19
  const props = {
20
20
  ...rest,
@@ -1,10 +1,14 @@
1
1
  import type { BaseProps } from '../../BaseProps';
2
- import type { CarouselAlignHeader, SelectedAriaAttributes, CarouselAriaAttribute, BreakpointCustomizable, CarouselGradientColor, CarouselHeadingSize, CarouselInternationalization, CarouselUpdateEventDetail, Theme, CarouselWidth } from '../types';
2
+ import type { CarouselAlignControls, CarouselAlignHeader, SelectedAriaAttributes, CarouselAriaAttribute, BreakpointCustomizable, CarouselGradientColor, CarouselHeadingSize, CarouselInternationalization, CarouselUpdateEventDetail, CarouselSlidesPerPage, Theme, CarouselWidth } from '../types';
3
3
  export type PCarouselProps = BaseProps & {
4
4
  /**
5
5
  * Defines which slide to be active (zero-based numbering).
6
6
  */
7
7
  activeSlideIndex?: number;
8
+ /**
9
+ * Alignment of slotted controls
10
+ */
11
+ alignControls?: CarouselAlignControls;
8
12
  /**
9
13
  * Alignment of heading and description
10
14
  */
@@ -64,7 +68,7 @@ export type PCarouselProps = BaseProps & {
64
68
  /**
65
69
  * Sets the amount of slides visible at the same time. Can be set to `auto` if you want to define different widths per slide via CSS.
66
70
  */
67
- slidesPerPage?: BreakpointCustomizable<number> | "auto";
71
+ slidesPerPage?: BreakpointCustomizable<CarouselSlidesPerPage>;
68
72
  /**
69
73
  * Adapts the color when used on dark background.
70
74
  */
@@ -88,6 +92,10 @@ export declare const PCarousel: import("react").ForwardRefExoticComponent<import
88
92
  * Defines which slide to be active (zero-based numbering).
89
93
  */
90
94
  activeSlideIndex?: number;
95
+ /**
96
+ * Alignment of slotted controls
97
+ */
98
+ alignControls?: CarouselAlignControls;
91
99
  /**
92
100
  * Alignment of heading and description
93
101
  */
@@ -147,7 +155,7 @@ export declare const PCarousel: import("react").ForwardRefExoticComponent<import
147
155
  /**
148
156
  * Sets the amount of slides visible at the same time. Can be set to `auto` if you want to define different widths per slide via CSS.
149
157
  */
150
- slidesPerPage?: BreakpointCustomizable<number> | "auto";
158
+ slidesPerPage?: BreakpointCustomizable<CarouselSlidesPerPage>;
151
159
  /**
152
160
  * Adapts the color when used on dark background.
153
161
  */
@@ -4,15 +4,15 @@ import { forwardRef, useRef } from 'react';
4
4
  import { useEventCallback, usePrefix, useTheme, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
5
5
  import { syncRef } from '../../utils.mjs';
6
6
 
7
- const PCarousel = /*#__PURE__*/ forwardRef(({ activeSlideIndex = 0, alignHeader = 'start', aria, description, disablePagination, focusOnCenterSlide = false, gradientColor = 'none', heading, headingSize = 'x-large', intl, onCarouselChange, onUpdate, pagination = true, rewind = true, skipLinkTarget, slidesPerPage = 1, theme, trimSpace = true, width = 'basic', wrapContent, className, ...rest }, ref) => {
7
+ const PCarousel = /*#__PURE__*/ forwardRef(({ activeSlideIndex = 0, alignControls = 'auto', alignHeader = 'start', aria, description, disablePagination, focusOnCenterSlide = false, gradientColor = 'none', heading, headingSize = 'x-large', intl, onCarouselChange, onUpdate, pagination = true, rewind = true, skipLinkTarget, slidesPerPage = 1, theme, trimSpace = true, width = 'basic', wrapContent, className, ...rest }, ref) => {
8
8
  const elementRef = useRef(undefined);
9
9
  useEventCallback(elementRef, 'carouselChange', onCarouselChange);
10
10
  useEventCallback(elementRef, 'update', onUpdate);
11
11
  const WebComponentTag = usePrefix('p-carousel');
12
- const propsToSync = [activeSlideIndex, alignHeader, aria, description, disablePagination, focusOnCenterSlide, gradientColor, heading, headingSize, intl, pagination, rewind, skipLinkTarget, slidesPerPage, theme || useTheme(), trimSpace, width, wrapContent];
12
+ const propsToSync = [activeSlideIndex, alignControls, alignHeader, aria, description, disablePagination, focusOnCenterSlide, gradientColor, heading, headingSize, intl, pagination, rewind, skipLinkTarget, slidesPerPage, theme || useTheme(), trimSpace, width, wrapContent];
13
13
  useBrowserLayoutEffect(() => {
14
14
  const { current } = elementRef;
15
- ['activeSlideIndex', 'alignHeader', 'aria', 'description', 'disablePagination', 'focusOnCenterSlide', 'gradientColor', 'heading', 'headingSize', 'intl', 'pagination', 'rewind', 'skipLinkTarget', 'slidesPerPage', 'theme', 'trimSpace', 'width', 'wrapContent'].forEach((propName, i) => (current[propName] = propsToSync[i]));
15
+ ['activeSlideIndex', 'alignControls', 'alignHeader', 'aria', 'description', 'disablePagination', 'focusOnCenterSlide', 'gradientColor', 'heading', 'headingSize', 'intl', 'pagination', 'rewind', 'skipLinkTarget', 'slidesPerPage', 'theme', 'trimSpace', 'width', 'wrapContent'].forEach((propName, i) => (current[propName] = propsToSync[i]));
16
16
  }, propsToSync);
17
17
  const props = {
18
18
  ...rest,
@@ -1,10 +1,18 @@
1
1
  import type { BaseProps } from '../../BaseProps';
2
- import type { TableUpdateEventDetail, Theme } from '../types';
2
+ import type { TableLayout, TableUpdateEventDetail, Theme } from '../types';
3
3
  export type PTableProps = BaseProps & {
4
4
  /**
5
5
  * A caption describing the contents of the table for accessibility only. This won't be visible in the browser. Use an element with an attribute of `slot="caption"` for a visible caption.
6
6
  */
7
7
  caption?: string;
8
+ /**
9
+ * Displays as compact version.
10
+ */
11
+ compact?: boolean;
12
+ /**
13
+ * Controls the layout behavior of the table.
14
+ */
15
+ layout?: TableLayout;
8
16
  /**
9
17
  * @deprecated since v3.0.0, will be removed with next major release, use `update` event instead. Emitted when sorting is changed.
10
18
  */
@@ -23,6 +31,14 @@ export declare const PTable: import("react").ForwardRefExoticComponent<import("r
23
31
  * A caption describing the contents of the table for accessibility only. This won't be visible in the browser. Use an element with an attribute of `slot="caption"` for a visible caption.
24
32
  */
25
33
  caption?: string;
34
+ /**
35
+ * Displays as compact version.
36
+ */
37
+ compact?: boolean;
38
+ /**
39
+ * Controls the layout behavior of the table.
40
+ */
41
+ layout?: TableLayout;
26
42
  /**
27
43
  * @deprecated since v3.0.0, will be removed with next major release, use `update` event instead. Emitted when sorting is changed.
28
44
  */
@@ -4,15 +4,15 @@ import { forwardRef, useRef } from 'react';
4
4
  import { useEventCallback, usePrefix, useTheme, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
5
5
  import { syncRef } from '../../utils.mjs';
6
6
 
7
- const PTable = /*#__PURE__*/ forwardRef(({ caption, onSortingChange, onUpdate, theme, className, ...rest }, ref) => {
7
+ const PTable = /*#__PURE__*/ forwardRef(({ caption, compact = false, layout = 'auto', onSortingChange, onUpdate, theme, className, ...rest }, ref) => {
8
8
  const elementRef = useRef(undefined);
9
9
  useEventCallback(elementRef, 'sortingChange', onSortingChange);
10
10
  useEventCallback(elementRef, 'update', onUpdate);
11
11
  const WebComponentTag = usePrefix('p-table');
12
- const propsToSync = [caption, theme || useTheme()];
12
+ const propsToSync = [caption, compact, layout, theme || useTheme()];
13
13
  useBrowserLayoutEffect(() => {
14
14
  const { current } = elementRef;
15
- ['caption', 'theme'].forEach((propName, i) => (current[propName] = propsToSync[i]));
15
+ ['caption', 'compact', 'layout', 'theme'].forEach((propName, i) => (current[propName] = propsToSync[i]));
16
16
  }, propsToSync);
17
17
  const props = {
18
18
  ...rest,
@@ -767,6 +767,8 @@ declare const CAROUSEL_WIDTHS: readonly [
767
767
  "extended"
768
768
  ];
769
769
  export type CarouselWidth = (typeof CAROUSEL_WIDTHS)[number];
770
+ declare const CAROUSEL_SLIDES_PER_PAGE: (string | number)[];
771
+ export type CarouselSlidesPerPage = (typeof CAROUSEL_SLIDES_PER_PAGE)[number];
770
772
  declare const CAROUSEL_GRADIENT_COLORS: readonly [
771
773
  "background-base",
772
774
  "background-surface",
@@ -791,6 +793,12 @@ export type CarouselUpdateEvent = {
791
793
  previousIndex: number;
792
794
  };
793
795
  export type CarouselUpdateEventDetail = CarouselUpdateEvent;
796
+ declare const CAROUSEL_ALIGN_CONTROLS: readonly [
797
+ "start",
798
+ "center",
799
+ "auto"
800
+ ];
801
+ export type CarouselAlignControls = (typeof CAROUSEL_ALIGN_CONTROLS)[number];
794
802
  export type CheckboxState = FormState;
795
803
  export type CheckboxUpdateEventDetail = {
796
804
  name: string;
@@ -1357,6 +1365,11 @@ export type SwitchUpdateEvent = {
1357
1365
  };
1358
1366
  export type SwitchUpdateEventDetail = SwitchUpdateEvent;
1359
1367
  export type Direction = "asc" | "desc";
1368
+ declare const TABLE_LAYOUTS: readonly [
1369
+ "auto",
1370
+ "fixed"
1371
+ ];
1372
+ export type TableLayout = (typeof TABLE_LAYOUTS)[number];
1360
1373
  export type TableHeadCellSort = {
1361
1374
  id: string;
1362
1375
  active?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@porsche-design-system/components-react",
3
- "version": "3.27.0-rc.5",
3
+ "version": "3.27.0-rc.6",
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.27.0-rc.5"
20
+ "@porsche-design-system/components-js": "3.27.0-rc.6"
21
21
  },
22
22
  "peerDependencies": {
23
23
  "ag-grid-community": ">= 33.0.0 <34.0.0",