@porsche-design-system/components-react 4.0.0-beta.0 → 4.0.0-beta.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.
- package/CHANGELOG.md +158 -1
- package/cjs/lib/components/accordion.wrapper.cjs +3 -3
- package/esm/lib/components/accordion.wrapper.d.ts +29 -13
- package/esm/lib/components/accordion.wrapper.mjs +3 -3
- package/esm/lib/types.d.ts +116 -102
- package/package.json +13 -2
- package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +407 -186
- package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/accordion.wrapper.cjs +4 -4
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/accordion.cjs +15 -10
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-base.cjs +2 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-month.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-week.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.cjs +2 -1
- package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +407 -186
- package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/accordion.wrapper.mjs +4 -4
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/accordion.mjs +15 -10
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-base.mjs +2 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-month.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-week.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.mjs +2 -1
- package/ssr/esm/lib/components/accordion.wrapper.d.ts +29 -13
- package/ssr/esm/lib/dsr-components/accordion.d.ts +8 -2
- package/ssr/esm/lib/types.d.ts +116 -102
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,127 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
|
|
|
14
14
|
|
|
15
15
|
## [Unreleased]
|
|
16
16
|
|
|
17
|
+
## [4.0.0-beta.1] - 2026-03-02
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- `SCSS`, `Emotion`, `Vanilla Extract`: bring back PDS v3 import paths for better DX and backward compatibility.
|
|
22
|
+
- `Accordion`:
|
|
23
|
+
- Slot `summary` ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
24
|
+
- Slot `summary-before` ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
25
|
+
- Slot `summary-after` ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
26
|
+
- Prop `background` with values `canvas | surface | frosted | none (default)`
|
|
27
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
28
|
+
- Prop `align-marker` with values `start | end (default)`
|
|
29
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
30
|
+
- CSS Variable `--p-accordion-px` to control the horizontal padding
|
|
31
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
32
|
+
- CSS Variable `--p-accordion-py` to control the vertical padding
|
|
33
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
34
|
+
- CSS Variable `--p-accordion-summary-top` to control the optional sticky top position
|
|
35
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
36
|
+
|
|
37
|
+
### Changed
|
|
38
|
+
|
|
39
|
+
- `Accordion`:
|
|
40
|
+
- Modernize visual appearance ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
41
|
+
- Use semantic HTML element `<details>` and `<summary>` internally (instead of divs and buttons) for better
|
|
42
|
+
accessibility and native behavior
|
|
43
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
44
|
+
- `Input Date`, `Input Email`, `Input Number`, `Input Password`, `Input Search`, `Input Tel`, `Input Text`,
|
|
45
|
+
`Input Time`, `Input Url`, `Textarea`: `value` sync with the underlying native `<input />` or `<textarea />` element
|
|
46
|
+
- `Checkbox`, `Input-*`, `Multi-Select`, `Pin Code`, `Radio Button Group`, `Segmented-Control`, `Select`, `Textarea`:
|
|
47
|
+
Slot `label-after` is not affected by `disbaled` states anymore
|
|
48
|
+
([#4181](https://github.com/porsche-design-system/porsche-design-system/pull/4181))
|
|
49
|
+
- **Vue:** All component events now emit the full `CustomEvent` instead of just the event detail. The event detail must
|
|
50
|
+
be accessed via `event.detail`. Props and other component data can be accessed directly via `event.target`.
|
|
51
|
+
|
|
52
|
+
```diff
|
|
53
|
+
<script setup lang="ts">
|
|
54
|
+
import { type AccordionUpdateEventDetail, PAccordion } from '@porsche-design-system/components-vue';
|
|
55
|
+
import { ref } from 'vue';
|
|
56
|
+
|
|
57
|
+
const isOpen = ref(false);
|
|
58
|
+
|
|
59
|
+
- const onUpdate = (event: AccordionUpdateEventDetail): void => {
|
|
60
|
+
+ const onUpdate = (event: CustomEvent<AccordionUpdateEventDetail>): void => {
|
|
61
|
+
- isOpen1.value = event.open;
|
|
62
|
+
+ isOpen1.value = event.detail.open; // You can also access the value from the component itself via e.target, e.g. e.target.open
|
|
63
|
+
};
|
|
64
|
+
</script>
|
|
65
|
+
|
|
66
|
+
<template>
|
|
67
|
+
<PAccordion :open="isOpen" @update="onUpdate">
|
|
68
|
+
...
|
|
69
|
+
</PAccordion>
|
|
70
|
+
</template>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Removed
|
|
74
|
+
|
|
75
|
+
- `Accordion`:
|
|
76
|
+
- Prop `tag` use `heading-tag` (deprecated with v4 now) instead or make use of `slot="summary"` for more flexibility
|
|
77
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
78
|
+
```diff
|
|
79
|
+
- <p-acccordion heading="Some summary" tag="h3">
|
|
80
|
+
<p-text>Some details</p-text>
|
|
81
|
+
</p-accordion>
|
|
82
|
+
+ <p-accordion>
|
|
83
|
+
+ <p-heading slot="summary" tag="h3" size="small">Some summary</p-heading>
|
|
84
|
+
<p-text>Some details</p-text>
|
|
85
|
+
</p-accordion>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Deprecated
|
|
89
|
+
|
|
90
|
+
- `SCSS`: Import path for npm package:
|
|
91
|
+
|
|
92
|
+
```diff
|
|
93
|
+
- @use '@porsche-design-system/components-{js|angular|react|vue}/styles' as *;
|
|
94
|
+
+ @use '@porsche-design-system/components-{js|angular|react|vue}/scss' as *;
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
- `Emotion`: Import path for npm package:
|
|
98
|
+
|
|
99
|
+
```diff
|
|
100
|
+
- import { … } from '@porsche-design-system/components-{js|angular|react|vue}/styles';
|
|
101
|
+
+ import { … } from '@porsche-design-system/components-{js|angular|react|vue}/emotion';
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
- `Vanilla Extract`: Import path for npm package:
|
|
105
|
+
|
|
106
|
+
```diff
|
|
107
|
+
- import { … } from '@porsche-design-system/components-{js|angular|react|vue}/styles/vanilla-extract';
|
|
108
|
+
+ import { … } from '@porsche-design-system/components-{js|angular|react|vue}/vanilla-extract';
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
- `Accordion`:
|
|
112
|
+
- Prop `heading`, `heading-tag` and `size` in favor of `slot="summary"` for more flexibility
|
|
113
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
114
|
+
```diff
|
|
115
|
+
- <p-acccordion heading="Some summary" heading-tag="h3" size="small">
|
|
116
|
+
<p-text>Some details</p-text>
|
|
117
|
+
</p-accordion>
|
|
118
|
+
+ <p-accordion>
|
|
119
|
+
+ <p-heading slot="summary" tag="h3" size="small">Some summary</p-heading>
|
|
120
|
+
<p-text>Some details</p-text>
|
|
121
|
+
</p-accordion>
|
|
122
|
+
```
|
|
123
|
+
- Slot `heading` in favor of `slot="summary"`
|
|
124
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
125
|
+
```diff
|
|
126
|
+
<p-acccordion>
|
|
127
|
+
- <span slot="heading">Some summary</span>
|
|
128
|
+
<p-text>Some details</p-text>
|
|
129
|
+
</p-accordion>
|
|
130
|
+
<p-accordion>
|
|
131
|
+
+ <p-heading slot="summary" tag="h3" size="small">Some summary</p-heading>
|
|
132
|
+
<p-text>Some details</p-text>
|
|
133
|
+
</p-accordion>
|
|
134
|
+
```
|
|
135
|
+
- CSS Variable `--p-accordion-position-sticky-top`, use `--p-accordion-summary-top` instead
|
|
136
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
137
|
+
|
|
17
138
|
## [4.0.0-beta.0] - 2026-02-12
|
|
18
139
|
|
|
19
140
|
### Added
|
|
@@ -401,6 +522,17 @@ and migration steps.
|
|
|
401
522
|
- `Multi Select`, `Pin Code`, `Radio Group`, `Textarea`: disabled prop is not mutable
|
|
402
523
|
([#4118](https://github.com/porsche-design-system/porsche-design-system/pull/4118))
|
|
403
524
|
([#4121](https://github.com/porsche-design-system/porsche-design-system/pull/4121))
|
|
525
|
+
- `Multi Select`: trim whitespace of selected options text
|
|
526
|
+
([#4132](https://github.com/porsche-design-system/porsche-design-system/pull/4132))
|
|
527
|
+
|
|
528
|
+
## [3.32.1] - 2026-02-24
|
|
529
|
+
|
|
530
|
+
## [3.32.1-rc.0] - 2026-02-20
|
|
531
|
+
|
|
532
|
+
### Fixed
|
|
533
|
+
|
|
534
|
+
- `Input Email`, `Input Password`, `Input Tel`, `Pin Code`: optimize input direction and behavior in RTL mode
|
|
535
|
+
([#4209](https://github.com/porsche-design-system/porsche-design-system/pull/4209))
|
|
404
536
|
|
|
405
537
|
## [3.32.0] - 2026-02-04
|
|
406
538
|
|
|
@@ -435,12 +567,37 @@ and migration steps.
|
|
|
435
567
|
|
|
436
568
|
### Added
|
|
437
569
|
|
|
570
|
+
- `Multi Select, Select`:
|
|
571
|
+
- `selected` slot for custom selection rendering and enabling complex options
|
|
572
|
+
- `options-status` slot for loading, error and no results states when using custom filtering
|
|
573
|
+
([#4111](https://github.com/porsche-design-system/porsche-design-system/pull/4111))
|
|
574
|
+
- `Multi Select, Select`:
|
|
575
|
+
- `filter` slot to allow custom asynchronous filtering
|
|
576
|
+
- `toggle` event when opening/closing the dropdown
|
|
577
|
+
([#4089](https://github.com/porsche-design-system/porsche-design-system/pull/4089))
|
|
578
|
+
- `Segmented Control`: add `state` and `message` props to enable visual validation states
|
|
579
|
+
([#4023](https://github.com/porsche-design-system/porsche-design-system/pull/4023)) `Segmented Control`: add `label`,
|
|
580
|
+
- `Segmented Control`: `label`, `desription`, `hideLabel` and `required` props for better form integration
|
|
581
|
+
([#4023](https://github.com/porsche-design-system/porsche-design-system/pull/4023))
|
|
582
|
+
- `Textarea`: `compact` prop to enable a smaller, space-saving version for compact layouts
|
|
583
|
+
([#4102](https://github.com/porsche-design-system/porsche-design-system/pull/4102))
|
|
584
|
+
- `Tag Dismissible`: `compact` prop to enable a smaller, space-saving version for compact layouts
|
|
585
|
+
([#4114](https://github.com/porsche-design-system/porsche-design-system/pull/4114))
|
|
586
|
+
- Flags: added `AL, BD, RE` flags ([#4128](https://github.com/porsche-design-system/porsche-design-system/pull/4128))
|
|
587
|
+
- `Input Month`, `Input Week`: ([#4126](https://github.com/porsche-design-system/porsche-design-system/pull/4126))
|
|
588
|
+
- `Input Search`: `maxLength` & `minLength` prop to specify the maximum and minimum number of characters the user can
|
|
589
|
+
enter ([#4131](https://github.com/porsche-design-system/porsche-design-system/pull/4131))
|
|
438
590
|
- `Textarea`: add CSS Variables for `fieldSizing`, `minWidth`, `maxWidth`, `minHeight`, `maxHeight` to control the
|
|
439
591
|
intrinsic sizing behavior ([#4132](https://github.com/porsche-design-system/porsche-design-system/pull/4132))
|
|
440
|
-
- `Canvas`: prop `background` to set the background color to `canvas | surface`
|
|
441
592
|
|
|
442
593
|
### Fixed
|
|
443
594
|
|
|
595
|
+
- `Checkbox`: missing deprecation for `CheckboxUpdateEventDetail` event & disabled prop is not mutable
|
|
596
|
+
- `Input Date`, `Input Email`, `Input Number`, `Input Password`, `Input Search`, `Input Tel`, `Input Text`,
|
|
597
|
+
`Input Time`, `Input Url`, `Textarea`: disabled prop is not mutable & error when disabled and invalid
|
|
598
|
+
- `Multi Select`, `Pin Code`, `Radio Group`, `Textarea`: disabled prop is not mutable
|
|
599
|
+
([#4118](https://github.com/porsche-design-system/porsche-design-system/pull/4118))
|
|
600
|
+
([#4121](https://github.com/porsche-design-system/porsche-design-system/pull/4121))
|
|
444
601
|
- `Multi Select`: trim whitespace of selected options text
|
|
445
602
|
([#4132](https://github.com/porsche-design-system/porsche-design-system/pull/4132))
|
|
446
603
|
|
|
@@ -6,14 +6,14 @@ var react = require('react');
|
|
|
6
6
|
var hooks = require('../../hooks.cjs');
|
|
7
7
|
var utils = require('../../utils.cjs');
|
|
8
8
|
|
|
9
|
-
const PAccordion = /*#__PURE__*/ react.forwardRef(({ compact, heading, headingTag = 'h2', onUpdate, open, size = 'small', sticky, className, ...rest }, ref) => {
|
|
9
|
+
const PAccordion = /*#__PURE__*/ react.forwardRef(({ alignMarker = 'end', background = 'none', compact, heading, headingTag = 'h2', onUpdate, open, size = 'small', sticky, className, ...rest }, ref) => {
|
|
10
10
|
const elementRef = react.useRef(undefined);
|
|
11
11
|
hooks.useEventCallback(elementRef, 'update', onUpdate);
|
|
12
12
|
const WebComponentTag = hooks.usePrefix('p-accordion');
|
|
13
|
-
const propsToSync = [compact, heading, headingTag, open, size, sticky];
|
|
13
|
+
const propsToSync = [alignMarker, background, compact, heading, headingTag, open, size, sticky];
|
|
14
14
|
hooks.useBrowserLayoutEffect(() => {
|
|
15
15
|
const { current } = elementRef;
|
|
16
|
-
['compact', 'heading', 'headingTag', 'open', 'size', 'sticky'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
16
|
+
['alignMarker', 'background', 'compact', 'heading', 'headingTag', 'open', 'size', 'sticky'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
17
17
|
}, propsToSync);
|
|
18
18
|
const props = {
|
|
19
19
|
...rest,
|
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
import type { BaseProps } from '../../BaseProps';
|
|
2
|
-
import type { AccordionHeadingTag, AccordionUpdateEventDetail, BreakpointCustomizable, AccordionSize } from '../types';
|
|
2
|
+
import type { AccordionAlignMarker, AccordionBackground, AccordionHeadingTag, AccordionUpdateEventDetail, BreakpointCustomizable, AccordionSize } from '../types';
|
|
3
3
|
export type PAccordionProps = BaseProps & {
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Aligns the marker within the summary section.
|
|
6
|
+
*/
|
|
7
|
+
alignMarker?: AccordionAlignMarker;
|
|
8
|
+
/**
|
|
9
|
+
* Defines the background color. Use `frosted` only on images, videos or gradients.
|
|
10
|
+
*/
|
|
11
|
+
background?: AccordionBackground;
|
|
12
|
+
/**
|
|
13
|
+
* Displays the accordion in compact mode.
|
|
6
14
|
*/
|
|
7
15
|
compact?: boolean;
|
|
8
16
|
/**
|
|
9
|
-
*
|
|
17
|
+
* @deprecated , will be removed in the next major release. Use the `summary` slot instead. Sets the heading text within the summary section.
|
|
10
18
|
*/
|
|
11
19
|
heading?: string;
|
|
12
20
|
/**
|
|
13
|
-
* Sets
|
|
21
|
+
* @deprecated , will be removed in the next major release. Use the `summary` slot instead. Sets the heading tag for proper semantic structure within the page.
|
|
14
22
|
*/
|
|
15
23
|
headingTag?: AccordionHeadingTag;
|
|
16
24
|
/**
|
|
@@ -18,29 +26,37 @@ export type PAccordionProps = BaseProps & {
|
|
|
18
26
|
*/
|
|
19
27
|
onUpdate?: (event: CustomEvent<AccordionUpdateEventDetail>) => void;
|
|
20
28
|
/**
|
|
21
|
-
*
|
|
29
|
+
* Controls whether the accordion is open or closed.
|
|
22
30
|
*/
|
|
23
31
|
open?: boolean;
|
|
24
32
|
/**
|
|
25
|
-
*
|
|
33
|
+
* @deprecated , will be removed in the next major release. Use the `summary` slot instead. Controls the heading size in the summary section (only applies when using the `heading` prop or `heading` slot).
|
|
26
34
|
*/
|
|
27
35
|
size?: BreakpointCustomizable<AccordionSize>;
|
|
28
36
|
/**
|
|
29
|
-
* @experimental
|
|
37
|
+
* @experimental Makes the summary section sticky at the top while scrolling. Only works with `background="canvas"` or `background="surface"`. Not compatible with `summary-before` or `summary-after` slots.
|
|
30
38
|
*/
|
|
31
39
|
sticky?: boolean;
|
|
32
40
|
};
|
|
33
41
|
export declare const PAccordion: import("react").ForwardRefExoticComponent<Omit<import("react").DOMAttributes<{}>, "onChange" | "onInput" | "onToggle"> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
|
|
34
42
|
/**
|
|
35
|
-
*
|
|
43
|
+
* Aligns the marker within the summary section.
|
|
44
|
+
*/
|
|
45
|
+
alignMarker?: AccordionAlignMarker;
|
|
46
|
+
/**
|
|
47
|
+
* Defines the background color. Use `frosted` only on images, videos or gradients.
|
|
48
|
+
*/
|
|
49
|
+
background?: AccordionBackground;
|
|
50
|
+
/**
|
|
51
|
+
* Displays the accordion in compact mode.
|
|
36
52
|
*/
|
|
37
53
|
compact?: boolean;
|
|
38
54
|
/**
|
|
39
|
-
*
|
|
55
|
+
* @deprecated , will be removed in the next major release. Use the `summary` slot instead. Sets the heading text within the summary section.
|
|
40
56
|
*/
|
|
41
57
|
heading?: string;
|
|
42
58
|
/**
|
|
43
|
-
* Sets
|
|
59
|
+
* @deprecated , will be removed in the next major release. Use the `summary` slot instead. Sets the heading tag for proper semantic structure within the page.
|
|
44
60
|
*/
|
|
45
61
|
headingTag?: AccordionHeadingTag;
|
|
46
62
|
/**
|
|
@@ -48,15 +64,15 @@ export declare const PAccordion: import("react").ForwardRefExoticComponent<Omit<
|
|
|
48
64
|
*/
|
|
49
65
|
onUpdate?: (event: CustomEvent<AccordionUpdateEventDetail>) => void;
|
|
50
66
|
/**
|
|
51
|
-
*
|
|
67
|
+
* Controls whether the accordion is open or closed.
|
|
52
68
|
*/
|
|
53
69
|
open?: boolean;
|
|
54
70
|
/**
|
|
55
|
-
*
|
|
71
|
+
* @deprecated , will be removed in the next major release. Use the `summary` slot instead. Controls the heading size in the summary section (only applies when using the `heading` prop or `heading` slot).
|
|
56
72
|
*/
|
|
57
73
|
size?: BreakpointCustomizable<AccordionSize>;
|
|
58
74
|
/**
|
|
59
|
-
* @experimental
|
|
75
|
+
* @experimental Makes the summary section sticky at the top while scrolling. Only works with `background="canvas"` or `background="surface"`. Not compatible with `summary-before` or `summary-after` slots.
|
|
60
76
|
*/
|
|
61
77
|
sticky?: boolean;
|
|
62
78
|
} & {
|
|
@@ -4,14 +4,14 @@ import { forwardRef, useRef } from 'react';
|
|
|
4
4
|
import { useEventCallback, usePrefix, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
|
|
5
5
|
import { syncRef } from '../../utils.mjs';
|
|
6
6
|
|
|
7
|
-
const PAccordion = /*#__PURE__*/ forwardRef(({ compact, heading, headingTag = 'h2', onUpdate, open, size = 'small', sticky, className, ...rest }, ref) => {
|
|
7
|
+
const PAccordion = /*#__PURE__*/ forwardRef(({ alignMarker = 'end', background = 'none', compact, heading, headingTag = 'h2', onUpdate, open, size = 'small', sticky, className, ...rest }, ref) => {
|
|
8
8
|
const elementRef = useRef(undefined);
|
|
9
9
|
useEventCallback(elementRef, 'update', onUpdate);
|
|
10
10
|
const WebComponentTag = usePrefix('p-accordion');
|
|
11
|
-
const propsToSync = [compact, heading, headingTag, open, size, sticky];
|
|
11
|
+
const propsToSync = [alignMarker, background, compact, heading, headingTag, open, size, sticky];
|
|
12
12
|
useBrowserLayoutEffect(() => {
|
|
13
13
|
const { current } = elementRef;
|
|
14
|
-
['compact', 'heading', 'headingTag', 'open', 'size', 'sticky'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
14
|
+
['alignMarker', 'background', 'compact', 'heading', 'headingTag', 'open', 'size', 'sticky'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
15
15
|
}, propsToSync);
|
|
16
16
|
const props = {
|
|
17
17
|
...rest,
|
package/esm/lib/types.d.ts
CHANGED
|
@@ -621,27 +621,6 @@ declare const FLAG_NAMES: readonly [
|
|
|
621
621
|
"za"
|
|
622
622
|
];
|
|
623
623
|
export type FlagName = typeof FLAG_NAMES[number];
|
|
624
|
-
declare const FORM_STATES: readonly [
|
|
625
|
-
"none",
|
|
626
|
-
"error",
|
|
627
|
-
"success"
|
|
628
|
-
];
|
|
629
|
-
export type FormState = (typeof FORM_STATES)[number];
|
|
630
|
-
declare const BUTTON_ARIA_ATTRIBUTES: readonly [
|
|
631
|
-
"aria-label",
|
|
632
|
-
"aria-description",
|
|
633
|
-
"aria-expanded",
|
|
634
|
-
"aria-pressed",
|
|
635
|
-
"aria-haspopup"
|
|
636
|
-
];
|
|
637
|
-
export type ButtonAriaAttribute = (typeof BUTTON_ARIA_ATTRIBUTES)[number];
|
|
638
|
-
declare const LINK_ARIA_ATTRIBUTES: readonly [
|
|
639
|
-
"aria-label",
|
|
640
|
-
"aria-description",
|
|
641
|
-
"aria-current",
|
|
642
|
-
"aria-haspopup"
|
|
643
|
-
];
|
|
644
|
-
export type LinkAriaAttribute = (typeof LINK_ARIA_ATTRIBUTES)[number];
|
|
645
624
|
declare const breakpoints: readonly [
|
|
646
625
|
"base",
|
|
647
626
|
"xs",
|
|
@@ -658,75 +637,6 @@ export type BreakpointValues<T> = {
|
|
|
658
637
|
base: T;
|
|
659
638
|
};
|
|
660
639
|
export type BreakpointCustomizable<T> = T | BreakpointValues<T>;
|
|
661
|
-
declare const LINK_TARGETS: readonly [
|
|
662
|
-
"_self",
|
|
663
|
-
"_blank",
|
|
664
|
-
"_parent",
|
|
665
|
-
"_top"
|
|
666
|
-
];
|
|
667
|
-
export type LinkTarget = (typeof LINK_TARGETS)[number] | string;
|
|
668
|
-
declare const SCROLLER_ARIA_ATTRIBUTES: readonly [
|
|
669
|
-
"role"
|
|
670
|
-
];
|
|
671
|
-
export type ScrollerAriaAttribute = (typeof SCROLLER_ARIA_ATTRIBUTES)[number];
|
|
672
|
-
export type ScrollerScrollToPosition = {
|
|
673
|
-
scrollPosition: number;
|
|
674
|
-
isSmooth?: boolean;
|
|
675
|
-
} | string;
|
|
676
|
-
declare const SCROLL_INDICATOR_POSITIONS: readonly [
|
|
677
|
-
"top",
|
|
678
|
-
"center"
|
|
679
|
-
];
|
|
680
|
-
export type ScrollerAlignScrollIndicator = (typeof SCROLL_INDICATOR_POSITIONS)[number];
|
|
681
|
-
export type MultiSelectState = FormState;
|
|
682
|
-
export type MultiSelectDropdownDirection = SelectComponentsDropdownDirection;
|
|
683
|
-
export type MultiSelectChangeEventDetail = {
|
|
684
|
-
name: string;
|
|
685
|
-
value: string[];
|
|
686
|
-
};
|
|
687
|
-
export type MultiSelectToggleEventDetail = {
|
|
688
|
-
open: boolean;
|
|
689
|
-
};
|
|
690
|
-
export type SelectState = FormState;
|
|
691
|
-
export type SelectDropdownDirection = SelectComponentsDropdownDirection;
|
|
692
|
-
export type SelectChangeEventDetail = {
|
|
693
|
-
name: string;
|
|
694
|
-
value: string;
|
|
695
|
-
};
|
|
696
|
-
export type SelectToggleEventDetail = {
|
|
697
|
-
open: boolean;
|
|
698
|
-
};
|
|
699
|
-
declare const SELECT_DROPDOWN_DIRECTIONS: readonly [
|
|
700
|
-
"down",
|
|
701
|
-
"up",
|
|
702
|
-
"auto"
|
|
703
|
-
];
|
|
704
|
-
export type SelectComponentsDropdownDirection = (typeof SELECT_DROPDOWN_DIRECTIONS)[number];
|
|
705
|
-
declare const TILE_ASPECT_RATIOS: readonly [
|
|
706
|
-
"1/1",
|
|
707
|
-
"4/3",
|
|
708
|
-
"3/4",
|
|
709
|
-
"16/9",
|
|
710
|
-
"9/16",
|
|
711
|
-
"auto"
|
|
712
|
-
];
|
|
713
|
-
export type TileAspectRatio = (typeof TILE_ASPECT_RATIOS)[number];
|
|
714
|
-
declare const TILE_SIZES: readonly [
|
|
715
|
-
"medium",
|
|
716
|
-
"large",
|
|
717
|
-
"inherit"
|
|
718
|
-
];
|
|
719
|
-
export type TileSize = (typeof TILE_SIZES)[number];
|
|
720
|
-
declare const TILE_WEIGHTS: readonly [
|
|
721
|
-
"regular",
|
|
722
|
-
"semi-bold"
|
|
723
|
-
];
|
|
724
|
-
export type TileWeight = (typeof TILE_WEIGHTS)[number];
|
|
725
|
-
declare const TILE_ALIGNS: readonly [
|
|
726
|
-
"top",
|
|
727
|
-
"bottom"
|
|
728
|
-
];
|
|
729
|
-
export type TileAlign = (typeof TILE_ALIGNS)[number];
|
|
730
640
|
declare const HEADING_SIZES: readonly [
|
|
731
641
|
"small",
|
|
732
642
|
"medium",
|
|
@@ -780,22 +690,29 @@ declare const TYPOGRAPHY_TEXT_WEIGHTS: readonly [
|
|
|
780
690
|
"bold"
|
|
781
691
|
];
|
|
782
692
|
export type TypographyTextWeight = (typeof TYPOGRAPHY_TEXT_WEIGHTS)[number];
|
|
783
|
-
declare const
|
|
784
|
-
"
|
|
785
|
-
"
|
|
693
|
+
declare const LINK_BUTTON_VARIANTS: readonly [
|
|
694
|
+
"primary",
|
|
695
|
+
"secondary"
|
|
786
696
|
];
|
|
787
|
-
export type
|
|
697
|
+
export type LinkButtonVariant = (typeof LINK_BUTTON_VARIANTS)[number];
|
|
788
698
|
declare const BUTTON_TYPES: readonly [
|
|
789
699
|
"button",
|
|
790
700
|
"submit",
|
|
791
701
|
"reset"
|
|
792
702
|
];
|
|
793
703
|
export type ButtonType = (typeof BUTTON_TYPES)[number];
|
|
794
|
-
declare const
|
|
795
|
-
"
|
|
796
|
-
"
|
|
704
|
+
declare const ALIGN_LABELS: readonly [
|
|
705
|
+
"start",
|
|
706
|
+
"end"
|
|
797
707
|
];
|
|
798
|
-
export type
|
|
708
|
+
export type AlignLabel = (typeof ALIGN_LABELS)[number];
|
|
709
|
+
declare const LINK_TARGETS: readonly [
|
|
710
|
+
"_self",
|
|
711
|
+
"_blank",
|
|
712
|
+
"_parent",
|
|
713
|
+
"_top"
|
|
714
|
+
];
|
|
715
|
+
export type LinkTarget = (typeof LINK_TARGETS)[number] | string;
|
|
799
716
|
export type LinkButtonIconName = IconName | "none";
|
|
800
717
|
export type ButtonVariant = LinkButtonVariant;
|
|
801
718
|
export type LinkVariant = LinkButtonVariant;
|
|
@@ -814,15 +731,112 @@ export type SelectedAriaAttributes<T extends keyof AriaAttributes> = Pick<AriaAt
|
|
|
814
731
|
export type SelectedAriaRole<T> = {
|
|
815
732
|
role: Extract<AriaRole, T>;
|
|
816
733
|
};
|
|
817
|
-
declare const
|
|
818
|
-
"
|
|
819
|
-
"
|
|
734
|
+
declare const FORM_STATES: readonly [
|
|
735
|
+
"none",
|
|
736
|
+
"error",
|
|
737
|
+
"success"
|
|
820
738
|
];
|
|
821
|
-
export type
|
|
739
|
+
export type FormState = (typeof FORM_STATES)[number];
|
|
740
|
+
declare const BUTTON_ARIA_ATTRIBUTES: readonly [
|
|
741
|
+
"aria-label",
|
|
742
|
+
"aria-description",
|
|
743
|
+
"aria-expanded",
|
|
744
|
+
"aria-pressed",
|
|
745
|
+
"aria-haspopup"
|
|
746
|
+
];
|
|
747
|
+
export type ButtonAriaAttribute = (typeof BUTTON_ARIA_ATTRIBUTES)[number];
|
|
748
|
+
declare const LINK_ARIA_ATTRIBUTES: readonly [
|
|
749
|
+
"aria-label",
|
|
750
|
+
"aria-description",
|
|
751
|
+
"aria-current",
|
|
752
|
+
"aria-haspopup"
|
|
753
|
+
];
|
|
754
|
+
export type LinkAriaAttribute = (typeof LINK_ARIA_ATTRIBUTES)[number];
|
|
755
|
+
declare const SCROLLER_ARIA_ATTRIBUTES: readonly [
|
|
756
|
+
"role"
|
|
757
|
+
];
|
|
758
|
+
export type ScrollerAriaAttribute = (typeof SCROLLER_ARIA_ATTRIBUTES)[number];
|
|
759
|
+
export type ScrollerScrollToPosition = {
|
|
760
|
+
scrollPosition: number;
|
|
761
|
+
isSmooth?: boolean;
|
|
762
|
+
} | string;
|
|
763
|
+
declare const SCROLL_INDICATOR_POSITIONS: readonly [
|
|
764
|
+
"top",
|
|
765
|
+
"center"
|
|
766
|
+
];
|
|
767
|
+
export type ScrollerAlignScrollIndicator = (typeof SCROLL_INDICATOR_POSITIONS)[number];
|
|
768
|
+
export type MultiSelectState = FormState;
|
|
769
|
+
export type MultiSelectDropdownDirection = SelectComponentsDropdownDirection;
|
|
770
|
+
export type MultiSelectChangeEventDetail = {
|
|
771
|
+
name: string;
|
|
772
|
+
value: string[];
|
|
773
|
+
};
|
|
774
|
+
export type MultiSelectToggleEventDetail = {
|
|
775
|
+
open: boolean;
|
|
776
|
+
};
|
|
777
|
+
export type SelectState = FormState;
|
|
778
|
+
export type SelectDropdownDirection = SelectComponentsDropdownDirection;
|
|
779
|
+
export type SelectChangeEventDetail = {
|
|
780
|
+
name: string;
|
|
781
|
+
value: string;
|
|
782
|
+
};
|
|
783
|
+
export type SelectToggleEventDetail = {
|
|
784
|
+
open: boolean;
|
|
785
|
+
};
|
|
786
|
+
declare const SELECT_DROPDOWN_DIRECTIONS: readonly [
|
|
787
|
+
"down",
|
|
788
|
+
"up",
|
|
789
|
+
"auto"
|
|
790
|
+
];
|
|
791
|
+
export type SelectComponentsDropdownDirection = (typeof SELECT_DROPDOWN_DIRECTIONS)[number];
|
|
792
|
+
declare const TILE_ASPECT_RATIOS: readonly [
|
|
793
|
+
"1/1",
|
|
794
|
+
"4/3",
|
|
795
|
+
"3/4",
|
|
796
|
+
"16/9",
|
|
797
|
+
"9/16",
|
|
798
|
+
"auto"
|
|
799
|
+
];
|
|
800
|
+
export type TileAspectRatio = (typeof TILE_ASPECT_RATIOS)[number];
|
|
801
|
+
declare const TILE_SIZES: readonly [
|
|
802
|
+
"medium",
|
|
803
|
+
"large",
|
|
804
|
+
"inherit"
|
|
805
|
+
];
|
|
806
|
+
export type TileSize = (typeof TILE_SIZES)[number];
|
|
807
|
+
declare const TILE_WEIGHTS: readonly [
|
|
808
|
+
"regular",
|
|
809
|
+
"semi-bold"
|
|
810
|
+
];
|
|
811
|
+
export type TileWeight = (typeof TILE_WEIGHTS)[number];
|
|
812
|
+
declare const TILE_ALIGNS: readonly [
|
|
813
|
+
"top",
|
|
814
|
+
"bottom"
|
|
815
|
+
];
|
|
816
|
+
export type TileAlign = (typeof TILE_ALIGNS)[number];
|
|
817
|
+
declare const ACCORDIONS_BACKGROUNDS: readonly [
|
|
818
|
+
"canvas",
|
|
819
|
+
"surface",
|
|
820
|
+
"frosted",
|
|
821
|
+
"none"
|
|
822
|
+
];
|
|
823
|
+
export type AccordionBackground = (typeof ACCORDIONS_BACKGROUNDS)[number];
|
|
824
|
+
declare const ACCORDION_ALIGN_MARKERS: readonly [
|
|
825
|
+
"start",
|
|
826
|
+
"end"
|
|
827
|
+
];
|
|
828
|
+
export type AccordionAlignMarker = (typeof ACCORDION_ALIGN_MARKERS)[number];
|
|
822
829
|
export type AccordionUpdateEventDetail = {
|
|
823
830
|
open: boolean;
|
|
824
831
|
};
|
|
832
|
+
/** @deprecated */
|
|
825
833
|
export type AccordionHeadingTag = HeadingTag;
|
|
834
|
+
declare const ACCORDION_SIZES: readonly [
|
|
835
|
+
"small",
|
|
836
|
+
"medium"
|
|
837
|
+
];
|
|
838
|
+
/** @deprecated */
|
|
839
|
+
export type AccordionSize = (typeof ACCORDION_SIZES)[number];
|
|
826
840
|
declare const BANNER_STATES: readonly [
|
|
827
841
|
"info",
|
|
828
842
|
"success",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@porsche-design-system/components-react",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.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": "4.0.0-beta.
|
|
20
|
+
"@porsche-design-system/components-js": "4.0.0-beta.1"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
23
|
"ag-grid-community": ">= 35.0.0 <36.0.0",
|
|
@@ -96,6 +96,17 @@
|
|
|
96
96
|
"types": "./testing/index.d.ts",
|
|
97
97
|
"default": "./testing/index.cjs"
|
|
98
98
|
},
|
|
99
|
+
"./styles": {
|
|
100
|
+
"sass": "./scss/_index.scss",
|
|
101
|
+
"types": "./emotion/esm/index.d.ts",
|
|
102
|
+
"import": "./emotion/esm/index.mjs",
|
|
103
|
+
"default": "./emotion/cjs/index.cjs"
|
|
104
|
+
},
|
|
105
|
+
"./styles/vanilla-extract": {
|
|
106
|
+
"types": "./vanilla-extract/esm/index.d.ts",
|
|
107
|
+
"import": "./vanilla-extract/esm/index.mjs",
|
|
108
|
+
"default": "./vanilla-extract/cjs/index.cjs"
|
|
109
|
+
},
|
|
99
110
|
"./tailwindcss": "./tailwindcss/index.css",
|
|
100
111
|
"./tailwindcss/index.css": "./tailwindcss/index.css",
|
|
101
112
|
"./tailwindcss/index": "./tailwindcss/index.css",
|