-
Notifications
You must be signed in to change notification settings - Fork 47
/
DomElement.kt
67 lines (50 loc) · 1.48 KB
/
DomElement.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package jetbrains.datalore.base.domCore.dom
import org.w3c.dom.Element
typealias DomElement = Element
fun DomElement.hasClassName(className: String): Boolean {
return classList.contains(className)
}
fun DomElement.removeClassName(className: String) {
classList.remove(className)
}
fun DomElement.addClassName(className: String) {
classList.add(className)
}
fun DomElement.addClassNames(vararg classNames: String) {
classList.add(*classNames)
}
fun DomElement.replaceClassName(oldClassName: String, newClassName: String) {
classList.remove(oldClassName)
classList.add(newClassName)
}
val DomElement.childElements: DomElementList
get() = this.children
val DomElement.childElementsList: List<DomElement>
get() = DomList(this)
val DomElement.firstChildElement: DomElement?
get() = this.firstElementChild
fun DomElement.setDisabled(state: Boolean) {
if (state) {
setAttribute("disabled", "disabled")
} else {
removeAttribute("disabled")
}
}
fun DomElement.setTabIndex(index: Int) {
setAttribute("tabindex", index.toString())
}
fun DomElement.clearTabIndex() {
removeAttribute("tabindex")
}
fun DomElement.getAbsoluteLeft(): Double {
return getBoundingClientRect().left
}
fun DomElement.getAbsoluteRight(): Double {
return getBoundingClientRect().right
}
fun DomElement.getAbsoluteTop(): Double {
return getBoundingClientRect().top
}
fun DomElement.getAbsoluteBottom(): Double {
return getBoundingClientRect().bottom
}