Index: sky/framework/sky-checkbox.sky |
diff --git a/sky/framework/sky-checkbox.sky b/sky/framework/sky-checkbox.sky |
index bac70abd4dfb60311a66674310e3e88cc94f5693..623dcc081737dd181365e39025568cedf28436aa 100644 |
--- a/sky/framework/sky-checkbox.sky |
+++ b/sky/framework/sky-checkbox.sky |
@@ -3,82 +3,42 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
--> |
-<import src="sky-button.sky" /> |
<import src="sky-element.sky" /> |
+<import src="sky-icon.sky" /> |
-<sky-element attributes="checked:boolean, highlight:boolean"> |
+<sky-element attributes="checked:boolean"> |
<template> |
<style> |
:host { |
- display: flex; |
- justify-content: center; |
- align-items: center; |
+ display: inline-block; |
-webkit-user-select: none; |
- cursor: pointer; |
- width: 30px; |
- height: 30px; |
- } |
- #container { |
- border: solid 2px; |
- border-color: rgba(90, 90, 90, 0.25); |
- width: 10px; |
- height: 10px; |
- } |
- #container.highlight { |
- border-radius: 10px; |
- background-color: orange; |
- border-color: orange; |
- } |
- #check { |
- top: 0px; |
- left: 0px; |
- } |
- #check.checked { |
- transform: translate(2px, -15px) rotate(45deg); |
- width: 10px; |
- height: 20px; |
- border-style: solid; |
- border-top: none; |
- border-left: none; |
- border-right-width: 2px; |
- border-bottom-width: 2px; |
- border-color: #0f9d58; |
+ margin: 8px 16px; |
} |
</style> |
- <div id="container"> |
- <div id="check" /> |
- </div> |
+ <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 SkyButton { |
- Element _container; |
- Element _check; |
+class SkyCheckbox extends SkyElement { |
+ SkyIcon _icon; |
SkyCheckbox() { |
addEventListener('click', _handleClick); |
} |
- static String _checkClassForValue(bool value) => value ? 'checked' : ''; |
- static String _containerClassForValue(bool value) => value ? 'highlight' : ''; |
- |
void shadowRootReady() { |
- _container = shadowRoot.getElementById('container'); |
- _container.setAttribute('class', _containerClassForValue(highlight)); |
- _check = shadowRoot.getElementById('check'); |
- _check.setAttribute('class', _checkClassForValue(checked)); |
+ _icon = shadowRoot.querySelector('sky-icon'); |
+ _icon.type = checked ? _kOnIcon : _kOffIcon; |
} |
void checkedChanged(bool oldValue, bool newValue) { |
- if (_check != null) |
- _check.setAttribute('class', _checkClassForValue(newValue)); |
- } |
- |
- void highlightChanged(bool oldValue, bool newValue) { |
- if (_container != null) |
- _container.setAttribute('class', _containerClassForValue(newValue)); |
+ if (_icon != null) |
+ _icon.type = newValue ? _kOnIcon : _kOffIcon; |
} |
void _handleClick(_) { |