SOURCE CODE: Uize.Build.Templates.Module.Widget.Widget (view docs)

<%@
  required (
    'Uize.Array.Join',
    'Uize.Str.Repeat'
  );
  input ({
    widgetNamespace:'string',
    superclass:'string',
    developers:'array',
    hasHtml:'boolean',
    hasCss:'boolean',
    hasLoc:'boolean'
  });
%><%
  var
    _input = input,
    _widgetNamespace = _input.widgetNamespace,
    _widgetModuleName = _widgetNamespace + '.Widget',
    _widgetVisualSamplerModuleName = _widgetNamespace + '.VisualSampler',
    _htmlModuleName = _widgetNamespace + '.Html',
    _cssModuleName = _widgetNamespace + '.Css',
    _required = []
  ;
  _input.hasHtml && _required.push (_htmlModuleName);
  _input.hasCss && _required.push (_cssModuleName);
%><%
  .headComment
%>/* Module Meta Data
  type: Class
  importance: 1
  codeCompleteness: 5
  docCompleteness: 5
*/

/*?
  Introduction
    The =<%= _widgetModuleName %>= module implements a widget class.

    *DEVELOPERS:* <%= Uize.Array.Join.hugJoin (_input.developers || [],'`','`',', ') %>

    Visual Sampler
      Below is a visual sampler of the =<%= _widgetModuleName %>= class...

      .............<%= Uize.Str.Repeat.repeat ('.',_widgetVisualSamplerModuleName.length) %>
      << widget >>

      widgetClass: <%= _widgetVisualSamplerModuleName %>
      .............<%= Uize.Str.Repeat.repeat ('.',_widgetVisualSamplerModuleName.length) %>
*/
<%@
  startBlock ('locPart')
%>      hasLoc:true<%@
  endBlock ()
%><%@
  startBlock ('htmlPart')
%>      set:{
        html:<%= _htmlModuleName %>
      }<%@
  endBlock ()
%><%@
  startBlock ('cssPart')
%>      staticProperties:{
        cssModule:<%= _cssModuleName %>
      }<%@
  endBlock ()
%>
Uize.module ({
  name:'<%= _widgetModuleName %>',
  superclass:'<%= _input.superclass || 'Uize.Widget.V2' %>',
  required:<%= _required -> json -> indent{amount:1} %>,
  builder:function (_superclass) {
    'use strict';

    return _superclass.subclass ({
<%
  var _parts = [];
  _input.hasLoc && _parts.push (locPart ());
  _input.hasHtml && _parts.push (htmlPart ());
  _input.hasCss && _parts.push (cssPart ());
%><%=
  _parts.join (',\n\n')
%>
    });
  }
});