From a034dafe2404f8d244ea3aa0a633dfd350d36b54 Mon Sep 17 00:00:00 2001 From: JesseBrault0709 <62299747+JesseBrault0709@users.noreply.github.com> Date: Sat, 8 Jun 2024 10:24:45 +0200 Subject: [PATCH] Added WhenNotEmpty component. --- .../web/DefaultWebViewComponentScope.groovy | 6 ++--- .../component/web/lib/WhenNotEmpty.groovy | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 web-view-components/src/main/groovy/groowt/view/component/web/lib/WhenNotEmpty.groovy diff --git a/web-view-components/src/main/groovy/groowt/view/component/web/DefaultWebViewComponentScope.groovy b/web-view-components/src/main/groovy/groowt/view/component/web/DefaultWebViewComponentScope.groovy index 7ad3d9a..9b8c021 100644 --- a/web-view-components/src/main/groovy/groowt/view/component/web/DefaultWebViewComponentScope.groovy +++ b/web-view-components/src/main/groovy/groowt/view/component/web/DefaultWebViewComponentScope.groovy @@ -1,10 +1,7 @@ package groowt.view.component.web import groowt.view.component.context.DefaultComponentScope -import groowt.view.component.web.lib.Each -import groowt.view.component.web.lib.Echo -import groowt.view.component.web.lib.IntrinsicHtml -import groowt.view.component.web.lib.WhenNotNull +import groowt.view.component.web.lib.* import org.codehaus.groovy.runtime.InvokerHelper import static WebViewComponentFactories.withAttr @@ -15,6 +12,7 @@ class DefaultWebViewComponentScope extends DefaultComponentScope implements WebV new DefaultWebViewComponentScope().tap { addWithAttr(Echo) addWithAttr(Each) + addWithAttr(WhenNotEmpty) addWithAttr(WhenNotNull) } } diff --git a/web-view-components/src/main/groovy/groowt/view/component/web/lib/WhenNotEmpty.groovy b/web-view-components/src/main/groovy/groowt/view/component/web/lib/WhenNotEmpty.groovy new file mode 100644 index 0000000..b19ce6e --- /dev/null +++ b/web-view-components/src/main/groovy/groowt/view/component/web/lib/WhenNotEmpty.groovy @@ -0,0 +1,24 @@ +package groowt.view.component.web.lib + +import groowt.view.View +import groowt.view.component.runtime.DefaultComponentWriter + +class WhenNotEmpty extends DelegatingWebViewComponent { + + private final Collection items + + WhenNotEmpty(Map attr) { + items = attr.items + } + + @Override + protected View getDelegate() { + return { Writer w -> + if (!items.empty) { + def cw = new DefaultComponentWriter(w, context.renderContext, context) + children.each { cw << it } + } + } + } + +}