UEA-PRODEM

This commit is contained in:
2026-06-10 12:14:46 -03:00
parent f54126b9d8
commit 9947565694
5319 changed files with 148520 additions and 129332 deletions
+141 -116
View File
@@ -16,6 +16,7 @@ import { useId } from "@radix-ui/react-id";
import * as PopperPrimitive from "@radix-ui/react-popper";
import { createPopperScope } from "@radix-ui/react-popper";
import { Portal as PortalPrimitive } from "@radix-ui/react-portal";
import { Presence } from "@radix-ui/react-presence";
import { Primitive } from "@radix-ui/react-primitive";
import { createSlot } from "@radix-ui/react-slot";
import { useCallbackRef } from "@radix-ui/react-use-callback-ref";
@@ -25,7 +26,7 @@ import { usePrevious } from "@radix-ui/react-use-previous";
import { VISUALLY_HIDDEN_STYLES } from "@radix-ui/react-visually-hidden";
import { hideOthers } from "aria-hidden";
import { RemoveScroll } from "react-remove-scroll";
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
import { Fragment as Fragment2, jsx, jsxs } from "react/jsx-runtime";
var OPEN_KEYS = [" ", "Enter", "ArrowUp", "ArrowDown"];
var SELECTION_KEYS = [" ", "Enter"];
var SELECT_NAME = "Select";
@@ -35,9 +36,10 @@ var [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [
createPopperScope
]);
var usePopperScope = createPopperScope();
var [SelectProvider, useSelectContext] = createSelectContext(SELECT_NAME);
var [SelectProviderImpl, useSelectContext] = createSelectContext(SELECT_NAME);
var [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME);
var Select = (props) => {
var PROVIDER_NAME = "SelectProvider";
function SelectProvider(props) {
const {
__scopeSelect,
children,
@@ -52,7 +54,9 @@ var Select = (props) => {
autoComplete,
disabled,
required,
form
form,
// @ts-expect-error internal render prop used by `Select` to compose its default parts
internal_do_not_use_render
} = props;
const popperScope = usePopperScope(__scopeSelect);
const [trigger, setTrigger] = React.useState(null);
@@ -72,68 +76,72 @@ var Select = (props) => {
caller: SELECT_NAME
});
const triggerPointerDownPosRef = React.useRef(null);
const isFormControl = trigger ? form || !!trigger.closest("form") : true;
const isFormControl = trigger ? !!form || !!trigger.closest("form") : true;
const [nativeOptionsSet, setNativeOptionsSet] = React.useState(/* @__PURE__ */ new Set());
const contentId = useId();
const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(";");
return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsxs(
const handleNativeOptionAdd = React.useCallback((option) => {
setNativeOptionsSet((prev) => new Set(prev).add(option));
}, []);
const handleNativeOptionRemove = React.useCallback((option) => {
setNativeOptionsSet((prev) => {
const optionsSet = new Set(prev);
optionsSet.delete(option);
return optionsSet;
});
}, []);
const context = {
required,
trigger,
onTriggerChange: setTrigger,
valueNode,
onValueNodeChange: setValueNode,
valueNodeHasChildren,
onValueNodeHasChildrenChange: setValueNodeHasChildren,
contentId,
value,
onValueChange: setValue,
open,
onOpenChange: setOpen,
dir: direction,
triggerPointerDownPosRef,
disabled,
name,
autoComplete,
form,
nativeOptions: nativeOptionsSet,
nativeSelectKey,
isFormControl
};
return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(SelectProviderImpl, { scope: __scopeSelect, ...context, children: /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(
SelectNativeOptionsProvider,
{
scope: __scopeSelect,
onNativeOptionAdd: handleNativeOptionAdd,
onNativeOptionRemove: handleNativeOptionRemove,
children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children
}
) }) }) });
}
SelectProvider.displayName = PROVIDER_NAME;
var Select = (props) => {
const { __scopeSelect, children, ...providerProps } = props;
return /* @__PURE__ */ jsx(
SelectProvider,
{
required,
scope: __scopeSelect,
trigger,
onTriggerChange: setTrigger,
valueNode,
onValueNodeChange: setValueNode,
valueNodeHasChildren,
onValueNodeHasChildrenChange: setValueNodeHasChildren,
contentId: useId(),
value,
onValueChange: setValue,
open,
onOpenChange: setOpen,
dir: direction,
triggerPointerDownPosRef,
disabled,
children: [
/* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(
SelectNativeOptionsProvider,
{
scope: props.__scopeSelect,
onNativeOptionAdd: React.useCallback((option) => {
setNativeOptionsSet((prev) => new Set(prev).add(option));
}, []),
onNativeOptionRemove: React.useCallback((option) => {
setNativeOptionsSet((prev) => {
const optionsSet = new Set(prev);
optionsSet.delete(option);
return optionsSet;
});
}, []),
children
}
) }),
isFormControl ? /* @__PURE__ */ jsxs(
__scopeSelect,
...providerProps,
internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment2, { children: [
children,
isFormControl ? /* @__PURE__ */ jsx(
SelectBubbleInput,
{
"aria-hidden": true,
required,
tabIndex: -1,
name,
autoComplete,
value,
onChange: (event) => setValue(event.target.value),
disabled,
form,
children: [
value === void 0 ? /* @__PURE__ */ jsx("option", { value: "" }) : null,
Array.from(nativeOptionsSet)
]
},
nativeSelectKey
__scopeSelect
}
) : null
]
] })
}
) });
);
};
Select.displayName = SELECT_NAME;
var TRIGGER_NAME = "SelectTrigger";
@@ -171,7 +179,7 @@ var SelectTrigger = React.forwardRef(
{
type: "button",
role: "combobox",
"aria-controls": context.contentId,
"aria-controls": context.open ? context.contentId : void 0,
"aria-expanded": context.open,
"aria-required": context.required,
"aria-autocomplete": "none",
@@ -225,13 +233,15 @@ var SelectValue = React.forwardRef(
useLayoutEffect(() => {
onValueNodeHasChildrenChange(hasChildren);
}, [onValueNodeHasChildrenChange, hasChildren]);
const showPlaceholder = shouldShowPlaceholder(context.value);
return /* @__PURE__ */ jsx(
Primitive.span,
{
...valueProps,
asChild: showPlaceholder ? false : valueProps.asChild,
ref: composedRefs,
style: { pointerEvents: "none" },
children: shouldShowPlaceholder(context.value) ? /* @__PURE__ */ jsx(Fragment, { children: placeholder }) : children
children: /* @__PURE__ */ jsx(React.Fragment, { children: showPlaceholder ? placeholder : children }, showPlaceholder ? "placeholder" : "value")
}
);
}
@@ -246,37 +256,45 @@ var SelectIcon = React.forwardRef(
);
SelectIcon.displayName = ICON_NAME;
var PORTAL_NAME = "SelectPortal";
var [PortalProvider, usePortalContext] = createSelectContext(PORTAL_NAME, {
forceMount: void 0
});
var SelectPortal = (props) => {
return /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, ...props });
const { __scopeSelect, forceMount, ...portalProps } = props;
return /* @__PURE__ */ jsx(PortalProvider, { scope: props.__scopeSelect, forceMount, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, ...portalProps }) });
};
SelectPortal.displayName = PORTAL_NAME;
var CONTENT_NAME = "SelectContent";
var SelectContent = React.forwardRef(
(props, forwardedRef) => {
const portalContext = usePortalContext(CONTENT_NAME, props.__scopeSelect);
const { forceMount = portalContext.forceMount, ...contentProps } = props;
const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);
const [fragment, setFragment] = React.useState();
useLayoutEffect(() => {
setFragment(new DocumentFragment());
}, []);
if (!context.open) {
const frag = fragment;
return frag ? ReactDOM.createPortal(
/* @__PURE__ */ jsx(SelectContentProvider, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx("div", { children: props.children }) }) }),
frag
) : null;
}
return /* @__PURE__ */ jsx(SelectContentImpl, { ...props, ref: forwardedRef });
return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: ({ present }) => present ? /* @__PURE__ */ jsx(SelectContentImpl, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(SelectContentFragment, { ...contentProps, fragment }) });
}
);
SelectContent.displayName = CONTENT_NAME;
var SelectContentFragment = React.forwardRef((props, forwardedRef) => {
const { __scopeSelect, children, fragment } = props;
if (!fragment) return null;
return ReactDOM.createPortal(
/* @__PURE__ */ jsx(SelectContentProvider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsx("div", { ref: forwardedRef, children }) }) }),
fragment
);
});
SelectContentFragment.displayName = "SelectContentFragment";
var CONTENT_MARGIN = 10;
var [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME);
var CONTENT_IMPL_NAME = "SelectContentImpl";
var Slot = createSlot("SelectContent.RemoveScroll");
var SelectContentImpl = React.forwardRef(
(props, forwardedRef) => {
const { __scopeSelect } = props;
const {
__scopeSelect,
position = "item-aligned",
onCloseAutoFocus,
onEscapeKeyDown,
@@ -350,7 +368,7 @@ var SelectContentImpl = React.forwardRef(
if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {
event.preventDefault();
} else {
if (!content.contains(event.target)) {
if (!event.composedPath().includes(content)) {
onOpenChange(false);
}
}
@@ -713,7 +731,7 @@ var SelectViewport = React.forwardRef(
const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);
const composedRefs = useComposedRefs(forwardedRef, contentContext.onViewportChange);
const prevScrollTopRef = React.useRef(0);
return /* @__PURE__ */ jsxs(Fragment, { children: [
return /* @__PURE__ */ jsxs(Fragment2, { children: [
/* @__PURE__ */ jsx(
"style",
{
@@ -920,7 +938,7 @@ var SelectItemText = React.forwardRef(
onNativeOptionAdd(nativeOption);
return () => onNativeOptionRemove(nativeOption);
}, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);
return /* @__PURE__ */ jsxs(Fragment, { children: [
return /* @__PURE__ */ jsxs(Fragment2, { children: [
/* @__PURE__ */ jsx(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),
itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? ReactDOM.createPortal(itemTextProps.children, context.valueNode) : null
] });
@@ -1060,18 +1078,21 @@ var SelectArrow = React.forwardRef(
(props, forwardedRef) => {
const { __scopeSelect, ...arrowProps } = props;
const popperScope = usePopperScope(__scopeSelect);
const context = useSelectContext(ARROW_NAME, __scopeSelect);
const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);
return context.open && contentContext.position === "popper" ? /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;
return contentContext.position === "popper" ? /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;
}
);
SelectArrow.displayName = ARROW_NAME;
var BUBBLE_INPUT_NAME = "SelectBubbleInput";
var SelectBubbleInput = React.forwardRef(
({ __scopeSelect, value, ...props }, forwardedRef) => {
({ __scopeSelect, ...props }, forwardedRef) => {
const context = useSelectContext(BUBBLE_INPUT_NAME, __scopeSelect);
const { value, onValueChange, required, disabled, name, autoComplete, form } = context;
const { nativeOptions, nativeSelectKey } = context;
const ref = React.useRef(null);
const composedRefs = useComposedRefs(forwardedRef, ref);
const prevValue = usePrevious(value);
const selectValue = value ?? "";
const prevValue = usePrevious(selectValue);
React.useEffect(() => {
const select = ref.current;
if (!select) return;
@@ -1081,24 +1102,40 @@ var SelectBubbleInput = React.forwardRef(
"value"
);
const setValue = descriptor.set;
if (prevValue !== value && setValue) {
if (prevValue !== selectValue && setValue) {
const event = new Event("change", { bubbles: true });
setValue.call(select, value);
setValue.call(select, selectValue);
select.dispatchEvent(event);
}
}, [prevValue, value]);
return /* @__PURE__ */ jsx(
}, [prevValue, selectValue]);
return /* @__PURE__ */ jsxs(
Primitive.select,
{
"aria-hidden": true,
required,
tabIndex: -1,
name,
autoComplete,
disabled,
form,
onChange: (event) => onValueChange(event.target.value),
...props,
style: { ...VISUALLY_HIDDEN_STYLES, ...props.style },
ref: composedRefs,
defaultValue: value
}
defaultValue: selectValue,
children: [
shouldShowPlaceholder(value) ? /* @__PURE__ */ jsx("option", { value: "" }) : null,
Array.from(nativeOptions)
]
},
nativeSelectKey
);
}
);
SelectBubbleInput.displayName = BUBBLE_INPUT_NAME;
function isFunction(value) {
return typeof value === "function";
}
function shouldShowPlaceholder(value) {
return value === "" || value === void 0;
}
@@ -1142,35 +1179,19 @@ function findNextItem(items, search, currentItem) {
function wrapArray(array, startIndex) {
return array.map((_, index) => array[(startIndex + index) % array.length]);
}
var Root2 = Select;
var Trigger = SelectTrigger;
var Value = SelectValue;
var Icon = SelectIcon;
var Portal = SelectPortal;
var Content2 = SelectContent;
var Viewport = SelectViewport;
var Group = SelectGroup;
var Label = SelectLabel;
var Item = SelectItem;
var ItemText = SelectItemText;
var ItemIndicator = SelectItemIndicator;
var ScrollUpButton = SelectScrollUpButton;
var ScrollDownButton = SelectScrollDownButton;
var Separator = SelectSeparator;
var Arrow2 = SelectArrow;
export {
Arrow2 as Arrow,
Content2 as Content,
Group,
Icon,
Item,
ItemIndicator,
ItemText,
Label,
Portal,
Root2 as Root,
ScrollDownButton,
ScrollUpButton,
SelectArrow as Arrow,
SelectContent as Content,
SelectGroup as Group,
SelectIcon as Icon,
SelectItem as Item,
SelectItemIndicator as ItemIndicator,
SelectItemText as ItemText,
SelectLabel as Label,
SelectPortal as Portal,
Select as Root,
SelectScrollDownButton as ScrollDownButton,
SelectScrollUpButton as ScrollUpButton,
Select,
SelectArrow,
SelectContent,
@@ -1187,10 +1208,14 @@ export {
SelectTrigger,
SelectValue,
SelectViewport,
Separator,
Trigger,
Value,
Viewport,
createSelectScope
SelectSeparator as Separator,
SelectTrigger as Trigger,
SelectValue as Value,
SelectViewport as Viewport,
createSelectScope,
SelectBubbleInput as unstable_BubbleInput,
SelectProvider as unstable_Provider,
SelectBubbleInput as unstable_SelectBubbleInput,
SelectProvider as unstable_SelectProvider
};
//# sourceMappingURL=index.mjs.map