Tapestry
  1. Tapestry
  2. TAPESTRY-199

Addition of a simple way to get component CSS stylesheets into an overall page

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.0, 4.0.2
    • Fix Version/s: 4.1.1
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      Operating System: All
      Platform: All

      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.

        Issue Links

          Activity

          No work has yet been logged on this issue.

            People

            • Assignee:
              Andreas Andreou
              Reporter:
              Scott Ellsworth
            • Votes:
              9 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development