element-plus
Version:
A Component Library for Vue 3
45 lines (40 loc) • 1.22 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
require('../../../utils/index.js');
var runtime = require('../../../utils/vue/props/runtime.js');
var refs = require('../../../utils/vue/refs.js');
var vnode = require('../../../utils/vue/vnode.js');
const forwardRefProps = runtime.buildProps({
setRef: {
type: runtime.definePropType(Function),
required: true
},
onlyChild: Boolean
});
var ForwardRef = vue.defineComponent({
props: forwardRefProps,
setup(props, {
slots
}) {
const fragmentRef = vue.ref();
const setRef = refs.composeRefs(fragmentRef, (el) => {
if (el) {
props.setRef(el.nextElementSibling);
} else {
props.setRef(null);
}
});
return () => {
var _a;
const [firstChild] = ((_a = slots.default) == null ? void 0 : _a.call(slots)) || [];
const child = props.onlyChild ? vnode.ensureOnlyChild(firstChild.children) : firstChild.children;
return vue.createVNode(vue.Fragment, {
"ref": setRef
}, [child]);
};
}
});
exports["default"] = ForwardRef;
exports.forwardRefProps = forwardRefProps;
//# sourceMappingURL=forward-ref.js.map
;