mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
// -----------------------------------------------------------------------------
|
|
// useRef
|
|
// -----------------------------------------------------------------------------
|
|
|
|
import type { Component } from "./component/component";
|
|
import { getCurrent } from "./component/component_node";
|
|
|
|
/**
|
|
* The purpose of this hook is to allow components to get a reference to a sub
|
|
* html node or component.
|
|
*/
|
|
interface Ref<C extends Component = Component> {
|
|
el: HTMLElement | null;
|
|
comp: C | null;
|
|
}
|
|
|
|
export function useRef<C extends Component = Component>(name: string): Ref<C> {
|
|
const node = getCurrent()!;
|
|
return {
|
|
get el(): HTMLElement | null {
|
|
const val = node.refs[name];
|
|
return val || null;
|
|
// if (val instanceof HTMLElement) {
|
|
// return val;
|
|
// } else if (val instanceof Component) {
|
|
// return val.el;
|
|
// }
|
|
// return null;
|
|
},
|
|
get comp(): C | null {
|
|
return null;
|
|
// const val = node.refs && node.refs[name];
|
|
// return val instanceof Component ? (val as C) : null;
|
|
},
|
|
};
|
|
}
|