227 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			227 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
<!--
 | 
						|
@license
 | 
						|
Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
 | 
						|
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
 | 
						|
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
 | 
						|
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
 | 
						|
Code distributed by Google as part of the polymer project is also
 | 
						|
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
 | 
						|
-->
 | 
						|
 | 
						|
<link rel="import" href="../polymer/polymer.html">
 | 
						|
<link rel="import" href="../iron-flex-layout/iron-flex-layout.html">
 | 
						|
<link rel="import" href="../iron-image/iron-image.html">
 | 
						|
<link rel="import" href="../paper-material/paper-material.html">
 | 
						|
<link rel="import" href="../paper-styles/default-theme.html">
 | 
						|
 | 
						|
<!--
 | 
						|
Material design: [Cards](https://www.google.com/design/spec/components/cards.html)
 | 
						|
 | 
						|
`paper-card` is a container with a drop shadow.
 | 
						|
 | 
						|
Example:
 | 
						|
 | 
						|
    <paper-card heading="Card Title">
 | 
						|
      <div class="card-content">Some content</div>
 | 
						|
      <div class="card-actions">
 | 
						|
        <paper-button>Some action</paper-button>
 | 
						|
      </div>
 | 
						|
    </paper-card>
 | 
						|
 | 
						|
Example - top card image:
 | 
						|
 | 
						|
    <paper-card heading="Card Title" image="/path/to/image.png">
 | 
						|
      ...
 | 
						|
    </paper-card>
 | 
						|
 | 
						|
### Accessibility
 | 
						|
 | 
						|
By default, the `aria-label` will be set to the value of the `heading` attribute.
 | 
						|
 | 
						|
### Styling
 | 
						|
 | 
						|
The following custom properties and mixins are available for styling:
 | 
						|
 | 
						|
Custom property | Description | Default
 | 
						|
----------------|-------------|----------
 | 
						|
`--paper-card-background-color` | The background color of the card | `--primary-background-color`
 | 
						|
`--paper-card-header-color` | The color of the header text | `#000`
 | 
						|
`--paper-card-header` | Mixin applied to the card header section | `{}`
 | 
						|
`--paper-card-header-text` | Mixin applied to the title in the card header section | `{}`
 | 
						|
`--paper-card-header-image` | Mixin applied to the image in the card header section | `{}`
 | 
						|
`--paper-card-header-image-text` | Mixin applied to the text overlapping the image in the card header section | `{}`
 | 
						|
`--paper-card-content` | Mixin applied to the card content section| `{}`
 | 
						|
`--paper-card-actions` | Mixin applied to the card action section | `{}`
 | 
						|
`--paper-card` | Mixin applied to the card | `{}`
 | 
						|
 | 
						|
@group Paper Elements
 | 
						|
@element paper-card
 | 
						|
@demo demo/index.html
 | 
						|
-->
 | 
						|
 | 
						|
<dom-module id="paper-card">
 | 
						|
  <template>
 | 
						|
    <style include="paper-material">
 | 
						|
      :host {
 | 
						|
        display: inline-block;
 | 
						|
        position: relative;
 | 
						|
        box-sizing: border-box;
 | 
						|
        background-color: var(--paper-card-background-color, --primary-background-color);
 | 
						|
        border-radius: 2px;
 | 
						|
 | 
						|
        @apply(--paper-font-common-base);
 | 
						|
        @apply(--paper-card);
 | 
						|
      }
 | 
						|
 | 
						|
      /* IE 10 support for HTML5 hidden attr */
 | 
						|
      [hidden] {
 | 
						|
        display: none !important;
 | 
						|
      }
 | 
						|
 | 
						|
      .header {
 | 
						|
        position: relative;
 | 
						|
        border-top-left-radius: inherit;
 | 
						|
        border-top-right-radius: inherit;
 | 
						|
        overflow: hidden;
 | 
						|
 | 
						|
        @apply(--paper-card-header);
 | 
						|
      }
 | 
						|
 | 
						|
      .header iron-image {
 | 
						|
        display: block;
 | 
						|
        width: 100%;
 | 
						|
        --iron-image-width: 100%;
 | 
						|
        pointer-events: none;
 | 
						|
 | 
						|
        @apply(--paper-card-header-image);
 | 
						|
      }
 | 
						|
 | 
						|
      .header .title-text {
 | 
						|
        padding: 16px;
 | 
						|
        font-size: 24px;
 | 
						|
        font-weight: 400;
 | 
						|
        color: var(--paper-card-header-color, #000);
 | 
						|
 | 
						|
        @apply(--paper-card-header-text);
 | 
						|
      }
 | 
						|
 | 
						|
      .header .title-text.over-image {
 | 
						|
        position: absolute;
 | 
						|
        bottom: 0px;
 | 
						|
 | 
						|
        @apply(--paper-card-header-image-text);
 | 
						|
      }
 | 
						|
 | 
						|
      :host ::content .card-content {
 | 
						|
        padding: 16px;
 | 
						|
        position:relative;
 | 
						|
 | 
						|
        @apply(--paper-card-content);
 | 
						|
      }
 | 
						|
 | 
						|
      :host ::content .card-actions {
 | 
						|
        border-top: 1px solid #e8e8e8;
 | 
						|
        padding: 5px 16px;
 | 
						|
        position:relative;
 | 
						|
 | 
						|
        @apply(--paper-card-actions);
 | 
						|
      }
 | 
						|
    </style>
 | 
						|
 | 
						|
    <div class="header">
 | 
						|
      <iron-image hidden$="[[!image]]" src="[[image]]" preload$="[[preloadImage]]" fade$="[[fadeImage]]"></iron-image>
 | 
						|
      <div hidden$="[[!heading]]" class$="[[_computeHeadingClass(image)]]">[[heading]]</div>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <content></content>
 | 
						|
  </template>
 | 
						|
 | 
						|
  <script>
 | 
						|
    Polymer({
 | 
						|
      is: 'paper-card',
 | 
						|
 | 
						|
      properties: {
 | 
						|
        /**
 | 
						|
         * The title of the card.
 | 
						|
         */
 | 
						|
        heading: {
 | 
						|
          type: String,
 | 
						|
          value: '',
 | 
						|
          observer: '_headingChanged'
 | 
						|
        },
 | 
						|
 | 
						|
        /**
 | 
						|
         * The url of the title image of the card.
 | 
						|
         */
 | 
						|
        image: {
 | 
						|
          type: String,
 | 
						|
          value: ''
 | 
						|
        },
 | 
						|
 | 
						|
        /**
 | 
						|
         * When `true`, any change to the image url property will cause the
 | 
						|
         * `placeholder` image to be shown until the image is fully rendered.
 | 
						|
         */
 | 
						|
        preloadImage: {
 | 
						|
          type: Boolean,
 | 
						|
          value: false
 | 
						|
        },
 | 
						|
 | 
						|
        /**
 | 
						|
         * When `preloadImage` is true, setting `fadeImage` to true will cause the
 | 
						|
         * image to fade into place.
 | 
						|
         */
 | 
						|
        fadeImage: {
 | 
						|
          type: Boolean,
 | 
						|
          value: false
 | 
						|
        },
 | 
						|
 | 
						|
        /**
 | 
						|
         * The z-depth of the card, from 0-5.
 | 
						|
         */
 | 
						|
        elevation: {
 | 
						|
          type: Number,
 | 
						|
          value: 1,
 | 
						|
          reflectToAttribute: true
 | 
						|
        },
 | 
						|
 | 
						|
        /**
 | 
						|
         * Set this to true to animate the card shadow when setting a new
 | 
						|
         * `z` value.
 | 
						|
         */
 | 
						|
        animatedShadow: {
 | 
						|
          type: Boolean,
 | 
						|
          value: false
 | 
						|
        },
 | 
						|
 | 
						|
        /**
 | 
						|
         * Read-only property used to pass down the `animatedShadow` value to
 | 
						|
         * the underlying paper-material style (since they have different names).
 | 
						|
         */
 | 
						|
        animated: {
 | 
						|
          type: Boolean,
 | 
						|
          reflectToAttribute: true,
 | 
						|
          readOnly: true,
 | 
						|
          computed: '_computeAnimated(animatedShadow)'
 | 
						|
        }
 | 
						|
      },
 | 
						|
 | 
						|
      _headingChanged: function(heading) {
 | 
						|
        var label = this.getAttribute('aria-label');
 | 
						|
        this.setAttribute('aria-label', heading);
 | 
						|
      },
 | 
						|
 | 
						|
      _computeHeadingClass: function(image) {
 | 
						|
        var cls = 'title-text';
 | 
						|
        if (image)
 | 
						|
          cls += ' over-image';
 | 
						|
        return cls;
 | 
						|
      },
 | 
						|
 | 
						|
      _computeAnimated: function(animatedShadow) {
 | 
						|
        return animatedShadow;
 | 
						|
      }
 | 
						|
    });
 | 
						|
  </script>
 | 
						|
</dom-module>
 |