@porsche-design-system/components-react 4.0.0-beta.0 → 4.0.0-beta.2
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 +242 -7
- package/cjs/lib/components/accordion.wrapper.cjs +3 -3
- package/cjs/lib/components/scroller.wrapper.cjs +3 -3
- package/cjs/lib/components/table.wrapper.cjs +3 -3
- package/cjs/lib/components/tabs-bar.wrapper.cjs +3 -3
- package/cjs/lib/components/tabs.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/components/scroller.wrapper.d.ts +20 -4
- package/esm/lib/components/scroller.wrapper.mjs +3 -3
- package/esm/lib/components/table.wrapper.d.ts +10 -2
- package/esm/lib/components/table.wrapper.mjs +3 -3
- package/esm/lib/components/tabs-bar.wrapper.d.ts +19 -3
- package/esm/lib/components/tabs-bar.wrapper.mjs +3 -3
- package/esm/lib/components/tabs.wrapper.d.ts +19 -3
- package/esm/lib/components/tabs.wrapper.mjs +3 -3
- package/esm/lib/types.d.ts +137 -105
- package/package.json +13 -2
- package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +691 -384
- package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +3 -12
- 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/components/scroller.wrapper.cjs +4 -4
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/table.wrapper.cjs +4 -4
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/tabs-bar.wrapper.cjs +4 -4
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/tabs.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 +8 -11
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-option.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal.cjs +3 -2
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs-bar.cjs +8 -8
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs.cjs +3 -2
- package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +691 -384
- package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +4 -11
- 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/components/scroller.wrapper.mjs +4 -4
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/table.wrapper.mjs +4 -4
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/tabs-bar.wrapper.mjs +4 -4
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/tabs.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 +9 -12
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-option.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal.mjs +3 -2
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs-bar.mjs +8 -8
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs.mjs +3 -2
- package/ssr/esm/lib/components/accordion.wrapper.d.ts +29 -13
- package/ssr/esm/lib/components/scroller.wrapper.d.ts +20 -4
- package/ssr/esm/lib/components/table.wrapper.d.ts +10 -2
- package/ssr/esm/lib/components/tabs-bar.wrapper.d.ts +19 -3
- package/ssr/esm/lib/components/tabs.wrapper.d.ts +19 -3
- package/ssr/esm/lib/dsr-components/accordion.d.ts +8 -2
- package/ssr/esm/lib/dsr-components/scroller.d.ts +5 -3
- package/ssr/esm/lib/dsr-components/stepper-horizontal.d.ts +3 -2
- package/ssr/esm/lib/dsr-components/tabs-bar.d.ts +6 -6
- package/ssr/esm/lib/dsr-components/tabs.d.ts +2 -1
- package/ssr/esm/lib/types.d.ts +137 -105
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,195 @@ 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.2] - 2026-03-11
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- `Scroller`:
|
|
22
|
+
- Prop `compact`: Displays with reduced spacing and smaller padding for a more condensed layout.
|
|
23
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
24
|
+
- Prop `sticky`: Makes the indicator sticky at the top or bottom while scrolling depending on the scroll direction.
|
|
25
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
26
|
+
- CSS Variable `--p-scroller-indicator-top`: Defines the distance from the top of the viewport at which the indicator
|
|
27
|
+
sticks when scrolling down and `sticky` is enabled.
|
|
28
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
29
|
+
- CSS Variable `--p-scroller-indicator-bottom`: Defines the distance from the bottom of the viewport at which the
|
|
30
|
+
indicator sticks when scrolling up and `sticky` is enabled.
|
|
31
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
32
|
+
- CSS Variable `--p-scroller-gap`: Defines the gap between slotted nodes.
|
|
33
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
34
|
+
- `Tabs Bar`:
|
|
35
|
+
- Prop `background`: Defines the background color. Use `frosted` only on images, videos or gradients.
|
|
36
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
37
|
+
- Prop `compact`: Displays with reduced spacing and smaller padding for a more condensed layout.
|
|
38
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
39
|
+
- `Tabs`:
|
|
40
|
+
- Prop `background`: Defines the background color. Use `frosted` only on images, videos or gradients.
|
|
41
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
42
|
+
- Prop `compact`: Displays with reduced spacing and smaller padding for a more condensed layout.
|
|
43
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
44
|
+
- `Table`:
|
|
45
|
+
- Prop `sticky`: Makes the scroll indicator sticky at the top or bottom while scrolling depending on the scroll
|
|
46
|
+
direction. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
47
|
+
- CSS Variable `--p-table-scroll-indicator-top`: Defines the distance from the top of the viewport at which the scroll
|
|
48
|
+
indicator sticks when scrolling down and `sticky` is enabled.
|
|
49
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
50
|
+
- CSS Variable `--p-table-scroll-indicator-bottom`: Defines the distance from the bottom of the viewport at which the
|
|
51
|
+
scroll indicator sticks when scrolling up and `sticky` is enabled.
|
|
52
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
|
|
56
|
+
- `Scroller`:
|
|
57
|
+
- Modernize visual appearance ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
58
|
+
- `Tabs Bar`:
|
|
59
|
+
- Modernize visual appearance ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
60
|
+
- `Tabs`:
|
|
61
|
+
- Modernize visual appearance ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
62
|
+
- `Table`:
|
|
63
|
+
- Use modernized scroller internally
|
|
64
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
65
|
+
- `Stepper Horizontal`:
|
|
66
|
+
- Use modernized scroller internally
|
|
67
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
68
|
+
|
|
69
|
+
### Deprecated
|
|
70
|
+
|
|
71
|
+
- `Scroller`:
|
|
72
|
+
- Prop `alignScrollIndicator`: Will be removed with next major release, has no effect anymore.
|
|
73
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
74
|
+
- Prop `scrollToPosition`: Will be removed with next major release, use native `scrollIntoView()` on the slotted
|
|
75
|
+
element itself, e.g.
|
|
76
|
+
`el.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center', container: 'nearest' })`.
|
|
77
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
78
|
+
- `Tabs Bar`:
|
|
79
|
+
- Prop `weight`: Will be removed with next major release, has no effect anymore.
|
|
80
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
81
|
+
- `Tabs`:
|
|
82
|
+
- Prop `weight`: Will be removed with next major release, has no effect anymore.
|
|
83
|
+
([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
|
|
84
|
+
|
|
85
|
+
## [4.0.0-beta.1] - 2026-03-02
|
|
86
|
+
|
|
87
|
+
### Added
|
|
88
|
+
|
|
89
|
+
- `SCSS`, `Emotion`, `Vanilla Extract`: bring back PDS v3 import paths for better DX and backward compatibility.
|
|
90
|
+
- `Accordion`:
|
|
91
|
+
- Slot `summary` ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
92
|
+
- Slot `summary-before` ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
93
|
+
- Slot `summary-after` ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
94
|
+
- Prop `background` with values `canvas | surface | frosted | none (default)`
|
|
95
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
96
|
+
- Prop `align-marker` with values `start | end (default)`
|
|
97
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
98
|
+
- CSS Variable `--p-accordion-px` to control the horizontal padding
|
|
99
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
100
|
+
- CSS Variable `--p-accordion-py` to control the vertical padding
|
|
101
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
102
|
+
- CSS Variable `--p-accordion-summary-top` to control the optional sticky top position
|
|
103
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
104
|
+
|
|
105
|
+
### Changed
|
|
106
|
+
|
|
107
|
+
- `Accordion`:
|
|
108
|
+
- Modernize visual appearance ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
109
|
+
- Use semantic HTML element `<details>` and `<summary>` internally (instead of divs and buttons) for better
|
|
110
|
+
accessibility and native behavior
|
|
111
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
112
|
+
- `Input Date`, `Input Email`, `Input Number`, `Input Password`, `Input Search`, `Input Tel`, `Input Text`,
|
|
113
|
+
`Input Time`, `Input Url`, `Textarea`: `value` sync with the underlying native `<input />` or `<textarea />` element
|
|
114
|
+
- `Checkbox`, `Input-*`, `Multi-Select`, `Pin Code`, `Radio Button Group`, `Segmented-Control`, `Select`, `Textarea`:
|
|
115
|
+
Slot `label-after` is not affected by `disbaled` states anymore
|
|
116
|
+
([#4181](https://github.com/porsche-design-system/porsche-design-system/pull/4181))
|
|
117
|
+
- **Vue:** All component events now emit the full `CustomEvent` instead of just the event detail. The event detail must
|
|
118
|
+
be accessed via `event.detail`. Props and other component data can be accessed directly via `event.target`.
|
|
119
|
+
|
|
120
|
+
```diff
|
|
121
|
+
<script setup lang="ts">
|
|
122
|
+
import { type AccordionUpdateEventDetail, PAccordion } from '@porsche-design-system/components-vue';
|
|
123
|
+
import { ref } from 'vue';
|
|
124
|
+
|
|
125
|
+
const isOpen = ref(false);
|
|
126
|
+
|
|
127
|
+
- const onUpdate = (event: AccordionUpdateEventDetail): void => {
|
|
128
|
+
+ const onUpdate = (event: CustomEvent<AccordionUpdateEventDetail>): void => {
|
|
129
|
+
- isOpen1.value = event.open;
|
|
130
|
+
+ isOpen1.value = event.detail.open; // You can also access the value from the component itself via e.target, e.g. e.target.open
|
|
131
|
+
};
|
|
132
|
+
</script>
|
|
133
|
+
|
|
134
|
+
<template>
|
|
135
|
+
<PAccordion :open="isOpen" @update="onUpdate">
|
|
136
|
+
...
|
|
137
|
+
</PAccordion>
|
|
138
|
+
</template>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Removed
|
|
142
|
+
|
|
143
|
+
- `Accordion`:
|
|
144
|
+
- Prop `tag` use `heading-tag` (deprecated with v4 now) instead or make use of `slot="summary"` for more flexibility
|
|
145
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
146
|
+
```diff
|
|
147
|
+
- <p-acccordion heading="Some summary" tag="h3">
|
|
148
|
+
<p-text>Some details</p-text>
|
|
149
|
+
</p-accordion>
|
|
150
|
+
+ <p-accordion>
|
|
151
|
+
+ <p-heading slot="summary" tag="h3" size="small">Some summary</p-heading>
|
|
152
|
+
<p-text>Some details</p-text>
|
|
153
|
+
</p-accordion>
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Deprecated
|
|
157
|
+
|
|
158
|
+
- `SCSS`: Import path for npm package:
|
|
159
|
+
|
|
160
|
+
```diff
|
|
161
|
+
- @use '@porsche-design-system/components-{js|angular|react|vue}/styles' as *;
|
|
162
|
+
+ @use '@porsche-design-system/components-{js|angular|react|vue}/scss' as *;
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
- `Emotion`: Import path for npm package:
|
|
166
|
+
|
|
167
|
+
```diff
|
|
168
|
+
- import { … } from '@porsche-design-system/components-{js|angular|react|vue}/styles';
|
|
169
|
+
+ import { … } from '@porsche-design-system/components-{js|angular|react|vue}/emotion';
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
- `Vanilla Extract`: Import path for npm package:
|
|
173
|
+
|
|
174
|
+
```diff
|
|
175
|
+
- import { … } from '@porsche-design-system/components-{js|angular|react|vue}/styles/vanilla-extract';
|
|
176
|
+
+ import { … } from '@porsche-design-system/components-{js|angular|react|vue}/vanilla-extract';
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
- `Accordion`:
|
|
180
|
+
- Prop `heading`, `heading-tag` and `size` in favor of `slot="summary"` for more flexibility
|
|
181
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
182
|
+
```diff
|
|
183
|
+
- <p-acccordion heading="Some summary" heading-tag="h3" size="small">
|
|
184
|
+
<p-text>Some details</p-text>
|
|
185
|
+
</p-accordion>
|
|
186
|
+
+ <p-accordion>
|
|
187
|
+
+ <p-heading slot="summary" tag="h3" size="small">Some summary</p-heading>
|
|
188
|
+
<p-text>Some details</p-text>
|
|
189
|
+
</p-accordion>
|
|
190
|
+
```
|
|
191
|
+
- Slot `heading` in favor of `slot="summary"`
|
|
192
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
193
|
+
```diff
|
|
194
|
+
<p-acccordion>
|
|
195
|
+
- <span slot="heading">Some summary</span>
|
|
196
|
+
<p-text>Some details</p-text>
|
|
197
|
+
</p-accordion>
|
|
198
|
+
<p-accordion>
|
|
199
|
+
+ <p-heading slot="summary" tag="h3" size="small">Some summary</p-heading>
|
|
200
|
+
<p-text>Some details</p-text>
|
|
201
|
+
</p-accordion>
|
|
202
|
+
```
|
|
203
|
+
- CSS Variable `--p-accordion-position-sticky-top`, use `--p-accordion-summary-top` instead
|
|
204
|
+
([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201))
|
|
205
|
+
|
|
17
206
|
## [4.0.0-beta.0] - 2026-02-12
|
|
18
207
|
|
|
19
208
|
### Added
|
|
@@ -401,6 +590,32 @@ and migration steps.
|
|
|
401
590
|
- `Multi Select`, `Pin Code`, `Radio Group`, `Textarea`: disabled prop is not mutable
|
|
402
591
|
([#4118](https://github.com/porsche-design-system/porsche-design-system/pull/4118))
|
|
403
592
|
([#4121](https://github.com/porsche-design-system/porsche-design-system/pull/4121))
|
|
593
|
+
- `Multi Select`: trim whitespace of selected options text
|
|
594
|
+
([#4132](https://github.com/porsche-design-system/porsche-design-system/pull/4132))
|
|
595
|
+
|
|
596
|
+
## [3.33.0] - 2026-03-09
|
|
597
|
+
|
|
598
|
+
## [3.33.0-rc.0] - 2026-03-04
|
|
599
|
+
|
|
600
|
+
### Added
|
|
601
|
+
|
|
602
|
+
- `Tag`: new `variant` property to define background colors which complies now with PDS `v4`
|
|
603
|
+
([#4227](https://github.com/porsche-design-system/porsche-design-system/pull/4227))
|
|
604
|
+
- `Checkbox`: add warning for Firefox form restore bug
|
|
605
|
+
|
|
606
|
+
### Changed
|
|
607
|
+
|
|
608
|
+
- `Tag`: deprecated `color` property, use `variant` property instead to define background colors which complies now with
|
|
609
|
+
PDS `v4` ([#4227](https://github.com/porsche-design-system/porsche-design-system/pull/4227))
|
|
610
|
+
|
|
611
|
+
## [3.32.1] - 2026-02-24
|
|
612
|
+
|
|
613
|
+
## [3.32.1-rc.0] - 2026-02-20
|
|
614
|
+
|
|
615
|
+
### Fixed
|
|
616
|
+
|
|
617
|
+
- `Input Email`, `Input Password`, `Input Tel`, `Pin Code`: optimize input direction and behavior in RTL mode
|
|
618
|
+
([#4209](https://github.com/porsche-design-system/porsche-design-system/pull/4209))
|
|
404
619
|
|
|
405
620
|
## [3.32.0] - 2026-02-04
|
|
406
621
|
|
|
@@ -435,20 +650,40 @@ and migration steps.
|
|
|
435
650
|
|
|
436
651
|
### Added
|
|
437
652
|
|
|
653
|
+
- `Multi Select, Select`:
|
|
654
|
+
- `selected` slot for custom selection rendering and enabling complex options
|
|
655
|
+
- `options-status` slot for loading, error and no results states when using custom filtering
|
|
656
|
+
([#4111](https://github.com/porsche-design-system/porsche-design-system/pull/4111))
|
|
657
|
+
- `Multi Select, Select`:
|
|
658
|
+
- `filter` slot to allow custom asynchronous filtering
|
|
659
|
+
- `toggle` event when opening/closing the dropdown
|
|
660
|
+
([#4089](https://github.com/porsche-design-system/porsche-design-system/pull/4089))
|
|
661
|
+
- `Segmented Control`: add `state` and `message` props to enable visual validation states
|
|
662
|
+
([#4023](https://github.com/porsche-design-system/porsche-design-system/pull/4023)) `Segmented Control`: add `label`,
|
|
663
|
+
- `Segmented Control`: `label`, `desription`, `hideLabel` and `required` props for better form integration
|
|
664
|
+
([#4023](https://github.com/porsche-design-system/porsche-design-system/pull/4023))
|
|
665
|
+
- `Textarea`: `compact` prop to enable a smaller, space-saving version for compact layouts
|
|
666
|
+
([#4102](https://github.com/porsche-design-system/porsche-design-system/pull/4102))
|
|
667
|
+
- `Tag Dismissible`: `compact` prop to enable a smaller, space-saving version for compact layouts
|
|
668
|
+
([#4114](https://github.com/porsche-design-system/porsche-design-system/pull/4114))
|
|
669
|
+
- Flags: added `AL, BD, RE` flags ([#4128](https://github.com/porsche-design-system/porsche-design-system/pull/4128))
|
|
670
|
+
- `Input Month`, `Input Week`: ([#4126](https://github.com/porsche-design-system/porsche-design-system/pull/4126))
|
|
671
|
+
- `Input Search`: `maxLength` & `minLength` prop to specify the maximum and minimum number of characters the user can
|
|
672
|
+
enter ([#4131](https://github.com/porsche-design-system/porsche-design-system/pull/4131))
|
|
438
673
|
- `Textarea`: add CSS Variables for `fieldSizing`, `minWidth`, `maxWidth`, `minHeight`, `maxHeight` to control the
|
|
439
674
|
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
675
|
|
|
442
676
|
### Fixed
|
|
443
677
|
|
|
678
|
+
- `Checkbox`: missing deprecation for `CheckboxUpdateEventDetail` event & disabled prop is not mutable
|
|
679
|
+
- `Input Date`, `Input Email`, `Input Number`, `Input Password`, `Input Search`, `Input Tel`, `Input Text`,
|
|
680
|
+
`Input Time`, `Input Url`, `Textarea`: disabled prop is not mutable & error when disabled and invalid
|
|
681
|
+
- `Multi Select`, `Pin Code`, `Radio Group`, `Textarea`: disabled prop is not mutable
|
|
682
|
+
([#4118](https://github.com/porsche-design-system/porsche-design-system/pull/4118))
|
|
683
|
+
([#4121](https://github.com/porsche-design-system/porsche-design-system/pull/4121))
|
|
444
684
|
- `Multi Select`: trim whitespace of selected options text
|
|
445
685
|
([#4132](https://github.com/porsche-design-system/porsche-design-system/pull/4132))
|
|
446
686
|
|
|
447
|
-
### Changed
|
|
448
|
-
|
|
449
|
-
- `Link Tile`, `Button Tile`: appearance in compact mode
|
|
450
|
-
- `Canvas`: appearance on mobile view
|
|
451
|
-
|
|
452
687
|
## [3.31.0] - 2025-11-13
|
|
453
688
|
|
|
454
689
|
## [3.31.0-rc.0] - 2025-11-11
|
|
@@ -1864,7 +2099,7 @@ and migration steps.
|
|
|
1864
2099
|
|
|
1865
2100
|
```diff
|
|
1866
2101
|
- <p-carousel align-header="left"></p-carousel>
|
|
1867
|
-
+ <p-carousel align-header="start"></p-carousel>
|
|
2102
|
+
+ <p-carousel-pure align-header="start"></p-carousel>
|
|
1868
2103
|
```
|
|
1869
2104
|
|
|
1870
2105
|
### Fixed
|
|
@@ -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,
|
|
@@ -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 PScroller = /*#__PURE__*/ react.forwardRef(({ alignScrollIndicator = 'center', aria, scrollToPosition, scrollbar = false, className, ...rest }, ref) => {
|
|
9
|
+
const PScroller = /*#__PURE__*/ react.forwardRef(({ alignScrollIndicator = 'center', aria, compact, scrollToPosition, scrollbar = false, sticky = false, className, ...rest }, ref) => {
|
|
10
10
|
const elementRef = react.useRef(undefined);
|
|
11
11
|
const WebComponentTag = hooks.usePrefix('p-scroller');
|
|
12
|
-
const propsToSync = [alignScrollIndicator, aria, scrollToPosition, scrollbar];
|
|
12
|
+
const propsToSync = [alignScrollIndicator, aria, compact, scrollToPosition, scrollbar, sticky];
|
|
13
13
|
hooks.useBrowserLayoutEffect(() => {
|
|
14
14
|
const { current } = elementRef;
|
|
15
|
-
['alignScrollIndicator', 'aria', 'scrollToPosition', 'scrollbar'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
15
|
+
['alignScrollIndicator', 'aria', 'compact', 'scrollToPosition', 'scrollbar', 'sticky'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
16
16
|
}, propsToSync);
|
|
17
17
|
const props = {
|
|
18
18
|
...rest,
|
|
@@ -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 PTable = /*#__PURE__*/ react.forwardRef(({ caption, compact = false, layout = 'auto', onUpdate, className, ...rest }, ref) => {
|
|
9
|
+
const PTable = /*#__PURE__*/ react.forwardRef(({ caption, compact = false, layout = 'auto', onUpdate, sticky = false, className, ...rest }, ref) => {
|
|
10
10
|
const elementRef = react.useRef(undefined);
|
|
11
11
|
hooks.useEventCallback(elementRef, 'update', onUpdate);
|
|
12
12
|
const WebComponentTag = hooks.usePrefix('p-table');
|
|
13
|
-
const propsToSync = [caption, compact, layout];
|
|
13
|
+
const propsToSync = [caption, compact, layout, sticky];
|
|
14
14
|
hooks.useBrowserLayoutEffect(() => {
|
|
15
15
|
const { current } = elementRef;
|
|
16
|
-
['caption', 'compact', 'layout'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
16
|
+
['caption', 'compact', 'layout', 'sticky'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
17
17
|
}, propsToSync);
|
|
18
18
|
const props = {
|
|
19
19
|
...rest,
|
|
@@ -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 PTabsBar = /*#__PURE__*/ react.forwardRef(({ activeTabIndex, onUpdate, size = 'small', weight = 'regular', className, ...rest }, ref) => {
|
|
9
|
+
const PTabsBar = /*#__PURE__*/ react.forwardRef(({ activeTabIndex, background = 'none', compact, onUpdate, size = 'small', weight = 'regular', className, ...rest }, ref) => {
|
|
10
10
|
const elementRef = react.useRef(undefined);
|
|
11
11
|
hooks.useEventCallback(elementRef, 'update', onUpdate);
|
|
12
12
|
const WebComponentTag = hooks.usePrefix('p-tabs-bar');
|
|
13
|
-
const propsToSync = [activeTabIndex, size, weight];
|
|
13
|
+
const propsToSync = [activeTabIndex, background, compact, size, weight];
|
|
14
14
|
hooks.useBrowserLayoutEffect(() => {
|
|
15
15
|
const { current } = elementRef;
|
|
16
|
-
['activeTabIndex', 'size', 'weight'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
16
|
+
['activeTabIndex', 'background', 'compact', 'size', 'weight'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
17
17
|
}, propsToSync);
|
|
18
18
|
const props = {
|
|
19
19
|
...rest,
|
|
@@ -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 PTabs = /*#__PURE__*/ react.forwardRef(({ activeTabIndex = 0, onUpdate, size = 'small', weight = 'regular', className, ...rest }, ref) => {
|
|
9
|
+
const PTabs = /*#__PURE__*/ react.forwardRef(({ activeTabIndex = 0, background = 'none', compact, onUpdate, size = 'small', weight = 'regular', className, ...rest }, ref) => {
|
|
10
10
|
const elementRef = react.useRef(undefined);
|
|
11
11
|
hooks.useEventCallback(elementRef, 'update', onUpdate);
|
|
12
12
|
const WebComponentTag = hooks.usePrefix('p-tabs');
|
|
13
|
-
const propsToSync = [activeTabIndex, size, weight];
|
|
13
|
+
const propsToSync = [activeTabIndex, background, compact, size, weight];
|
|
14
14
|
hooks.useBrowserLayoutEffect(() => {
|
|
15
15
|
const { current } = elementRef;
|
|
16
|
-
['activeTabIndex', 'size', 'weight'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
16
|
+
['activeTabIndex', 'background', 'compact', 'size', 'weight'].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,
|
|
@@ -2,7 +2,7 @@ import type { BaseProps } from '../../BaseProps';
|
|
|
2
2
|
import type { ScrollerAlignScrollIndicator, SelectedAriaAttributes, ScrollerAriaAttribute, ScrollerScrollToPosition } from '../types';
|
|
3
3
|
export type PScrollerProps = BaseProps & {
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* @deprecated since v4.0.0, will be removed with next major release, has no effect anymore.
|
|
6
6
|
*/
|
|
7
7
|
alignScrollIndicator?: ScrollerAlignScrollIndicator;
|
|
8
8
|
/**
|
|
@@ -10,17 +10,25 @@ export type PScrollerProps = BaseProps & {
|
|
|
10
10
|
*/
|
|
11
11
|
aria?: SelectedAriaAttributes<ScrollerAriaAttribute>;
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* Displays with reduced spacing and smaller padding for a more condensed layout.
|
|
14
|
+
*/
|
|
15
|
+
compact?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated since v4.0.0, use native `scrollIntoView()` on the slotted element itself.
|
|
14
18
|
*/
|
|
15
19
|
scrollToPosition?: ScrollerScrollToPosition;
|
|
16
20
|
/**
|
|
17
21
|
* Specifies if scrollbar should be shown.
|
|
18
22
|
*/
|
|
19
23
|
scrollbar?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* @experimental Makes the indicator sticky at the top or bottom while scrolling depending on the scroll direction.
|
|
26
|
+
*/
|
|
27
|
+
sticky?: boolean;
|
|
20
28
|
};
|
|
21
29
|
export declare const PScroller: 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"> & {
|
|
22
30
|
/**
|
|
23
|
-
*
|
|
31
|
+
* @deprecated since v4.0.0, will be removed with next major release, has no effect anymore.
|
|
24
32
|
*/
|
|
25
33
|
alignScrollIndicator?: ScrollerAlignScrollIndicator;
|
|
26
34
|
/**
|
|
@@ -28,13 +36,21 @@ export declare const PScroller: import("react").ForwardRefExoticComponent<Omit<i
|
|
|
28
36
|
*/
|
|
29
37
|
aria?: SelectedAriaAttributes<ScrollerAriaAttribute>;
|
|
30
38
|
/**
|
|
31
|
-
*
|
|
39
|
+
* Displays with reduced spacing and smaller padding for a more condensed layout.
|
|
40
|
+
*/
|
|
41
|
+
compact?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* @deprecated since v4.0.0, use native `scrollIntoView()` on the slotted element itself.
|
|
32
44
|
*/
|
|
33
45
|
scrollToPosition?: ScrollerScrollToPosition;
|
|
34
46
|
/**
|
|
35
47
|
* Specifies if scrollbar should be shown.
|
|
36
48
|
*/
|
|
37
49
|
scrollbar?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* @experimental Makes the indicator sticky at the top or bottom while scrolling depending on the scroll direction.
|
|
52
|
+
*/
|
|
53
|
+
sticky?: boolean;
|
|
38
54
|
} & {
|
|
39
55
|
children?: import("react").ReactNode | undefined;
|
|
40
56
|
} & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -4,13 +4,13 @@ import { forwardRef, useRef } from 'react';
|
|
|
4
4
|
import { usePrefix, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
|
|
5
5
|
import { syncRef } from '../../utils.mjs';
|
|
6
6
|
|
|
7
|
-
const PScroller = /*#__PURE__*/ forwardRef(({ alignScrollIndicator = 'center', aria, scrollToPosition, scrollbar = false, className, ...rest }, ref) => {
|
|
7
|
+
const PScroller = /*#__PURE__*/ forwardRef(({ alignScrollIndicator = 'center', aria, compact, scrollToPosition, scrollbar = false, sticky = false, className, ...rest }, ref) => {
|
|
8
8
|
const elementRef = useRef(undefined);
|
|
9
9
|
const WebComponentTag = usePrefix('p-scroller');
|
|
10
|
-
const propsToSync = [alignScrollIndicator, aria, scrollToPosition, scrollbar];
|
|
10
|
+
const propsToSync = [alignScrollIndicator, aria, compact, scrollToPosition, scrollbar, sticky];
|
|
11
11
|
useBrowserLayoutEffect(() => {
|
|
12
12
|
const { current } = elementRef;
|
|
13
|
-
['alignScrollIndicator', 'aria', 'scrollToPosition', 'scrollbar'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
13
|
+
['alignScrollIndicator', 'aria', 'compact', 'scrollToPosition', 'scrollbar', 'sticky'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
14
14
|
}, propsToSync);
|
|
15
15
|
const props = {
|
|
16
16
|
...rest,
|
|
@@ -6,7 +6,7 @@ export type PTableProps = BaseProps & {
|
|
|
6
6
|
*/
|
|
7
7
|
caption?: string;
|
|
8
8
|
/**
|
|
9
|
-
* Displays
|
|
9
|
+
* Displays with reduced spacing and smaller padding for a more condensed layout.
|
|
10
10
|
*/
|
|
11
11
|
compact?: boolean;
|
|
12
12
|
/**
|
|
@@ -17,6 +17,10 @@ export type PTableProps = BaseProps & {
|
|
|
17
17
|
* Emitted when sorting is changed.
|
|
18
18
|
*/
|
|
19
19
|
onUpdate?: (event: CustomEvent<TableUpdateEventDetail>) => void;
|
|
20
|
+
/**
|
|
21
|
+
* @experimental Makes the scroll indicator sticky at the top or bottom while scrolling depending on the scroll direction.
|
|
22
|
+
*/
|
|
23
|
+
sticky?: boolean;
|
|
20
24
|
};
|
|
21
25
|
export declare const PTable: 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"> & {
|
|
22
26
|
/**
|
|
@@ -24,7 +28,7 @@ export declare const PTable: import("react").ForwardRefExoticComponent<Omit<impo
|
|
|
24
28
|
*/
|
|
25
29
|
caption?: string;
|
|
26
30
|
/**
|
|
27
|
-
* Displays
|
|
31
|
+
* Displays with reduced spacing and smaller padding for a more condensed layout.
|
|
28
32
|
*/
|
|
29
33
|
compact?: boolean;
|
|
30
34
|
/**
|
|
@@ -35,6 +39,10 @@ export declare const PTable: import("react").ForwardRefExoticComponent<Omit<impo
|
|
|
35
39
|
* Emitted when sorting is changed.
|
|
36
40
|
*/
|
|
37
41
|
onUpdate?: (event: CustomEvent<TableUpdateEventDetail>) => void;
|
|
42
|
+
/**
|
|
43
|
+
* @experimental Makes the scroll indicator sticky at the top or bottom while scrolling depending on the scroll direction.
|
|
44
|
+
*/
|
|
45
|
+
sticky?: boolean;
|
|
38
46
|
} & {
|
|
39
47
|
children?: import("react").ReactNode | undefined;
|
|
40
48
|
} & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -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 PTable = /*#__PURE__*/ forwardRef(({ caption, compact = false, layout = 'auto', onUpdate, className, ...rest }, ref) => {
|
|
7
|
+
const PTable = /*#__PURE__*/ forwardRef(({ caption, compact = false, layout = 'auto', onUpdate, sticky = false, className, ...rest }, ref) => {
|
|
8
8
|
const elementRef = useRef(undefined);
|
|
9
9
|
useEventCallback(elementRef, 'update', onUpdate);
|
|
10
10
|
const WebComponentTag = usePrefix('p-table');
|
|
11
|
-
const propsToSync = [caption, compact, layout];
|
|
11
|
+
const propsToSync = [caption, compact, layout, sticky];
|
|
12
12
|
useBrowserLayoutEffect(() => {
|
|
13
13
|
const { current } = elementRef;
|
|
14
|
-
['caption', 'compact', 'layout'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
14
|
+
['caption', 'compact', 'layout', 'sticky'].forEach((propName, i) => (current[propName] = propsToSync[i]));
|
|
15
15
|
}, propsToSync);
|
|
16
16
|
const props = {
|
|
17
17
|
...rest,
|