infinity-ui-elements 1.8.3 → 1.8.5
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/dist/components/Dropdown/DropdownMenu.d.ts +3 -2
- package/dist/components/Dropdown/DropdownMenu.d.ts.map +1 -1
- package/dist/components/FormFooter/FormFooter.d.ts.map +1 -1
- package/dist/components/FormHeader/FormHeader.d.ts.map +1 -1
- package/dist/components/SearchableDropdown/SearchableDropdown.d.ts +4 -1
- package/dist/components/SearchableDropdown/SearchableDropdown.d.ts.map +1 -1
- package/dist/components/SearchableDropdown/SearchableDropdown.stories.d.ts +6 -0
- package/dist/components/SearchableDropdown/SearchableDropdown.stories.d.ts.map +1 -1
- package/dist/components/Select/Select.d.ts +6 -2
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.esm.js +76 -30
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +76 -30
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -1372,17 +1372,17 @@ const FormFooter = React.forwardRef(({ helperText, trailingText, validationState
|
|
|
1372
1372
|
// Size-based configurations
|
|
1373
1373
|
const sizeConfig = {
|
|
1374
1374
|
small: {
|
|
1375
|
-
|
|
1375
|
+
textClassName: "text-caption-small-regular",
|
|
1376
1376
|
iconSize: 12,
|
|
1377
1377
|
gap: "gap-1",
|
|
1378
1378
|
},
|
|
1379
1379
|
medium: {
|
|
1380
|
-
|
|
1380
|
+
textClassName: "text-caption-medium-regular",
|
|
1381
1381
|
iconSize: 14,
|
|
1382
1382
|
gap: "gap-1",
|
|
1383
1383
|
},
|
|
1384
1384
|
large: {
|
|
1385
|
-
|
|
1385
|
+
textClassName: "text-caption-large-regular",
|
|
1386
1386
|
iconSize: 16,
|
|
1387
1387
|
gap: "gap-1.5",
|
|
1388
1388
|
},
|
|
@@ -1391,20 +1391,22 @@ const FormFooter = React.forwardRef(({ helperText, trailingText, validationState
|
|
|
1391
1391
|
// Determine text color based on validation state and disabled state
|
|
1392
1392
|
const getTextColor = () => {
|
|
1393
1393
|
if (isDisabled)
|
|
1394
|
-
return "disabled";
|
|
1394
|
+
return "text-surface-ink-neutral-disabled";
|
|
1395
1395
|
if (validationState === "positive")
|
|
1396
|
-
return "positive";
|
|
1396
|
+
return "text-feedback-ink-positive-intense";
|
|
1397
1397
|
if (validationState === "negative")
|
|
1398
|
-
return "negative";
|
|
1398
|
+
return "text-feedback-ink-negative-subtle";
|
|
1399
1399
|
if (validationState === "default")
|
|
1400
|
-
return "
|
|
1401
|
-
return "
|
|
1400
|
+
return "text-surface-ink-neutral-subtle";
|
|
1401
|
+
return "text-surface-ink-neutral-subtle";
|
|
1402
1402
|
};
|
|
1403
|
+
const helperTextColorClass = getTextColor();
|
|
1404
|
+
const trailingTextColorClass = getTextColor();
|
|
1403
1405
|
// Don't render anything if there's no content
|
|
1404
1406
|
if (!helperText && !trailingText) {
|
|
1405
1407
|
return null;
|
|
1406
1408
|
}
|
|
1407
|
-
return (jsxs("div", { ref: ref, className: cn("flex items-center justify-between px-1", config.gap, className), children: [helperText && (jsxs("div", { className: cn("flex items-center", config.gap), children: [validationState === "positive" && (jsx("svg", { width: config.iconSize, height: config.iconSize, viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "text-feedback-ink-positive-intense shrink-0", children: jsx("path", { d: "M3 7L6 10L11 4", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })), validationState === "negative" && (jsxs("svg", { width: config.iconSize, height: config.iconSize, viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "text-feedback-ink-negative-subtle shrink-0", children: [jsx("circle", { cx: "7", cy: "7", r: "6", stroke: "currentColor", strokeWidth: "1" }), jsx("path", { d: "M7 4V7.5M7 10V9.5", stroke: "currentColor", strokeWidth: "1", strokeLinecap: "round" })] })), jsx(
|
|
1409
|
+
return (jsxs("div", { ref: ref, className: cn("flex items-center justify-between px-1", config.gap, className), children: [helperText && (jsxs("div", { className: cn("flex items-center", config.gap), children: [validationState === "positive" && (jsx("svg", { width: config.iconSize, height: config.iconSize, viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "text-feedback-ink-positive-intense shrink-0", children: jsx("path", { d: "M3 7L6 10L11 4", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })), validationState === "negative" && (jsxs("svg", { width: config.iconSize, height: config.iconSize, viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "text-feedback-ink-negative-subtle shrink-0", children: [jsx("circle", { cx: "7", cy: "7", r: "6", stroke: "currentColor", strokeWidth: "1" }), jsx("path", { d: "M7 4V7.5M7 10V9.5", stroke: "currentColor", strokeWidth: "1", strokeLinecap: "round" })] })), jsx("span", { className: cn(config.textClassName, helperTextColorClass, "italic font-size-100 leading-100", helperTextClassName), children: helperText })] })), trailingText && (jsx("span", { className: cn(config.textClassName, trailingTextColorClass, "font-size-100 leading-100 shrink-0", trailingTextClassName), children: trailingText }))] }));
|
|
1408
1410
|
});
|
|
1409
1411
|
FormFooter.displayName = "FormFooter";
|
|
1410
1412
|
|
|
@@ -1542,7 +1544,7 @@ const Checkbox = React.forwardRef(({ label, errorText, size = "medium", validati
|
|
|
1542
1544
|
},
|
|
1543
1545
|
medium: {
|
|
1544
1546
|
gap: "gap-2.5",
|
|
1545
|
-
labelSize: "text-body-
|
|
1547
|
+
labelSize: "text-body-small-regular",
|
|
1546
1548
|
iconSize: 12,
|
|
1547
1549
|
},
|
|
1548
1550
|
large: {
|
|
@@ -1868,10 +1870,10 @@ const DropdownMenu = React.forwardRef(({ items = [], customContent, sectionHeadi
|
|
|
1868
1870
|
if (isEmpty || items.length === 0) {
|
|
1869
1871
|
return (jsxs("div", { className: "flex flex-col items-center justify-center py-8 px-6 text-center", children: [emptyIcon || (jsx(Search, { className: "w-12 h-12 text-surface-ink-neutral-muted mb-4" })), jsx(Text, { as: "h3", variant: "body", size: "small", weight: "semibold", className: "text-surface-ink-neutral-normal mb-2", children: emptyTitle }), jsx(Text, { as: "p", variant: "body", size: "small", weight: "regular", className: "text-surface-ink-neutral-muted mb-3", children: emptyDescription }), emptyLinkText && (jsx(Link, { type: "anchor", color: "primary", size: "small", onClick: onEmptyLinkClick, children: emptyLinkText }))] }));
|
|
1870
1872
|
}
|
|
1871
|
-
return (jsxs("div", { className: "py-3 px-3 max-h-[400px] overflow-y-auto", children: [sectionHeading && (jsx(Text, { as: "div", variant: "body", size: "small", weight: "medium", className: "text-surface-ink-neutral-muted px-3 py-2 mb-1", children: sectionHeading })), jsx("div", { className: "flex flex-col gap-1", children: items.map((item, index) => (jsx(ListItem, { title: item.
|
|
1873
|
+
return (jsxs("div", { className: "py-3 px-3 max-h-[400px] overflow-y-auto", children: [sectionHeading && (jsx(Text, { as: "div", variant: "body", size: "small", weight: "medium", className: "text-surface-ink-neutral-muted px-3 py-2 mb-1", children: sectionHeading })), jsx("div", { className: "flex flex-col gap-1", children: items.map((item, index) => (jsx(ListItem, { title: item.label, description: item.description, leadingIcon: item.leadingIcon, trailingIcon: item.trailingIcon, showChevron: showChevron, isDisabled: item.isDisabled, isSelected: index === focusedIndex, variant: item.variant, onClick: () => {
|
|
1872
1874
|
item.onClick?.();
|
|
1873
1875
|
onClose?.();
|
|
1874
|
-
}, containerClassName: cn(index === focusedIndex && "bg-action-fill-primary-faded") }, item.
|
|
1876
|
+
}, containerClassName: cn(index === focusedIndex && "bg-action-fill-primary-faded") }, item.value))) })] }));
|
|
1875
1877
|
};
|
|
1876
1878
|
const widthClass = width === "full" ? "w-full" : width === "auto" ? "w-auto" : "";
|
|
1877
1879
|
const footerVisible = showFooter ?? !disableFooter;
|
|
@@ -2181,23 +2183,26 @@ const FormHeader = React.forwardRef(({ label, size = "medium", isOptional = fals
|
|
|
2181
2183
|
// Size-based configurations
|
|
2182
2184
|
const sizeConfig = {
|
|
2183
2185
|
small: {
|
|
2184
|
-
|
|
2186
|
+
textClassName: "text-body-xsmall-semibold",
|
|
2187
|
+
textClassNameRegular: "text-caption-small-regular",
|
|
2185
2188
|
iconSize: 12,
|
|
2186
2189
|
gap: "gap-1.5",
|
|
2187
2190
|
},
|
|
2188
2191
|
medium: {
|
|
2189
|
-
|
|
2192
|
+
textClassName: "text-body-small-semibold",
|
|
2193
|
+
textClassNameRegular: "text-caption-medium-regular",
|
|
2190
2194
|
iconSize: 14,
|
|
2191
2195
|
gap: "gap-2",
|
|
2192
2196
|
},
|
|
2193
2197
|
large: {
|
|
2194
|
-
|
|
2198
|
+
textClassName: "text-body-medium-semibold",
|
|
2199
|
+
textClassNameRegular: "text-caption-large-regular",
|
|
2195
2200
|
iconSize: 16,
|
|
2196
2201
|
gap: "gap-2.5",
|
|
2197
2202
|
},
|
|
2198
2203
|
};
|
|
2199
2204
|
const config = sizeConfig[size];
|
|
2200
|
-
return (jsxs("div", { ref: ref, className: cn("flex items-center justify-between px-1", config.gap, className), children: [jsxs("div", { className: cn("flex items-center", config.gap), children: [jsxs("label", { htmlFor: htmlFor, className: cn("flex items-center", labelClassName), children: [jsx(
|
|
2205
|
+
return (jsxs("div", { ref: ref, className: cn("flex items-center justify-between px-1", config.gap, className), children: [jsxs("div", { className: cn("flex items-center", config.gap), children: [jsxs("label", { htmlFor: htmlFor, className: cn("flex items-center", labelClassName), children: [jsx("span", { className: cn(config.textClassName, "text-surface-neutral-subtle"), children: label }), isRequired && (jsx("span", { className: cn(config.textClassName, "text-color-negative ml-0.5"), children: "*" })), isOptional && (jsx("span", { className: cn(config.textClassNameRegular, "text-surface-neutral-muted italic ml-1"), children: "(optional)" }))] }), infoDescription && (jsx(Tooltip, { description: infoDescription, heading: infoHeading, children: jsx(Icon, { name: "info", size: config.iconSize }) }))] }), linkText && (jsx(Link, { href: linkHref, onClick: onLinkClick, type: "action", color: "primary", size: size === "large" ? "small" : "xsmall", children: linkText }))] }));
|
|
2201
2206
|
});
|
|
2202
2207
|
FormHeader.displayName = "FormHeader";
|
|
2203
2208
|
|
|
@@ -2249,7 +2254,7 @@ const Modal = React.forwardRef(({ isOpen, onClose, title, description, footer, c
|
|
|
2249
2254
|
});
|
|
2250
2255
|
Modal.displayName = "Modal";
|
|
2251
2256
|
|
|
2252
|
-
const selectVariants = cva("relative flex items-center gap-2 border rounded-
|
|
2257
|
+
const selectVariants = cva("relative flex items-center gap-2 border rounded-large transition-all font-display font-size-100 leading-100", {
|
|
2253
2258
|
variants: {
|
|
2254
2259
|
size: {
|
|
2255
2260
|
small: "h-[28px] px-3 text-xs gap-2",
|
|
@@ -2442,7 +2447,13 @@ const Select = React.forwardRef(({ className, options = [], value: controlledVal
|
|
|
2442
2447
|
}, [isOpen, value, options, isDisabled, isLoading]);
|
|
2443
2448
|
// Transform options to dropdown menu items
|
|
2444
2449
|
const menuItems = options.map((option) => ({
|
|
2445
|
-
|
|
2450
|
+
value: option.value,
|
|
2451
|
+
label: option.label ?? String(option.value),
|
|
2452
|
+
description: option.description,
|
|
2453
|
+
leadingIcon: option.leadingIcon,
|
|
2454
|
+
trailingIcon: option.trailingIcon,
|
|
2455
|
+
isDisabled: option.isDisabled,
|
|
2456
|
+
variant: option.variant,
|
|
2446
2457
|
onClick: () => handleSelect(option),
|
|
2447
2458
|
}));
|
|
2448
2459
|
const widthStyle = menuWidth === "full" ? "100%" : menuWidth === "auto" ? "auto" : menuWidth;
|
|
@@ -2467,9 +2478,7 @@ const Select = React.forwardRef(({ className, options = [], value: controlledVal
|
|
|
2467
2478
|
? "text-feedback-ink-positive-intense"
|
|
2468
2479
|
: currentValidationState === "negative"
|
|
2469
2480
|
? "text-feedback-ink-negative-subtle"
|
|
2470
|
-
: "text-surface-ink-neutral-muted"), children: prefix })), jsx("span", { className: cn("flex-1 text-left truncate", !selectedOption && "text-surface-ink-neutral-muted", isDisabled && "text-surface-ink-neutral-disabled"), children: isLoading
|
|
2471
|
-
? "Loading..."
|
|
2472
|
-
: selectedOption?.label || selectedOption?.title || placeholder }), showClearButton && hasValue && !isDisabled && !isLoading && (jsx("button", { type: "button", onClick: handleClear, className: "shrink-0 flex items-center justify-center text-surface-ink-neutral-muted hover:text-surface-ink-neutral-normal transition-colors", tabIndex: -1, children: jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: jsx("path", { d: "M12 4L4 12M4 4L12 12", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) }) })), suffix && !showClearButton && (jsx("span", { className: cn("shrink-0 flex items-center", isDisabled
|
|
2481
|
+
: "text-surface-ink-neutral-muted"), children: prefix })), jsx("span", { className: cn("flex-1 text-left truncate", !selectedOption && "text-surface-ink-neutral-muted", isDisabled && "text-surface-ink-neutral-disabled"), children: isLoading ? "Loading..." : selectedOption?.label || placeholder }), showClearButton && hasValue && !isDisabled && !isLoading && (jsx("button", { type: "button", onClick: handleClear, className: "shrink-0 flex items-center justify-center text-surface-ink-neutral-muted hover:text-surface-ink-neutral-normal transition-colors", tabIndex: -1, children: jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: jsx("path", { d: "M12 4L4 12M4 4L12 12", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) }) })), suffix && !showClearButton && (jsx("span", { className: cn("shrink-0 flex items-center", isDisabled
|
|
2473
2482
|
? "text-surface-ink-neutral-disabled"
|
|
2474
2483
|
: currentValidationState === "positive"
|
|
2475
2484
|
? "text-feedback-ink-positive-intense"
|
|
@@ -2885,10 +2894,10 @@ TextField.displayName = "TextField";
|
|
|
2885
2894
|
|
|
2886
2895
|
const defaultFilter = (item, query) => {
|
|
2887
2896
|
const searchQuery = query.toLowerCase();
|
|
2888
|
-
return (item.
|
|
2897
|
+
return (item.label.toLowerCase().includes(searchQuery) ||
|
|
2889
2898
|
(item.description?.toLowerCase().includes(searchQuery) ?? false));
|
|
2890
2899
|
};
|
|
2891
|
-
const SearchableDropdown = React.forwardRef(({ className, items = [], sectionHeading, isLoading = false, emptyTitle = "No Search Results Found", emptyDescription = "Add description of what the user can search for here.", emptyLinkText = "Link to support site", onEmptyLinkClick, primaryButtonText
|
|
2900
|
+
const SearchableDropdown = React.forwardRef(({ className, items = [], sectionHeading, isLoading = false, emptyTitle = "No Search Results Found", emptyDescription = "Add description of what the user can search for here.", emptyLinkText = "Link to support site", onEmptyLinkClick, primaryButtonText, secondaryButtonText, onPrimaryClick, onSecondaryClick, dropdownWidth = "full", showChevron = false, emptyIcon, disableFooter = false, footerLayout = "horizontal", onSearchChange, onItemSelect, filterFunction = defaultFilter, searchValue: controlledSearchValue, defaultSearchValue = "", dropdownClassName, minSearchLength = 0, showOnFocus = true, showAddNew = false, containerClassName, ...textFieldProps }, ref) => {
|
|
2892
2901
|
const [uncontrolledSearchValue, setUncontrolledSearchValue] = React.useState(defaultSearchValue);
|
|
2893
2902
|
const [isOpen, setIsOpen] = React.useState(false);
|
|
2894
2903
|
const [focusedIndex, setFocusedIndex] = React.useState(-1);
|
|
@@ -2937,7 +2946,7 @@ const SearchableDropdown = React.forwardRef(({ className, items = [], sectionHea
|
|
|
2937
2946
|
const handleItemSelect = (item) => {
|
|
2938
2947
|
onItemSelect?.(item);
|
|
2939
2948
|
if (controlledSearchValue === undefined) {
|
|
2940
|
-
setUncontrolledSearchValue(item.
|
|
2949
|
+
setUncontrolledSearchValue(item.label);
|
|
2941
2950
|
}
|
|
2942
2951
|
setIsOpen(false);
|
|
2943
2952
|
inputRef.current?.focus();
|
|
@@ -2948,6 +2957,40 @@ const SearchableDropdown = React.forwardRef(({ className, items = [], sectionHea
|
|
|
2948
2957
|
return items;
|
|
2949
2958
|
return items.filter((item) => filterFunction(item, searchValue));
|
|
2950
2959
|
}, [items, searchValue, filterFunction]);
|
|
2960
|
+
// Add "Add New" option if showAddNew is true and no items match
|
|
2961
|
+
const itemsWithAddNew = React.useMemo(() => {
|
|
2962
|
+
if (!showAddNew || !searchValue || filteredItems.length > 0) {
|
|
2963
|
+
return filteredItems;
|
|
2964
|
+
}
|
|
2965
|
+
const addNewItem = {
|
|
2966
|
+
value: searchValue,
|
|
2967
|
+
label: `+ Add ${searchValue}`,
|
|
2968
|
+
variant: "primary",
|
|
2969
|
+
onClick: () => {
|
|
2970
|
+
const newItem = {
|
|
2971
|
+
value: searchValue,
|
|
2972
|
+
label: searchValue,
|
|
2973
|
+
};
|
|
2974
|
+
onItemSelect?.(newItem);
|
|
2975
|
+
if (controlledSearchValue === undefined) {
|
|
2976
|
+
setUncontrolledSearchValue(searchValue);
|
|
2977
|
+
}
|
|
2978
|
+
setIsOpen(false);
|
|
2979
|
+
inputRef.current?.focus();
|
|
2980
|
+
},
|
|
2981
|
+
};
|
|
2982
|
+
return [addNewItem];
|
|
2983
|
+
}, [
|
|
2984
|
+
showAddNew,
|
|
2985
|
+
searchValue,
|
|
2986
|
+
filteredItems,
|
|
2987
|
+
onItemSelect,
|
|
2988
|
+
controlledSearchValue,
|
|
2989
|
+
]);
|
|
2990
|
+
// Reset focused index when items change
|
|
2991
|
+
React.useEffect(() => {
|
|
2992
|
+
setFocusedIndex(-1);
|
|
2993
|
+
}, [itemsWithAddNew.length]);
|
|
2951
2994
|
// Close dropdown when clicking outside
|
|
2952
2995
|
React.useEffect(() => {
|
|
2953
2996
|
const handleClickOutside = (event) => {
|
|
@@ -2977,7 +3020,7 @@ const SearchableDropdown = React.forwardRef(({ className, items = [], sectionHea
|
|
|
2977
3020
|
switch (e.key) {
|
|
2978
3021
|
case "ArrowDown":
|
|
2979
3022
|
e.preventDefault();
|
|
2980
|
-
setFocusedIndex((prev) => prev <
|
|
3023
|
+
setFocusedIndex((prev) => prev < itemsWithAddNew.length - 1 ? prev + 1 : prev);
|
|
2981
3024
|
break;
|
|
2982
3025
|
case "ArrowUp":
|
|
2983
3026
|
e.preventDefault();
|
|
@@ -2985,8 +3028,8 @@ const SearchableDropdown = React.forwardRef(({ className, items = [], sectionHea
|
|
|
2985
3028
|
break;
|
|
2986
3029
|
case "Enter":
|
|
2987
3030
|
e.preventDefault();
|
|
2988
|
-
if (focusedIndex >= 0 &&
|
|
2989
|
-
handleItemSelect(
|
|
3031
|
+
if (focusedIndex >= 0 && itemsWithAddNew[focusedIndex]) {
|
|
3032
|
+
handleItemSelect(itemsWithAddNew[focusedIndex]);
|
|
2990
3033
|
}
|
|
2991
3034
|
break;
|
|
2992
3035
|
case "Escape":
|
|
@@ -2997,9 +3040,10 @@ const SearchableDropdown = React.forwardRef(({ className, items = [], sectionHea
|
|
|
2997
3040
|
}
|
|
2998
3041
|
};
|
|
2999
3042
|
// Update items with onClick handlers that call handleItemSelect
|
|
3000
|
-
|
|
3043
|
+
// Only add onClick if it doesn't already exist (for Add New items)
|
|
3044
|
+
const itemsWithHandlers = itemsWithAddNew.map((item) => ({
|
|
3001
3045
|
...item,
|
|
3002
|
-
onClick: () => handleItemSelect(item),
|
|
3046
|
+
onClick: item.onClick || (() => handleItemSelect(item)),
|
|
3003
3047
|
}));
|
|
3004
3048
|
const showDropdown = isOpen && searchValue.length >= minSearchLength;
|
|
3005
3049
|
const dropdownMenu = showDropdown && (jsx("div", { ref: menuRef, style: {
|
|
@@ -3008,7 +3052,9 @@ const SearchableDropdown = React.forwardRef(({ className, items = [], sectionHea
|
|
|
3008
3052
|
left: `${position.left}px`,
|
|
3009
3053
|
width: dropdownWidth === "full" ? `${position.width}px` : "auto",
|
|
3010
3054
|
zIndex: 9999,
|
|
3011
|
-
}, children: jsx(DropdownMenu, { items: itemsWithHandlers, sectionHeading: sectionHeading, isLoading: isLoading, isEmpty:
|
|
3055
|
+
}, children: jsx(DropdownMenu, { items: itemsWithHandlers, sectionHeading: sectionHeading, isLoading: isLoading, isEmpty: itemsWithAddNew.length === 0 && !showAddNew, emptyTitle: emptyTitle, emptyDescription: emptyDescription, emptyLinkText: emptyLinkText, onEmptyLinkClick: onEmptyLinkClick, primaryButtonText: primaryButtonText, secondaryButtonText: secondaryButtonText, onPrimaryClick: onPrimaryClick, onSecondaryClick: onSecondaryClick, showChevron: showChevron, emptyIcon: emptyIcon, disableFooter: disableFooter, showFooter: (primaryButtonText || secondaryButtonText) && !disableFooter
|
|
3056
|
+
? true
|
|
3057
|
+
: false, footerLayout: footerLayout, onClose: () => setIsOpen(false), focusedIndex: focusedIndex, className: dropdownClassName, width: dropdownWidth === "full" ? "full" : "auto" }) }));
|
|
3012
3058
|
return (jsxs(Fragment, { children: [jsx("div", { ref: dropdownRef, className: cn("relative", containerClassName), children: jsx(TextField, { ref: inputRef, value: searchValue, onChange: handleSearchChange, onFocus: handleFocus, onKeyDown: handleKeyDown, containerClassName: "mb-0", ...textFieldProps }) }), typeof document !== "undefined" &&
|
|
3013
3059
|
dropdownMenu &&
|
|
3014
3060
|
createPortal(dropdownMenu, document.body)] }));
|