@porsche-design-system/components-vue 3.20.0 → 3.21.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -14,6 +14,47 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
14
14
 
15
15
  ### [Unreleased]
16
16
 
17
+ ### [3.21.0-rc.0] - 2024-11-11
18
+
19
+ #### Added
20
+
21
+ - `Flyout`: Prop `footerBehavior` to always make footer fixed
22
+ ([3590](https://github.com/porsche-design-system/porsche-design-system/pull/3590))
23
+ - `Checkbox`, `Textarea`: `formDisabledCallback` and `formStateRestoreCallback` from ElementInternals API and sync
24
+ validity with form element. ([#3528](https://github.com/porsche-design-system/porsche-design-system/pull/3528))
25
+ - `Link`, `Link Pure`, `Link Tile`: `aria-haspopup` is now supported for `aria` prop
26
+ ([#3589](https://github.com/porsche-design-system/porsche-design-system/pull/3589))
27
+ - `Button`, `Link`: `compact` prop is breakpoint customizable
28
+ ([#3580](https://github.com/porsche-design-system/porsche-design-system/pull/3580))
29
+ - `Select`, `Multi-Select`: Added `form` prop to explicitly associate these components with a specific form when they
30
+ are not directly nested within it. ([#3542](https://github.com/porsche-design-system/porsche-design-system/pull/3542))
31
+
32
+ #### Changed
33
+
34
+ - `Select`, `Multi-Select`:
35
+ - Remove native select and use ElementInternals API
36
+ ([#3542](https://github.com/porsche-design-system/porsche-design-system/pull/3542))
37
+ - **Breaking Change**: `Select` and `Multi-Select` components no longer support native validation due to the removal
38
+ of the underlying native `<select>` element.
39
+
40
+ #### Fixed
41
+
42
+ - `Flyout`: overlapping of scrollbar in iOS/iPadOS Safari when sticky header/footer is used
43
+ ([#3607](https://github.com/porsche-design-system/porsche-design-system/pull/3607))
44
+ - `Carousel`: dynamic change in `slidesPerPages` when using `focusOnCenterSlide` prop breaks pagination
45
+ ([#3592](https://github.com/porsche-design-system/porsche-design-system/pull/3592))
46
+ - `Flyout`, `Modal`:
47
+ - transition not working correctly when using conditionally rendered content
48
+ ([#3590](https://github.com/porsche-design-system/porsche-design-system/pull/3590))
49
+ - dismiss button not sticky in case header slot is not present
50
+ ([#3574](https://github.com/porsche-design-system/porsche-design-system/pull/3574))
51
+ - dismiss button overlaps content area
52
+ ([#3574](https://github.com/porsche-design-system/porsche-design-system/pull/3574))
53
+ - `jsdom-polyfill`: errors from included polyfill packages
54
+ ([3543](https://github.com/porsche-design-system/porsche-design-system/pull/3543))
55
+ - React: global `hidden` attribute with value `false` not working
56
+ ([#3555](https://github.com/porsche-design-system/porsche-design-system/pull/3555))
57
+
17
58
  ### [3.20.0] - 2024-10-24
18
59
 
19
60
  ### [3.20.0-rc.1] - 2024-10-24
@@ -22,8 +63,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
22
63
 
23
64
  - React: better tree-shaking for `@porsche-design-system/components-react`
24
65
  ([#3554](https://github.com/porsche-design-system/porsche-design-system/pull/3554))
25
- - `Icon`: `sidebar`
26
- ([#3556](https://github.com/porsche-design-system/porsche-design-system/pull/3556))
66
+ - `Icon`: `sidebar` ([#3556](https://github.com/porsche-design-system/porsche-design-system/pull/3556))
27
67
 
28
68
  #### Changed
29
69
 
@@ -1 +1 @@
1
- "use strict";const e=require("vue"),t=require("../../utils.cjs"),p=e.defineComponent({__name:"ButtonWrapper",props:{aria:{},compact:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},hideLabel:{default:!1},icon:{default:"none"},iconSource:{},loading:{type:Boolean,default:!1},name:{},theme:{},type:{default:"submit"},value:{},variant:{default:"primary"}},setup(c){const l=t.usePrefix("p-button"),n=c,o=e.ref(),s=e.inject(t.themeInjectionKey),r=()=>t.syncProperties(o,{...n,theme:n.theme||s.value});return e.onMounted(r),e.onUpdated(r),e.watch(s,a=>{t.syncProperties(o,{theme:n.theme||a})}),(a,u)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(l)),{ref_key:"pdsComponentRef",ref:o},{default:e.withCtx(()=>[e.renderSlot(a.$slots,"default")]),_:3},512))}});module.exports=p;
1
+ "use strict";const e=require("vue"),t=require("../../utils.cjs"),p=e.defineComponent({__name:"ButtonWrapper",props:{aria:{},compact:{default:!1},disabled:{type:Boolean,default:!1},hideLabel:{default:!1},icon:{default:"none"},iconSource:{},loading:{type:Boolean,default:!1},name:{},theme:{},type:{default:"submit"},value:{},variant:{default:"primary"}},setup(c){const l=t.usePrefix("p-button"),n=c,o=e.ref(),s=e.inject(t.themeInjectionKey),r=()=>t.syncProperties(o,{...n,theme:n.theme||s.value});return e.onMounted(r),e.onUpdated(r),e.watch(s,a=>{t.syncProperties(o,{theme:n.theme||a})}),(a,u)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(l)),{ref_key:"pdsComponentRef",ref:o},{default:e.withCtx(()=>[e.renderSlot(a.$slots,"default")]),_:3},512))}});module.exports=p;
@@ -1 +1 @@
1
- "use strict";const e=require("vue"),t=require("../../utils.cjs"),c=e.defineComponent({__name:"FlyoutWrapper",props:{aria:{},disableBackdropClick:{type:Boolean,default:!1},open:{type:Boolean,default:!1},position:{default:"end"},theme:{}},emits:["dismiss","motionHiddenEnd","motionVisibleEnd"],setup(m,{emit:a}){const p=t.usePrefix("p-flyout"),o=m,n=e.ref(),s=a,r=e.inject(t.themeInjectionKey),d=()=>t.syncProperties(n,{...o,theme:o.theme||r.value});return e.onMounted(()=>{d(),t.addEventListenerToElementRef(n,"dismiss",s),t.addEventListenerToElementRef(n,"motionHiddenEnd",s),t.addEventListenerToElementRef(n,"motionVisibleEnd",s)}),e.onUpdated(d),e.watch(r,i=>{t.syncProperties(n,{theme:o.theme||i})}),(i,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(p)),{ref_key:"pdsComponentRef",ref:n},{default:e.withCtx(()=>[e.renderSlot(i.$slots,"default")]),_:3},512))}});module.exports=c;
1
+ "use strict";const e=require("vue"),t=require("../../utils.cjs"),l=e.defineComponent({__name:"FlyoutWrapper",props:{aria:{},disableBackdropClick:{type:Boolean,default:!1},footerBehavior:{default:"sticky"},open:{type:Boolean,default:!1},position:{default:"end"},theme:{}},emits:["dismiss","motionHiddenEnd","motionVisibleEnd"],setup(a,{emit:m}){const c=t.usePrefix("p-flyout"),o=a,n=e.ref(),s=m,r=e.inject(t.themeInjectionKey),d=()=>t.syncProperties(n,{...o,theme:o.theme||r.value});return e.onMounted(()=>{d(),t.addEventListenerToElementRef(n,"dismiss",s),t.addEventListenerToElementRef(n,"motionHiddenEnd",s),t.addEventListenerToElementRef(n,"motionVisibleEnd",s)}),e.onUpdated(d),e.watch(r,i=>{t.syncProperties(n,{theme:o.theme||i})}),(i,p)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(c)),{ref_key:"pdsComponentRef",ref:n},{default:e.withCtx(()=>[e.renderSlot(i.$slots,"default")]),_:3},512))}});module.exports=l;
@@ -1 +1 @@
1
- "use strict";const e=require("vue"),t=require("../../utils.cjs"),l=e.defineComponent({__name:"LinkWrapper",props:{aria:{},compact:{type:Boolean,default:!1},download:{},hideLabel:{default:!1},href:{},icon:{default:"none"},iconSource:{},rel:{},target:{default:"_self"},theme:{},variant:{default:"primary"}},setup(c){const p=t.usePrefix("p-link"),n=c,o=e.ref(),s=e.inject(t.themeInjectionKey),a=()=>t.syncProperties(o,{...n,theme:n.theme||s.value});return e.onMounted(a),e.onUpdated(a),e.watch(s,r=>{t.syncProperties(o,{theme:n.theme||r})}),(r,f)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(p)),{ref_key:"pdsComponentRef",ref:o},{default:e.withCtx(()=>[e.renderSlot(r.$slots,"default")]),_:3},512))}});module.exports=l;
1
+ "use strict";const e=require("vue"),t=require("../../utils.cjs"),f=e.defineComponent({__name:"LinkWrapper",props:{aria:{},compact:{default:!1},download:{},hideLabel:{default:!1},href:{},icon:{default:"none"},iconSource:{},rel:{},target:{default:"_self"},theme:{},variant:{default:"primary"}},setup(c){const p=t.usePrefix("p-link"),n=c,o=e.ref(),s=e.inject(t.themeInjectionKey),a=()=>t.syncProperties(o,{...n,theme:n.theme||s.value});return e.onMounted(a),e.onUpdated(a),e.watch(s,r=>{t.syncProperties(o,{theme:n.theme||r})}),(r,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(p)),{ref_key:"pdsComponentRef",ref:o},{default:e.withCtx(()=>[e.renderSlot(r.$slots,"default")]),_:3},512))}});module.exports=f;
@@ -1 +1 @@
1
- "use strict";const e=require("vue"),t=require("../../utils.cjs"),p=e.defineComponent({__name:"MultiSelectWrapper",props:{description:{default:""},disabled:{type:Boolean,default:!1},dropdownDirection:{default:"auto"},hideLabel:{default:!1},label:{default:""},message:{default:""},name:{},required:{type:Boolean,default:!1},state:{default:"none"},theme:{},value:{default:()=>[]}},emits:["update"],setup(l,{emit:u}){const d=t.usePrefix("p-multi-select"),o=l,n=e.ref(),c=u,a=e.inject(t.themeInjectionKey),r=()=>t.syncProperties(n,{...o,theme:o.theme||a.value});return e.onMounted(()=>{r(),t.addEventListenerToElementRef(n,"update",c)}),e.onUpdated(r),e.watch(a,s=>{t.syncProperties(n,{theme:o.theme||s})}),(s,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(d)),{ref_key:"pdsComponentRef",ref:n},{default:e.withCtx(()=>[e.renderSlot(s.$slots,"default")]),_:3},512))}});module.exports=p;
1
+ "use strict";const e=require("vue"),t=require("../../utils.cjs"),p=e.defineComponent({__name:"MultiSelectWrapper",props:{description:{default:""},disabled:{type:Boolean,default:!1},dropdownDirection:{default:"auto"},form:{},hideLabel:{default:!1},label:{default:""},message:{default:""},name:{},required:{type:Boolean,default:!1},state:{default:"none"},theme:{},value:{default:()=>[]}},emits:["update"],setup(l,{emit:u}){const d=t.usePrefix("p-multi-select"),o=l,n=e.ref(),c=u,a=e.inject(t.themeInjectionKey),r=()=>t.syncProperties(n,{...o,theme:o.theme||a.value});return e.onMounted(()=>{r(),t.addEventListenerToElementRef(n,"update",c)}),e.onUpdated(r),e.watch(a,s=>{t.syncProperties(n,{theme:o.theme||s})}),(s,f)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(d)),{ref_key:"pdsComponentRef",ref:n},{default:e.withCtx(()=>[e.renderSlot(s.$slots,"default")]),_:3},512))}});module.exports=p;
@@ -1 +1 @@
1
- "use strict";const e=require("vue"),t=require("../../utils.cjs"),u=e.defineComponent({__name:"SelectWrapper",props:{description:{default:""},disabled:{type:Boolean,default:!1},dropdownDirection:{default:"auto"},hideLabel:{default:!1},label:{default:""},message:{default:""},name:{},required:{type:Boolean,default:!1},state:{default:"none"},theme:{},value:{}},emits:["update"],setup(l,{emit:d}){const c=t.usePrefix("p-select"),o=l,n=e.ref(),p=d,a=e.inject(t.themeInjectionKey),r=()=>t.syncProperties(n,{...o,theme:o.theme||a.value});return e.onMounted(()=>{r(),t.addEventListenerToElementRef(n,"update",p)}),e.onUpdated(r),e.watch(a,s=>{t.syncProperties(n,{theme:o.theme||s})}),(s,f)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(c)),{ref_key:"pdsComponentRef",ref:n},{default:e.withCtx(()=>[e.renderSlot(s.$slots,"default")]),_:3},512))}});module.exports=u;
1
+ "use strict";const e=require("vue"),t=require("../../utils.cjs"),u=e.defineComponent({__name:"SelectWrapper",props:{description:{default:""},disabled:{type:Boolean,default:!1},dropdownDirection:{default:"auto"},form:{},hideLabel:{default:!1},label:{default:""},message:{default:""},name:{},required:{type:Boolean,default:!1},state:{default:"none"},theme:{},value:{}},emits:["update"],setup(l,{emit:d}){const c=t.usePrefix("p-select"),o=l,n=e.ref(),p=d,a=e.inject(t.themeInjectionKey),r=()=>t.syncProperties(n,{...o,theme:o.theme||a.value});return e.onMounted(()=>{r(),t.addEventListenerToElementRef(n,"update",p)}),e.onUpdated(r),e.watch(a,s=>{t.syncProperties(n,{theme:o.theme||s})}),(s,f)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(c)),{ref_key:"pdsComponentRef",ref:n},{default:e.withCtx(()=>[e.renderSlot(s.$slots,"default")]),_:3},512))}});module.exports=u;
@@ -7,7 +7,7 @@ type PButtonProps = {
7
7
  /**
8
8
  * Displays as compact version.
9
9
  */
10
- compact?: boolean;
10
+ compact?: BreakpointCustomizable<boolean>;
11
11
  /**
12
12
  * Disables the button. No events will be triggered while disabled state is active.
13
13
  */
@@ -70,7 +70,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_WithDefaults<
70
70
  variant: string;
71
71
  }>>>, {
72
72
  type: ButtonType;
73
- compact: boolean;
73
+ compact: BreakpointCustomizable<boolean>;
74
74
  disabled: boolean;
75
75
  hideLabel: BreakpointCustomizable<boolean>;
76
76
  icon: ButtonIcon;
@@ -1,10 +1,10 @@
1
- import { defineComponent as s, ref as f, inject as c, onMounted as m, onUpdated as u, watch as d, openBlock as i, createBlock as h, resolveDynamicComponent as y, unref as _, withCtx as B, renderSlot as C } from "vue";
2
- import { usePrefix as b, themeInjectionKey as v, syncProperties as r } from "../../utils.mjs";
3
- const P = /* @__PURE__ */ s({
1
+ import { defineComponent as f, ref as l, inject as c, onMounted as m, onUpdated as u, watch as d, openBlock as i, createBlock as h, resolveDynamicComponent as y, unref as _, withCtx as C, renderSlot as b } from "vue";
2
+ import { usePrefix as B, themeInjectionKey as v, syncProperties as r } from "../../utils.mjs";
3
+ const P = /* @__PURE__ */ f({
4
4
  __name: "ButtonWrapper",
5
5
  props: {
6
6
  aria: {},
7
- compact: { type: Boolean, default: !1 },
7
+ compact: { default: !1 },
8
8
  disabled: { type: Boolean, default: !1 },
9
9
  hideLabel: { default: !1 },
10
10
  icon: { default: "none" },
@@ -17,15 +17,15 @@ const P = /* @__PURE__ */ s({
17
17
  variant: { default: "primary" }
18
18
  },
19
19
  setup(p) {
20
- const l = b("p-button"), e = p, t = f(), n = c(v), a = () => r(t, { ...e, theme: e.theme || n.value });
20
+ const s = B("p-button"), e = p, t = l(), n = c(v), a = () => r(t, { ...e, theme: e.theme || n.value });
21
21
  return m(a), u(a), d(n, (o) => {
22
22
  r(t, { theme: e.theme || o });
23
- }), (o, k) => (i(), h(y(_(l)), {
23
+ }), (o, k) => (i(), h(y(_(s)), {
24
24
  ref_key: "pdsComponentRef",
25
25
  ref: t
26
26
  }, {
27
- default: B(() => [
28
- C(o.$slots, "default")
27
+ default: C(() => [
28
+ b(o.$slots, "default")
29
29
  ]),
30
30
  _: 3
31
31
  }, 512));
@@ -1,4 +1,4 @@
1
- import type { SelectedAriaAttributes, FlyoutAriaAttribute, FlyoutPosition, Theme } from '../types';
1
+ import type { SelectedAriaAttributes, FlyoutAriaAttribute, FlyoutFooterBehavior, FlyoutPosition, Theme } from '../types';
2
2
  type PFlyoutProps = {
3
3
  /**
4
4
  * Add ARIA attributes.
@@ -8,6 +8,10 @@ type PFlyoutProps = {
8
8
  * If true, the flyout will not be closable via backdrop click.
9
9
  */
10
10
  disableBackdropClick?: boolean;
11
+ /**
12
+ * Determines the footer's position behavior. When set to "fixed," the flyout content stretches to fill the full height, keeping the footer permanently at the bottom. When set to "sticky," the footer flows beneath the content and only becomes fixed if the content overflows.
13
+ */
14
+ footerBehavior?: FlyoutFooterBehavior;
11
15
  /**
12
16
  * If true, the flyout is open.
13
17
  */
@@ -26,11 +30,13 @@ declare function __VLS_template(): {
26
30
  };
27
31
  declare const __VLS_component: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToOption<PFlyoutProps>, {
28
32
  disableBackdropClick: boolean;
33
+ footerBehavior: string;
29
34
  open: boolean;
30
35
  position: string;
31
36
  }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, any, string, import("vue").PublicProps, any, {
32
37
  open: boolean;
33
38
  disableBackdropClick: boolean;
39
+ footerBehavior: FlyoutFooterBehavior;
34
40
  position: FlyoutPosition;
35
41
  }, {}>;
36
42
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
@@ -1,26 +1,27 @@
1
- import { defineComponent as l, ref as f, inject as c, onMounted as u, onUpdated as h, watch as y, openBlock as C, createBlock as _, resolveDynamicComponent as E, unref as k, withCtx as B, renderSlot as b } from "vue";
2
- import { usePrefix as R, themeInjectionKey as v, addEventListenerToElementRef as s, syncProperties as d } from "../../utils.mjs";
3
- const j = /* @__PURE__ */ l({
1
+ import { defineComponent as f, ref as l, inject as c, onMounted as u, onUpdated as h, watch as y, openBlock as C, createBlock as _, resolveDynamicComponent as k, unref as B, withCtx as E, renderSlot as b } from "vue";
2
+ import { usePrefix as v, themeInjectionKey as R, addEventListenerToElementRef as s, syncProperties as d } from "../../utils.mjs";
3
+ const j = /* @__PURE__ */ f({
4
4
  __name: "FlyoutWrapper",
5
5
  props: {
6
6
  aria: {},
7
7
  disableBackdropClick: { type: Boolean, default: !1 },
8
+ footerBehavior: { default: "sticky" },
8
9
  open: { type: Boolean, default: !1 },
9
10
  position: { default: "end" },
10
11
  theme: {}
11
12
  },
12
13
  emits: ["dismiss", "motionHiddenEnd", "motionVisibleEnd"],
13
- setup(r, { emit: p }) {
14
- const a = R("p-flyout"), t = r, e = f(), o = p, i = c(v), m = () => d(e, { ...t, theme: t.theme || i.value });
14
+ setup(m, { emit: a }) {
15
+ const p = v("p-flyout"), t = m, e = l(), o = a, i = c(R), r = () => d(e, { ...t, theme: t.theme || i.value });
15
16
  return u(() => {
16
- m(), s(e, "dismiss", o), s(e, "motionHiddenEnd", o), s(e, "motionVisibleEnd", o);
17
- }), h(m), y(i, (n) => {
17
+ r(), s(e, "dismiss", o), s(e, "motionHiddenEnd", o), s(e, "motionVisibleEnd", o);
18
+ }), h(r), y(i, (n) => {
18
19
  d(e, { theme: t.theme || n });
19
- }), (n, w) => (C(), _(E(k(a)), {
20
+ }), (n, w) => (C(), _(k(B(p)), {
20
21
  ref_key: "pdsComponentRef",
21
22
  ref: e
22
23
  }, {
23
- default: B(() => [
24
+ default: E(() => [
24
25
  b(n.$slots, "default")
25
26
  ]),
26
27
  _: 3
@@ -7,7 +7,7 @@ type PLinkProps = {
7
7
  /**
8
8
  * Displays as compact version.
9
9
  */
10
- compact?: boolean;
10
+ compact?: BreakpointCustomizable<boolean>;
11
11
  /**
12
12
  * Special download attribute to open native browser download dialog if target url points to a downloadable file.
13
13
  */
@@ -61,7 +61,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_WithDefaults<
61
61
  target: string;
62
62
  variant: string;
63
63
  }>>>, {
64
- compact: boolean;
64
+ compact: BreakpointCustomizable<boolean>;
65
65
  hideLabel: BreakpointCustomizable<boolean>;
66
66
  icon: LinkIcon;
67
67
  variant: LinkVariant;
@@ -1,10 +1,10 @@
1
1
  import { defineComponent as s, ref as c, inject as l, onMounted as m, onUpdated as d, watch as i, openBlock as u, createBlock as h, resolveDynamicComponent as _, unref as y, withCtx as C, renderSlot as k } from "vue";
2
2
  import { usePrefix as w, themeInjectionKey as v, syncProperties as a } from "../../utils.mjs";
3
- const R = /* @__PURE__ */ s({
3
+ const b = /* @__PURE__ */ s({
4
4
  __name: "LinkWrapper",
5
5
  props: {
6
6
  aria: {},
7
- compact: { type: Boolean, default: !1 },
7
+ compact: { default: !1 },
8
8
  download: {},
9
9
  hideLabel: { default: !1 },
10
10
  href: {},
@@ -15,11 +15,11 @@ const R = /* @__PURE__ */ s({
15
15
  theme: {},
16
16
  variant: { default: "primary" }
17
17
  },
18
- setup(p) {
19
- const f = w("p-link"), e = p, t = c(), n = l(v), r = () => a(t, { ...e, theme: e.theme || n.value });
18
+ setup(f) {
19
+ const p = w("p-link"), e = f, t = c(), n = l(v), r = () => a(t, { ...e, theme: e.theme || n.value });
20
20
  return m(r), d(r), i(n, (o) => {
21
21
  a(t, { theme: e.theme || o });
22
- }), (o, x) => (u(), h(_(y(f)), {
22
+ }), (o, x) => (u(), h(_(y(p)), {
23
23
  ref_key: "pdsComponentRef",
24
24
  ref: t
25
25
  }, {
@@ -31,5 +31,5 @@ const R = /* @__PURE__ */ s({
31
31
  }
32
32
  });
33
33
  export {
34
- R as default
34
+ b as default
35
35
  };
@@ -12,6 +12,10 @@ type PMultiSelectProps = {
12
12
  * Changes the direction to which the dropdown list appears.
13
13
  */
14
14
  dropdownDirection?: MultiSelectDropdownDirection;
15
+ /**
16
+ * The id of a form element the multi-select should be associated with.
17
+ */
18
+ form?: string;
15
19
  /**
16
20
  * Show or hide label. For better accessibility it is recommended to show the label.
17
21
  */
@@ -37,7 +41,7 @@ type PMultiSelectProps = {
37
41
  */
38
42
  state?: MultiSelectState;
39
43
  /**
40
- * Adapts the select color depending on the theme.
44
+ * Adapts the multi-select color depending on the theme.
41
45
  */
42
46
  theme?: Theme;
43
47
  /**
@@ -6,6 +6,7 @@ const j = /* @__PURE__ */ p({
6
6
  description: { default: "" },
7
7
  disabled: { type: Boolean, default: !1 },
8
8
  dropdownDirection: { default: "auto" },
9
+ form: {},
9
10
  hideLabel: { default: !1 },
10
11
  label: { default: "" },
11
12
  message: { default: "" },
@@ -12,6 +12,10 @@ type PSelectProps = {
12
12
  * Changes the direction to which the dropdown list appears.
13
13
  */
14
14
  dropdownDirection?: SelectDropdownDirection;
15
+ /**
16
+ * The id of a form element the select should be associated with.
17
+ */
18
+ form?: string;
15
19
  /**
16
20
  * Show or hide label. For better accessibility it is recommended to show the label.
17
21
  */
@@ -1,11 +1,12 @@
1
- import { defineComponent as f, ref as m, inject as c, onMounted as u, onUpdated as i, watch as h, openBlock as y, createBlock as _, resolveDynamicComponent as C, unref as b, withCtx as v, renderSlot as w } from "vue";
1
+ import { defineComponent as p, ref as m, inject as c, onMounted as u, onUpdated as i, watch as h, openBlock as y, createBlock as _, resolveDynamicComponent as C, unref as b, withCtx as v, renderSlot as w } from "vue";
2
2
  import { usePrefix as B, themeInjectionKey as R, addEventListenerToElementRef as k, syncProperties as s } from "../../utils.mjs";
3
- const j = /* @__PURE__ */ f({
3
+ const j = /* @__PURE__ */ p({
4
4
  __name: "SelectWrapper",
5
5
  props: {
6
6
  description: { default: "" },
7
7
  disabled: { type: Boolean, default: !1 },
8
8
  dropdownDirection: { default: "auto" },
9
+ form: {},
9
10
  hideLabel: { default: !1 },
10
11
  label: { default: "" },
11
12
  message: { default: "" },
@@ -17,9 +18,9 @@ const j = /* @__PURE__ */ f({
17
18
  },
18
19
  emits: ["update"],
19
20
  setup(r, { emit: l }) {
20
- const d = B("p-select"), t = r, e = m(), p = l, n = c(R), a = () => s(e, { ...t, theme: t.theme || n.value });
21
+ const d = B("p-select"), t = r, e = m(), f = l, n = c(R), a = () => s(e, { ...t, theme: t.theme || n.value });
21
22
  return u(() => {
22
- a(), k(e, "update", p);
23
+ a(), k(e, "update", f);
23
24
  }), i(a), h(n, (o) => {
24
25
  s(e, { theme: t.theme || o });
25
26
  }), (o, x) => (y(), _(C(b(d)), {
@@ -440,7 +440,8 @@ declare const BUTTON_ARIA_ATTRIBUTES: readonly [
440
440
  export type ButtonAriaAttribute = typeof BUTTON_ARIA_ATTRIBUTES[number];
441
441
  declare const LINK_ARIA_ATTRIBUTES: readonly [
442
442
  "aria-label",
443
- "aria-current"
443
+ "aria-current",
444
+ "aria-haspopup"
444
445
  ];
445
446
  export type LinkAriaAttribute = (typeof LINK_ARIA_ATTRIBUTES)[number];
446
447
  declare const breakpoints: readonly [
@@ -885,6 +886,11 @@ declare const FLYOUT_POSITIONS: readonly [
885
886
  "right"
886
887
  ];
887
888
  export type FlyoutPosition = (typeof FLYOUT_POSITIONS)[number];
889
+ declare const FLYOUT_FOOTER_BEHAVIOR: readonly [
890
+ "sticky",
891
+ "fixed"
892
+ ];
893
+ export type FlyoutFooterBehavior = (typeof FLYOUT_FOOTER_BEHAVIOR)[number];
888
894
  declare const FLYOUT_ARIA_ATTRIBUTES: readonly [
889
895
  "aria-label"
890
896
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@porsche-design-system/components-vue",
3
- "version": "3.20.0",
3
+ "version": "3.21.0-rc.0",
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,13 +17,21 @@
17
17
  "license": "SEE LICENSE IN LICENSE",
18
18
  "homepage": "https://designsystem.porsche.com",
19
19
  "dependencies": {
20
- "@porsche-design-system/components-js": "3.20.0"
20
+ "@porsche-design-system/components-js": "3.21.0-rc.0"
21
21
  },
22
22
  "peerDependencies": {
23
23
  "ag-grid-enterprise": ">= 32.0.0 <33.0.0",
24
24
  "ag-grid-vue3": ">= 32.0.0 <33.0.0",
25
25
  "vue": ">=3.0.0 <4.0.0"
26
26
  },
27
+ "peerDependenciesMeta": {
28
+ "ag-grid-enterprise": {
29
+ "optional": true
30
+ },
31
+ "ag-grid-vue3": {
32
+ "optional": true
33
+ }
34
+ },
27
35
  "main": "cjs/public-api.cjs",
28
36
  "module": "esm/public-api.mjs",
29
37
  "types": "esm/public-api.d.ts",