25 lines
		
	
	
		
			549 B
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			549 B
		
	
	
	
		
			Vue
		
	
	
| import type { FunctionalComponent, PropType } from 'vue';
 | |
| import { cloneVNode } from 'vue';
 | |
| 
 | |
| export interface ItemProps {
 | |
|   setRef: (element: HTMLElement) => void;
 | |
| }
 | |
| 
 | |
| const Item: FunctionalComponent<ItemProps> = ({ setRef }, { slots }) => {
 | |
|   const children = slots.default?.();
 | |
| 
 | |
|   return children && children.length
 | |
|     ? cloneVNode(children[0], {
 | |
|         ref: setRef as any,
 | |
|       })
 | |
|     : children;
 | |
| };
 | |
| Item.props = {
 | |
|   setRef: {
 | |
|     type: Function as PropType<(element: HTMLElement) => void>,
 | |
|     default: () => {},
 | |
|   },
 | |
| };
 | |
| 
 | |
| export default Item;
 |