@sproutsocial/seeds-react-menu 1.8.5 → 1.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +11 -11
- package/CHANGELOG.md +64 -0
- package/dist/esm/v2/index.js +61 -8
- package/dist/esm/v2/index.js.map +1 -1
- package/dist/v2/index.d.mts +15 -4
- package/dist/v2/index.d.ts +15 -4
- package/dist/v2/index.js +60 -7
- package/dist/v2/index.js.map +1 -1
- package/package.json +13 -13
- package/src/v2/Autocomplete/Autocomplete.stories.tsx +36 -0
- package/src/v2/Autocomplete/MultiAutocomplete.tsx +25 -1
- package/src/v2/Autocomplete/SingleAutocomplete.tsx +6 -0
- package/src/v2/Common-V2/ComboboxContent.tsx +1 -0
- package/src/v2/Common-V2/Popout.tsx +22 -6
- package/src/v2/Common-V2/props.ts +9 -0
- package/src/v2/SearchableSelect/SearchableMultiSelect.tsx +6 -0
- package/src/v2/SearchableSelect/SearchableSelect.tsx +6 -0
- package/src/v2/Select/MultiSelect.tsx +6 -0
- package/src/v2/Select/SingleSelect.tsx +6 -0
package/dist/v2/index.d.mts
CHANGED
|
@@ -26,6 +26,17 @@ interface BaseSelectProps<T extends DataWithId> {
|
|
|
26
26
|
onIsOpenChange?: (isOpen: boolean) => void;
|
|
27
27
|
stateReducer?: any;
|
|
28
28
|
menuProps?: React.HTMLAttributes<HTMLDivElement>;
|
|
29
|
+
onPointerDownOutside?: (event: CustomEvent<{
|
|
30
|
+
originalEvent: PointerEvent;
|
|
31
|
+
}>) => void;
|
|
32
|
+
onInteractOutside?: (event: CustomEvent<{
|
|
33
|
+
originalEvent: Event;
|
|
34
|
+
}>) => void;
|
|
35
|
+
/**
|
|
36
|
+
* Controls which side the popout appears relative to the trigger.
|
|
37
|
+
* @default "bottom"
|
|
38
|
+
*/
|
|
39
|
+
popoutPlacement?: "top" | "bottom";
|
|
29
40
|
}
|
|
30
41
|
/**
|
|
31
42
|
* Props common to all single-select components
|
|
@@ -75,22 +86,22 @@ interface SingleSelectProps<T extends DataWithId> extends BaseSingleSelectProps<
|
|
|
75
86
|
renderSelection?: (item: T | null) => ReactNode;
|
|
76
87
|
triggerButtonProps?: any;
|
|
77
88
|
}
|
|
78
|
-
declare function SingleSelect<T extends DataWithId>({ id, data, selectedItemId: controlledSelectedItemId, isOpen: controlledIsOpen, itemToKey, itemToString, itemToSelection, renderSelection, renderItem, groupBy, renderGroupHeading, isVirtualized, placeholder, onSelectedItemIdChange, onIsOpenChange, stateReducer, triggerButtonProps, menuProps, inputType, removePlaceholderItem, }: SingleSelectProps<T>): react_jsx_runtime.JSX.Element;
|
|
89
|
+
declare function SingleSelect<T extends DataWithId>({ id, data, selectedItemId: controlledSelectedItemId, isOpen: controlledIsOpen, itemToKey, itemToString, itemToSelection, renderSelection, renderItem, groupBy, renderGroupHeading, isVirtualized, placeholder, onSelectedItemIdChange, onIsOpenChange, stateReducer, triggerButtonProps, menuProps, inputType, removePlaceholderItem, onPointerDownOutside, onInteractOutside, popoutPlacement, }: SingleSelectProps<T>): react_jsx_runtime.JSX.Element;
|
|
79
90
|
|
|
80
91
|
interface MultiSelectProps<T extends DataWithId> extends BaseMultiSelectProps<T> {
|
|
81
92
|
renderSelections?: (items: T[]) => ReactNode;
|
|
82
93
|
triggerButtonProps?: any;
|
|
83
94
|
shouldOverflow?: boolean;
|
|
84
95
|
}
|
|
85
|
-
declare function MultiSelect<T extends DataWithId>({ id, data, selectedItemIds: controlledSelectedItemIds, isOpen: controlledIsOpen, itemToKey, itemToString, renderSelections, renderItem, groupBy, renderGroupHeading, isVirtualized, showSelectedItems, selectHeadings, selectAllItem, placeholder, onSelectedItemIdsChange, onIsOpenChange, stateReducer, triggerButtonProps, menuProps, inputType, shouldOverflow, }: MultiSelectProps<T>): react_jsx_runtime.JSX.Element;
|
|
96
|
+
declare function MultiSelect<T extends DataWithId>({ id, data, selectedItemIds: controlledSelectedItemIds, isOpen: controlledIsOpen, itemToKey, itemToString, renderSelections, renderItem, groupBy, renderGroupHeading, isVirtualized, showSelectedItems, selectHeadings, selectAllItem, placeholder, onSelectedItemIdsChange, onIsOpenChange, stateReducer, triggerButtonProps, menuProps, inputType, shouldOverflow, onPointerDownOutside, onInteractOutside, popoutPlacement, }: MultiSelectProps<T>): react_jsx_runtime.JSX.Element;
|
|
86
97
|
|
|
87
98
|
interface SingleAutocompleteProps<T extends DataWithId> extends BaseSingleAutocompleteProps<T> {
|
|
88
99
|
includePlaceholderItem?: boolean;
|
|
89
100
|
}
|
|
90
|
-
declare function SingleAutocomplete<T extends DataWithId>({ id, data, selectedItemId: controlledSelectedItemId, inputValue: controlledInputValue, isOpen: controlledIsOpen, itemToKey, itemToString, itemToSearchString, renderItem, groupBy, renderGroupHeading, isVirtualized, EmptyState, placeholder, onSelectedItemIdChange, onInputValueChange, onIsOpenChange, stateReducer, menuProps, inputType, includePlaceholderItem, }: SingleAutocompleteProps<T>): react_jsx_runtime.JSX.Element;
|
|
101
|
+
declare function SingleAutocomplete<T extends DataWithId>({ id, data, selectedItemId: controlledSelectedItemId, inputValue: controlledInputValue, isOpen: controlledIsOpen, itemToKey, itemToString, itemToSearchString, renderItem, groupBy, renderGroupHeading, isVirtualized, EmptyState, placeholder, onSelectedItemIdChange, onInputValueChange, onIsOpenChange, stateReducer, menuProps, inputType, includePlaceholderItem, onPointerDownOutside, onInteractOutside, popoutPlacement, }: SingleAutocompleteProps<T>): react_jsx_runtime.JSX.Element;
|
|
91
102
|
|
|
92
103
|
interface MultiAutocompleteProps<T extends DataWithId> extends BaseMultiAutocompleteProps<T> {
|
|
93
104
|
}
|
|
94
|
-
declare function MultiAutocomplete<T extends DataWithId>({ id, data, selectedItemIds: controlledSelectedItemIds, inputValue: controlledInputValue, isOpen: controlledIsOpen, itemToKey, itemToString, itemToSearchString, renderItem, groupBy, renderGroupHeading, isVirtualized, showSelectedItems, selectHeadings, selectAllItem, EmptyState, placeholder, onSelectedItemIdsChange, onInputValueChange, onIsOpenChange, stateReducer, menuProps, inputType, }: MultiAutocompleteProps<T>): react_jsx_runtime.JSX.Element;
|
|
105
|
+
declare function MultiAutocomplete<T extends DataWithId>({ id, data, selectedItemIds: controlledSelectedItemIds, inputValue: controlledInputValue, isOpen: controlledIsOpen, itemToKey, itemToString, itemToSearchString, renderItem, groupBy, renderGroupHeading, isVirtualized, showSelectedItems, selectHeadings, selectAllItem, EmptyState, placeholder, onSelectedItemIdsChange, onInputValueChange, onIsOpenChange, stateReducer, menuProps, inputType, onPointerDownOutside, onInteractOutside, popoutPlacement, }: MultiAutocompleteProps<T>): react_jsx_runtime.JSX.Element;
|
|
95
106
|
|
|
96
107
|
export { MultiAutocomplete, type MultiAutocompleteProps, MultiSelect, type MultiSelectProps, SingleAutocomplete, type SingleAutocompleteProps, SingleSelect, type SingleSelectProps };
|
package/dist/v2/index.d.ts
CHANGED
|
@@ -26,6 +26,17 @@ interface BaseSelectProps<T extends DataWithId> {
|
|
|
26
26
|
onIsOpenChange?: (isOpen: boolean) => void;
|
|
27
27
|
stateReducer?: any;
|
|
28
28
|
menuProps?: React.HTMLAttributes<HTMLDivElement>;
|
|
29
|
+
onPointerDownOutside?: (event: CustomEvent<{
|
|
30
|
+
originalEvent: PointerEvent;
|
|
31
|
+
}>) => void;
|
|
32
|
+
onInteractOutside?: (event: CustomEvent<{
|
|
33
|
+
originalEvent: Event;
|
|
34
|
+
}>) => void;
|
|
35
|
+
/**
|
|
36
|
+
* Controls which side the popout appears relative to the trigger.
|
|
37
|
+
* @default "bottom"
|
|
38
|
+
*/
|
|
39
|
+
popoutPlacement?: "top" | "bottom";
|
|
29
40
|
}
|
|
30
41
|
/**
|
|
31
42
|
* Props common to all single-select components
|
|
@@ -75,22 +86,22 @@ interface SingleSelectProps<T extends DataWithId> extends BaseSingleSelectProps<
|
|
|
75
86
|
renderSelection?: (item: T | null) => ReactNode;
|
|
76
87
|
triggerButtonProps?: any;
|
|
77
88
|
}
|
|
78
|
-
declare function SingleSelect<T extends DataWithId>({ id, data, selectedItemId: controlledSelectedItemId, isOpen: controlledIsOpen, itemToKey, itemToString, itemToSelection, renderSelection, renderItem, groupBy, renderGroupHeading, isVirtualized, placeholder, onSelectedItemIdChange, onIsOpenChange, stateReducer, triggerButtonProps, menuProps, inputType, removePlaceholderItem, }: SingleSelectProps<T>): react_jsx_runtime.JSX.Element;
|
|
89
|
+
declare function SingleSelect<T extends DataWithId>({ id, data, selectedItemId: controlledSelectedItemId, isOpen: controlledIsOpen, itemToKey, itemToString, itemToSelection, renderSelection, renderItem, groupBy, renderGroupHeading, isVirtualized, placeholder, onSelectedItemIdChange, onIsOpenChange, stateReducer, triggerButtonProps, menuProps, inputType, removePlaceholderItem, onPointerDownOutside, onInteractOutside, popoutPlacement, }: SingleSelectProps<T>): react_jsx_runtime.JSX.Element;
|
|
79
90
|
|
|
80
91
|
interface MultiSelectProps<T extends DataWithId> extends BaseMultiSelectProps<T> {
|
|
81
92
|
renderSelections?: (items: T[]) => ReactNode;
|
|
82
93
|
triggerButtonProps?: any;
|
|
83
94
|
shouldOverflow?: boolean;
|
|
84
95
|
}
|
|
85
|
-
declare function MultiSelect<T extends DataWithId>({ id, data, selectedItemIds: controlledSelectedItemIds, isOpen: controlledIsOpen, itemToKey, itemToString, renderSelections, renderItem, groupBy, renderGroupHeading, isVirtualized, showSelectedItems, selectHeadings, selectAllItem, placeholder, onSelectedItemIdsChange, onIsOpenChange, stateReducer, triggerButtonProps, menuProps, inputType, shouldOverflow, }: MultiSelectProps<T>): react_jsx_runtime.JSX.Element;
|
|
96
|
+
declare function MultiSelect<T extends DataWithId>({ id, data, selectedItemIds: controlledSelectedItemIds, isOpen: controlledIsOpen, itemToKey, itemToString, renderSelections, renderItem, groupBy, renderGroupHeading, isVirtualized, showSelectedItems, selectHeadings, selectAllItem, placeholder, onSelectedItemIdsChange, onIsOpenChange, stateReducer, triggerButtonProps, menuProps, inputType, shouldOverflow, onPointerDownOutside, onInteractOutside, popoutPlacement, }: MultiSelectProps<T>): react_jsx_runtime.JSX.Element;
|
|
86
97
|
|
|
87
98
|
interface SingleAutocompleteProps<T extends DataWithId> extends BaseSingleAutocompleteProps<T> {
|
|
88
99
|
includePlaceholderItem?: boolean;
|
|
89
100
|
}
|
|
90
|
-
declare function SingleAutocomplete<T extends DataWithId>({ id, data, selectedItemId: controlledSelectedItemId, inputValue: controlledInputValue, isOpen: controlledIsOpen, itemToKey, itemToString, itemToSearchString, renderItem, groupBy, renderGroupHeading, isVirtualized, EmptyState, placeholder, onSelectedItemIdChange, onInputValueChange, onIsOpenChange, stateReducer, menuProps, inputType, includePlaceholderItem, }: SingleAutocompleteProps<T>): react_jsx_runtime.JSX.Element;
|
|
101
|
+
declare function SingleAutocomplete<T extends DataWithId>({ id, data, selectedItemId: controlledSelectedItemId, inputValue: controlledInputValue, isOpen: controlledIsOpen, itemToKey, itemToString, itemToSearchString, renderItem, groupBy, renderGroupHeading, isVirtualized, EmptyState, placeholder, onSelectedItemIdChange, onInputValueChange, onIsOpenChange, stateReducer, menuProps, inputType, includePlaceholderItem, onPointerDownOutside, onInteractOutside, popoutPlacement, }: SingleAutocompleteProps<T>): react_jsx_runtime.JSX.Element;
|
|
91
102
|
|
|
92
103
|
interface MultiAutocompleteProps<T extends DataWithId> extends BaseMultiAutocompleteProps<T> {
|
|
93
104
|
}
|
|
94
|
-
declare function MultiAutocomplete<T extends DataWithId>({ id, data, selectedItemIds: controlledSelectedItemIds, inputValue: controlledInputValue, isOpen: controlledIsOpen, itemToKey, itemToString, itemToSearchString, renderItem, groupBy, renderGroupHeading, isVirtualized, showSelectedItems, selectHeadings, selectAllItem, EmptyState, placeholder, onSelectedItemIdsChange, onInputValueChange, onIsOpenChange, stateReducer, menuProps, inputType, }: MultiAutocompleteProps<T>): react_jsx_runtime.JSX.Element;
|
|
105
|
+
declare function MultiAutocomplete<T extends DataWithId>({ id, data, selectedItemIds: controlledSelectedItemIds, inputValue: controlledInputValue, isOpen: controlledIsOpen, itemToKey, itemToString, itemToSearchString, renderItem, groupBy, renderGroupHeading, isVirtualized, showSelectedItems, selectHeadings, selectAllItem, EmptyState, placeholder, onSelectedItemIdsChange, onInputValueChange, onIsOpenChange, stateReducer, menuProps, inputType, onPointerDownOutside, onInteractOutside, popoutPlacement, }: MultiAutocompleteProps<T>): react_jsx_runtime.JSX.Element;
|
|
95
106
|
|
|
96
107
|
export { MultiAutocomplete, type MultiAutocompleteProps, MultiSelect, type MultiSelectProps, SingleAutocomplete, type SingleAutocompleteProps, SingleSelect, type SingleSelectProps };
|
package/dist/v2/index.js
CHANGED
|
@@ -248,8 +248,21 @@ function Popout({
|
|
|
248
248
|
const popoverOnOpenChange = isControlled ? onOpenChange : handleOpenChange;
|
|
249
249
|
const radixRef = React2.useRef(null);
|
|
250
250
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Popover.Root, { open: popoverOpen, onOpenChange: popoverOnOpenChange, children: [
|
|
251
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
252
|
-
|
|
251
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { position: "relative" }, children: [
|
|
252
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Popover.Trigger, { ref: radixRef, asChild: true, children }),
|
|
253
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
254
|
+
Popover.Anchor,
|
|
255
|
+
{
|
|
256
|
+
style: {
|
|
257
|
+
position: "absolute",
|
|
258
|
+
top: side === "top" ? 0 : "100%",
|
|
259
|
+
left: 0,
|
|
260
|
+
right: 0,
|
|
261
|
+
height: "1px"
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
)
|
|
265
|
+
] }),
|
|
253
266
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
254
267
|
StyledContent,
|
|
255
268
|
{
|
|
@@ -798,7 +811,8 @@ var VirtualizedComboboxContent = ({
|
|
|
798
811
|
{
|
|
799
812
|
style: {
|
|
800
813
|
height: `${rowVirtualizer.getTotalSize()}px`,
|
|
801
|
-
position: "relative"
|
|
814
|
+
position: "relative",
|
|
815
|
+
overflow: "hidden"
|
|
802
816
|
},
|
|
803
817
|
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
804
818
|
"div",
|
|
@@ -1126,7 +1140,10 @@ function SingleSelect({
|
|
|
1126
1140
|
triggerButtonProps,
|
|
1127
1141
|
menuProps,
|
|
1128
1142
|
inputType = "icon",
|
|
1129
|
-
removePlaceholderItem = false
|
|
1143
|
+
removePlaceholderItem = false,
|
|
1144
|
+
onPointerDownOutside,
|
|
1145
|
+
onInteractOutside,
|
|
1146
|
+
popoutPlacement
|
|
1130
1147
|
}) {
|
|
1131
1148
|
const [uncontrolledSelectedItemId, setUncontrolledSelectedItemId] = (0, import_react8.useState)(null);
|
|
1132
1149
|
const [uncontrolledIsOpen, setUncontrolledIsOpen] = (0, import_react8.useState)(false);
|
|
@@ -1225,6 +1242,7 @@ function SingleSelect({
|
|
|
1225
1242
|
{
|
|
1226
1243
|
open: selectIsOpen,
|
|
1227
1244
|
onOpenChange: updateIsOpen,
|
|
1245
|
+
side: popoutPlacement,
|
|
1228
1246
|
animationConfig: menuAnimationConfig,
|
|
1229
1247
|
onOpenAutoFocus: (e) => {
|
|
1230
1248
|
e.preventDefault();
|
|
@@ -1232,6 +1250,8 @@ function SingleSelect({
|
|
|
1232
1250
|
onCloseAutoFocus: (e) => {
|
|
1233
1251
|
e.preventDefault();
|
|
1234
1252
|
},
|
|
1253
|
+
onPointerDownOutside,
|
|
1254
|
+
onInteractOutside,
|
|
1235
1255
|
content: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1236
1256
|
ComboboxContent,
|
|
1237
1257
|
{
|
|
@@ -1337,7 +1357,10 @@ function MultiSelect({
|
|
|
1337
1357
|
triggerButtonProps,
|
|
1338
1358
|
menuProps,
|
|
1339
1359
|
inputType = "checkbox",
|
|
1340
|
-
shouldOverflow
|
|
1360
|
+
shouldOverflow,
|
|
1361
|
+
onPointerDownOutside,
|
|
1362
|
+
onInteractOutside,
|
|
1363
|
+
popoutPlacement
|
|
1341
1364
|
}) {
|
|
1342
1365
|
const [uncontrolledSelectedItemIds, setUncontrolledSelectedItemIds] = (0, import_react9.useState)([]);
|
|
1343
1366
|
const [uncontrolledIsOpen, setUncontrolledIsOpen] = (0, import_react9.useState)(false);
|
|
@@ -1512,12 +1535,15 @@ function MultiSelect({
|
|
|
1512
1535
|
{
|
|
1513
1536
|
open: selectIsOpen,
|
|
1514
1537
|
onOpenChange: updateIsOpen,
|
|
1538
|
+
side: popoutPlacement,
|
|
1515
1539
|
onOpenAutoFocus: (e) => {
|
|
1516
1540
|
e.preventDefault();
|
|
1517
1541
|
},
|
|
1518
1542
|
onCloseAutoFocus: (e) => {
|
|
1519
1543
|
e.preventDefault();
|
|
1520
1544
|
},
|
|
1545
|
+
onPointerDownOutside,
|
|
1546
|
+
onInteractOutside,
|
|
1521
1547
|
animationConfig: menuAnimationConfig,
|
|
1522
1548
|
content: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1523
1549
|
ComboboxContent,
|
|
@@ -1623,7 +1649,10 @@ function SingleAutocomplete({
|
|
|
1623
1649
|
stateReducer = defaultReducer3,
|
|
1624
1650
|
menuProps,
|
|
1625
1651
|
inputType = "icon",
|
|
1626
|
-
includePlaceholderItem = false
|
|
1652
|
+
includePlaceholderItem = false,
|
|
1653
|
+
onPointerDownOutside,
|
|
1654
|
+
onInteractOutside,
|
|
1655
|
+
popoutPlacement
|
|
1627
1656
|
}) {
|
|
1628
1657
|
const [uncontrolledInputValue, setUncontrolledInputValue] = (0, import_react10.useState)("");
|
|
1629
1658
|
const [uncontrolledSelectedItemId, setUncontrolledSelectedItemId] = (0, import_react10.useState)(null);
|
|
@@ -1793,6 +1822,7 @@ function SingleAutocomplete({
|
|
|
1793
1822
|
{
|
|
1794
1823
|
open: comboboxIsOpen,
|
|
1795
1824
|
onOpenChange: updateIsOpen,
|
|
1825
|
+
side: popoutPlacement,
|
|
1796
1826
|
animationConfig: menuAnimationConfig,
|
|
1797
1827
|
onOpenAutoFocus: (e) => {
|
|
1798
1828
|
e.preventDefault();
|
|
@@ -1800,6 +1830,8 @@ function SingleAutocomplete({
|
|
|
1800
1830
|
onCloseAutoFocus: (e) => {
|
|
1801
1831
|
e.preventDefault();
|
|
1802
1832
|
},
|
|
1833
|
+
onPointerDownOutside,
|
|
1834
|
+
onInteractOutside,
|
|
1803
1835
|
content: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1804
1836
|
ComboboxContent,
|
|
1805
1837
|
{
|
|
@@ -1905,8 +1937,12 @@ function MultiAutocomplete({
|
|
|
1905
1937
|
onIsOpenChange,
|
|
1906
1938
|
stateReducer = defaultReducer4,
|
|
1907
1939
|
menuProps,
|
|
1908
|
-
inputType = "checkbox"
|
|
1940
|
+
inputType = "checkbox",
|
|
1941
|
+
onPointerDownOutside,
|
|
1942
|
+
onInteractOutside,
|
|
1943
|
+
popoutPlacement
|
|
1909
1944
|
}) {
|
|
1945
|
+
const mousedownInPopoverRef = (0, import_react11.useRef)(false);
|
|
1910
1946
|
const [uncontrolledInputValue, setUncontrolledInputValue] = (0, import_react11.useState)("");
|
|
1911
1947
|
const [uncontrolledSelectedItemIds, setUncontrolledSelectedItemIds] = (0, import_react11.useState)([]);
|
|
1912
1948
|
const [uncontrolledIsOpen, setUncontrolledIsOpen] = (0, import_react11.useState)(false);
|
|
@@ -1933,6 +1969,9 @@ function MultiAutocomplete({
|
|
|
1933
1969
|
onInputValueChange?.(newInputValue);
|
|
1934
1970
|
};
|
|
1935
1971
|
const updateIsOpen = (newIsOpen) => {
|
|
1972
|
+
if (!newIsOpen) {
|
|
1973
|
+
updateInputValue("");
|
|
1974
|
+
}
|
|
1936
1975
|
if (!isIsOpenControlled) {
|
|
1937
1976
|
setUncontrolledIsOpen(newIsOpen);
|
|
1938
1977
|
}
|
|
@@ -2109,6 +2148,11 @@ function MultiAutocomplete({
|
|
|
2109
2148
|
if (inputProps.onBlur) {
|
|
2110
2149
|
inputProps.onBlur(e);
|
|
2111
2150
|
}
|
|
2151
|
+
if (mousedownInPopoverRef.current) {
|
|
2152
|
+
mousedownInPopoverRef.current = false;
|
|
2153
|
+
e.target.focus();
|
|
2154
|
+
return;
|
|
2155
|
+
}
|
|
2112
2156
|
updateIsOpen(false);
|
|
2113
2157
|
};
|
|
2114
2158
|
const inputPropsToSpread = { ...inputProps };
|
|
@@ -2118,13 +2162,22 @@ function MultiAutocomplete({
|
|
|
2118
2162
|
{
|
|
2119
2163
|
open: comboboxIsOpen,
|
|
2120
2164
|
onOpenChange: updateIsOpen,
|
|
2165
|
+
side: popoutPlacement,
|
|
2121
2166
|
onOpenAutoFocus: (e) => {
|
|
2122
2167
|
e.preventDefault();
|
|
2123
2168
|
},
|
|
2124
2169
|
onCloseAutoFocus: (e) => {
|
|
2125
2170
|
e.preventDefault();
|
|
2126
2171
|
},
|
|
2172
|
+
onPointerDownOutside,
|
|
2173
|
+
onInteractOutside,
|
|
2127
2174
|
animationConfig: menuAnimationConfig,
|
|
2175
|
+
onMouseDown: () => {
|
|
2176
|
+
mousedownInPopoverRef.current = true;
|
|
2177
|
+
},
|
|
2178
|
+
onMouseUp: () => {
|
|
2179
|
+
mousedownInPopoverRef.current = false;
|
|
2180
|
+
},
|
|
2128
2181
|
content: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
2129
2182
|
ComboboxContent,
|
|
2130
2183
|
{
|