const mixinafEfanXtra::EfanLibrary

afEfanXtra::EfanLibrary

Use to manually render a component; an library instance exists for each contributed pod.

As well as the generic renderComponent() method, libraries also have render methods for each individual component. Example, if you had a component:

const mixin CreamPie : EfanComponent {
  @InitRender
  Void initRender(Str x, Int y) { ... }
}

Then the corresponding library would define:

Obj renderCreamPie(Str x, Int y, |Obj?|? bodyFunc := null) { ... }

Each library is automatically injected into your efan components as a field. The field has the same name as the contribution. This allows you to group / namespace components in pods and distribute them as 3rd Party libraries. Example, if CreamPie was in a pod called pies, then if the pies AppModule contained:

using afIoc
using afEfanExtra

class AppModule {
  @Contribute { serviceType=EfanLibraries# }
  static Void contributeEfanLibs(MappedConfig config) {
    config["pies"] = Pod.find("pies")
  }
}

Then any application that references the pies pod automatically has the component pies.creamPie, which may be rendered with:

<% pies.renderCreamPie("cream", 7) %>
fitsInitRender

Source

Bool fitsInitRender(Type comType, Type[] paramTypes)

Utility method to check if a set of parameters fit the component's @InitRender method.

name

Source

abstract Str name

The name of library - given when you contribute a pod to EfanLibraries.

renderComponent

Source

Str renderComponent(Type comType, Obj?[] initArgs, |Obj?? bodyFunc := null)

Renders the given efan component and returns the rendered Str. If the @InitRender method returns anything other than Void, null or true, rendering is aborted and the value returned.