add EvalJs on Sibling, EvalJs on Children, EvalJs on Parent

This commit is contained in:
maddalax 2024-09-29 11:45:52 -05:00
parent 3337869c0d
commit 50b86007cf
2 changed files with 37 additions and 24 deletions

View file

@ -186,45 +186,55 @@ func ToggleClassOnElement(selector, class string) ComplexJsCommand {
))
}
func SetClassOnChildren(selector, class string) ComplexJsCommand {
func EvalJsOnParent(js string) ComplexJsCommand {
// language=JavaScript
return EvalJs(fmt.Sprintf(`
var children = self.querySelectorAll('%s');
children.forEach(function(child) {
child.classList.add('%s');
if(!self.parentElement) { return; }
let element = self.parentElement;
%s
`, js))
}
func EvalJsOnChildren(selector, js string) ComplexJsCommand {
// language=JavaScript
return EvalJs(fmt.Sprintf(`
let children = self.querySelectorAll('%s');
children.forEach(function(element) {
%s
});
`, selector, class))
`, selector, js))
}
func EvalJsOnSibling(selector, js string) ComplexJsCommand {
// language=JavaScript
return EvalJs(fmt.Sprintf(`
if(!self.parentElement) { return; }
let siblings = self.parentElement.querySelectorAll('%s');
siblings.forEach(function(element) {
%s
});
`, selector, js))
}
func SetClassOnChildren(selector, class string) ComplexJsCommand {
// language=JavaScript
return EvalJsOnChildren(selector, fmt.Sprintf("element.classList.add('%s')", class))
}
func SetClassOnSibling(selector, class string) ComplexJsCommand {
// language=JavaScript
return EvalJs(fmt.Sprintf(`
var siblings = self.parentElement.querySelectorAll('%s');
siblings.forEach(function(sibling) {
sibling.classList.remove('%s');
});
self.classList.add('%s');
`, selector, class, class))
return EvalJsOnSibling(selector, fmt.Sprintf("element.classList.add('%s')", class))
}
func RemoveClassOnSibling(selector, class string) ComplexJsCommand {
// language=JavaScript
return EvalJs(fmt.Sprintf(`
var siblings = self.parentElement.querySelectorAll('%s');
siblings.forEach(function(sibling) {
sibling.classList.remove('%s');
});
`, selector, class))
return EvalJsOnSibling(selector, fmt.Sprintf("element.classList.remove('%s')", class))
}
func RemoveClassOnChildren(selector, class string) ComplexJsCommand {
// language=JavaScript
return EvalJs(fmt.Sprintf(`
var children = self.querySelectorAll('%s');
children.forEach(function(child) {
child.classList.remove('%s');
});
`, selector, class))
return EvalJsOnChildren(selector, fmt.Sprintf("element.classList.remove('%s')", class))
}
func Alert(text string) SimpleJsCommand {

View file

@ -15,6 +15,9 @@ var RemoveClass = h.RemoveClass
var Alert = h.Alert
var SetClassOnChildren = h.SetClassOnChildren
var RemoveClassOnChildren = h.RemoveClassOnChildren
var EvalJsOnChildren = h.EvalJsOnChildren
var EvalJsOnSibling = h.EvalJsOnSibling
var EvalJsOnParent = h.EvalJsOnParent
var SetClassOnSibling = h.SetClassOnSibling
var RemoveClassOnSibling = h.RemoveClassOnSibling
var Remove = h.Remove