| <!-- |
| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| --> |
| <import src="sky-element.sky" /> |
| <import src="sky-icon.sky" /> |
| |
| <sky-element attributes="checked:boolean"> |
| <template> |
| <style> |
| :host { |
| display: inline-block; |
| -webkit-user-select: none; |
| margin: 8px 16px; |
| } |
| </style> |
| <sky-icon size="18" /> |
| </template> |
| <script> |
| import "dart:sky"; |
| |
| const String _kOnIcon = 'toggle/check_box_black'; |
| const String _kOffIcon = 'toggle/check_box_outline_blank_black'; |
| |
| @Tagname('sky-checkbox') |
| class SkyCheckbox extends SkyElement { |
| SkyIcon _icon; |
| |
| SkyCheckbox() { |
| addEventListener('click', _handleClick); |
| } |
| |
| void shadowRootReady() { |
| _icon = shadowRoot.querySelector('sky-icon'); |
| _icon.type = checked ? _kOnIcon : _kOffIcon; |
| } |
| |
| void checkedChanged(bool oldValue, bool newValue) { |
| if (_icon != null) |
| _icon.type = newValue ? _kOnIcon : _kOffIcon; |
| } |
| |
| void _handleClick(_) { |
| checked = !checked; |
| } |
| } |
| |
| _init(script) => register(script, SkyCheckbox); |
| </script> |
| </sky-element> |