reka-ui
Version:
Vue port for Radix UI Primitives.
60 lines (57 loc) • 2.04 kB
JavaScript
import { defineComponent, computed, onMounted, onBeforeUnmount, createBlock, openBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';
import { u as useForwardExpose } from '../shared/useForwardExpose.js';
import { P as Primitive } from '../Primitive/Primitive.js';
import { i as injectSelectRootContext } from './SelectRoot.js';
import { i as injectSelectContentContext } from './SelectContentImpl.js';
import { i as injectSelectItemContext } from './SelectItem.js';
const _sfc_main = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "SelectItemText",
props: {
asChild: { type: Boolean },
as: { default: "span" }
},
setup(__props) {
const props = __props;
const rootContext = injectSelectRootContext();
const contentContext = injectSelectContentContext();
const itemContext = injectSelectItemContext();
const { forwardRef, currentElement: itemTextElement } = useForwardExpose();
const optionProps = computed(() => {
return {
value: itemContext.value,
disabled: itemContext.disabled.value,
textContent: itemTextElement.value?.textContent ?? itemContext.value?.toString() ?? ""
};
});
onMounted(() => {
if (!itemTextElement.value)
return;
itemContext.onItemTextChange(itemTextElement.value);
contentContext.itemTextRefCallback(
itemTextElement.value,
itemContext.value,
itemContext.disabled.value
);
rootContext.onOptionAdd(optionProps.value);
});
onBeforeUnmount(() => {
rootContext.onOptionRemove(optionProps.value);
});
return (_ctx, _cache) => {
return openBlock(), createBlock(unref(Primitive), mergeProps({
id: unref(itemContext).textId,
ref: unref(forwardRef)
}, { ...props, ..._ctx.$attrs }), {
default: withCtx(() => [
renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 16, ["id"]);
};
}
});
export { _sfc_main as _ };
//# sourceMappingURL=SelectItemText.js.map