@porsche-design-system/components-react 3.22.0-rc.0 → 3.22.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.
Files changed (48) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/cjs/lib/components/flyout-multilevel-item.wrapper.cjs +3 -3
  3. package/cjs/lib/components/segmented-control.wrapper.cjs +3 -3
  4. package/esm/lib/components/flyout-multilevel-item.wrapper.d.ts +24 -0
  5. package/esm/lib/components/flyout-multilevel-item.wrapper.mjs +3 -3
  6. package/esm/lib/components/segmented-control.wrapper.d.ts +24 -0
  7. package/esm/lib/components/segmented-control.wrapper.mjs +3 -3
  8. package/esm/lib/components/select.wrapper.d.ts +2 -2
  9. package/esm/lib/types.d.ts +3 -2
  10. package/package.json +2 -2
  11. package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +432 -301
  12. package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +41 -1
  13. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/flyout-multilevel-item.wrapper.cjs +4 -4
  14. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/segmented-control.wrapper.cjs +4 -4
  15. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.cjs +7 -3
  16. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout-multilevel-item.cjs +9 -6
  17. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout-multilevel.cjs +13 -5
  18. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout.cjs +1 -1
  19. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/modal.cjs +1 -2
  20. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.cjs +1 -0
  21. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.cjs +1 -1
  22. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pagination.cjs +1 -1
  23. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control-item.cjs +3 -2
  24. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.cjs +9 -0
  25. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-option.cjs +3 -2
  26. package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +432 -301
  27. package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +37 -2
  28. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/flyout-multilevel-item.wrapper.mjs +4 -4
  29. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/segmented-control.wrapper.mjs +4 -4
  30. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.mjs +7 -3
  31. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout-multilevel-item.mjs +9 -6
  32. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout-multilevel.mjs +14 -6
  33. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout.mjs +1 -1
  34. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/modal.mjs +1 -2
  35. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.mjs +1 -0
  36. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.mjs +1 -1
  37. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pagination.mjs +1 -1
  38. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control-item.mjs +3 -2
  39. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.mjs +9 -0
  40. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-option.mjs +3 -2
  41. package/ssr/esm/lib/components/flyout-multilevel-item.wrapper.d.ts +24 -0
  42. package/ssr/esm/lib/components/segmented-control.wrapper.d.ts +24 -0
  43. package/ssr/esm/lib/components/select.wrapper.d.ts +2 -2
  44. package/ssr/esm/lib/dsr-components/canvas.d.ts +4 -0
  45. package/ssr/esm/lib/dsr-components/flyout-multilevel-item.d.ts +2 -1
  46. package/ssr/esm/lib/dsr-components/flyout-multilevel.d.ts +5 -0
  47. package/ssr/esm/lib/dsr-components/segmented-control.d.ts +5 -0
  48. package/ssr/esm/lib/types.d.ts +3 -2
@@ -3176,6 +3176,15 @@ function requireDist () {
3176
3176
  var distExports = requireDist();
3177
3177
  var jssPluginSortMediaQueries = /*@__PURE__*/getDefaultExportFromCjs(distExports);
3178
3178
 
3179
+ // NOTE: these utils are in the same file on purpose
3180
+ // to force them being bundled into our core chunk
3181
+ const getTagName = (el) => el.tagName.toLowerCase();
3182
+ const getTagNameWithoutPrefix = (host) => {
3183
+ const tagName = getTagName(host);
3184
+ const [, tagNameWithoutPrefix = ''] = /^(?:[a-z-]+-)?(p-[a-z-]+)$/.exec(tagName) || [];
3185
+ return (tagNameWithoutPrefix || tagName); // return tagName as fallback for default tags
3186
+ };
3187
+
3179
3188
  // This class is shared since the popover needs to register a scroll listener to this node in order to hide the popover when the table is scrolled
3180
3189
  const scrollAreaClass = 'scroll-area';
3181
3190
 
@@ -3214,6 +3223,8 @@ const isDisabledOrLoading = (disabled, loading) => {
3214
3223
  return disabled || loading;
3215
3224
  };
3216
3225
 
3226
+ const isElementOfKind = (element, tagName) => getTagNameWithoutPrefix(element) === tagName;
3227
+
3217
3228
  const parseJSONAttribute = (attribute) => {
3218
3229
  // Input is object, e.g. { 'aria-label': 'Some label' }
3219
3230
  if (typeof attribute !== 'string') {
@@ -3459,7 +3470,7 @@ const isScrollable = (isPrevHidden, isNextHidden) => {
3459
3470
  };
3460
3471
 
3461
3472
  /*
3462
- Stencil Client Platform v4.19.2 | MIT Licensed | https://stenciljs.com
3473
+ Stencil Client Platform v4.22.2 | MIT Licensed | https://stenciljs.com
3463
3474
  */
3464
3475
  var __defProp = Object.defineProperty;
3465
3476
  var __export = (target, all) => {
@@ -3594,6 +3605,30 @@ const getDisplayTagType = (host, size, tag) => {
3594
3605
  }
3595
3606
  return displaySizeToTagMap[size] || 'h1';
3596
3607
  };
3608
+ /**
3609
+ * Updates the state of the flyout multilevel and its children based on the provided activeItem and value.
3610
+ *
3611
+ * @param {string | undefined} activeItem - The flyout-multilevel-item element which is currently active (which has the activeIdentifier as identifier). If undefined, updates the root element.
3612
+ * @param {boolean} value - The new state value to apply.
3613
+ * @returns {void}
3614
+ */
3615
+ const updateFlyoutMultiLevelItemState = (activeItem, value) => {
3616
+ activeItem.secondary = value;
3617
+ traverseTreeAndUpdateState(activeItem.parentElement, 'primary', value);
3618
+ };
3619
+ /**
3620
+ * Recursively updates the state of a flyout item's parent elements by traversing up the DOM tree.
3621
+ *
3622
+ * @param {HTMLPFlyoutMultilevelItemElement} activeItem - The current flyout item being updated.
3623
+ * @param {'primary' | 'secondary' | 'cascade'} prop - The property of the flyout item to update.
3624
+ * @param {boolean} value - The new state value to apply.
3625
+ */
3626
+ const traverseTreeAndUpdateState = (activeItem, prop, value) => {
3627
+ if (isElementOfKind(activeItem, 'p-flyout-multilevel-item')) {
3628
+ activeItem[prop] = value;
3629
+ traverseTreeAndUpdateState(activeItem.parentElement, 'cascade', value);
3630
+ }
3631
+ };
3597
3632
  const headingSizeToTagMap = {
3598
3633
  small: 'h6',
3599
3634
  medium: 'h5',
@@ -3871,4 +3906,4 @@ const getTextTagType = (host, tag) => {
3871
3906
  return tag;
3872
3907
  };
3873
3908
 
3874
- export { DISPLAY_TAGS, HEADING_TAGS, HEADLINE_TAGS, ItemType, TEXT_TAGS, _hasShowPickerSupport, anchorSlot, attributeMutationMap, buildCrestImgSrc, buildCrestSrcSet, buildIconUrl, buildImgSrc, buildSrcSet, createPaginationItems, createRange, crestSize, debounce, displaySizeToTagMap, getButtonAriaAttributes, getButtonBaseAriaAttributes, getButtonPureAriaAttributes, getCDNBaseURL, getClosestHTMLElement, getComboboxAriaAttributes, getContentAriaAttributes, getCurrentActivePage, getDirectChildHTMLElement, getDisplayTagType, getHTMLElement, getHeadingTagType, getHeadlineTagType, getIconColor, getInlineNotificationIconName, getInnerManifest, getListAriaAttributes, getOptionAriaAttributes, getRole, getSegmentedControlItemAriaAttributes, getSelectedOptionMap, getSelectedOptionString, getSelectedOptionValues, getSelectedOptions, getStepperHorizontalIconName, getSvgUrl, getSwitchButtonAriaAttributes, getTextTagType, getTotalPages, hasDocument, hasLocateAction, hasSpecificDirectChildTag, hasVisibleIcon, hasWindow, headerSlot, isCurrentInput, isCustomDropdown, isDisabledOrLoading, isInfinitePagination, isListTypeOrdered, isScrollable, isSortable, isStateCompleteOrWarning, isTouchDevice, isType, isUrl, isWithinForm, observedNodesMap, parseAndGetAriaAttributes, parseJSONAttribute, scrollAreaClass, showCustomCalendarOrTimeIndicator, supportsConstructableStylesheets, supportsNativePopover, tempDiv, tempIcon, tempLabel };
3909
+ export { DISPLAY_TAGS, HEADING_TAGS, HEADLINE_TAGS, ItemType, TEXT_TAGS, _hasShowPickerSupport, anchorSlot, attributeMutationMap, buildCrestImgSrc, buildCrestSrcSet, buildIconUrl, buildImgSrc, buildSrcSet, createPaginationItems, createRange, crestSize, debounce, displaySizeToTagMap, getButtonAriaAttributes, getButtonBaseAriaAttributes, getButtonPureAriaAttributes, getCDNBaseURL, getClosestHTMLElement, getComboboxAriaAttributes, getContentAriaAttributes, getCurrentActivePage, getDirectChildHTMLElement, getDisplayTagType, getHTMLElement, getHeadingTagType, getHeadlineTagType, getIconColor, getInlineNotificationIconName, getInnerManifest, getListAriaAttributes, getOptionAriaAttributes, getRole, getSegmentedControlItemAriaAttributes, getSelectedOptionMap, getSelectedOptionString, getSelectedOptionValues, getSelectedOptions, getStepperHorizontalIconName, getSvgUrl, getSwitchButtonAriaAttributes, getTagName, getTagNameWithoutPrefix, getTextTagType, getTotalPages, hasDocument, hasLocateAction, hasSpecificDirectChildTag, hasVisibleIcon, hasWindow, headerSlot, isCurrentInput, isCustomDropdown, isDisabledOrLoading, isElementOfKind, isInfinitePagination, isListTypeOrdered, isScrollable, isSortable, isStateCompleteOrWarning, isTouchDevice, isType, isUrl, isWithinForm, observedNodesMap, parseAndGetAriaAttributes, parseJSONAttribute, scrollAreaClass, showCustomCalendarOrTimeIndicator, supportsConstructableStylesheets, supportsNativePopover, tempDiv, tempIcon, tempLabel, traverseTreeAndUpdateState, updateFlyoutMultiLevelItemState };
@@ -5,20 +5,20 @@ import { usePrefix, useBrowserLayoutEffect, useMergedClass } from '../../hooks.m
5
5
  import { syncRef } from '../../utils.mjs';
6
6
  import { DSRFlyoutMultilevelItem } from '../dsr-components/flyout-multilevel-item.mjs';
7
7
 
8
- const PFlyoutMultilevelItem = /*#__PURE__*/ forwardRef(({ identifier, label, className, children, ...rest }, ref) => {
8
+ const PFlyoutMultilevelItem = /*#__PURE__*/ forwardRef(({ cascade = false, identifier, label, primary = false, secondary = false, className, children, ...rest }, ref) => {
9
9
  const elementRef = useRef();
10
10
  const WebComponentTag = usePrefix('p-flyout-multilevel-item');
11
- const propsToSync = [identifier, label];
11
+ const propsToSync = [cascade, identifier, label, primary, secondary];
12
12
  useBrowserLayoutEffect(() => {
13
13
  const { current } = elementRef;
14
- ['identifier', 'label'].forEach((propName, i) => (current[propName] = propsToSync[i]));
14
+ ['cascade', 'identifier', 'label', 'primary', 'secondary'].forEach((propName, i) => (current[propName] = propsToSync[i]));
15
15
  }, propsToSync);
16
16
  const props = {
17
17
  ...rest,
18
18
  // @ts-ignore
19
19
  ...(!process.browser
20
20
  ? {
21
- children: (jsx(DSRFlyoutMultilevelItem, { identifier, label, children })),
21
+ children: (jsx(DSRFlyoutMultilevelItem, { cascade, identifier, label, primary, secondary, children })),
22
22
  }
23
23
  : {
24
24
  children,
@@ -5,15 +5,15 @@ import { useEventCallback, usePrefix, useTheme, useBrowserLayoutEffect, useMerge
5
5
  import { syncRef } from '../../utils.mjs';
6
6
  import { DSRSegmentedControl } from '../dsr-components/segmented-control.mjs';
7
7
 
8
- const PSegmentedControl = /*#__PURE__*/ forwardRef(({ backgroundColor, columns = 'auto', onSegmentedControlChange, onUpdate, theme, value, className, children, ...rest }, ref) => {
8
+ const PSegmentedControl = /*#__PURE__*/ forwardRef(({ backgroundColor, columns = 'auto', disabled = false, form, name, onSegmentedControlChange, onUpdate, theme, value, className, children, ...rest }, ref) => {
9
9
  const elementRef = useRef();
10
10
  useEventCallback(elementRef, 'segmentedControlChange', onSegmentedControlChange);
11
11
  useEventCallback(elementRef, 'update', onUpdate);
12
12
  const WebComponentTag = usePrefix('p-segmented-control');
13
- const propsToSync = [backgroundColor, columns, theme || useTheme(), value];
13
+ const propsToSync = [backgroundColor, columns, disabled, form, name, theme || useTheme(), value];
14
14
  useBrowserLayoutEffect(() => {
15
15
  const { current } = elementRef;
16
- ['backgroundColor', 'columns', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
16
+ ['backgroundColor', 'columns', 'disabled', 'form', 'name', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
17
17
  }, propsToSync);
18
18
  const props = {
19
19
  ...rest,
@@ -21,7 +21,7 @@ const PSegmentedControl = /*#__PURE__*/ forwardRef(({ backgroundColor, columns =
21
21
  ...(!process.browser
22
22
  ? {
23
23
  ...{ "role": "group" },
24
- children: (jsx(DSRSegmentedControl, { backgroundColor, columns, theme: theme || useTheme(), value, children })),
24
+ children: (jsx(DSRSegmentedControl, { backgroundColor, columns, disabled, form, name, theme: theme || useTheme(), value, children })),
25
25
  }
26
26
  : {
27
27
  children,
@@ -30,6 +30,10 @@ class DSRCanvas extends Component {
30
30
  hasSidebarEnd;
31
31
  hasFooter;
32
32
  hasBackground;
33
+ sidebarStart;
34
+ sidebarEnd;
35
+ root;
36
+ header;
33
37
  render() {
34
38
  const { children, namedSlotChildren, otherChildren } = splitChildren(this.props.children);
35
39
  const hasTitle = namedSlotChildren.filter(({ props: { slot } }) => slot === 'title').length > 0;
@@ -37,15 +41,15 @@ class DSRCanvas extends Component {
37
41
  const hasFooter = namedSlotChildren.filter(({ props: { slot } }) => slot === 'footer').length > 0;
38
42
  const hasBackground = namedSlotChildren.filter(({ props: { slot } }) => slot === 'background').length > 0;
39
43
  const style = minifyCss(stripFocusAndHoverStyles(getComponentCss$13(this.props.theme, this.props.sidebarStartOpen, this.props.sidebarEndOpen)));
40
- return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxs(Fragment, { children: [jsxs("div", { className: "root", children: [jsxs("header", { className: "header", children: [jsxs("div", { className: "blur", children: [jsx("div", {}), jsx("div", {}), jsx("div", {}), jsx("div", {}), jsx("div", {}), jsx("div", {}), jsx("div", {}), jsx("div", {})] }), jsxs("div", { className: "header__area header__area--start", children: [!this.props.sidebarStartOpen && (jsxs(PButton, { theme: this.props.theme, icon: "sidebar", variant: "ghost", compact: true, "hide-label": "true", aria: { 'aria-expanded': this.props.sidebarStartOpen }, children: [this.props.sidebarStartOpen ? 'Close' : 'Open', " navigation sidebar"] })), jsx("slot", { name: "header-start" })] }), jsx(PCrest, { className: "header__crest" }), jsx(PWordmark, { className: "header__wordmark", size: "inherit", theme: this.props.theme }), jsx("div", { className: "header__area header__area--end", children: jsx("slot", { name: "header-end" }) })] }), jsx("main", { className: "main", children: jsx("slot", {}) }), hasFooter && (jsx("footer", { className: "footer", children: jsx("slot", { name: "footer" }) })), this.props.isMediaQueryS && (jsx("aside", { className: "sidebar sidebar--start",
44
+ return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxs(Fragment, { children: [jsxs("div", { className: "root", children: [jsxs("header", { className: "header", tabIndex: -1, children: [jsxs("div", { className: "blur", children: [jsx("div", {}), jsx("div", {}), jsx("div", {}), jsx("div", {}), jsx("div", {}), jsx("div", {}), jsx("div", {}), jsx("div", {})] }), jsxs("div", { className: "header__area header__area--start", children: [!this.props.sidebarStartOpen && (jsxs(PButton, { theme: this.props.theme, icon: "sidebar", variant: "ghost", compact: true, "hide-label": "true", aria: { 'aria-expanded': this.props.sidebarStartOpen }, children: [this.props.sidebarStartOpen ? 'Close' : 'Open', " navigation sidebar"] })), jsx("slot", { name: "header-start" })] }), jsx(PCrest, { className: "header__crest" }), jsx(PWordmark, { className: "header__wordmark", size: "inherit", theme: this.props.theme }), jsx("div", { className: "header__area header__area--end", children: jsx("slot", { name: "header-end" }) })] }), this.props.isMediaQueryS && (jsx("aside", { className: "sidebar sidebar--start",
41
45
  // "inert" will be known from React 19 onwards, see https://github.com/facebook/react/pull/24730
42
46
  // eslint-disable-next-line
43
47
  /* @ts-ignore */
44
- inert: this.props.sidebarStartOpen ? null : true, "aria-label": `Navigation sidebar ${this.props.sidebarStartOpen ? 'open' : 'closed'}`, children: jsxs("div", { className: "sidebar__scroller", children: [jsxs("div", { className: "sidebar__header sidebar__header--start", children: [jsxs(PButton, { theme: this.props.theme, icon: "sidebar", variant: "ghost", compact: true, "hide-label": "true", aria: { 'aria-expanded': this.props.sidebarStartOpen }, children: [this.props.sidebarStartOpen ? 'Close' : 'Open', " navigation sidebar"] }), hasTitle && (jsx("h2", { children: jsx("slot", { name: "title" }) }))] }), jsx("div", { className: "sidebar__content", children: jsx("slot", { name: "sidebar-start" }) })] }) })), hasSidebarEnd && this.props.isMediaQueryM && (jsx("aside", { className: "sidebar sidebar--end",
48
+ inert: this.props.sidebarStartOpen ? null : true, "aria-label": `Navigation sidebar ${this.props.sidebarStartOpen ? 'open' : 'closed'}`, tabIndex: -1, children: jsxs("div", { className: "sidebar__scroller", children: [jsxs("div", { className: "sidebar__header sidebar__header--start", children: [jsxs(PButton, { theme: this.props.theme, icon: "sidebar", variant: "ghost", compact: true, "hide-label": "true", aria: { 'aria-expanded': this.props.sidebarStartOpen }, children: [this.props.sidebarStartOpen ? 'Close' : 'Open', " navigation sidebar"] }), hasTitle && (jsx("h2", { children: jsx("slot", { name: "title" }) }))] }), jsx("div", { className: "sidebar__content", children: jsx("slot", { name: "sidebar-start" }) })] }) })), jsx("main", { className: "main", children: jsx("slot", {}) }), hasSidebarEnd && this.props.isMediaQueryM && (jsx("aside", { className: "sidebar sidebar--end",
45
49
  // "inert" will be known from React 19 onwards, see https://github.com/facebook/react/pull/24730
46
50
  // eslint-disable-next-line
47
51
  /* @ts-ignore */
48
- inert: this.props.sidebarEndOpen ? null : true, "aria-label": `Settings sidebar ${this.props.sidebarEndOpen ? 'open' : 'closed'}`, children: jsxs("div", { className: "sidebar__scroller", children: [jsx("div", { className: "sidebar__header sidebar__header--end", children: jsxs(PButton, { theme: this.props.theme, icon: "close", variant: "ghost", compact: true, "hide-label": "true", aria: { 'aria-expanded': this.props.sidebarEndOpen }, children: [this.props.sidebarStartOpen ? 'Close' : 'Open', " navigation sidebar"] }) }), jsx("div", { className: "sidebar__content", children: jsx("slot", { name: "sidebar-end" }) })] }) })), hasBackground && jsx("slot", { name: "background" })] }), !this.props.isMediaQueryS && (jsxs(PFlyout, { className: "flyout-start", theme: this.props.theme, open: this.props.sidebarStartOpen, position: "start", children: [hasTitle && (jsx("h2", { slot: "header", children: jsx("slot", { name: "title" }) })), jsx("slot", { name: "sidebar-start" })] })), hasSidebarEnd && !this.props.isMediaQueryM && (jsx(PFlyout, { className: "flyout-end", theme: this.props.theme, open: this.props.sidebarEndOpen, position: "end", children: jsx("slot", { name: "sidebar-end" }) }))] })] }), this.props.children] }));
52
+ inert: this.props.sidebarEndOpen ? null : true, "aria-label": `Settings sidebar ${this.props.sidebarEndOpen ? 'open' : 'closed'}`, tabIndex: -1, children: jsxs("div", { className: "sidebar__scroller", children: [jsx("div", { className: "sidebar__header sidebar__header--end", children: jsxs(PButton, { theme: this.props.theme, icon: "close", variant: "ghost", compact: true, "hide-label": "true", aria: { 'aria-expanded': this.props.sidebarEndOpen }, children: [this.props.sidebarEndOpen ? 'Close' : 'Open', " settings sidebar"] }) }), jsx("div", { className: "sidebar__content", children: jsx("slot", { name: "sidebar-end" }) })] }) })), hasFooter && (jsx("footer", { className: "footer", children: jsx("slot", { name: "footer" }) })), hasBackground && jsx("slot", { name: "background" })] }), !this.props.isMediaQueryS && (jsxs(PFlyout, { className: "flyout-start", theme: this.props.theme, open: this.props.sidebarStartOpen, position: "start", children: [hasTitle && (jsx("h2", { slot: "header", children: jsx("slot", { name: "title" }) })), jsx("slot", { name: "sidebar-start" })] })), hasSidebarEnd && !this.props.isMediaQueryM && (jsx(PFlyout, { className: "flyout-end", theme: this.props.theme, open: this.props.sidebarEndOpen, position: "end", children: jsx("slot", { name: "sidebar-end" }) }))] })] }), this.props.children] }));
49
53
  }
50
54
  }
51
55
 
@@ -14,20 +14,23 @@ import { PButtonPure } from '../components/button-pure.wrapper.mjs';
14
14
  */
15
15
  class DSRFlyoutMultilevelItem extends Component {
16
16
  host;
17
+ scroller;
17
18
  get theme() {
18
19
  return this.props.theme || 'light'; // default as fallback (internal private prop is controlled by flyout-multilevel)
19
20
  }
20
- get open() {
21
- return this.props.open || false; // default as fallback (internal private prop is controlled by flyout-multilevel)
21
+ componentDidRender() {
22
+ this.props.scroller.scrollTo(0, 0); // Reset scroll position when navigated
22
23
  }
23
24
  render() {
24
25
  splitChildren(this.props.children);
25
- const style = minifyCss(stripFocusAndHoverStyles(getComponentCss$S(this.open, this.theme)));
26
- return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxs(Fragment, { children: [jsx(PButtonPure, { className: "button", type: "button", size: "medium", alignLabel: "start", stretch: true, icon: "arrow-head-right", active: this.open, aria: { 'aria-expanded': this.open }, theme: this.theme, children: this.props.label }), jsxs("div", { className: "scroller",
26
+ const style = minifyCss(stripFocusAndHoverStyles(getComponentCss$S(this.props.primary, this.props.secondary, this.props.cascade, this.theme)));
27
+ return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxs(Fragment, { children: [jsx(PButtonPure
28
+ // "inert" will be known from React 19 onwards, see https://github.com/facebook/react/pull/24730
29
+ /* @ts-ignore */
30
+ , {
27
31
  // "inert" will be known from React 19 onwards, see https://github.com/facebook/react/pull/24730
28
- // eslint-disable-next-line
29
32
  /* @ts-ignore */
30
- inert: this.open ? null : '', children: [jsxs("div", { className: "header", children: [jsx(PButtonPure, { className: "back", type: "button", size: "medium", icon: "arrow-head-left", hideLabel: true, theme: this.theme, children: "Back" }), jsx("h2", { className: "heading", children: this.props.label })] }), jsx("div", { className: "content", children: jsx("slot", {}) })] })] })] }), this.props.children] }));
33
+ inert: this.props.primary || this.props.cascade, className: "button", type: "button", size: "medium", alignLabel: "start", stretch: true, icon: "arrow-head-right", active: this.props.secondary, aria: { 'aria-expanded': this.props.secondary }, theme: this.theme, children: this.props.label }), jsx(PButtonPure, { className: "back", type: "button", size: "small", alignLabel: "end", stretch: true, icon: "arrow-left", theme: this.theme, hideLabel: { base: true, s: false }, children: this.props.label }), jsx("h2", { children: this.props.label }), jsx("div", { className: "drawer", children: jsx("div", { className: "scroller", children: jsx("slot", {}) }) })] })] }), this.props.children] }));
31
34
  }
32
35
  }
33
36
 
@@ -5,7 +5,8 @@ import { splitChildren } from '../../splitChildren.mjs';
5
5
  import { minifyCss } from '../../minifyCss.mjs';
6
6
  import { stripFocusAndHoverStyles } from '../../stripFocusAndHoverStyles.mjs';
7
7
  import { getFlyoutMultilevelCss as getComponentCss$T } from '../../../../../../components/dist/styles/esm/styles-entry.mjs';
8
- import { parseAndGetAriaAttributes } from '../../../../../../components/dist/utils/esm/utils-entry.mjs';
8
+ import { updateFlyoutMultiLevelItemState, parseAndGetAriaAttributes } from '../../../../../../components/dist/utils/esm/utils-entry.mjs';
9
+ import { PButton } from '../components/button.wrapper.mjs';
9
10
  import { PButtonPure } from '../components/button-pure.wrapper.mjs';
10
11
 
11
12
  /**
@@ -18,17 +19,24 @@ import { PButtonPure } from '../components/button-pure.wrapper.mjs';
18
19
  */
19
20
  class DSRFlyoutMultilevel extends Component {
20
21
  host;
21
- // TODO: shouldn't open prop be changed internally too?
22
22
  flyoutMultilevelItemElements = [];
23
+ primary = true;
24
+ isSecondaryDrawerVisible = !!this.props.activeIdentifier;
23
25
  dialog;
26
+ drawer;
27
+ isDesktop = false;
28
+ async componentWillLoad() {
29
+ this.props.defineFlyoutMultilevelItemElements();
30
+ const activeItem = this.props.flyoutMultilevelItemElements.find((item) => item.identifier === this.props.activeIdentifier);
31
+ activeItem && updateFlyoutMultiLevelItemState(activeItem, true); // Set item state
32
+ }
24
33
  render() {
25
34
  splitChildren(this.props.children);
26
- const style = minifyCss(stripFocusAndHoverStyles(getComponentCss$T(this.props.open, !!this.props.activeIdentifier, this.props.theme)));
27
- return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxs("dialog", {
35
+ const style = minifyCss(stripFocusAndHoverStyles(getComponentCss$T(this.props.open, this.primary, this.isSecondaryDrawerVisible, this.props.theme)));
36
+ return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsx("dialog", {
28
37
  // "inert" will be known from React 19 onwards, see https://github.com/facebook/react/pull/24730
29
- // eslint-disable-next-line
30
38
  /* @ts-ignore */
31
- inert: this.props.open ? null : '', tabIndex: -1, children: [jsx("div", { className: "header", children: jsx(PButtonPure, { className: "dismiss", type: "button", size: "medium", icon: "close", hideLabel: true, theme: this.props.theme, children: "Dismiss flyout" }) }), jsx("div", { className: "scroller", children: jsx("nav", { className: "content", ...parseAndGetAriaAttributes(this.props.aria), children: jsx("slot", {}) }) })] })] }), this.props.children] }));
39
+ inert: this.props.open ? null : '', ...parseAndGetAriaAttributes(this.props.aria), children: jsxs("div", { className: "drawer", children: [jsx(PButtonPure, { className: "back", type: "button", size: "small", alignLabel: "end", stretch: true, icon: "arrow-left", theme: this.props.theme, hideLabel: true, children: "Back" }), jsx(PButton, { className: "dismiss-mobile", type: "button", variant: "ghost", hideLabel: true, icon: "close", theme: this.props.theme, children: "Dismiss flyout" }), jsx(PButtonPure, { className: "dismiss-desktop", type: "button", size: "medium", icon: "close", hideLabel: true, theme: this.props.theme, children: "Dismiss flyout" }), jsx("div", { className: "scroller", children: jsx("slot", {}) })] }) })] }), this.props.children] }));
32
40
  }
33
41
  }
34
42
 
@@ -41,7 +41,7 @@ class DSRFlyout extends Component {
41
41
  /* @ts-ignore */
42
42
  inert: this.props.open ? null : '', tabIndex: -1, ...parseAndGetAriaAttributes({
43
43
  'aria-modal': true,
44
- 'aria-hidden': !this.props.open,
44
+ ...(hasHeader && { 'aria-label': namedSlotChildren.find(({ props: { slot } }) => slot === 'header')?.props.children }),
45
45
  ...parseAndGetAriaAttributes(this.props.aria),
46
46
  }), children: jsx("div", { className: "scroller", children: jsxs("div", { className: "flyout", children: [jsx(PButton, { variant: "ghost", className: "dismiss", type: "button", hideLabel: true, icon: "close", theme: this.props.theme, children: "Dismiss flyout" }), hasHeader && jsx("slot", { name: "header" }), jsx("slot", {}), hasFooter && jsx("slot", { name: "footer" }), hasSubFooter && jsx("slot", { name: "sub-footer" })] }) }) })] }), this.props.children] }));
47
47
  }
@@ -40,8 +40,7 @@ class DSRModal extends Component {
40
40
  /* @ts-ignore */
41
41
  inert: this.props.open ? null : '', tabIndex: -1, ...parseAndGetAriaAttributes({
42
42
  'aria-modal': true,
43
- 'aria-label': this.props.heading,
44
- 'aria-hidden': !this.props.open,
43
+ ...(hasHeader && { 'aria-label': this.props.ariaLabel }),
45
44
  ...parseAndGetAriaAttributes(this.props.aria),
46
45
  }), children: jsx("div", { className: "scroller", children: jsxs("div", { className: "modal", children: [hasDismissButton && (jsx(PButton, { variant: "ghost", className: "dismiss", type: "button", hideLabel: true, icon: "close", theme: this.props.theme, children: "Dismiss modal" })), hasHeader &&
47
46
  (this.props.heading ? (jsx("h2", { children: this.props.heading })) : namedSlotChildren.filter(({ props: { slot } }) => slot === 'heading').length > 0 ? (jsx("slot", { name: "heading" })) : (jsx("slot", { name: "header" }))), jsx("slot", {}), hasFooter && jsx("slot", { name: "footer" })] }) }) })] }), this.props.children] }));
@@ -14,6 +14,7 @@ class DSRMultiSelectOption extends Component {
14
14
  render() {
15
15
  splitChildren(this.props.children);
16
16
  const { theme = 'light', selected, highlighted, hidden, textContent } = this.props;
17
+ this.props.disabled || this.props.disabledParent;
17
18
  minifyCss(stripFocusAndHoverStyles(getComponentCss$C(theme)));
18
19
  return (jsx(Fragment, {}));
19
20
  }
@@ -66,7 +66,7 @@ class DSRMultiSelect extends Component {
66
66
  ...(this.props.popoverElement?.matches(':popover-open') && {
67
67
  'popover-open': true,
68
68
  }),
69
- }), children: jsxs("div", { id: dropdownId, className: "listbox", children: [!this.props.hasFilterResults && (jsxs("div", { className: "no-results", "aria-live": "polite", role: "status", children: [jsx("span", { "aria-hidden": "true", children: "---" }), jsx("span", { className: "sr-only", children: "No results found" })] })), jsx("slot", {})] }) })] }), jsx(StateMessage, { hasMessage: (this.props.message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(this.props.state), state: this.props.state, message: this.props.message, theme: this.props.theme, host: null }), jsx("span", { className: "sr-only", role: "status", "aria-live": "assertive", "aria-relevant": "additions text", children: this.props.srHighlightedOptionText })] })] }), this.props.children] }));
69
+ }), children: jsxs("div", { id: dropdownId, className: "listbox", children: [!this.props.hasFilterResults && (jsxs("div", { className: "no-results", role: "option", children: [jsx("span", { "aria-hidden": "true", children: "---" }), jsx("span", { className: "sr-only", children: "No results found" })] })), jsx("slot", {})] }) })] }), jsx(StateMessage, { hasMessage: (this.props.message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(this.props.state), state: this.props.state, message: this.props.message, theme: this.props.theme, host: null }), jsx("span", { className: "sr-only", role: "status", "aria-live": "assertive", "aria-relevant": "additions text", children: this.props.hasFilterResults ? this.props.srHighlightedOptionText : 'No results found' })] })] }), this.props.children] }));
70
70
  }
71
71
  }
72
72
 
@@ -20,7 +20,7 @@ class DSRPagination extends Component {
20
20
  showLastPage: this.props.showLastPage,
21
21
  });
22
22
  const style = minifyCss(stripFocusAndHoverStyles(getComponentCss$y(this.props.activePage, pageTotal, this.props.showLastPage, this.props.theme)));
23
- return (jsx(Fragment, { children: jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsx("nav", { role: "navigation", "aria-label": this.props.allyLabel || this.props.intl.root, children: jsx("ul", { children: paginationItems.map((pageModel, index) => {
23
+ return (jsx(Fragment, { children: jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsx("nav", { "aria-label": this.props.allyLabel || this.props.intl.root, children: jsx("ul", { children: paginationItems.map((pageModel, index) => {
24
24
  const { type, isActive, value, isBeforeCurrent, isAfterCurrent, isBeforeBeforeCurrent, isAfterAfterCurrent, } = pageModel;
25
25
  const spanProps = {
26
26
  role: 'button',
@@ -18,9 +18,10 @@ class DSRSegmentedControlItem extends Component {
18
18
  // this additional validation is still needed because undefined is allowed with current propTypes
19
19
  const hasIcon = !!this.props.icon || !!this.props.iconSource;
20
20
  const hasSlottedContent = !!children.length;
21
- const style = minifyCss(stripFocusAndHoverStyles(getComponentCss$t(this.props.disabled, this.props.selected, hasIcon, hasSlottedContent, this.props.theme || 'light' // default as fallback
21
+ const isDisabled = this.props.disabled || this.props.disabledParent;
22
+ const style = minifyCss(stripFocusAndHoverStyles(getComponentCss$t(isDisabled, this.props.selected, hasIcon, hasSlottedContent, this.props.theme || 'light' // default as fallback
22
23
  )));
23
- return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxs("button", { type: "button", ...getSegmentedControlItemAriaAttributes(this.props.selected, this.props.disabled, this.props.aria), children: [this.props.label && jsx("span", { children: this.props.label }), hasIcon && (jsx(PIcon, { className: "icon", size: "inherit", name: this.props.icon, source: this.props.iconSource, color: getIconColor(this.props.disabled), theme: this.props.theme || 'light', "aria-hidden": "true" })), jsx("slot", {})] })] }), this.props.children] }));
24
+ return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsx(Fragment, { children: jsxs("button", { type: "button", ...getSegmentedControlItemAriaAttributes(this.props.selected, this.props.disabled, this.props.aria), children: [this.props.label && jsx("span", { children: this.props.label }), hasIcon && (jsx(PIcon, { className: "icon", size: "inherit", name: this.props.icon, source: this.props.iconSource, color: getIconColor(this.props.disabled), theme: this.props.theme || 'light', "aria-hidden": "true" })), jsx("slot", {})] }) })] }), this.props.children] }));
24
25
  }
25
26
  }
26
27
 
@@ -12,6 +12,15 @@ import { getSegmentedControlCss as getComponentCss$s } from '../../../../../../c
12
12
  */
13
13
  class DSRSegmentedControl extends Component {
14
14
  host;
15
+ internals;
16
+ defaultValue;
17
+ formResetCallback() {
18
+ this.props.internals.setFormValue(this.props.defaultValue?.toString());
19
+ }
20
+ formDisabledCallback() {
21
+ }
22
+ formStateRestoreCallback() {
23
+ }
15
24
  render() {
16
25
  const { children, namedSlotChildren, otherChildren } = splitChildren(this.props.children);
17
26
  const manipulatedChildren = children.map((child) => typeof child === 'object' && 'props' in child && otherChildren.includes(child)
@@ -16,13 +16,14 @@ class DSRSelectOption extends Component {
16
16
  render() {
17
17
  splitChildren(this.props.children);
18
18
  const { theme = 'light', selected, highlighted, hidden } = this.props;
19
+ const isDisabled = this.props.disabled || this.props.disabledParent;
19
20
  const style = minifyCss(stripFocusAndHoverStyles(getComponentCss$A(theme)));
20
21
  return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsx(Fragment, { children: jsxs("div", { role: "option", className: {
21
22
  option: true,
22
23
  'option--selected': selected,
23
24
  'option--highlighted': highlighted,
24
- 'option--disabled': this.props.disabled,
25
- }, ...getOptionAriaAttributes(selected, this.props.disabled, hidden, !!this.props.value), children: [jsx("slot", {}), selected && (jsx(PIcon, { className: "icon", "aria-hidden": "true", name: "check", color: this.props.disabled ? 'state-disabled' : 'primary', theme: theme }))] }) })] }), this.props.children] }));
25
+ 'option--disabled': isDisabled,
26
+ }, ...getOptionAriaAttributes(selected, isDisabled, hidden, !!this.props.value), children: [jsx("slot", {}), selected && (jsx(PIcon, { className: "icon", "aria-hidden": "true", name: "check", color: isDisabled ? 'state-disabled' : 'primary', theme: theme }))] }) })] }), this.props.children] }));
26
27
  }
27
28
  }
28
29
 
@@ -1,5 +1,9 @@
1
1
  import type { BaseProps } from '../../BaseProps';
2
2
  export type PFlyoutMultilevelItemProps = BaseProps & {
3
+ /**
4
+ * Private property set by the component itself.
5
+ */
6
+ cascade?: boolean;
3
7
  /**
4
8
  * Unique identifier which controls if this item should be shown when the active-identifier on the flyout-multilevel is set to this value.
5
9
  */
@@ -8,8 +12,20 @@ export type PFlyoutMultilevelItemProps = BaseProps & {
8
12
  * Label of the item.
9
13
  */
10
14
  label?: string;
15
+ /**
16
+ * Private property set by the component itself.
17
+ */
18
+ primary?: boolean;
19
+ /**
20
+ * Private property set by the component itself.
21
+ */
22
+ secondary?: boolean;
11
23
  };
12
24
  export declare const PFlyoutMultilevelItem: import("react").ForwardRefExoticComponent<import("react").DOMAttributes<{}> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
25
+ /**
26
+ * Private property set by the component itself.
27
+ */
28
+ cascade?: boolean;
13
29
  /**
14
30
  * Unique identifier which controls if this item should be shown when the active-identifier on the flyout-multilevel is set to this value.
15
31
  */
@@ -18,6 +34,14 @@ export declare const PFlyoutMultilevelItem: import("react").ForwardRefExoticComp
18
34
  * Label of the item.
19
35
  */
20
36
  label?: string;
37
+ /**
38
+ * Private property set by the component itself.
39
+ */
40
+ primary?: boolean;
41
+ /**
42
+ * Private property set by the component itself.
43
+ */
44
+ secondary?: boolean;
21
45
  } & {
22
46
  children?: import("react").ReactNode | undefined;
23
47
  } & import("react").RefAttributes<HTMLElement>>;
@@ -9,6 +9,18 @@ export type PSegmentedControlProps = BaseProps & {
9
9
  * Sets the amount of columns.
10
10
  */
11
11
  columns?: BreakpointCustomizable<SegmentedControlColumns>;
12
+ /**
13
+ * Disables the segmented-control.
14
+ */
15
+ disabled?: boolean;
16
+ /**
17
+ * The id of a form element the segmented-control should be associated with.
18
+ */
19
+ form?: string;
20
+ /**
21
+ * The name of the segmented-control.
22
+ */
23
+ name?: string;
12
24
  /**
13
25
  * @deprecated since v3.0.0, will be removed with next major release, use `update` event instead. Emitted when selected element changes.
14
26
  */
@@ -35,6 +47,18 @@ export declare const PSegmentedControl: import("react").ForwardRefExoticComponen
35
47
  * Sets the amount of columns.
36
48
  */
37
49
  columns?: BreakpointCustomizable<SegmentedControlColumns>;
50
+ /**
51
+ * Disables the segmented-control.
52
+ */
53
+ disabled?: boolean;
54
+ /**
55
+ * The id of a form element the segmented-control should be associated with.
56
+ */
57
+ form?: string;
58
+ /**
59
+ * The name of the segmented-control.
60
+ */
61
+ name?: string;
38
62
  /**
39
63
  * @deprecated since v3.0.0, will be removed with next major release, use `update` event instead. Emitted when selected element changes.
40
64
  */
@@ -6,7 +6,7 @@ export type PSelectProps = BaseProps & {
6
6
  */
7
7
  description?: string;
8
8
  /**
9
- * Disables the select
9
+ * Disables the select.
10
10
  */
11
11
  disabled?: boolean;
12
12
  /**
@@ -60,7 +60,7 @@ export declare const PSelect: import("react").ForwardRefExoticComponent<import("
60
60
  */
61
61
  description?: string;
62
62
  /**
63
- * Disables the select
63
+ * Disables the select.
64
64
  */
65
65
  disabled?: boolean;
66
66
  /**
@@ -19,5 +19,9 @@ export declare class DSRCanvas extends Component<any> {
19
19
  private hasSidebarEnd;
20
20
  private hasFooter;
21
21
  private hasBackground;
22
+ private sidebarStart;
23
+ private sidebarEnd;
24
+ private root;
25
+ private header;
22
26
  render(): JSX.Element;
23
27
  }
@@ -7,7 +7,8 @@ import type { FlyoutMultilevelItemInternalHTMLProps } from '@porsche-design-syst
7
7
  */
8
8
  export declare class DSRFlyoutMultilevelItem extends Component<any> {
9
9
  host: HTMLElement & FlyoutMultilevelItemInternalHTMLProps;
10
+ private scroller;
10
11
  private get theme();
11
- private get open();
12
+ componentDidRender(): void;
12
13
  render(): JSX.Element;
13
14
  }
@@ -10,6 +10,11 @@ import { Component } from 'react';
10
10
  export declare class DSRFlyoutMultilevel extends Component<any> {
11
11
  host: HTMLElement;
12
12
  private flyoutMultilevelItemElements;
13
+ private primary;
14
+ private isSecondaryDrawerVisible;
13
15
  private dialog;
16
+ private drawer;
17
+ private isDesktop;
18
+ componentWillLoad(): Promise<void>;
14
19
  render(): JSX.Element;
15
20
  }
@@ -6,5 +6,10 @@ import { Component } from 'react';
6
6
  */
7
7
  export declare class DSRSegmentedControl extends Component<any> {
8
8
  host: HTMLElement;
9
+ private internals;
10
+ private defaultValue;
11
+ formResetCallback(): void;
12
+ formDisabledCallback(): void;
13
+ formStateRestoreCallback(): void;
9
14
  render(): JSX.Element;
10
15
  }
@@ -902,7 +902,7 @@ declare const FLYOUT_MULTILEVEL_ARIA_ATTRIBUTES: readonly [
902
902
  ];
903
903
  export type FlyoutMultilevelAriaAttribute = (typeof FLYOUT_MULTILEVEL_ARIA_ATTRIBUTES)[number];
904
904
  export type FlyoutMultilevelUpdate = {
905
- activeIdentifier: string;
905
+ activeIdentifier: string | undefined;
906
906
  };
907
907
  /** @deprecated */
908
908
  export type FlyoutMultilevelUpdateEvent = FlyoutMultilevelUpdate;
@@ -1139,7 +1139,8 @@ declare const BACKDROPS: readonly [
1139
1139
  ];
1140
1140
  export type Backdrop = (typeof BACKDROPS)[number];
1141
1141
  declare const MODAL_ARIA_ATTRIBUTES: readonly [
1142
- "aria-label"
1142
+ "aria-label",
1143
+ "role"
1143
1144
  ];
1144
1145
  export type ModalAriaAttribute = (typeof MODAL_ARIA_ATTRIBUTES)[number];
1145
1146
  export type ModalBackdrop = Backdrop;