Hi Jens,

I like the idea of decoupling the core and Bootstrap to make it easier to
use other versions.

Maybe the components should be updated to BS4 for T5.5, with a legacy
fallback or a component swap (can't remember the service doing it, we have
our own implementation, it's doing an advice on
ComponentClassResolver#resolveComponentTypeToClassName or
ComponentInstantiatorSource#getInstantiator).

For 5.4 we've developed an internal solution for using different BS
versions, here are some specifics.

We have multi-tenant-apps with different BS versions (so far up to 3), so
we needed a flexible solution that supports the internal BS and other
versions dynamically.

To make it even more flexible we've added SASS-support and compile
Bootstrap from the source files, with the possibility to add files
beforehand to the compilation step with custom variables etc.

The layout component has an annotation that triggers
a ComponentClassTransformWorker2 attaching a JavaScriptStack containing the
BS version decided by a contributable strategy pipeline.

JavaScript modules were the biggest problems, we started with replacing the
internal modules, but ended up adding additional modules instead. This
worked fine after getting all the dependencies right, but every BS version
might break it again, so we're now using the bundled version of BS JS.

We think this could all be cleaned up nicely if the internal BS wouldn't be
as integrated as it is right now.

Eventually we will release it as open-source, but having an integration
into Tapestry (as a new tapestry-*) would be even nicer :-)

Best regards
Ben


On Thu, Feb 14, 2019 at 10:14 AM Jens Breitenstein <mailingl...@j-b-s.de>
wrote:

> Hi Tapestry guys!
>
> I want to hear/read your opinion about getting rid of the Bootstrap
> Library from T5 core.
> I would like to move all BS related code (css/js) to a seperate module
> like "tapestry-bootstrap3" and decouple the hardcoded BS from T5.
> Furthermore I would like to see a second module "tapestry-bootstrap4"
> which uses BS4.
>
>  From the sources I see direct dependencies are less than expected. Some
> tml's use it (I just ignore the internal T5 pages for now):
>
>      AjaxFormLoop.tml
>          class="btn btn-default btn-sm"
>          <t:glyphicon name="plus-sign"/>
>
>      BeanEditForm.tml
>          class="btn-toolbar"
>          class="btn-group"
>          class="btn btn-primary"
>
>      DevTool.tml
>          <t:glyphicon name="cog"/>
>          class="dropdown-menu"
>          class="dropdown-header"
>
>      ExceptionDisplay.tml
>          class="well"
>          class="pull-right"
>          class="checkbox"        // ?
>
>      Palette.tml
>          class="btn-group-vertical"
>
> and some JAVA references like:
>
>      JavaScriptModule.java
>          configuration.add("bootstrap/ ...")
>
>          bundledModules=...
>
>
> Do you think it's worths looking into it, digging deeper?
> Any pitfalls I should consider?
> Anyone interested to discuss it?
>
>
> Jens
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

Reply via email to