@refraction-ui/react 0.3.3 → 0.3.4
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/index.cjs +49 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +49 -4
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -10940,7 +10940,7 @@ var selectContentVariants = cva({
|
|
|
10940
10940
|
}
|
|
10941
10941
|
});
|
|
10942
10942
|
var selectItemVariants = cva({
|
|
10943
|
-
base: "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
10943
|
+
base: "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground hover:bg-accent hover:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
10944
10944
|
variants: {
|
|
10945
10945
|
selected: {
|
|
10946
10946
|
true: "bg-accent/50",
|
|
@@ -11054,8 +11054,47 @@ var SelectTrigger = React41.forwardRef(
|
|
|
11054
11054
|
);
|
|
11055
11055
|
SelectTrigger.displayName = "SelectTrigger";
|
|
11056
11056
|
var SelectContent = React41.forwardRef(
|
|
11057
|
-
({ className, children, ...props },
|
|
11058
|
-
const { open, contentId, triggerId } = React41.useContext(SelectContext);
|
|
11057
|
+
({ className, children, ...props }, forwardedRef) => {
|
|
11058
|
+
const { open, contentId, triggerId, setOpen } = React41.useContext(SelectContext);
|
|
11059
|
+
const containerRef = React41.useRef(null);
|
|
11060
|
+
const ref = React41.useCallback(
|
|
11061
|
+
(node) => {
|
|
11062
|
+
containerRef.current = node;
|
|
11063
|
+
if (typeof forwardedRef === "function") forwardedRef(node);
|
|
11064
|
+
else if (forwardedRef) forwardedRef.current = node;
|
|
11065
|
+
},
|
|
11066
|
+
[forwardedRef]
|
|
11067
|
+
);
|
|
11068
|
+
React41.useEffect(() => {
|
|
11069
|
+
if (open && containerRef.current) {
|
|
11070
|
+
const firstOption = containerRef.current.querySelector('[role="option"]:not([aria-disabled="true"])');
|
|
11071
|
+
if (firstOption) {
|
|
11072
|
+
setTimeout(() => firstOption.focus(), 0);
|
|
11073
|
+
}
|
|
11074
|
+
}
|
|
11075
|
+
}, [open]);
|
|
11076
|
+
const handleKeyDown = (e) => {
|
|
11077
|
+
if (!containerRef.current) return;
|
|
11078
|
+
const options = Array.from(
|
|
11079
|
+
containerRef.current.querySelectorAll('[role="option"]:not([aria-disabled="true"])')
|
|
11080
|
+
);
|
|
11081
|
+
if (!options.length) return;
|
|
11082
|
+
const currentIndex = options.indexOf(document.activeElement);
|
|
11083
|
+
if (e.key === "ArrowDown") {
|
|
11084
|
+
e.preventDefault();
|
|
11085
|
+
const nextIndex = currentIndex < options.length - 1 ? currentIndex + 1 : 0;
|
|
11086
|
+
options[nextIndex]?.focus();
|
|
11087
|
+
} else if (e.key === "ArrowUp") {
|
|
11088
|
+
e.preventDefault();
|
|
11089
|
+
const prevIndex = currentIndex > 0 ? currentIndex - 1 : options.length - 1;
|
|
11090
|
+
options[prevIndex]?.focus();
|
|
11091
|
+
} else if (e.key === "Escape") {
|
|
11092
|
+
e.preventDefault();
|
|
11093
|
+
setOpen(false);
|
|
11094
|
+
const trigger = document.getElementById(triggerId);
|
|
11095
|
+
if (trigger) trigger.focus();
|
|
11096
|
+
}
|
|
11097
|
+
};
|
|
11059
11098
|
if (!open) return null;
|
|
11060
11099
|
return /* @__PURE__ */ jsx(
|
|
11061
11100
|
"div",
|
|
@@ -11066,6 +11105,8 @@ var SelectContent = React41.forwardRef(
|
|
|
11066
11105
|
role: "listbox",
|
|
11067
11106
|
"aria-labelledby": triggerId,
|
|
11068
11107
|
"data-state": open ? "open" : "closed",
|
|
11108
|
+
onKeyDown: handleKeyDown,
|
|
11109
|
+
tabIndex: -1,
|
|
11069
11110
|
...props,
|
|
11070
11111
|
children
|
|
11071
11112
|
}
|
|
@@ -11075,12 +11116,14 @@ var SelectContent = React41.forwardRef(
|
|
|
11075
11116
|
SelectContent.displayName = "SelectContent";
|
|
11076
11117
|
var SelectItem = React41.forwardRef(
|
|
11077
11118
|
({ className, children, value: itemValue, disabled: itemDisabled = false, ...props }, ref) => {
|
|
11078
|
-
const { value, onValueChange, setOpen } = React41.useContext(SelectContext);
|
|
11119
|
+
const { value, onValueChange, setOpen, triggerId } = React41.useContext(SelectContext);
|
|
11079
11120
|
const isSelected = value === itemValue;
|
|
11080
11121
|
const handleClick = () => {
|
|
11081
11122
|
if (!itemDisabled) {
|
|
11082
11123
|
onValueChange(itemValue);
|
|
11083
11124
|
setOpen(false);
|
|
11125
|
+
const trigger = document.getElementById(triggerId);
|
|
11126
|
+
if (trigger) setTimeout(() => trigger.focus(), 0);
|
|
11084
11127
|
}
|
|
11085
11128
|
};
|
|
11086
11129
|
const handleKeyDown = (e) => {
|
|
@@ -11088,6 +11131,8 @@ var SelectItem = React41.forwardRef(
|
|
|
11088
11131
|
e.preventDefault();
|
|
11089
11132
|
onValueChange(itemValue);
|
|
11090
11133
|
setOpen(false);
|
|
11134
|
+
const trigger = document.getElementById(triggerId);
|
|
11135
|
+
if (trigger) setTimeout(() => trigger.focus(), 0);
|
|
11091
11136
|
}
|
|
11092
11137
|
};
|
|
11093
11138
|
return /* @__PURE__ */ jsxs(
|