| OLD | NEW |
| 1 <!-- | 1 <!-- |
| 2 // Copyright 2014 The Chromium Authors. All rights reserved. | 2 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 3 // Use of this source code is governed by a BSD-style license that can be | 3 // Use of this source code is governed by a BSD-style license that can be |
| 4 // found in the LICENSE file. | 4 // found in the LICENSE file. |
| 5 --> | 5 --> |
| 6 <import src="sky-button.sky" as="SkyButton" /> | 6 <import src="sky-button.sky" /> |
| 7 <import src="sky-element.sky" /> |
| 7 | 8 |
| 8 <sky-element | 9 <sky-element attributes="checked:boolean, highlight:boolean"> |
| 9 name="sky-checkbox" | |
| 10 attributes="checked:boolean" | |
| 11 on-click="handleClick"> | |
| 12 <template> | 10 <template> |
| 13 <style> | 11 <style> |
| 14 :host { | 12 :host { |
| 15 display: flex; | 13 display: flex; |
| 16 justify-content: center; | 14 justify-content: center; |
| 17 align-items: center; | 15 align-items: center; |
| 18 -webkit-user-select: none; | 16 -webkit-user-select: none; |
| 19 cursor: pointer; | 17 cursor: pointer; |
| 20 width: 30px; | 18 width: 30px; |
| 21 height: 30px; | 19 height: 30px; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 40 width: 10px; | 38 width: 10px; |
| 41 height: 20px; | 39 height: 20px; |
| 42 border-style: solid; | 40 border-style: solid; |
| 43 border-top: none; | 41 border-top: none; |
| 44 border-left: none; | 42 border-left: none; |
| 45 border-right-width: 2px; | 43 border-right-width: 2px; |
| 46 border-bottom-width: 2px; | 44 border-bottom-width: 2px; |
| 47 border-color: #0f9d58; | 45 border-color: #0f9d58; |
| 48 } | 46 } |
| 49 </style> | 47 </style> |
| 50 <div id="container" class="{{ containerStyle }}"> | 48 <div id="container"> |
| 51 <div id="check" class="{{ checkStyle }}" /> | 49 <div id="check" /> |
| 52 </div> | 50 </div> |
| 53 </template> | 51 </template> |
| 54 <script> | 52 <script> |
| 55 module.exports = class extends SkyButton { | 53 import "dart:sky"; |
| 56 created() { | |
| 57 super.created(); | |
| 58 | 54 |
| 59 this.containerStyle = ''; | 55 @Tagname('sky-checkbox') |
| 60 this.checkStyle = ''; | 56 class SkyCheckbox extends SkyButton { |
| 57 Element _container; |
| 58 Element _check; |
| 59 |
| 60 SkyCheckbox() { |
| 61 addEventListener('click', _handleClick); |
| 61 } | 62 } |
| 62 checkedChanged(oldValue, newValue) { | 63 |
| 63 this.checkStyle = newValue ? 'checked' : ''; | 64 static String _checkClassForValue(bool value) => value ? 'checked' : ''; |
| 65 static String _containerClassForValue(bool value) => value ? 'highlight' : ''; |
| 66 |
| 67 void shadowRootReady() { |
| 68 _container = shadowRoot.getElementById('container'); |
| 69 _container.setAttribute('class', _containerClassForValue(highlight)); |
| 70 _check = shadowRoot.getElementById('check'); |
| 71 _check.setAttribute('class', _checkClassForValue(checked)); |
| 64 } | 72 } |
| 65 highlightChanged(oldValue, newValue) { | 73 |
| 66 this.containerStyle = newValue ? 'highlight' : ''; | 74 void checkedChanged(bool oldValue, bool newValue) { |
| 75 if (_check != null) |
| 76 _check.setAttribute('class', _checkClassForValue(newValue)); |
| 67 } | 77 } |
| 68 handleClick() { | 78 |
| 69 this.checked = !this.checked; | 79 void highlightChanged(bool oldValue, bool newValue) { |
| 80 if (_container != null) |
| 81 _container.setAttribute('class', _containerClassForValue(newValue)); |
| 70 } | 82 } |
| 71 }.register(); | 83 |
| 84 void _handleClick(_) { |
| 85 checked = !checked; |
| 86 } |
| 87 } |
| 88 |
| 89 _init(script) => register(script, SkyCheckbox); |
| 72 </script> | 90 </script> |
| 73 </sky-element> | 91 </sky-element> |
| OLD | NEW |