Added WhenNotNull lib component.

This commit is contained in:
JesseBrault0709 2024-06-01 10:06:04 +02:00
parent 39fd0c8e48
commit 2fabe1765a
2 changed files with 30 additions and 0 deletions

View File

@ -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)
}
}

View File

@ -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)
}
}
}
}