Blame view

bower_components/iron-media-query/iron-media-query.html 2.65 KB
eb240478   Luigi Serra   public room cards...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
  <!--
  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">
  
  <!--
  `iron-media-query` can be used to data bind to a CSS media query.
  The `query` property is a bare CSS media query.
  The `query-matches` property is a boolean representing whether the page matches that media query.
  
  Example:
  
      <iron-media-query query="(min-width: 600px)" query-matches="{{queryMatches}}"></iron-media-query>
  
  @group Iron Elements
  @demo demo/index.html
  @hero hero.svg
  @element iron-media-query
  -->
  
  <script>
  
    Polymer({
  
      is: 'iron-media-query',
  
      properties: {
  
        /**
         * The Boolean return value of the media query.
         */
        queryMatches: {
          type: Boolean,
          value: false,
          readOnly: true,
          notify: true
        },
  
        /**
         * The CSS media query to evaluate.
         */
        query: {
          type: String,
          observer: 'queryChanged'
        },
a1a3bc73   Luigi Serra   graphs updates
52
53
54
55
56
57
58
59
60
61
  
        /**
         * If true, the query attribute is assumed to be a complete media query
         * string rather than a single media feature.
         */
        full: {
          type: Boolean,
          value: false
        },
  
eb240478   Luigi Serra   public room cards...
62
63
        /**
         * @type {function(MediaQueryList)}
a1a3bc73   Luigi Serra   graphs updates
64
         */
eb240478   Luigi Serra   public room cards...
65
66
67
68
69
        _boundMQHandler: {
          value: function() {
            return this.queryHandler.bind(this);
          }
        },
a1a3bc73   Luigi Serra   graphs updates
70
  
eb240478   Luigi Serra   public room cards...
71
72
        /**
         * @type {MediaQueryList}
a1a3bc73   Luigi Serra   graphs updates
73
         */
eb240478   Luigi Serra   public room cards...
74
75
76
77
78
79
        _mq: {
          value: null
        }
      },
  
      attached: function() {
a1a3bc73   Luigi Serra   graphs updates
80
        this.style.display = 'none';
eb240478   Luigi Serra   public room cards...
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
        this.queryChanged();
      },
  
      detached: function() {
        this._remove();
      },
  
      _add: function() {
        if (this._mq) {
          this._mq.addListener(this._boundMQHandler);
        }
      },
  
      _remove: function() {
        if (this._mq) {
          this._mq.removeListener(this._boundMQHandler);
        }
        this._mq = null;
      },
  
      queryChanged: function() {
        this._remove();
        var query = this.query;
        if (!query) {
          return;
        }
a1a3bc73   Luigi Serra   graphs updates
107
        if (!this.full && query[0] !== '(') {
eb240478   Luigi Serra   public room cards...
108
109
110
111
112
113
114
115
116
117
118
119
120
121
          query = '(' + query + ')';
        }
        this._mq = window.matchMedia(query);
        this._add();
        this.queryHandler(this._mq);
      },
  
      queryHandler: function(mq) {
        this._setQueryMatches(mq.matches);
      }
  
    });
  
  </script>