From f2bf1572456412f109d06c6a49e34cfbe924bbfa Mon Sep 17 00:00:00 2001 From: bptato Date: Mon, 2 Jan 2023 02:45:24 +0100 Subject: dom: support a few more getters/setters --- src/html/dom.nim | 55 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 8 deletions(-) (limited to 'src/html') diff --git a/src/html/dom.nim b/src/html/dom.nim index d6820d50..1a831a5e 100644 --- a/src/html/dom.nim +++ b/src/html/dom.nim @@ -1152,6 +1152,13 @@ func target0*(element: Element): string = return base.attr("target") return "" +# HTMLHyperlinkElementUtils (for and ) +func href0[T: HTMLAnchorElement|HTMLAreaElement](element: T): string = + if element.attrb("href"): + let url = parseUrl(element.attr("href"), some(element.document.url)) + if url.issome: + return $url.get + # func target(base: HTMLBaseElement): string {.jsfget.} = base.attr("target") @@ -1159,13 +1166,52 @@ func target(base: HTMLBaseElement): string {.jsfget.} = proc target(base: HTMLBaseElement, target: string) {.jsfset.} = base.attr("target", target) -# +func href(base: HTMLBaseElement): string {.jsfget.} = + if base.attrb("href"): + #TODO with fallback base url + let url = parseUrl(base.attr("href")) + if url.isSome: + return $url.get + +# func target(anchor: HTMLAnchorElement): string {.jsfget.} = anchor.attr("target") proc target(anchor: HTMLAnchorElement, target: string) {.jsfset.} = anchor.attr("target", target) +func href*(anchor: HTMLAnchorElement): string {.jsfget.} = + anchor.href0 + +proc href(anchor: HTMLAnchorElement, href: string) {.jsfset.} = + anchor.attr("href", href) + +func `$`(anchor: HTMLAnchorElement): string {.jsfunc.} = + anchor.href + +# +func href(area: HTMLAreaElement): string {.jsfget.} = + area.href0 + +proc href(area: HTMLAreaElement, href: string) {.jsfset.} = + area.attr("href", href) + +func `$`(area: HTMLAreaElement): string {.jsfunc.} = + area.href + +# +func href*(link: HTMLLinkElement): string {.jsfget.} = + link.attr("href") + +proc href*(link: HTMLLinkElement, href: string) {.jsfset.} = + link.attr("href", href) + +func target(link: HTMLLinkElement): string {.jsfget.} = + link.attr("target") + +proc target(link: HTMLLinkElement, target: string) {.jsfset.} = + link.attr("target", target) + #