Details
Description
As I understand it, if a component requires a CSS stylesheet, you either have to put <style> commands
in the generated HTML or you have to change the global page when you add the component.
The first method means that the user would find it hard to override or change the component, as well
as increased overhead and blowing out the browser cache.
The second method breaks component isolation. Essentially, the main page for an app suddenly must
be concerned about the styles used by various subcomponents.
I believe we would be well served by enhancing the @Shell component to automatically pick up the
stylesheets declared as needed in subcomponents. The situation is similar to how @Body picks up
@Script components and tucks them into just one Javascript block.
This would require a way for a component to register the stylesheets it uses. I would expect a tag in
the jwc that sets the IAsset stylesheet/stylesheets, as then the top level component could just look for
those assets in the contained items.
I would expect, then, that the top level stylesheet/stylesheets passed into the @Shell component would
be augmented silently. There is an argument for a "useComponentStylesheets" attribute that is by
default true to control this behavior.
The result would be that a user would not need to know that a component has added a stylesheet,
because it would just work. It would be snazzy if the addition was smart enough to only include a
stylesheet onec if there were multiple instances of the same component, or if there were two
components using the same stylesheet.
Attachments
Attachments
Issue Links
- is blocked by
-
TAPESTRY-1012 PageRenderSupportImpl.writeInitializationScript(IMarkupWriter) does not use the "writer" parameter
- Resolved