|
7 | 7 | <style> |
8 | 8 |
|
9 | 9 | :host |
10 | | - {font-family:arial;display:inline-flex;align-items:center; |
11 | | -} |
12 | | - |
13 | | - check-box, #menu-root |
| 10 | + {font-family:arial;display:inline-flex;align-items:center} |
| 11 | + |
| 12 | + check-box, .menu-root |
14 | 13 | {display:flex} |
15 | 14 |
|
16 | 15 | .menu |
17 | | - {display:flex;flex-direction:column;position:absolute} |
18 | | - |
| 16 | + {display:flex;flex-direction:column;position:absolute; |
| 17 | + left:0;top:35px;width:350px} |
| 18 | + |
19 | 19 | .menu [type=checkbox] |
20 | 20 | {width:20px;height:20px;margin:0} |
21 | 21 |
|
|
37 | 37 |
|
38 | 38 | <check-box id=autosave></check-box> |
39 | 39 |
|
40 | | - <div id=menu-root class=menu-root> |
41 | | - <img id=menu-icon class=menu-icon> |
42 | | - <div id=menu class=menu style='display:none;left:0;top:35px;width:350px'> |
| 40 | + <div class=menu-root> |
| 41 | + |
| 42 | + <img class=menu-icon> |
| 43 | + |
| 44 | + <div class=menu style='display:none'> |
| 45 | + |
43 | 46 | <div class=menu-title> |
44 | 47 | save menu |
45 | 48 | </div> |
| 49 | + |
46 | 50 | <div class=menu-item> |
47 | 51 | <div class=menu-label> |
48 | 52 | autosave |
49 | 53 | </div> |
50 | | - <input type=checkbox checked> |
51 | | - <input value=300 style='width:60px'> |
| 54 | + <input id=timer-chk type=checkbox checked> |
| 55 | + <input id=timer-value value=300 style='width:60px'> |
52 | 56 | </div> |
| 57 | + |
53 | 58 | <div id=trim class=menu-item> |
54 | 59 | <div class=menu-label> |
55 | 60 | trim on save |
56 | 61 | </div> |
57 | 62 | <input type=checkbox checked> |
58 | 63 | </div> |
| 64 | + |
59 | 65 | </div> |
| 66 | + |
60 | 67 | </div> |
61 | 68 |
|
62 | 69 | </template> |
|
94 | 101 |
|
95 | 102 |
|
96 | 103 | var savemenu; |
97 | | - var savetimer = {}; |
98 | | - savetimer.timer = null; |
99 | | - savetimer.chk = null; |
100 | | - savetimer.time = null; |
101 | | - savetimer.onclick = null; |
| 104 | + |
| 105 | + var timer = {}; |
| 106 | + timer.timer = null; |
| 107 | + timer.chk = null; |
| 108 | + timer.time = null; |
| 109 | + timer.onclick = null; |
102 | 110 |
|
103 | 111 |
|
104 | 112 | //: |
|
122 | 130 |
|
123 | 131 | menu.add.style(shadow); |
124 | 132 |
|
125 | | - autosave = $(shadow,'#autosave'); |
| 133 | + autosave = $(shadow,'#autosave'); |
126 | 134 |
|
127 | | - savemenu = $(shadow,'.menu'); |
128 | | - $(shadow,'.menu-icon').onclick = menu.click(savemenu,false,false,savemenu_callback); |
| 135 | + savemenu = $(shadow,'.menu'); |
| 136 | + $(shadow,'.menu-icon').onclick = menu.click(savemenu,savemenu_callback); |
129 | 137 | menu.input.norm(savemenu); |
130 | 138 |
|
131 | | - savetimer.chk = $(savemenu,':scope>div:nth-of-type(2) [type=checkbox]'); |
132 | | - savetimer.time = $(savemenu,':scope>div:nth-of-type(2) input:not([type])'); |
133 | | - savetimer.chk.onclick = savetimer.onclick; |
| 139 | + timer.chk = $(savemenu,'#timer-chk'); //':scope>div:nth-of-type(2) [type=checkbox]'); |
| 140 | + timer.chk.onclick = timer.onclick; |
| 141 | + timer.time = $(savemenu,'#timer-value'); //':scope>div:nth-of-type(2) input:not([type])'); |
134 | 142 |
|
135 | 143 |
|
136 | 144 | }//initdom |
|
141 | 149 |
|
142 | 150 |
|
143 | 151 | function savemenu_kd(e){ |
144 | | - console.log(e.target); |
| 152 | + console.log(e.target); |
145 | 153 | if(e.target.nodeName=='INPUT'){ |
146 | 154 | return; |
147 | 155 | } |
|
151 | 159 |
|
152 | 160 |
|
153 | 161 | function savemenu_callback(type){ |
154 | | - console.log('savemenu_callback',arguments); |
| 162 | + console.log('savemenu_callback',arguments); |
155 | 163 | if(type=='show'){ |
156 | | - $(savemenu,':scope>div:nth-of-type(2) input:not([type])').focus(); |
| 164 | + timer.time.focus(); |
| 165 | + //$(savemenu,':scope>div:nth-of-type(2) input:not([type])').focus(); |
157 | 166 | keydown.add(savemenu_kd); |
158 | 167 | } |
159 | 168 | if(type=='hide'){ |
|
163 | 172 | }//savemenu_callback |
164 | 173 |
|
165 | 174 |
|
166 | | - savetimer.onclick = function(){ |
| 175 | + timer.onclick = function(){ |
167 | 176 | debug('savetimer.click'); |
168 | | - clearTimeout(savetimer.timer); |
| 177 | + clearTimeout(timer.timer); |
169 | 178 |
|
170 | | - if(savetimer.chk.checked){ |
171 | | - var value = savetimer.time.value; |
| 179 | + if(timer.chk.checked){ |
| 180 | + var value = timer.time.value; |
172 | 181 | value = Number(value); |
173 | 182 | if(isNaN(value)){ |
174 | 183 | log.red('invalid autosave time, using 300s'); |
|
186 | 195 | debug('savetimer',value); |
187 | 196 | save(); |
188 | 197 |
|
189 | | - if(savetimer.chk.checked){ |
| 198 | + if(timer.chk.checked){ |
190 | 199 | var ms = value*1000; |
191 | 200 | setTimeout(fn,ms); |
192 | 201 | } |
193 | 202 |
|
194 | 203 | }//fn |
195 | 204 |
|
196 | | - }//savetimer |
| 205 | + }//timer.onclick |
197 | 206 |
|
198 | 207 |
|
199 | 208 | //: |
200 | 209 |
|
| 210 | + |
201 | 211 | class checkbox extends HTMLElement { |
202 | 212 |
|
203 | 213 | constructor() { |
204 | | - //console.log('checkbox-one'); |
| 214 | + //console.log('checkbox-one'); |
205 | 215 | super(); |
206 | 216 |
|
207 | 217 | var root = this; |
208 | | - var shadow = host.shadowRoot; |
209 | | - var template = $(host,'#check-box'); |
| 218 | + var template = $(host,'template#check-box'); |
210 | 219 | var content = template.content; |
211 | | - var shadow = root.attachShadow({mode:"open"}); |
| 220 | + var shadow = root.attachShadow({mode:'open'}); |
212 | 221 | shadow.appendChild(content); |
213 | 222 |
|
214 | 223 |
|
| 224 | + |
| 225 | + |
215 | 226 | var chk = shadow.querySelector('[type=checkbox]'); |
216 | 227 | chk.onchange = e=>{ |
217 | 228 |
|
|
233 | 244 |
|
234 | 245 | setTimeout(()=>{ |
235 | 246 |
|
236 | | - var str = root.innerHTML.trim(); |
| 247 | + var str = root.textContent.trim(); |
237 | 248 | if(str==''){ |
238 | | - root.innerHTML = root.id; |
| 249 | + root.textContent = root.id; |
239 | 250 | } |
240 | 251 |
|
241 | 252 | },50); |
242 | 253 |
|
| 254 | + |
243 | 255 | }//constructor |
244 | 256 |
|
245 | 257 | }//class |
|
0 commit comments