Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(361)

Side by Side Diff: sky/framework/sky-checkbox.sky

Issue 951823002: Update Sky widgets to have more material design (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sky/framework/sky-button.sky ('k') | sky/framework/sky-icon.sky » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!-- 1 <!--
2 // Copyright 2015 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" />
7 <import src="sky-element.sky" /> 6 <import src="sky-element.sky" />
7 <import src="sky-icon.sky" />
8 8
9 <sky-element attributes="checked:boolean, highlight:boolean"> 9 <sky-element attributes="checked:boolean">
10 <template> 10 <template>
11 <style> 11 <style>
12 :host { 12 :host {
13 display: flex; 13 display: inline-block;
14 justify-content: center;
15 align-items: center;
16 -webkit-user-select: none; 14 -webkit-user-select: none;
17 cursor: pointer; 15 margin: 8px 16px;
18 width: 30px;
19 height: 30px;
20 }
21 #container {
22 border: solid 2px;
23 border-color: rgba(90, 90, 90, 0.25);
24 width: 10px;
25 height: 10px;
26 }
27 #container.highlight {
28 border-radius: 10px;
29 background-color: orange;
30 border-color: orange;
31 }
32 #check {
33 top: 0px;
34 left: 0px;
35 }
36 #check.checked {
37 transform: translate(2px, -15px) rotate(45deg);
38 width: 10px;
39 height: 20px;
40 border-style: solid;
41 border-top: none;
42 border-left: none;
43 border-right-width: 2px;
44 border-bottom-width: 2px;
45 border-color: #0f9d58;
46 } 16 }
47 </style> 17 </style>
48 <div id="container"> 18 <sky-icon size="18" />
49 <div id="check" />
50 </div>
51 </template> 19 </template>
52 <script> 20 <script>
53 import "dart:sky"; 21 import "dart:sky";
54 22
23 const String _kOnIcon = 'toggle/check_box_black';
24 const String _kOffIcon = 'toggle/check_box_outline_blank_black';
25
55 @Tagname('sky-checkbox') 26 @Tagname('sky-checkbox')
56 class SkyCheckbox extends SkyButton { 27 class SkyCheckbox extends SkyElement {
57 Element _container; 28 SkyIcon _icon;
58 Element _check;
59 29
60 SkyCheckbox() { 30 SkyCheckbox() {
61 addEventListener('click', _handleClick); 31 addEventListener('click', _handleClick);
62 } 32 }
63 33
64 static String _checkClassForValue(bool value) => value ? 'checked' : '';
65 static String _containerClassForValue(bool value) => value ? 'highlight' : '';
66
67 void shadowRootReady() { 34 void shadowRootReady() {
68 _container = shadowRoot.getElementById('container'); 35 _icon = shadowRoot.querySelector('sky-icon');
69 _container.setAttribute('class', _containerClassForValue(highlight)); 36 _icon.type = checked ? _kOnIcon : _kOffIcon;
70 _check = shadowRoot.getElementById('check');
71 _check.setAttribute('class', _checkClassForValue(checked));
72 } 37 }
73 38
74 void checkedChanged(bool oldValue, bool newValue) { 39 void checkedChanged(bool oldValue, bool newValue) {
75 if (_check != null) 40 if (_icon != null)
76 _check.setAttribute('class', _checkClassForValue(newValue)); 41 _icon.type = newValue ? _kOnIcon : _kOffIcon;
77 }
78
79 void highlightChanged(bool oldValue, bool newValue) {
80 if (_container != null)
81 _container.setAttribute('class', _containerClassForValue(newValue));
82 } 42 }
83 43
84 void _handleClick(_) { 44 void _handleClick(_) {
85 checked = !checked; 45 checked = !checked;
86 } 46 }
87 } 47 }
88 48
89 _init(script) => register(script, SkyCheckbox); 49 _init(script) => register(script, SkyCheckbox);
90 </script> 50 </script>
91 </sky-element> 51 </sky-element>
OLDNEW
« no previous file with comments | « sky/framework/sky-button.sky ('k') | sky/framework/sky-icon.sky » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698