OLD | NEW |
| (Empty) |
1 SKY MODULE - button widgets for calculator | |
2 <!-- TODO(ianh): implement accessibility handling once the ax service exists --> | |
3 | |
4 <script> | |
5 class AbstractButton extends Element { | |
6 constructor (hostModule) { | |
7 super(hostModule); | |
8 let selector = new SelectorQuery('.dynamic'); | |
9 this.addEventListener('pointer-down', (event) => { | |
10 selector.findAll(this.shadowRoot).every((element) => element.setAttribut
e('clicked')); | |
11 // TODO(ianh): track the pointer; if it leaves the button, cancel the cl
ick | |
12 // TOOD(ianh): if the pointer doesn't leave the button before being rele
ased, then fire some event on ourselves | |
13 module.application.document.addEventListener('pointer-up', function upHa
ndler (event) { | |
14 module.application.document.removeEventListener('pointer-up', upHandle
r); | |
15 selector.findAll(this.shadowRoot).every((element) => element.removeAtt
ribute('clicked')); | |
16 }); | |
17 }); | |
18 } | |
19 } | |
20 </script> | |
21 | |
22 <template id="threed-button-shadow-tree"> | |
23 <style> | |
24 /* TODO(ianh): make this shrink-wrap the contents */ | |
25 div { border: solid 1px; } | |
26 #a { border-color: #666666 #333333 #333333 #666666; } | |
27 #b { border-color: #EEEEEE #666666 #666666 #EEEEEE; } | |
28 #c { border-color: #EEEEEE #666666 #666666 #EEEEEE; } | |
29 #d { border-color: #EEEEEE #999999 #999999 #EEEEEE; padding: 2px 0 0 0; backgr
ound: #DDDDDD; color: black; text-align: center; } | |
30 #a[clicked] { border-color: #666666 #333333 #333333 #666666; width: 6em; } | |
31 #b[clicked] { border-color: #666666 #DDDDDD #DDDDDD #666666; border-width: 1px
0 0 1px; } | |
32 #c[clicked] { border-color: #666666 #DDDDDD #DDDDDD #666666; border-width: 1px
0 0 1px; } | |
33 #d[clicked] { border-color: #999999 #DDDDDD #DDDDDD #999999; padding: 4px 0 0
2px; } | |
34 </style> | |
35 <div class="dynamic" id="a"> | |
36 <div class="dynamic" id="b"> | |
37 <div class="dynamic" id="c"> | |
38 <div class="dynamic" id="d"> | |
39 <content/> | |
40 </div> | |
41 </div> | |
42 </div> | |
43 </div> | |
44 </template> | |
45 | |
46 <template id="flat-button-shadow-tree"> | |
47 <style> | |
48 div { background: green; color: yellow; } | |
49 div[clicked] { background: yellow; color: green; } | |
50 </style> | |
51 <div class=dynamic> | |
52 <content/> | |
53 </div> | |
54 </template> | |
55 | |
56 <script> | |
57 module.exports = { | |
58 ThreeDButtonElement: module.registerElement( | |
59 class extends AbstractButton { | |
60 static get tagName() { return 'graybutton'; } | |
61 static get shadow() { return true; } | |
62 constructor (hostModule) { | |
63 super(hostModule); | |
64 this.shadowRoot.append(module.document.findId('threed-button-shadow-tre
e').cloneNode(true)); | |
65 } | |
66 } | |
67 ), | |
68 FlatButtonElement: module.registerElement( | |
69 class extends AbstractButton { | |
70 static get tagName() { return 'flatbutton'; } | |
71 static get shadow() { return true; } | |
72 constructor (hostModule) { | |
73 super(hostModule); | |
74 this.shadowRoot.append(module.document.findId('flat-shadow-tree').clone
Node(true)); | |
75 } | |
76 } | |
77 ), | |
78 }; | |
79 </script> | |
OLD | NEW |