From 93cf3905ae42e40a5a61ab879f2da27a285b99fd Mon Sep 17 00:00:00 2001 From: JesseBrault0709 <62299747+JesseBrault0709@users.noreply.github.com> Date: Fri, 31 May 2024 10:15:47 +0200 Subject: [PATCH] Added Each to std wvc library. --- .../groowt/view/component/web/lib/Each.groovy | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 web-view-components/src/main/groovy/groowt/view/component/web/lib/Each.groovy diff --git a/web-view-components/src/main/groovy/groowt/view/component/web/lib/Each.groovy b/web-view-components/src/main/groovy/groowt/view/component/web/lib/Each.groovy new file mode 100644 index 0000000..3fca04b --- /dev/null +++ b/web-view-components/src/main/groovy/groowt/view/component/web/lib/Each.groovy @@ -0,0 +1,27 @@ +package groowt.view.component.web.lib + +import groowt.view.View +import groowt.view.component.runtime.DefaultComponentWriter +import org.jetbrains.annotations.Nullable + +class Each extends DelegatingWebViewComponent { + + private final Collection items + private final @Nullable Closure transform + + Each(Map attr) { + items = attr.items + transform = attr.transform + } + + @Override + protected View getDelegate() { + return { Writer w -> + def cw = new DefaultComponentWriter(w, this.context.renderContext, this.context) + items.forEach { + cw << (transform ? transform(it) : it) + } + } + } + +}