Blame view

bower_components/paper-input/paper-input-char-counter.html 2.18 KB
73bcce88   luigser   COMPONENTS
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
  <!--
  @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="../paper-styles/paper-styles.html">
  <link rel="import" href="paper-input-addon-behavior.html">
  
  <!--
  `<paper-input-char-counter>` is a character counter for use with `<paper-input-container>`. It
  shows the number of characters entered in the input and the max length if it is specified.
  
      <paper-input-container>
        <input is="iron-input" maxlength="20">
        <paper-input-char-counter></paper-input-char-counter>
      </paper-input-container>
  
  ### Styling
  
  The following mixin is available for styling:
  
  Custom property | Description | Default
  ----------------|-------------|----------
  `--paper-input-char-counter` | Mixin applied to the element | `{}`
  -->
  <dom-module id="paper-input-char-counter">
  
    <style>
  
      :host {
        display: inline-block;
        float: right;
  
        @apply(--paper-font-caption);
        @apply(--paper-input-char-counter);
      }
  
    </style>
  
    <template>
  
      <span>[[_charCounterStr]]</span>
  
    </template>
  
  </dom-module>
  
  <script>
  
  (function() {
  
    Polymer({
  
      is: 'paper-input-char-counter',
  
      behaviors: [
        Polymer.PaperInputAddonBehavior
      ],
  
      properties: {
  
        _charCounterStr: {
          type: String,
          value: '0'
        }
  
      },
  
      update: function(state) {
        if (!state.inputElement) {
          return;
        }
  
        state.value = state.value || '';
  
        // Account for the textarea's new lines.
        var str = state.value.replace(/(\r\n|\n|\r)/g, '--').length;
  
        if (state.inputElement.hasAttribute('maxlength')) {
          str += '/' + state.inputElement.getAttribute('maxlength');
        }
        this._charCounterStr = str;
      }
  
    });
  
  })();
  
  </script>