Skip to content

Commit b4017c1

Browse files
save file
1 parent bbbdd9b commit b4017c1

File tree

1 file changed

+107
-0
lines changed

1 file changed

+107
-0
lines changed

utils/editors/html/auto-save/v2.0/auto-save-v2.0.html

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858

5959
<script>
6060

61+
6162
(function auto_save({mod,dom,host}){
6263

6364
var obj = {
@@ -100,6 +101,15 @@
100101
obj.init = function(){
101102

102103

104+
var registry = new CustomElementRegistry();
105+
registry.define('check-box',checkbox);
106+
107+
var content = host.shadowRoot.cloneNode(true);
108+
109+
var shadow = host.attachShadow({mode:'open',customElements:registry});
110+
shadow.append(content);
111+
112+
103113
}//init
104114

105115

@@ -185,6 +195,55 @@
185195
}//savetimer
186196

187197

198+
//:
199+
200+
class checkbox extends HTMLElement {
201+
202+
constructor() {
203+
//console.log('checkbox-one');
204+
super();
205+
206+
var root = this;
207+
var shadow = host.shadowRoot;
208+
var template = $(shadow,'check-box');
209+
var content = template.content;
210+
var shadow = root.attachShadow({mode:"open"});
211+
shadow.appendChild(content);
212+
213+
214+
var chk = shadow.querySelector('[type=checkbox]');
215+
chk.onchange = e=>{
216+
217+
root.checked = chk.checked;
218+
if(typeof root.onchange=='function'){
219+
root.onchange(e);
220+
}
221+
222+
};
223+
224+
Object.defineProperty(root,'checked',{get:()=>chk.checked,set:v=>chk.checked=v});
225+
226+
if(root.hasAttribute('checked')){
227+
root.checked = true;
228+
}
229+
if('checked' in root){
230+
chk.checked = root.checked;
231+
}
232+
233+
setTimeout(()=>{
234+
235+
var str = root.innerHTML.trim();
236+
if(str==''){
237+
root.innerHTML = root.id;
238+
}
239+
240+
},50);
241+
242+
}//constructor
243+
244+
}//class
245+
246+
188247
//:
189248

190249

@@ -210,6 +269,54 @@
210269

211270
</script>
212271

272+
273+
274+
275+
276+
<template id=check-box>
277+
278+
<style>
279+
280+
.slider
281+
{position:relative;display:inline-flex;align-items:center;cursor:pointer;border:1px solid gray;border-radius:3px;height:30px;box-sizing:border-box;padding:0 5px}
282+
.slider input
283+
{opacity:0;width:0;height:0}
284+
.slider .label
285+
{margin-left:30px}
286+
.slider .hldr
287+
{position:absolute;top:4px;left:5px;width:30px;height:20px;background-color:#ccc}
288+
.slider .hldr:before
289+
{position:absolute;content:"";height:17px;width:17px;left:2px;bottom:2px;background-color:white;transition:.2s}
290+
.slider input:checked + .hldr
291+
{background-color:#2196F3}
292+
.slider input:checked + .hldr:before
293+
{transform:translateX(9px)}
294+
.slider .hldr
295+
{border-radius:34px}
296+
.slider .hldr:before
297+
{border-radius:50%}
298+
299+
</style>
300+
301+
<label id=autosave class=slider>
302+
<span class=track></span>
303+
<input type=checkbox>
304+
<span class=hldr></span>
305+
<span class=label>
306+
<slot></slot>
307+
</span>
308+
</label>
309+
310+
</template>
311+
312+
313+
314+
315+
316+
317+
318+
319+
213320
</auto-save>
214321

215322

0 commit comments

Comments
 (0)