As every framework is different, there is no "one size fits all" solution. Some frameworks might not need templates (for example, the JSON plug-in simply writes JSON to files), others might need a handful of templates, others might need a mix of Javascript and HTML, JSX or even CSS.
The template files that the plug-in provides are what will be turned into the source of the forms components. As each framework defines its components in a different way, template files will be different for every framework, perhaps even for every framework version.
The template files from a plug-in are copied out of the plug-in folder and into the templates folder specified during the Forms CLI project initialisation. This is so that the developers can modify the templates (for example, if every form element needs a certain CSS class, or some custom code needs to be put into every javascript controller) on a per project basis, and use their version control system to version the templates with the project.
Sample Angular Template:
Code Block | ||
---|---|---|
| ||
<ng-form name="<%interaction%>" class="bm-form" <%#showWhen%>ng-show="<%moduleName%>.<%showWhen%>()"<%/showWhen%> <%#hideWhen%>ng-hide="<%moduleName%>.<%hideWhen%>()"<%/hideWhen%>> <%&header%> <%&elements%> <%&footer%> <ng-transclude ng-transclude-slot="pagination"></ng-transclude> <button ng-click="<%moduleName%>.onSaveClick(<%moduleName%>.model)" ng-show="!<%moduleName%>.isSubForm">Submit</button> </ng-form> |
...
Used by the forms transformer during initialisation to copy the templates into the forms project folder. srcFolder
is where in your plugin project the template files are, destFolder
is where they will be copied to. Note that all contents of destFolder
are removed.
Template priming
If you use the template helper module we take advantage of the mustache Mustache.parse function to "prime" a Mustache renderer with the template string. When using the template helper module, service.getByType('my-type')
(see above) returns an object with the template file name as the key (minus the .mustache part), and the value is a "Mustache renderer" - a function that takes an object and returns the compiled template string.
...
Whilst the template helper service uses mustache, you are not forced to use the template helper. This means that you are free to use whatever template system you wish in your plug-in.