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 7452546..7ad3d9a 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 @@ -4,6 +4,7 @@ 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 org.codehaus.groovy.runtime.InvokerHelper import static WebViewComponentFactories.withAttr @@ -14,6 +15,7 @@ class DefaultWebViewComponentScope extends DefaultComponentScope implements WebV new DefaultWebViewComponentScope().tap { addWithAttr(Echo) addWithAttr(Each) + addWithAttr(WhenNotNull) } } diff --git a/web-view-components/src/main/groovy/groowt/view/component/web/lib/WhenNotNull.groovy b/web-view-components/src/main/groovy/groowt/view/component/web/lib/WhenNotNull.groovy new file mode 100644 index 0000000..0517fdc --- /dev/null +++ b/web-view-components/src/main/groovy/groowt/view/component/web/lib/WhenNotNull.groovy @@ -0,0 +1,28 @@ +package groowt.view.component.web.lib + +import groowt.view.View +import groowt.view.component.runtime.DefaultComponentWriter + +class WhenNotNull extends DelegatingWebViewComponent { + + private final Object item + private final Closure render + + WhenNotNull(Map attr) { + this.item = attr.item + this.render = attr.render + } + + @Override + protected View getDelegate() { + return { Writer w -> + if (this.item != null) { + def cw = new DefaultComponentWriter(w) + cw.renderContext = this.context.renderContext + cw.componentContext = this.context + cw << this.render(item) + } + } + } + +}