@synerise/ds-dropdown 1.0.34 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/README.md +1 -1
- package/dist/Dropdown.const.d.ts +14 -0
- package/dist/Dropdown.const.js +25 -0
- package/dist/Dropdown.d.ts +8 -14
- package/dist/Dropdown.js +72 -68
- package/dist/Dropdown.styles.d.ts +0 -1
- package/dist/Dropdown.styles.js +4 -5
- package/dist/Dropdown.types.d.ts +54 -0
- package/dist/components/BackAction/BackAction.d.ts +3 -0
- package/dist/{elements → components}/BackAction/BackAction.js +3 -6
- package/dist/{elements → components}/BackAction/BackAction.styles.js +7 -7
- package/dist/components/BottomAction/BottomAction.d.ts +3 -0
- package/dist/{elements → components}/BottomAction/BottomAction.js +2 -3
- package/dist/{elements → components}/BottomAction/BottomAction.styles.js +3 -3
- package/dist/components/DropdownFooter/DropdownFooter.d.ts +3 -0
- package/dist/components/DropdownFooter/DropdownFooter.js +10 -0
- package/dist/components/DropdownFooter/DropdownFooter.styles.d.ts +5 -0
- package/dist/components/DropdownFooter/DropdownFooter.styles.js +17 -0
- package/dist/components/DropdownFooter/DropdownFooter.types.d.ts +8 -0
- package/dist/components/DropdownFooter/DropdownFooter.types.js +1 -0
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +4 -0
- package/dist/components/DropdownMenu/DropdownMenu.js +132 -0
- package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +18 -0
- package/dist/components/DropdownMenu/DropdownMenu.types.js +1 -0
- package/dist/components/DropdownMenuList/DropdownMenuList.d.ts +4 -0
- package/dist/components/DropdownMenuList/DropdownMenuList.js +84 -0
- package/dist/components/DropdownMenuList/DropdownMenuList.styles.d.ts +40 -0
- package/dist/components/DropdownMenuList/DropdownMenuList.styles.js +23 -0
- package/dist/components/DropdownMenuList/DropdownMenuList.types.d.ts +7 -0
- package/dist/components/DropdownMenuList/DropdownMenuList.types.js +1 -0
- package/dist/components/DropdownOverlay/DropdownOverlay.d.ts +7 -0
- package/dist/components/DropdownOverlay/DropdownOverlay.js +73 -0
- package/dist/components/DropdownOverlay/DropdownOverlay.styles.d.ts +4 -0
- package/dist/components/DropdownOverlay/DropdownOverlay.styles.js +12 -0
- package/dist/components/DropdownOverlay/DropdownOverlay.types.d.ts +8 -0
- package/dist/components/DropdownOverlay/DropdownOverlay.types.js +1 -0
- package/dist/components/DropdownPopover/DropdownPopover.d.ts +3 -0
- package/dist/components/DropdownPopover/DropdownPopover.js +79 -0
- package/dist/components/DropdownPopover/DropdownPopover.types.d.ts +8 -0
- package/dist/components/DropdownPopover/DropdownPopover.types.js +1 -0
- package/dist/components/TextTrigger/TextTrigger.d.ts +3 -0
- package/dist/{elements → components}/TextTrigger/TextTrigger.js +6 -5
- package/dist/{elements → components}/TextTrigger/TextTrigger.styles.js +2 -2
- package/dist/{elements → components}/TextTrigger/TextTrigger.types.d.ts +1 -1
- package/dist/components/TextTrigger/TextTrigger.types.js +1 -0
- package/dist/hooks/useDefaultTexts.d.ts +2 -0
- package/dist/hooks/useDefaultTexts.js +21 -0
- package/dist/hooks/useDropdownVisibility.d.ts +10 -0
- package/dist/hooks/useDropdownVisibility.js +40 -0
- package/dist/index.d.ts +9 -1
- package/dist/index.js +6 -1
- package/dist/utils/getDropdownWidth.d.ts +2 -0
- package/dist/utils/getDropdownWidth.js +18 -0
- package/dist/utils/getPlacement.d.ts +3 -0
- package/dist/utils/getPlacement.js +4 -0
- package/dist/utils/getTransitionConfig.d.ts +4 -0
- package/dist/utils/getTransitionConfig.js +15 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/isSplitFooter.d.ts +2 -0
- package/dist/utils/isSplitFooter.js +3 -0
- package/package.json +16 -8
- package/dist/elements/BackAction/BackAction.d.ts +0 -4
- package/dist/elements/BottomAction/BottomAction.d.ts +0 -4
- package/dist/elements/TextTrigger/TextTrigger.d.ts +0 -4
- package/dist/style/index.css +0 -1
- /package/dist/{elements/BackAction/BackAction.types.js → Dropdown.types.js} +0 -0
- /package/dist/{elements → components}/BackAction/BackAction.styles.d.ts +0 -0
- /package/dist/{elements → components}/BackAction/BackAction.types.d.ts +0 -0
- /package/dist/{elements/BottomAction/BottomAction.types.js → components/BackAction/BackAction.types.js} +0 -0
- /package/dist/{elements → components}/BottomAction/BottomAction.styles.d.ts +0 -0
- /package/dist/{elements → components}/BottomAction/BottomAction.types.d.ts +0 -0
- /package/dist/{elements/TextTrigger/TextTrigger.types.js → components/BottomAction/BottomAction.types.js} +0 -0
- /package/dist/{elements → components}/TextTrigger/TextTrigger.styles.d.ts +0 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import { useTheme } from '@synerise/ds-core';
|
|
4
|
+
import Icon, { SearchM } from '@synerise/ds-icon';
|
|
5
|
+
import SearchBar from '@synerise/ds-search-bar';
|
|
6
|
+
import { DEFAULT_MATCHING_FUNCTION, MAX_VISIBLE_ITEMS } from '../../Dropdown.const';
|
|
7
|
+
import { useDefaultTexts } from '../../hooks/useDefaultTexts';
|
|
8
|
+
import { DropdownFooter } from '../DropdownFooter/DropdownFooter';
|
|
9
|
+
import { DropdownMenuList } from '../DropdownMenuList/DropdownMenuList';
|
|
10
|
+
import { DropdownPopover } from '../DropdownPopover/DropdownPopover';
|
|
11
|
+
export var DropdownMenu = function DropdownMenu(_ref) {
|
|
12
|
+
var dataSource = _ref.dataSource,
|
|
13
|
+
withSearch = _ref.withSearch,
|
|
14
|
+
texts = _ref.texts,
|
|
15
|
+
children = _ref.children,
|
|
16
|
+
_ref$trigger = _ref.trigger,
|
|
17
|
+
trigger = _ref$trigger === void 0 ? 'click' : _ref$trigger,
|
|
18
|
+
_ref$placement = _ref.placement,
|
|
19
|
+
placement = _ref$placement === void 0 ? 'bottomLeft' : _ref$placement,
|
|
20
|
+
_ref$maxVisibleItems = _ref.maxVisibleItems,
|
|
21
|
+
maxVisibleItems = _ref$maxVisibleItems === void 0 ? MAX_VISIBLE_ITEMS : _ref$maxVisibleItems,
|
|
22
|
+
_ref$size = _ref.size,
|
|
23
|
+
size = _ref$size === void 0 ? 'auto' : _ref$size,
|
|
24
|
+
open = _ref.open,
|
|
25
|
+
onOpenChange = _ref.onOpenChange,
|
|
26
|
+
onDismiss = _ref.onDismiss,
|
|
27
|
+
onSearchQueryChange = _ref.onSearchQueryChange,
|
|
28
|
+
getPopupContainer = _ref.getPopupContainer,
|
|
29
|
+
virtualised = _ref.virtualised,
|
|
30
|
+
disabled = _ref.disabled,
|
|
31
|
+
asChild = _ref.asChild,
|
|
32
|
+
_ref$hideOnItemClick = _ref.hideOnItemClick,
|
|
33
|
+
hideOnItemClick = _ref$hideOnItemClick === void 0 ? true : _ref$hideOnItemClick,
|
|
34
|
+
_ref$itemMatchesSearc = _ref.itemMatchesSearchQuery,
|
|
35
|
+
itemMatchesSearchQuery = _ref$itemMatchesSearc === void 0 ? DEFAULT_MATCHING_FUNCTION : _ref$itemMatchesSearc,
|
|
36
|
+
footer = _ref.footer,
|
|
37
|
+
overlayStyle = _ref.overlayStyle,
|
|
38
|
+
overlayClassName = _ref.overlayClassName,
|
|
39
|
+
overlayHTMLAttributes = _ref.overlayHTMLAttributes,
|
|
40
|
+
popoverProps = _ref.popoverProps,
|
|
41
|
+
popoverTriggerProps = _ref.popoverTriggerProps;
|
|
42
|
+
var _useState = useState(null),
|
|
43
|
+
activeIndex = _useState[0],
|
|
44
|
+
setActiveIndex = _useState[1];
|
|
45
|
+
var _useState2 = useState(''),
|
|
46
|
+
searchQuery = _useState2[0],
|
|
47
|
+
setSearchQuery = _useState2[1];
|
|
48
|
+
var _useState3 = useState(open),
|
|
49
|
+
isOpen = _useState3[0],
|
|
50
|
+
setIsOpen = _useState3[1];
|
|
51
|
+
var allTexts = useDefaultTexts(texts);
|
|
52
|
+
var theme = useTheme();
|
|
53
|
+
var toggleOpen = useCallback(function (openState) {
|
|
54
|
+
onOpenChange == null || onOpenChange(openState);
|
|
55
|
+
setIsOpen(openState);
|
|
56
|
+
}, [onOpenChange]);
|
|
57
|
+
useEffect(function () {
|
|
58
|
+
if (open !== undefined) {
|
|
59
|
+
setIsOpen(open);
|
|
60
|
+
}
|
|
61
|
+
}, [open, toggleOpen]);
|
|
62
|
+
var handleSearchChange = useCallback(function (query) {
|
|
63
|
+
onSearchQueryChange == null || onSearchQueryChange(query);
|
|
64
|
+
setSearchQuery(query);
|
|
65
|
+
}, [onSearchQueryChange]);
|
|
66
|
+
var filteredItems = useMemo(function () {
|
|
67
|
+
return searchQuery ? dataSource.filter(function (item) {
|
|
68
|
+
return itemMatchesSearchQuery(item, searchQuery);
|
|
69
|
+
}).map(function (item) {
|
|
70
|
+
var props = _extends({}, item, {
|
|
71
|
+
highlight: searchQuery
|
|
72
|
+
});
|
|
73
|
+
return props;
|
|
74
|
+
}) : dataSource;
|
|
75
|
+
}, [dataSource, itemMatchesSearchQuery, searchQuery]);
|
|
76
|
+
var handleSearchFocus = useCallback(function (ref) {
|
|
77
|
+
setTimeout(function () {
|
|
78
|
+
var _ref$current;
|
|
79
|
+
activeIndex != null ? activeIndex : ref == null || (_ref$current = ref.current) == null ? void 0 : _ref$current.focus();
|
|
80
|
+
}, 10);
|
|
81
|
+
}, [activeIndex]);
|
|
82
|
+
var overlay = useMemo(function () {
|
|
83
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, withSearch && /*#__PURE__*/React.createElement(SearchBar, {
|
|
84
|
+
placeholder: allTexts.searchPlaceholder,
|
|
85
|
+
value: searchQuery,
|
|
86
|
+
handleInputRef: handleSearchFocus,
|
|
87
|
+
onSearchChange: handleSearchChange,
|
|
88
|
+
iconLeft: /*#__PURE__*/React.createElement(Icon, {
|
|
89
|
+
component: /*#__PURE__*/React.createElement(SearchM, null),
|
|
90
|
+
color: theme.palette['grey-600']
|
|
91
|
+
}),
|
|
92
|
+
onClearInput: function onClearInput() {
|
|
93
|
+
return setSearchQuery('');
|
|
94
|
+
},
|
|
95
|
+
clearTooltip: allTexts.searchClearTooltip
|
|
96
|
+
}), /*#__PURE__*/React.createElement(DropdownMenuList, {
|
|
97
|
+
maxVisibleItems: maxVisibleItems,
|
|
98
|
+
hideOnItemClick: hideOnItemClick,
|
|
99
|
+
dataSource: filteredItems,
|
|
100
|
+
closeOverlay: function closeOverlay() {
|
|
101
|
+
return toggleOpen(false);
|
|
102
|
+
},
|
|
103
|
+
texts: allTexts,
|
|
104
|
+
virtualised: virtualised
|
|
105
|
+
}), footer && /*#__PURE__*/React.createElement(DropdownFooter, {
|
|
106
|
+
footer: footer
|
|
107
|
+
}));
|
|
108
|
+
}, [withSearch, allTexts, searchQuery, handleSearchFocus, handleSearchChange, theme.palette, maxVisibleItems, hideOnItemClick, filteredItems, virtualised, footer, toggleOpen]);
|
|
109
|
+
return disabled || dataSource.length === 0 ? /*#__PURE__*/React.createElement(React.Fragment, null, children) : /*#__PURE__*/React.createElement(DropdownPopover, {
|
|
110
|
+
getPopupContainer: getPopupContainer,
|
|
111
|
+
overlayHTMLAttributes: overlayHTMLAttributes,
|
|
112
|
+
overlayStyle: overlayStyle,
|
|
113
|
+
overlayClassName: overlayClassName,
|
|
114
|
+
trigger: trigger,
|
|
115
|
+
open: isOpen,
|
|
116
|
+
size: size,
|
|
117
|
+
placement: placement,
|
|
118
|
+
asChild: asChild,
|
|
119
|
+
onDismiss: onDismiss,
|
|
120
|
+
overlay: overlay,
|
|
121
|
+
handleOpenChange: toggleOpen,
|
|
122
|
+
handleTriggerClick: function handleTriggerClick() {
|
|
123
|
+
toggleOpen(!isOpen);
|
|
124
|
+
},
|
|
125
|
+
activeIndex: activeIndex,
|
|
126
|
+
setActiveIndex: setActiveIndex,
|
|
127
|
+
popoverProps: _extends({}, popoverProps, {
|
|
128
|
+
componentId: 'dropdown-menu'
|
|
129
|
+
}),
|
|
130
|
+
popoverTriggerProps: popoverTriggerProps
|
|
131
|
+
}, children);
|
|
132
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { ListItemProps } from '@synerise/ds-list-item';
|
|
3
|
+
import { type DropdownSharedProps } from '../../Dropdown.types';
|
|
4
|
+
export type DropdownMenuTexts = {
|
|
5
|
+
searchPlaceholder: string;
|
|
6
|
+
noSearchResults: ReactNode;
|
|
7
|
+
searchClearTooltip: ReactNode;
|
|
8
|
+
};
|
|
9
|
+
export type DropdownMenuProps<ItemType extends ListItemProps> = Omit<DropdownSharedProps, 'overlay' | 'dropdownRender' | 'defaultOpen' | 'align' | 'hideOnItemClick'> & {
|
|
10
|
+
dataSource: ItemType[];
|
|
11
|
+
hideOnItemClick?: boolean;
|
|
12
|
+
virtualised?: boolean;
|
|
13
|
+
withSearch?: boolean;
|
|
14
|
+
maxVisibleItems?: number;
|
|
15
|
+
texts?: Partial<DropdownMenuTexts>;
|
|
16
|
+
itemMatchesSearchQuery?: (item: ItemType, query: string) => boolean;
|
|
17
|
+
onSearchQueryChange?: (query: string) => void;
|
|
18
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type ListItemProps } from '@synerise/ds-list-item';
|
|
3
|
+
import { type DropdownMenuListProps } from './DropdownMenuList.types';
|
|
4
|
+
export declare const DropdownMenuList: <ItemType extends ListItemProps>({ dataSource, maxVisibleItems, hideOnItemClick, virtualised, closeOverlay, texts, }: DropdownMenuListProps<ItemType>) => React.JSX.Element;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
import React, { useCallback, useMemo } from 'react';
|
|
3
|
+
import { VariableSizeList } from 'react-window';
|
|
4
|
+
import { SearchNoResultsL } from '@synerise/ds-icon';
|
|
5
|
+
import { LIST_ITEM_SIZE_MAPPING } from '@synerise/ds-list-item';
|
|
6
|
+
import Scrollbar from '@synerise/ds-scrollbar';
|
|
7
|
+
import { MAX_VISIBLE_ITEMS, SCROLLBAR_OFFSET } from '../../Dropdown.const';
|
|
8
|
+
import * as S from './DropdownMenuList.styles';
|
|
9
|
+
export var DropdownMenuList = function DropdownMenuList(_ref) {
|
|
10
|
+
var dataSource = _ref.dataSource,
|
|
11
|
+
_ref$maxVisibleItems = _ref.maxVisibleItems,
|
|
12
|
+
maxVisibleItems = _ref$maxVisibleItems === void 0 ? MAX_VISIBLE_ITEMS : _ref$maxVisibleItems,
|
|
13
|
+
hideOnItemClick = _ref.hideOnItemClick,
|
|
14
|
+
virtualised = _ref.virtualised,
|
|
15
|
+
closeOverlay = _ref.closeOverlay,
|
|
16
|
+
texts = _ref.texts;
|
|
17
|
+
var getItemSize = useCallback(function (index) {
|
|
18
|
+
return dataSource[index].type === 'divider' ? 17 : LIST_ITEM_SIZE_MAPPING[dataSource[index].size || 'default'];
|
|
19
|
+
}, [dataSource]);
|
|
20
|
+
var handleItemClick = useCallback(function () {
|
|
21
|
+
if (hideOnItemClick) {
|
|
22
|
+
setTimeout(function () {
|
|
23
|
+
closeOverlay();
|
|
24
|
+
}, 10);
|
|
25
|
+
}
|
|
26
|
+
}, [hideOnItemClick, closeOverlay]);
|
|
27
|
+
var _useMemo = useMemo(function () {
|
|
28
|
+
var height = 0;
|
|
29
|
+
var maxHeight = 0;
|
|
30
|
+
var visibleItems = 0;
|
|
31
|
+
dataSource.forEach(function (item, index) {
|
|
32
|
+
var itemHeight = getItemSize(index);
|
|
33
|
+
height += itemHeight;
|
|
34
|
+
if (visibleItems < maxVisibleItems) {
|
|
35
|
+
maxHeight += itemHeight;
|
|
36
|
+
}
|
|
37
|
+
if (item.type !== 'divider') {
|
|
38
|
+
visibleItems += 1;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return {
|
|
42
|
+
listHeight: height,
|
|
43
|
+
listMaxHeight: maxHeight
|
|
44
|
+
};
|
|
45
|
+
}, [dataSource, getItemSize, maxVisibleItems]),
|
|
46
|
+
listHeight = _useMemo.listHeight,
|
|
47
|
+
listMaxHeight = _useMemo.listMaxHeight;
|
|
48
|
+
return /*#__PURE__*/React.createElement(S.ScrollableMenuWrapper, null, dataSource.length ? /*#__PURE__*/React.createElement(Scrollbar, {
|
|
49
|
+
absolute: true,
|
|
50
|
+
maxHeight: listMaxHeight + SCROLLBAR_OFFSET
|
|
51
|
+
}, /*#__PURE__*/React.createElement(S.DropdownMenuList, null, virtualised ? /*#__PURE__*/React.createElement(VariableSizeList, {
|
|
52
|
+
height: listHeight,
|
|
53
|
+
itemData: dataSource,
|
|
54
|
+
itemCount: dataSource.length,
|
|
55
|
+
itemSize: getItemSize,
|
|
56
|
+
width: "100%",
|
|
57
|
+
style: {
|
|
58
|
+
paddingRight: '8px'
|
|
59
|
+
}
|
|
60
|
+
}, function (listItemData) {
|
|
61
|
+
var data = listItemData.data,
|
|
62
|
+
index = listItemData.index;
|
|
63
|
+
var item = data[index];
|
|
64
|
+
return item.type === 'divider' ? /*#__PURE__*/React.createElement(S.DropdownMenuListItem, item) : /*#__PURE__*/React.createElement(S.DropdownMenuListItem, _extends({}, item, {
|
|
65
|
+
itemKey: item.key,
|
|
66
|
+
onClick: function onClick(itemData) {
|
|
67
|
+
item.onClick == null || item.onClick(itemData);
|
|
68
|
+
handleItemClick();
|
|
69
|
+
}
|
|
70
|
+
}));
|
|
71
|
+
}) : /*#__PURE__*/React.createElement(React.Fragment, null, dataSource.map(function (item) {
|
|
72
|
+
return item.type === 'divider' ? /*#__PURE__*/React.createElement(S.DropdownMenuListItem, item) : /*#__PURE__*/React.createElement(S.DropdownMenuListItem, _extends({}, item, {
|
|
73
|
+
itemKey: item.key,
|
|
74
|
+
onClick: function onClick(itemData) {
|
|
75
|
+
item.onClick == null || item.onClick(itemData);
|
|
76
|
+
handleItemClick();
|
|
77
|
+
}
|
|
78
|
+
}));
|
|
79
|
+
})))) : /*#__PURE__*/React.createElement(S.EmptyStates, {
|
|
80
|
+
iconPosition: "top",
|
|
81
|
+
customIcon: /*#__PURE__*/React.createElement(SearchNoResultsL, null),
|
|
82
|
+
label: texts.noSearchResults
|
|
83
|
+
}));
|
|
84
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare const ScrollableMenuWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
2
|
+
export declare const MenuWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
|
+
export declare const EmptyStates: import("styled-components").StyledComponent<({ size, label, text, button, fontSize, customIcon, className, mode, iconPosition, textAlign, }: import("@synerise/ds-empty-states").EmptyStatesProps) => React.JSX.Element, any, {}, never>;
|
|
4
|
+
export declare const DropdownMenuListItem: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("@synerise/ds-list-item/dist/ListItem.types").ListItemDividerProps & {
|
|
5
|
+
checked?: boolean;
|
|
6
|
+
selected?: boolean;
|
|
7
|
+
children?: React.ReactNode;
|
|
8
|
+
className?: string;
|
|
9
|
+
copyable?: boolean | import("@synerise/ds-list-item/dist/ListItem.types").Copyable;
|
|
10
|
+
copyValue?: string;
|
|
11
|
+
copyHint?: React.ReactNode;
|
|
12
|
+
copyTooltip?: React.ReactNode;
|
|
13
|
+
timeToHideTooltip?: number;
|
|
14
|
+
tooltipProps?: import("@synerise/ds-tooltip").TooltipProps;
|
|
15
|
+
description?: React.ReactNode;
|
|
16
|
+
direction?: "ltr" | "rtl";
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
highlight?: string;
|
|
19
|
+
hoverTooltipProps?: Pick<import("rc-trigger").TriggerProps, "onPopupVisibleChange" | "onPopupClick" | "mouseEnterDelay" | "mouseLeaveDelay" | "defaultPopupVisible" | "action" | "afterPopupVisibleChange" | "popupPlacement" | "getPopupContainer" | "forceRender"> & {
|
|
20
|
+
ref?: React.LegacyRef<import("@synerise/ds-list-item/dist/ListItem.types").TriggerHandle>;
|
|
21
|
+
};
|
|
22
|
+
key?: React.Key;
|
|
23
|
+
itemKey?: React.Key;
|
|
24
|
+
noHover?: boolean;
|
|
25
|
+
onItemHover?: import("@synerise/ds-list-item").ListItemEventHandler<import("react").MouseEvent<HTMLDivElement>>;
|
|
26
|
+
onClick?: import("@synerise/ds-list-item").ListItemEventHandler<import("react").MouseEvent<HTMLDivElement> | import("react").KeyboardEvent<HTMLDivElement>>;
|
|
27
|
+
ordered?: boolean;
|
|
28
|
+
parent?: boolean;
|
|
29
|
+
prefixel?: React.ReactNode | import("@synerise/ds-list-item/dist/ListItem.types").AddonRenderer;
|
|
30
|
+
prefixVisibilityTrigger?: "hover" | "default";
|
|
31
|
+
renderHoverTooltip?: () => JSX.Element;
|
|
32
|
+
size?: import("@synerise/ds-list-item").ItemSize;
|
|
33
|
+
suffixel?: React.ReactNode | import("@synerise/ds-list-item/dist/ListItem.types").AddonRenderer;
|
|
34
|
+
suffixVisibilityTrigger?: "hover" | "default";
|
|
35
|
+
text?: React.ReactNode;
|
|
36
|
+
type?: import("@synerise/ds-list-item").ItemType;
|
|
37
|
+
subMenu?: import("@synerise/ds-list-item").ListItemProps[];
|
|
38
|
+
indentLevel?: number;
|
|
39
|
+
} & Omit<import("react").HTMLAttributes<HTMLDivElement>, "className" | "children" | "onClick" | "disabled" | "size" | keyof import("@synerise/ds-list-item/dist/ListItem.types").ListItemDividerProps | "checked" | "selected" | "copyable" | "copyValue" | "copyHint" | "copyTooltip" | "timeToHideTooltip" | "tooltipProps" | "description" | "direction" | "highlight" | "hoverTooltipProps" | "key" | "itemKey" | "noHover" | "onItemHover" | "ordered" | "parent" | "prefixel" | "prefixVisibilityTrigger" | "renderHoverTooltip" | "suffixel" | "suffixVisibilityTrigger" | "text" | "type" | "subMenu" | "indentLevel"> & import("@synerise/ds-utils").DataAttributes & import("react").RefAttributes<HTMLDivElement>>, any, {}, never>;
|
|
40
|
+
export declare const DropdownMenuList: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import styled from 'styled-components';
|
|
2
|
+
import EmptyStatesBase from '@synerise/ds-empty-states';
|
|
3
|
+
import ListItemBase from '@synerise/ds-list-item';
|
|
4
|
+
export var ScrollableMenuWrapper = styled.div.withConfig({
|
|
5
|
+
displayName: "DropdownMenuListstyles__ScrollableMenuWrapper",
|
|
6
|
+
componentId: "sc-1lf08nj-0"
|
|
7
|
+
})(["padding:8px 0 8px 8px;"]);
|
|
8
|
+
export var MenuWrapper = styled.div.withConfig({
|
|
9
|
+
displayName: "DropdownMenuListstyles__MenuWrapper",
|
|
10
|
+
componentId: "sc-1lf08nj-1"
|
|
11
|
+
})(["padding:8px;"]);
|
|
12
|
+
export var EmptyStates = styled(EmptyStatesBase).withConfig({
|
|
13
|
+
displayName: "DropdownMenuListstyles__EmptyStates",
|
|
14
|
+
componentId: "sc-1lf08nj-2"
|
|
15
|
+
})(["margin:48px 0;"]);
|
|
16
|
+
export var DropdownMenuListItem = styled(ListItemBase).withConfig({
|
|
17
|
+
displayName: "DropdownMenuListstyles__DropdownMenuListItem",
|
|
18
|
+
componentId: "sc-1lf08nj-3"
|
|
19
|
+
})(["min-width:0;"]);
|
|
20
|
+
export var DropdownMenuList = styled.div.withConfig({
|
|
21
|
+
displayName: "DropdownMenuListstyles__DropdownMenuList",
|
|
22
|
+
componentId: "sc-1lf08nj-4"
|
|
23
|
+
})(["padding-right:8px;"]);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ListItemProps } from '@synerise/ds-list-item';
|
|
2
|
+
import { type DropdownMenuProps, type DropdownMenuTexts } from '../DropdownMenu/DropdownMenu.types';
|
|
3
|
+
export type DropdownMenuListItemProps = ListItemProps;
|
|
4
|
+
export type DropdownMenuListProps<ItemType extends DropdownMenuListItemProps> = Pick<DropdownMenuProps<ItemType>, 'dataSource' | 'hideOnItemClick' | 'virtualised' | 'maxVisibleItems'> & {
|
|
5
|
+
closeOverlay: () => void;
|
|
6
|
+
texts: DropdownMenuTexts;
|
|
7
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const DropdownOverlay: React.ForwardRefExoticComponent<Pick<import("../..").DropdownProps, "overlayStyle" | "overlayClassName" | "size" | "hideOnItemClick"> & {
|
|
3
|
+
content: React.ReactNode;
|
|
4
|
+
triggerRef: React.RefObject<HTMLElement>;
|
|
5
|
+
htmlAttributes?: React.HTMLAttributes<HTMLDivElement>;
|
|
6
|
+
handleItemClick?: () => void;
|
|
7
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
import classnames from 'classnames';
|
|
3
|
+
import React, { forwardRef, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { useMergeRefs } from '@floating-ui/react';
|
|
5
|
+
import { getDropdownWidth } from '../../utils';
|
|
6
|
+
import { OverlayWrapper } from './DropdownOverlay.styles';
|
|
7
|
+
export var DropdownOverlay = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
8
|
+
var _getDropdownWidth;
|
|
9
|
+
var content = _ref.content,
|
|
10
|
+
size = _ref.size,
|
|
11
|
+
overlayStyle = _ref.overlayStyle,
|
|
12
|
+
overlayClassName = _ref.overlayClassName,
|
|
13
|
+
htmlAttributes = _ref.htmlAttributes,
|
|
14
|
+
hideOnItemClick = _ref.hideOnItemClick,
|
|
15
|
+
handleItemClick = _ref.handleItemClick,
|
|
16
|
+
triggerRef = _ref.triggerRef;
|
|
17
|
+
var overlayWrapperRef = useRef(null);
|
|
18
|
+
var mergedRef = useMergeRefs([overlayWrapperRef, ref]);
|
|
19
|
+
var _useState = useState((_getDropdownWidth = getDropdownWidth(size)) != null ? _getDropdownWidth : 0),
|
|
20
|
+
overlaySize = _useState[0],
|
|
21
|
+
setOverlaySize = _useState[1];
|
|
22
|
+
useEffect(function () {
|
|
23
|
+
if (triggerRef.current && (size === 'match-trigger' || size === 'min-match-trigger')) {
|
|
24
|
+
setOverlaySize(triggerRef.current.clientWidth);
|
|
25
|
+
} else {
|
|
26
|
+
var _getDropdownWidth2;
|
|
27
|
+
setOverlaySize((_getDropdownWidth2 = getDropdownWidth(size)) != null ? _getDropdownWidth2 : 0);
|
|
28
|
+
}
|
|
29
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
30
|
+
}, [size]);
|
|
31
|
+
useEffect(function () {
|
|
32
|
+
var handleItemSelect = function handleItemSelect(element) {
|
|
33
|
+
var _overlayWrapperRef$cu;
|
|
34
|
+
var itemSelector = typeof hideOnItemClick === 'string' ? hideOnItemClick : '[role="menuitem"]';
|
|
35
|
+
var listItem = element.closest(itemSelector);
|
|
36
|
+
if ((_overlayWrapperRef$cu = overlayWrapperRef.current) != null && _overlayWrapperRef$cu.contains(listItem)) {
|
|
37
|
+
setTimeout(function () {
|
|
38
|
+
handleItemClick == null || handleItemClick();
|
|
39
|
+
}, 0);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
var handleOverlayClick = function handleOverlayClick(event) {
|
|
43
|
+
if (overlayWrapperRef.current && typeof hideOnItemClick === 'string' && event.target instanceof HTMLElement) {
|
|
44
|
+
handleItemSelect(event.target);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
var handleItemEnterPress = function handleItemEnterPress(event) {
|
|
48
|
+
if (event.key === 'Enter') {
|
|
49
|
+
if (overlayWrapperRef.current && typeof hideOnItemClick === 'string' && event.target instanceof HTMLElement) {
|
|
50
|
+
handleItemSelect(event.target);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
var overlayNode = overlayWrapperRef.current;
|
|
55
|
+
if (overlayNode) {
|
|
56
|
+
overlayNode.addEventListener('click', handleOverlayClick);
|
|
57
|
+
overlayNode.addEventListener('keydown', handleItemEnterPress);
|
|
58
|
+
}
|
|
59
|
+
return function () {
|
|
60
|
+
if (overlayNode) {
|
|
61
|
+
overlayNode.removeEventListener('click', handleOverlayClick);
|
|
62
|
+
overlayNode.removeEventListener('keydown', handleItemEnterPress);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
return /*#__PURE__*/React.createElement(OverlayWrapper, _extends({
|
|
67
|
+
style: overlayStyle,
|
|
68
|
+
className: classnames(overlayClassName, htmlAttributes == null ? void 0 : htmlAttributes.className),
|
|
69
|
+
$width: overlaySize,
|
|
70
|
+
widthProperty: size === 'min-match-trigger' ? 'min-width' : 'width',
|
|
71
|
+
ref: mergedRef
|
|
72
|
+
}, htmlAttributes), content);
|
|
73
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import styled from 'styled-components';
|
|
2
|
+
import { Wrapper as ListItemWrapper } from '@synerise/ds-list-item/dist/components/Text/Text.styles';
|
|
3
|
+
export var OverlayWrapper = styled.div.withConfig({
|
|
4
|
+
displayName: "DropdownOverlaystyles__OverlayWrapper",
|
|
5
|
+
componentId: "sc-hy0f4i-0"
|
|
6
|
+
})(["background:", ";box-shadow:", ";border-radius:3px;", ";overflow:hidden;", "{min-width:0;}"], function (props) {
|
|
7
|
+
return props.theme.palette.white;
|
|
8
|
+
}, function (props) {
|
|
9
|
+
return props.theme.variables['box-shadow-2'];
|
|
10
|
+
}, function (props) {
|
|
11
|
+
return props.$width && props.widthProperty + ": " + props.$width + "px";
|
|
12
|
+
}, ListItemWrapper);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode, type RefObject } from 'react';
|
|
2
|
+
import { type DropdownProps } from '../../Dropdown.types';
|
|
3
|
+
export type DropdownOverlayProps = Pick<DropdownProps, 'size' | 'overlayStyle' | 'hideOnItemClick' | 'overlayClassName'> & {
|
|
4
|
+
content: ReactNode;
|
|
5
|
+
triggerRef: RefObject<HTMLElement>;
|
|
6
|
+
htmlAttributes?: HTMLAttributes<HTMLDivElement>;
|
|
7
|
+
handleItemClick?: () => void;
|
|
8
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type DropdownPopoverProps } from './DropdownPopover.types';
|
|
3
|
+
export declare const DropdownPopover: ({ placement, children, popoverProps, popoverTriggerProps, getPopupContainer, trigger, open, onDismiss, overlay, handleOpenChange, size, handleItemClick, handleTriggerClick, hideOnItemClick, asChild, overlayStyle, overlayClassName, overlayHTMLAttributes, activeIndex, setActiveIndex, }: DropdownPopoverProps) => React.JSX.Element;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
import React, { useRef } from 'react';
|
|
3
|
+
import { FloatingList } from '@floating-ui/react';
|
|
4
|
+
import { DropdownContextProvider } from '@synerise/ds-core';
|
|
5
|
+
import { Popover, PopoverContent, PopoverTrigger } from '@synerise/ds-popover';
|
|
6
|
+
import { POPOVER_FLIP_CONFIG, POPOVER_OFFSET_CONFIG, POPOVER_SHIFT_CONFIG, POPOVER_TRANSITION_DURATION } from '../../Dropdown.const';
|
|
7
|
+
import { getPlacement, getTransitionConfig } from '../../utils';
|
|
8
|
+
import { DropdownOverlay } from '../DropdownOverlay/DropdownOverlay';
|
|
9
|
+
export var DropdownPopover = function DropdownPopover(_ref) {
|
|
10
|
+
var _ref$placement = _ref.placement,
|
|
11
|
+
placement = _ref$placement === void 0 ? 'bottomLeft' : _ref$placement,
|
|
12
|
+
children = _ref.children,
|
|
13
|
+
popoverProps = _ref.popoverProps,
|
|
14
|
+
popoverTriggerProps = _ref.popoverTriggerProps,
|
|
15
|
+
getPopupContainer = _ref.getPopupContainer,
|
|
16
|
+
trigger = _ref.trigger,
|
|
17
|
+
open = _ref.open,
|
|
18
|
+
onDismiss = _ref.onDismiss,
|
|
19
|
+
overlay = _ref.overlay,
|
|
20
|
+
handleOpenChange = _ref.handleOpenChange,
|
|
21
|
+
size = _ref.size,
|
|
22
|
+
handleItemClick = _ref.handleItemClick,
|
|
23
|
+
handleTriggerClick = _ref.handleTriggerClick,
|
|
24
|
+
hideOnItemClick = _ref.hideOnItemClick,
|
|
25
|
+
asChild = _ref.asChild,
|
|
26
|
+
overlayStyle = _ref.overlayStyle,
|
|
27
|
+
overlayClassName = _ref.overlayClassName,
|
|
28
|
+
overlayHTMLAttributes = _ref.overlayHTMLAttributes,
|
|
29
|
+
activeIndex = _ref.activeIndex,
|
|
30
|
+
setActiveIndex = _ref.setActiveIndex;
|
|
31
|
+
var floatingPlacement = getPlacement(placement);
|
|
32
|
+
var triggerRef = useRef(null);
|
|
33
|
+
var elementsRef = useRef([]);
|
|
34
|
+
var listNavigationConfig = {
|
|
35
|
+
enabled: true,
|
|
36
|
+
activeIndex: activeIndex,
|
|
37
|
+
onNavigate: function onNavigate(newIndex) {
|
|
38
|
+
setActiveIndex(newIndex);
|
|
39
|
+
},
|
|
40
|
+
listRef: elementsRef
|
|
41
|
+
};
|
|
42
|
+
return /*#__PURE__*/React.createElement(Popover, _extends({
|
|
43
|
+
placement: floatingPlacement,
|
|
44
|
+
trigger: trigger,
|
|
45
|
+
modal: false,
|
|
46
|
+
open: open,
|
|
47
|
+
onOpenChange: handleOpenChange,
|
|
48
|
+
onDismiss: onDismiss,
|
|
49
|
+
transitionDuration: POPOVER_TRANSITION_DURATION,
|
|
50
|
+
autoUpdate: true,
|
|
51
|
+
offsetConfig: POPOVER_OFFSET_CONFIG,
|
|
52
|
+
flipConfig: POPOVER_FLIP_CONFIG,
|
|
53
|
+
shiftConfig: POPOVER_SHIFT_CONFIG,
|
|
54
|
+
getTransitionConfig: getTransitionConfig,
|
|
55
|
+
getPopupContainer: getPopupContainer,
|
|
56
|
+
listNavigationConfig: listNavigationConfig,
|
|
57
|
+
testId: "dropdown"
|
|
58
|
+
}, popoverProps), /*#__PURE__*/React.createElement(PopoverTrigger, _extends({
|
|
59
|
+
ref: triggerRef,
|
|
60
|
+
asChild: asChild,
|
|
61
|
+
onClick: handleTriggerClick
|
|
62
|
+
}, popoverTriggerProps), children), /*#__PURE__*/React.createElement(PopoverContent, null, /*#__PURE__*/React.createElement(DropdownContextProvider, {
|
|
63
|
+
hideOnItemClick: hideOnItemClick,
|
|
64
|
+
activeIndex: activeIndex,
|
|
65
|
+
setIsOpen: handleOpenChange,
|
|
66
|
+
isOpen: !!open
|
|
67
|
+
}, /*#__PURE__*/React.createElement(FloatingList, {
|
|
68
|
+
elementsRef: elementsRef
|
|
69
|
+
}, /*#__PURE__*/React.createElement(DropdownOverlay, {
|
|
70
|
+
size: size,
|
|
71
|
+
triggerRef: triggerRef,
|
|
72
|
+
htmlAttributes: overlayHTMLAttributes,
|
|
73
|
+
overlayStyle: overlayStyle,
|
|
74
|
+
overlayClassName: overlayClassName,
|
|
75
|
+
hideOnItemClick: hideOnItemClick,
|
|
76
|
+
content: overlay,
|
|
77
|
+
handleItemClick: handleItemClick
|
|
78
|
+
})))));
|
|
79
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type DropdownProps } from '../../Dropdown.types';
|
|
2
|
+
export type DropdownPopoverProps = Pick<DropdownProps, 'asChild' | 'children' | 'onDismiss' | 'onOpenChange' | 'getPopupContainer' | 'placement' | 'popoverProps' | 'popoverTriggerProps' | 'overlay' | 'overlayClassName' | 'overlayHTMLAttributes' | 'overlayStyle' | 'open' | 'hideOnItemClick' | 'size' | 'trigger'> & {
|
|
3
|
+
handleOpenChange: (newVal: boolean) => void;
|
|
4
|
+
handleItemClick?: () => void;
|
|
5
|
+
handleTriggerClick: () => void;
|
|
6
|
+
setActiveIndex: (index: number | null) => void;
|
|
7
|
+
activeIndex: number | null;
|
|
8
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import {
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { useTheme } from '@synerise/ds-core';
|
|
3
3
|
import Icon, { AngleDownS } from '@synerise/ds-icon';
|
|
4
4
|
import { Title } from '@synerise/ds-typography';
|
|
5
5
|
import * as S from './TextTrigger.styles';
|
|
6
|
-
var TextTrigger = function
|
|
6
|
+
export var TextTrigger = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
7
7
|
var value = _ref.value,
|
|
8
8
|
expanded = _ref.expanded,
|
|
9
9
|
size = _ref.size,
|
|
@@ -13,10 +13,12 @@ var TextTrigger = function TextTrigger(_ref) {
|
|
|
13
13
|
onFocus = _ref.onFocus,
|
|
14
14
|
_ref$isDisabled = _ref.isDisabled,
|
|
15
15
|
isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled;
|
|
16
|
+
var theme = useTheme();
|
|
16
17
|
return /*#__PURE__*/React.createElement(S.TextTrigger, {
|
|
17
18
|
onFocus: isDisabled ? undefined : onFocus,
|
|
18
19
|
inactiveColor: theme.palette[inactiveColor],
|
|
19
20
|
tabIndex: 0,
|
|
21
|
+
ref: ref,
|
|
20
22
|
onClick: isDisabled ? undefined : onClick,
|
|
21
23
|
isDisabled: isDisabled
|
|
22
24
|
}, /*#__PURE__*/React.createElement(Title, {
|
|
@@ -26,5 +28,4 @@ var TextTrigger = function TextTrigger(_ref) {
|
|
|
26
28
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
27
29
|
component: /*#__PURE__*/React.createElement(AngleDownS, null)
|
|
28
30
|
})));
|
|
29
|
-
};
|
|
30
|
-
export default TextTrigger;
|
|
31
|
+
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import styled from 'styled-components';
|
|
2
2
|
export var TextTrigger = styled.div.withConfig({
|
|
3
3
|
displayName: "TextTriggerstyles__TextTrigger",
|
|
4
|
-
componentId: "sc-
|
|
4
|
+
componentId: "sc-xuqby2-0"
|
|
5
5
|
})(["display:flex;flex-direction:row;align-items:center;justify-content:center;cursor:", ";opacity:", ";.ds-title{margin:0;}.ds-title,svg{color:", ";fill:", ";}&&&:focus{.ds-title,svg{color:", ";fill:", ";}}}&:hover{.ds-title,svg{color:", ";fill:", ";}}"], function (props) {
|
|
6
6
|
return props.isDisabled ? 'default' : 'pointer';
|
|
7
7
|
}, function (props) {
|
|
@@ -21,7 +21,7 @@ export var TextTrigger = styled.div.withConfig({
|
|
|
21
21
|
});
|
|
22
22
|
export var IconWrapper = styled.div.withConfig({
|
|
23
23
|
displayName: "TextTriggerstyles__IconWrapper",
|
|
24
|
-
componentId: "sc-
|
|
24
|
+
componentId: "sc-xuqby2-1"
|
|
25
25
|
})(["&&&{svg{transition:transform 0.1s linear;transform:rotateZ( ", " );}}"], function (props) {
|
|
26
26
|
return props.expanded ? '180deg' : '0deg';
|
|
27
27
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { FormattedMessage, useIntl } from 'react-intl';
|
|
4
|
+
export var useDefaultTexts = function useDefaultTexts(customTexts) {
|
|
5
|
+
var _useIntl = useIntl(),
|
|
6
|
+
formatMessage = _useIntl.formatMessage;
|
|
7
|
+
return _extends({
|
|
8
|
+
noSearchResults: /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
9
|
+
id: "DS.DROPDOWN-MENU.NO-SEARCH-RESULTS",
|
|
10
|
+
defaultMessage: "No results"
|
|
11
|
+
}),
|
|
12
|
+
searchClearTooltip: /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
13
|
+
id: "DS.CONFIRMATION.SEARCH-CLEAR-TOOLTIP",
|
|
14
|
+
defaultMessage: "Clear"
|
|
15
|
+
}),
|
|
16
|
+
searchPlaceholder: formatMessage({
|
|
17
|
+
id: 'DS.DROPDOWN-MENU.SEARCH-PLACEHOLDER',
|
|
18
|
+
defaultMessage: 'Search'
|
|
19
|
+
})
|
|
20
|
+
}, customTexts || {});
|
|
21
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type UseDropdownVisibilityProps = {
|
|
2
|
+
open?: boolean;
|
|
3
|
+
defaultOpen?: boolean;
|
|
4
|
+
onOpenChange?: (newState: boolean) => void;
|
|
5
|
+
};
|
|
6
|
+
export declare const useDropdownVisibility: ({ open, onOpenChange, }: UseDropdownVisibilityProps) => {
|
|
7
|
+
toggleOpen: (openState: boolean) => void;
|
|
8
|
+
open: boolean | undefined;
|
|
9
|
+
};
|
|
10
|
+
export {};
|