core-style and classes does not seem to work

96 Views Asked by At

I am trying to understand core-style. I noticed that in all examples I have seen so far, only elements eg Button are referenced in a core-style - there is no class reference (eg .blue). I tried to place a class reference in the core-style but it does not render. Please see the example below

.html

    <link href='../../../../packages/polymer/polymer.html' rel='import' >
    <link href='../../../../packages/core_elements/core_style.html' rel='import' >

    <polymer-element name='blue-theme'>

      <template>
        <core-style id='blue-theme'>
            :host {
                background-color: red;

                .lb-container1 {
                   background-color: {{lb50}};
                   padding-top: 5px;
                 padding-bottom: 5px;
                 width: {{width}}
                }   
          }

        </core-style>
      </template>

      <script type='application/dart' src='blue_theme.dart'></script>
    </polymer-element>

.dart

import 'package:polymer/polymer.dart';

import 'package:epimss_shared/epimss_shared_client.dart' hide DataEvent;

@CustomTag( 'blue-theme' )
class BlueTheme extends PolymerElement
{
  String topic = '';

  @observable String lb50 = LightBlue['50'];
  @observable String lb100 = LightBlue['100'];
  @observable String lb200 = LightBlue['200'];

  BlueTheme.created() : super.created();

  @published
  String get width => readValue( #width );
  set width(String value) => writeValue( #width, value );

  @override
  void attached()
  {
     super.attached();
     topic = this.dataset['topic'];

  }
}

The above code does not render.

Thanks

1

There are 1 best solutions below

4
Günter Zöchbauer On

You only created a <core-style> producer (provides reusable styles). What you also need is a <core-style> consumer.

<core-style ref="blue-theme"></core-style>

I haven't used it myself but I think just adding this line should solve the problem. You can have the producer and consumer in different elements. That is rather the point of the element. Define a style once and reuse it just by referencing.

This tutorial looks good so far https://pascalprecht.github.io/2014/08/01/sharing-styles-across-web-components-with-polymer-and-core-style/