@porsche-design-system/components-react 3.0.0-rc.1 → 3.0.0-rc.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.
Files changed (35) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/bin/patchRemixRunProcessBrowserGlobalIdentifier.js +35 -26
  3. package/esm/lib/components/icon.wrapper.js +1 -1
  4. package/esm/lib/components/scroller.wrapper.js +3 -3
  5. package/lib/components/icon.wrapper.js +1 -1
  6. package/lib/components/scroller.wrapper.d.ts +15 -7
  7. package/lib/components/scroller.wrapper.js +3 -3
  8. package/lib/types.d.ts +210 -191
  9. package/package.json +2 -2
  10. package/ssr/components/dist/styles/esm/styles-entry.js +180 -77
  11. package/ssr/components/dist/utils/esm/utils-entry.js +45 -7
  12. package/ssr/components-react/projects/react-ssr-wrapper/src/lib/components/icon.wrapper.js +1 -1
  13. package/ssr/components-react/projects/react-ssr-wrapper/src/lib/components/scroller.wrapper.js +4 -4
  14. package/ssr/components-react/projects/react-ssr-wrapper/src/lib/components/select-wrapper-dropdown.wrapper.js +38 -0
  15. package/ssr/components-react/projects/react-ssr-wrapper/src/lib/components/stepper-horizontal.wrapper.js +0 -1
  16. package/ssr/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.js +2 -1
  17. package/ssr/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-wrapper-dropdown.js +34 -0
  18. package/ssr/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-wrapper.js +6 -3
  19. package/ssr/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal.js +1 -1
  20. package/ssr/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs-bar.js +1 -1
  21. package/ssr/esm/components/dist/styles/esm/styles-entry.js +180 -78
  22. package/ssr/esm/components/dist/utils/esm/utils-entry.js +40 -8
  23. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/icon.wrapper.js +1 -1
  24. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/scroller.wrapper.js +4 -4
  25. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/select-wrapper-dropdown.wrapper.js +36 -0
  26. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/stepper-horizontal.wrapper.js +0 -1
  27. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.js +3 -2
  28. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-wrapper-dropdown.js +32 -0
  29. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-wrapper.js +6 -3
  30. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal.js +1 -1
  31. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs-bar.js +1 -1
  32. package/ssr/lib/components/scroller.wrapper.d.ts +15 -7
  33. package/ssr/lib/components/select-wrapper-dropdown.wrapper.d.ts +30 -0
  34. package/ssr/lib/dsr-components/select-wrapper.d.ts +0 -1
  35. package/ssr/lib/types.d.ts +210 -191
@@ -0,0 +1,36 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { forwardRef, useRef } from 'react';
3
+ import { useEventCallback, usePrefix, useBrowserLayoutEffect, useMergedClass } from '../../hooks.js';
4
+ import { syncRef } from '../../utils.js';
5
+ import { DSRSelectWrapperDropdown } from '../dsr-components/select-wrapper-dropdown.js';
6
+
7
+ const PSelectWrapperDropdown = forwardRef(({ description, direction = 'auto', disabled = false, filter = false, isOpenOverride = false, label, message, onOpenChange, required = false, selectRef, state, theme = 'light', className, ...rest }, ref) => {
8
+ const elementRef = useRef();
9
+ useEventCallback(elementRef, 'openChange', onOpenChange);
10
+ const WebComponentTag = usePrefix('p-select-wrapper-dropdown');
11
+ const propsToSync = [description, direction, disabled, filter, isOpenOverride, label, message, required, selectRef, state, theme];
12
+ useBrowserLayoutEffect(() => {
13
+ const { current } = elementRef;
14
+ ['description', 'direction', 'disabled', 'filter', 'isOpenOverride', 'label', 'message', 'required', 'selectRef', 'state', 'theme'].forEach((propName, i) => (current[propName] = propsToSync[i]));
15
+ }, propsToSync);
16
+ // @ts-ignore
17
+ if (!process.browser) {
18
+ className = className ? `${className} ssr` : 'ssr';
19
+ }
20
+ const props = {
21
+ ...rest,
22
+ // @ts-ignore
23
+ ...(!process.browser
24
+ ? {
25
+ children: (jsx(DSRSelectWrapperDropdown, { ...{ description, direction, disabled, filter, isOpenOverride, label, message, required, selectRef, state, theme } })),
26
+ }
27
+ : {
28
+ suppressHydrationWarning: true,
29
+ }),
30
+ class: useMergedClass(elementRef, className),
31
+ ref: syncRef(elementRef, ref)
32
+ };
33
+ return jsx(WebComponentTag, { ...props });
34
+ });
35
+
36
+ export { PSelectWrapperDropdown };
@@ -23,7 +23,6 @@ const PStepperHorizontal = forwardRef(({ onStepChange, onUpdate, size = 'small',
23
23
  // @ts-ignore
24
24
  ...(!process.browser
25
25
  ? {
26
- ...{ "role": "list" },
27
26
  children: (jsx(DSRStepperHorizontal, { ...{ size, theme, children } })),
28
27
  }
29
28
  : {
@@ -64,7 +64,7 @@ import { Component } from 'react';
64
64
  import { minifyCss } from '../../minifyCss.js';
65
65
  import { stripFocusAndHoverStyles } from '../../stripFocusAndHoverStyles.js';
66
66
  import { getScrollerCss as getComponentCss$s } from '../../../../../../components/dist/styles/esm/styles-entry.js';
67
- import { isScrollable } from '../../../../../../components/dist/utils/esm/utils-entry.js';
67
+ import { parseAndGetAriaAttributes, isScrollable } from '../../../../../../components/dist/utils/esm/utils-entry.js';
68
68
 
69
69
  class DSRScroller extends Component {
70
70
  constructor() {
@@ -74,6 +74,7 @@ class DSRScroller extends Component {
74
74
  }
75
75
  // should only update if scrollable
76
76
  render() {
77
+ var _a;
77
78
  splitChildren(this.props.children);
78
79
  const deprecationMap = {
79
80
  default: 'background-base',
@@ -84,7 +85,7 @@ class DSRScroller extends Component {
84
85
  return (jsx("div", { className: direction === 'next' ? 'action-next' : 'action-prev', children: jsx("button", { type: "button", tabIndex: -1, "aria-hidden": "true", "aria-label": direction, children: jsx(PIcon, { className: "icon", name: direction === 'next' ? 'arrow-head-right' : 'arrow-head-left', theme: this.props.theme }) }) }, direction));
85
86
  };
86
87
  const style = minifyCss(stripFocusAndHoverStyles(getComponentCss$s(deprecationMap[this.props.gradientColorScheme] || this.props.gradientColor, this.isNextHidden, this.isPrevHidden, this.props.scrollIndicatorPosition || this.props.alignScrollIndicator, this.props.scrollbar, this.props.theme)));
87
- return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxs("div", { className: "root", children: [jsx("div", { className: "scroll-area", children: jsxs("div", { className: "scroll-wrapper", tabIndex: isScrollable(this.isPrevHidden, this.isNextHidden) ? 0 : null, children: [jsx("slot", {}), jsx("div", { className: "trigger" }), jsx("div", { className: "trigger" })] }) }), ['prev', 'next'].map(renderPrevNextButton)] })] }), this.props.children] }));
88
+ return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxs("div", { className: "root", children: [jsx("div", { className: "scroll-area", children: jsxs("div", { className: "scroll-wrapper", role: ((_a = parseAndGetAriaAttributes(this.props.aria)) === null || _a === void 0 ? void 0 : _a.role) || null, tabIndex: isScrollable(this.isPrevHidden, this.isNextHidden) ? 0 : null, children: [jsx("slot", {}), jsx("div", { className: "trigger" }), jsx("div", { className: "trigger" })] }) }), ['prev', 'next'].map(renderPrevNextButton)] })] }), this.props.children] }));
88
89
  }
89
90
  }
90
91
 
@@ -0,0 +1,32 @@
1
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
+ import { Component } from 'react';
3
+ import { minifyCss } from '../../minifyCss.js';
4
+ import { stripFocusAndHoverStyles } from '../../stripFocusAndHoverStyles.js';
5
+ import { getSelectWrapperDropdownCss as getComponentCss$o } from '../../../../../../components/dist/styles/esm/styles-entry.js';
6
+ import { getSelectedOptionMap, getFilterInputAriaAttributes, getHighlightedOptionMapIndex, getSelectWrapperDropdownButtonAriaAttributes } from '../../../../../../components/dist/utils/esm/utils-entry.js';
7
+
8
+ class DSRSelectWrapperDropdown extends Component {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.isOpen = this.props.isOpenOverride;
12
+ this.optionMaps = [];
13
+ this.searchString = '';
14
+ }
15
+ get selectedIndex() {
16
+ return 0;
17
+ }
18
+ render() {
19
+ var _a;
20
+ const dropdownId = 'list';
21
+ const labelId = 'label';
22
+ const descriptionId = this.props.description && 'description';
23
+ const buttonId = 'value';
24
+ const style = minifyCss(stripFocusAndHoverStyles(getComponentCss$o(this.props.direction === 'auto' ? 'down' : this.props.direction, this.isOpen, this.props.state, this.props.disabled, this.props.filter, this.props.theme)));
25
+ return (jsx(Fragment, { children: jsxs("template", { shadowroot: "open", shadowrootmode: "open", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsx(Fragment, { children: this.props.filter ? ([
26
+ jsx("input", { type: "text", role: "combobox", disabled: this.props.disabled, placeholder: ((_a = getSelectedOptionMap(this.optionMaps)) === null || _a === void 0 ? void 0 : _a.value) || null, autoComplete: "off", value: this.searchString, ...getFilterInputAriaAttributes(this.isOpen, this.props.required, labelId, descriptionId, dropdownId, getHighlightedOptionMapIndex(this.optionMaps)) }),
27
+ jsx("span", {}),
28
+ ]) : (jsx("button", { type: "button", role: "combobox", id: buttonId, disabled: this.props.disabled, ...getSelectWrapperDropdownButtonAriaAttributes(this.isOpen, labelId, descriptionId, dropdownId, getHighlightedOptionMapIndex(this.optionMaps)) })) })] }) }));
29
+ }
30
+ }
31
+
32
+ export { DSRSelectWrapperDropdown };
@@ -59,23 +59,26 @@ import '../components/text-list-item.wrapper.js';
59
59
  import '../components/textarea-wrapper.wrapper.js';
60
60
  import '../components/toast.wrapper.js';
61
61
  import '../components/wordmark.wrapper.js';
62
+ import { PSelectWrapperDropdown } from '../components/select-wrapper-dropdown.wrapper.js';
62
63
  import { splitChildren } from '../../splitChildren.js';
63
64
  import { Component } from 'react';
64
65
  import { minifyCss } from '../../minifyCss.js';
65
66
  import { stripFocusAndHoverStyles } from '../../stripFocusAndHoverStyles.js';
66
67
  import { getSelectWrapperCss as getComponentCss$p } from '../../../../../../components/dist/styles/esm/styles-entry.js';
68
+ import { isCustomDropdown } from '../../../../../../components/dist/utils/esm/utils-entry.js';
67
69
  import { StateMessage } from './state-message.js';
68
70
 
69
71
  class DSRSelectWrapper extends Component {
70
72
  render() {
71
- var _a;
73
+ var _a, _b, _c, _d, _e;
74
+ const hasCustomDropdown = isCustomDropdown(this.props.filter, this.props.native);
72
75
  const { children, namedSlotChildren, otherChildren } = splitChildren(this.props.children);
73
76
  const { disabled } = typeof otherChildren[0] === 'object' && 'props' in otherChildren[0] && ((_a = otherChildren[0]) === null || _a === void 0 ? void 0 : _a.props) || {};
74
77
  const labelProps = disabled
75
78
  ? {}
76
79
  : {};
77
- const style = minifyCss(stripFocusAndHoverStyles(getComponentCss$p(disabled, this.props.hideLabel, this.props.state, this.props.theme)));
78
- 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("label", { className: "label", children: [(this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0) && (jsx("span", { className: "label__text", ...labelProps, children: this.props.label || jsx("slot", { name: "label" }) })), (this.props.description || namedSlotChildren.filter(({ props: { slot } }) => slot === 'description').length > 0) && (jsx("span", { className: "label__text", ...labelProps, children: this.props.description || jsx("slot", { name: "description" }) })), jsx(PIcon, { className: "icon", name: "arrow-head-down", theme: this.props.theme, color: disabled ? 'state-disabled' : 'primary', "aria-hidden": "true" }), jsx("slot", {})] }), this.props.hasCustomDropdown && (jsx(Fragment, {}))] }), (this.props.message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(this.props.state) && (jsx(StateMessage, { state: this.props.state, message: this.props.message, theme: this.props.theme, host: null }))] })] }), this.props.children] }));
80
+ const style = minifyCss(stripFocusAndHoverStyles(getComponentCss$p(disabled, this.props.native, this.props.hideLabel, this.props.state, this.props.theme)));
81
+ 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("label", { className: "label", children: [(this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0) && (jsx("span", { className: "label__text", ...labelProps, children: this.props.label || jsx("slot", { name: "label" }) })), (this.props.description || namedSlotChildren.filter(({ props: { slot } }) => slot === 'description').length > 0) && (jsx("span", { className: "label__text", ...labelProps, children: this.props.description || jsx("slot", { name: "description" }) })), jsx(PIcon, { className: "icon", name: "arrow-head-down", theme: this.props.theme, color: disabled ? 'state-disabled' : 'primary', "aria-hidden": "true" }), jsx("slot", {})] }), hasCustomDropdown && !disabled && (jsx(PSelectWrapperDropdown, { selectRef: typeof otherChildren[0] === 'object' && 'props' in otherChildren[0] && ((_b = otherChildren[0]) === null || _b === void 0 ? void 0 : _b.props), label: this.props.label || ((_c = namedSlotChildren.find(({ props: { slot } }) => slot === 'label')) === null || _c === void 0 ? void 0 : _c.props.children), message: this.props.message || ((_d = namedSlotChildren.find(({ props: { slot } }) => slot === 'message')) === null || _d === void 0 ? void 0 : _d.props.children), description: this.props.description || ((_e = namedSlotChildren.find(({ props: { slot } }) => slot === 'description')) === null || _e === void 0 ? void 0 : _e.props.children), state: this.props.state, direction: this.props.dropdownDirection, filter: this.props.filter, theme: this.props.theme, required: false, disabled: disabled, onOpenChange: (isOpen) => this.props.iconElement.classList[isOpen ? 'add' : 'remove']('icon--open') }))] }), (this.props.message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(this.props.state) && (jsx(StateMessage, { state: this.props.state, message: this.props.message, theme: this.props.theme, host: null }))] })] }), this.props.children] }));
79
82
  }
80
83
  }
81
84
 
@@ -76,7 +76,7 @@ class DSRStepperHorizontal extends Component {
76
76
  ? { ...child, props: { ...child.props, theme: this.props.theme } }
77
77
  : child);
78
78
  const style = minifyCss(stripFocusAndHoverStyles(getComponentCss$l(this.props.size)));
79
- return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsx(Fragment, { children: jsx(PScroller, { className: "scroller", theme: this.props.theme, children: jsx("slot", {}) }) })] }), manipulatedChildren] }));
79
+ return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsx(Fragment, { children: jsx(PScroller, { className: "scroller", aria: { role: 'list' }, theme: this.props.theme, children: jsx("slot", {}) }) })] }), manipulatedChildren] }));
80
80
  }
81
81
  }
82
82
 
@@ -77,7 +77,7 @@ class DSRTabsBar extends Component {
77
77
  semibold: 'semi-bold',
78
78
  };
79
79
  const style = minifyCss(stripFocusAndHoverStyles(getComponentCss$c(this.props.size, (deprecationMap[this.props.weight] || this.props.weight), this.props.theme)));
80
- return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxs(PScroller, { className: "scroller", role: "tablist", theme: this.props.theme, gradientColorScheme: this.props.gradientColorScheme, gradientColor: this.props.gradientColor, alignScrollIndicator: "top", children: [jsx("slot", {}), jsx("span", { className: "bar" })] })] }), this.props.children] }));
80
+ return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxs(PScroller, { className: "scroller", aria: { role: 'tablist' }, theme: this.props.theme, gradientColorScheme: this.props.gradientColorScheme, gradientColor: this.props.gradientColor, alignScrollIndicator: "top", children: [jsx("slot", {}), jsx("span", { className: "bar" })] })] }), this.props.children] }));
81
81
  }
82
82
  }
83
83
 
@@ -1,10 +1,14 @@
1
1
  import { HTMLAttributes } from 'react';
2
- import type { ScrollerAlignScrollIndicator, ScrollerGradientColor, ScrollerGradientColorScheme, ScrollerScrollIndicatorPosition, ScrollerScrollToPosition, Theme } from '../types';
2
+ import type { ScrollerAlignScrollIndicator, SelectedAriaAttributes, ScrollerAriaAttribute, ScrollerGradientColor, ScrollerGradientColorScheme, ScrollerScrollIndicatorPosition, ScrollerScrollToPosition, Theme } from '../types';
3
3
  export type PScrollerProps = Omit<HTMLAttributes<{}>, 'color' | 'onChange'> & {
4
4
  /**
5
- * Sets the vertical position of scroll indicator
5
+ * Sets the vertical position of scroll indicator.
6
6
  */
7
7
  alignScrollIndicator?: ScrollerAlignScrollIndicator;
8
+ /**
9
+ * Add ARIA role.
10
+ */
11
+ aria?: SelectedAriaAttributes<ScrollerAriaAttribute>;
8
12
  /**
9
13
  * Adapts the background gradient color of prev and next button.
10
14
  */
@@ -18,11 +22,11 @@ export type PScrollerProps = Omit<HTMLAttributes<{}>, 'color' | 'onChange'> & {
18
22
  */
19
23
  scrollIndicatorPosition?: ScrollerScrollIndicatorPosition;
20
24
  /**
21
- * Scrolls the scroll area to the left either smooth or immediately
25
+ * Scrolls the scroll area to the left either smooth or immediately.
22
26
  */
23
27
  scrollToPosition?: ScrollerScrollToPosition;
24
28
  /**
25
- * Specifies if scrollbar should be shown
29
+ * Specifies if scrollbar should be shown.
26
30
  */
27
31
  scrollbar?: boolean;
28
32
  /**
@@ -32,9 +36,13 @@ export type PScrollerProps = Omit<HTMLAttributes<{}>, 'color' | 'onChange'> & {
32
36
  };
33
37
  export declare const PScroller: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<{}>, "color" | "onChange"> & {
34
38
  /**
35
- * Sets the vertical position of scroll indicator
39
+ * Sets the vertical position of scroll indicator.
36
40
  */
37
41
  alignScrollIndicator?: ScrollerAlignScrollIndicator;
42
+ /**
43
+ * Add ARIA role.
44
+ */
45
+ aria?: SelectedAriaAttributes<ScrollerAriaAttribute>;
38
46
  /**
39
47
  * Adapts the background gradient color of prev and next button.
40
48
  */
@@ -48,11 +56,11 @@ export declare const PScroller: import("react").ForwardRefExoticComponent<Omit<H
48
56
  */
49
57
  scrollIndicatorPosition?: ScrollerScrollIndicatorPosition;
50
58
  /**
51
- * Scrolls the scroll area to the left either smooth or immediately
59
+ * Scrolls the scroll area to the left either smooth or immediately.
52
60
  */
53
61
  scrollToPosition?: ScrollerScrollToPosition;
54
62
  /**
55
- * Specifies if scrollbar should be shown
63
+ * Specifies if scrollbar should be shown.
56
64
  */
57
65
  scrollbar?: boolean;
58
66
  /**
@@ -0,0 +1,30 @@
1
+ import { HTMLAttributes } from 'react';
2
+ import type { SelectWrapperDropdownDirection, SelectWrapperState, Theme } from '../types';
3
+ export type PSelectWrapperDropdownProps = Omit<HTMLAttributes<{}>, 'color' | 'onChange'> & {
4
+ description?: string;
5
+ direction?: SelectWrapperDropdownDirection;
6
+ disabled?: boolean;
7
+ filter?: boolean;
8
+ isOpenOverride?: boolean;
9
+ label?: string;
10
+ message?: string;
11
+ onOpenChange: (isOpen: boolean) => void;
12
+ required?: boolean;
13
+ selectRef?: HTMLSelectElement;
14
+ state?: SelectWrapperState;
15
+ theme?: Theme;
16
+ };
17
+ export declare const PSelectWrapperDropdown: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<{}>, "color" | "onChange"> & {
18
+ description?: string;
19
+ direction?: SelectWrapperDropdownDirection;
20
+ disabled?: boolean;
21
+ filter?: boolean;
22
+ isOpenOverride?: boolean;
23
+ label?: string;
24
+ message?: string;
25
+ onOpenChange: (isOpen: boolean) => void;
26
+ required?: boolean;
27
+ selectRef?: HTMLSelectElement;
28
+ state?: SelectWrapperState;
29
+ theme?: Theme;
30
+ } & import("react").RefAttributes<HTMLElement>>;
@@ -4,6 +4,5 @@ export declare class DSRSelectWrapper extends Component<any> {
4
4
  private select;
5
5
  private iconElement;
6
6
  private dropdownElement;
7
- private hasCustomDropdown;
8
7
  render(): JSX.Element;
9
8
  }