mostly-dom
Version:
A virtual-dom for TypeScript
25 lines (18 loc) • 553 B
text/typescript
import { ElementVNode, Module } from '../'
import { BaseModule } from './BaseModule'
export function createFocusModule(): Module {
return new FocusModule()
}
class FocusModule extends BaseModule {
public insert(vNode: ElementVNode) {
setFocus(vNode)
}
public update(_: ElementVNode, vNode: ElementVNode) {
setFocus(vNode)
}
}
function setFocus(vNode: ElementVNode) {
const { props: { focus = false }, element } = vNode
if (focus && typeof (element as HTMLElement).focus === 'function')
(element as HTMLElement).focus()
}