reka-ui
Version:
Vue port for Radix UI Primitives.
152 lines (149 loc) • 3.85 kB
JavaScript
import { useForwardPropsEmits } from "../shared/useForwardPropsEmits.js";
import { Presence_default } from "../Presence/Presence.js";
import { injectSelectRootContext } from "./SelectRoot.js";
import { SelectContentImpl_default } from "./SelectContentImpl.js";
import { SelectProvider_default } from "./SelectProvider.js";
import { Teleport, computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, guardReactiveProps, normalizeProps, onMounted, openBlock, ref, renderSlot, unref, watch, withCtx } from "vue";
//#region src/Select/SelectContent.vue?vue&type=script&setup=true&lang.ts
const _hoisted_1 = { key: 1 };
var SelectContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
inheritAttrs: false,
__name: "SelectContent",
props: {
forceMount: {
type: Boolean,
required: false
},
position: {
type: String,
required: false
},
bodyLock: {
type: Boolean,
required: false
},
side: {
type: null,
required: false
},
sideOffset: {
type: Number,
required: false
},
sideFlip: {
type: Boolean,
required: false
},
align: {
type: null,
required: false
},
alignOffset: {
type: Number,
required: false
},
alignFlip: {
type: Boolean,
required: false
},
avoidCollisions: {
type: Boolean,
required: false
},
collisionBoundary: {
type: null,
required: false
},
collisionPadding: {
type: [Number, Object],
required: false
},
arrowPadding: {
type: Number,
required: false
},
sticky: {
type: String,
required: false
},
hideWhenDetached: {
type: Boolean,
required: false
},
positionStrategy: {
type: String,
required: false
},
updatePositionStrategy: {
type: String,
required: false
},
disableUpdateOnLayoutShift: {
type: Boolean,
required: false
},
prioritizePosition: {
type: Boolean,
required: false
},
reference: {
type: null,
required: false
},
asChild: {
type: Boolean,
required: false
},
as: {
type: null,
required: false
}
},
emits: [
"closeAutoFocus",
"escapeKeyDown",
"pointerDownOutside"
],
setup(__props, { emit: __emit }) {
const props = __props;
const emits = __emit;
const forwarded = useForwardPropsEmits(props, emits);
const rootContext = injectSelectRootContext();
const fragment = ref();
onMounted(() => {
fragment.value = new DocumentFragment();
});
const presenceRef = ref();
const present = computed(() => props.forceMount || rootContext.open.value);
const renderPresence = ref(present.value);
watch(present, () => {
setTimeout(() => renderPresence.value = present.value);
});
return (_ctx, _cache) => {
return present.value || renderPresence.value || presenceRef.value?.present ? (openBlock(), createBlock(unref(Presence_default), {
key: 0,
ref_key: "presenceRef",
ref: presenceRef,
present: present.value
}, {
default: withCtx(() => [createVNode(SelectContentImpl_default, normalizeProps(guardReactiveProps({
...unref(forwarded),
..._ctx.$attrs
})), {
default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
_: 3
}, 16)]),
_: 3
}, 8, ["present"])) : fragment.value ? (openBlock(), createElementBlock("div", _hoisted_1, [(openBlock(), createBlock(Teleport, { to: fragment.value }, [createVNode(SelectProvider_default, { context: unref(rootContext) }, {
default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
_: 3
}, 8, ["context"])], 8, ["to"]))])) : createCommentVNode("v-if", true);
};
}
});
//#endregion
//#region src/Select/SelectContent.vue
var SelectContent_default = SelectContent_vue_vue_type_script_setup_true_lang_default;
//#endregion
export { SelectContent_default };
//# sourceMappingURL=SelectContent.js.map