<!-- 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-ripple/paper-ripple.html"> <link rel="import" href="../paper-styles/default-theme.html"> <link rel="import" href="../paper-behaviors/paper-inky-focus-behavior.html"> <!-- `paper-radio-button` is a button that can be either checked or unchecked. User can tap the radio button to check or uncheck it. Use a `<paper-radio-group>` to group a set of radio buttons. When radio buttons are inside a radio group, exactly one radio button in the group can be checked at any time. Example: <paper-radio-button></paper-radio-button> <paper-radio-button>Item label</paper-radio-button> ### Styling The following custom properties and mixins are available for styling: Custom property | Description | Default ----------------|-------------|---------- `--paper-radio-button-unchecked-background-color` | Radio button background color when the input is not checked | `transparent` `--paper-radio-button-unchecked-color` | Radio button color when the input is not checked | `--primary-text-color` `--paper-radio-button-unchecked-ink-color` | Selected/focus ripple color when the input is not checked | `--primary-text-color` `--paper-radio-button-checked-color` | Radio button color when the input is checked | `--default-primary-color` `--paper-radio-button-checked-ink-color` | Selected/focus ripple color when the input is checked | `--default-primary-color` `--paper-radio-button-label-color` | Label color | `--primary-text-color` @group Paper Elements @element paper-radio-button @hero hero.svg @demo demo/index.html --> <dom-module id="paper-radio-button"> <link rel="import" type="css" href="paper-radio-button.css"> <template> <div id="radioContainer"> <div id="offRadio"></div> <div id="onRadio"></div> <paper-ripple id="ink" class="circle" center checked$="[[checked]]"></paper-ripple> </div> <div id="radioLabel" aria-hidden="true"><content></content></div> </template> <script> Polymer({ is: 'paper-radio-button', behaviors: [ Polymer.PaperInkyFocusBehavior ], hostAttributes: { role: 'radio', 'aria-checked': false, tabindex: 0 }, properties: { /** * Fired when the checked state changes due to user interaction. * * @event change */ /** * Fired when the checked state changes. * * @event iron-change */ /** * Gets or sets the state, `true` is checked and `false` is unchecked. */ checked: { type: Boolean, value: false, reflectToAttribute: true, notify: true, observer: '_checkedChanged' }, /** * If true, the button toggles the active state with each tap or press * of the spacebar. */ toggles: { type: Boolean, value: true, reflectToAttribute: true } }, ready: function() { if (Polymer.dom(this).textContent == '') { this.$.radioLabel.hidden = true; } else { this.setAttribute('aria-label', Polymer.dom(this).textContent); } this._isReady = true; }, _buttonStateChanged: function() { if (this.disabled) { return; } if (this._isReady) { this.checked = this.active; } }, _checkedChanged: function() { this.setAttribute('aria-checked', this.checked ? 'true' : 'false'); this.active = this.checked; this.fire('iron-change'); } }) </script> </dom-module>