172172 var promise = ext . load . libs (
173173 'js/dom/$.js' ,
174174 'js/core/datatype.js' ,
175- 'js/dom/menumod/menumod.js' ,
175+ 'js/dom/menumod/menumod.js.api ' ,
176176 'js/dom/keydown/keydown.js' ,
177177 'js/debug/debug.js' ,
178178 ) ;
237237
238238 .visually-hidden
239239 {position : absolute;width : 1px ;height : 1px ;margin : -1px ;padding : 0 ;overflow : hidden;clip : rect (0 0 0 0 );border : 0 }
240+
241+
242+ .menu input
243+ {font-size : 16px ;padding : 5px 10px }
244+
245+ .menu [type = checkbox ]
246+ {width : 20px ;height : 20px ;margin : 0 }
247+
248+ .menu-item
249+ {gap : 20px }
250+
251+ .menu-item .menu-label
252+ {width : 120px ;text-align : right}
240253
241254 </ style >
242255
@@ -266,6 +279,22 @@ <h1 slot=seo-hdr class=visually-hidden>html editor</h1>
266279 < div id =save-menu-root class =menu-root >
267280 < img id =save-menu-icon class =menu-icon >
268281 < div id =save-menu class =menu style ='display:none '>
282+ < div class =menu-title >
283+ save menu
284+ </ div >
285+ < div class =menu-item >
286+ < div class =menu-label >
287+ autosave
288+ </ div >
289+ < input type =checkbox >
290+ < input value =300 style ='width:60px '>
291+ </ div >
292+ < div id =trim class =menu-item >
293+ < div class =menu-label >
294+ trim on save
295+ </ div >
296+ < input type =checkbox >
297+ </ div >
269298 </ div >
270299 </ div >
271300 </ div >
@@ -311,16 +340,22 @@ <h1 slot=seo-hdr class=visually-hidden>html editor</h1>
311340
312341
313342
314- var slider = { } ;
343+ var slider = { } ;
315344
316- var ui = { } ;
317- ui . mode = 'vert' ;
345+ var ui = { } ;
346+ ui . mode = 'vert' ;
318347
348+ var savemenu ;
349+ var savetimer = { } ;
350+ savetimer . timer = null ;
351+ savetimer . chk = null ;
352+ savetimer . time = null ;
353+ savetimer . onclick = null ;
319354
320355
321- var btn = { } ;
322- var on = { } ;
323- var set = { } ;
356+ var btn = { } ;
357+ var on = { } ;
358+ var set = { } ;
324359
325360
326361
@@ -345,9 +380,14 @@ <h1 slot=seo-hdr class=visually-hidden>html editor</h1>
345380
346381 $ ( root , '#save' ) . onclick = btn . save ;
347382
348- var card = $ ( root , '#save-root .menu' ) ;
349- $ ( root , '.menu-icon' ) . onclick = menu . click ( card , false , false ) ;
383+ savemenu = $ ( root , '#save-root .menu' ) ;
384+ $ ( root , '.menu-icon' ) . onclick = menu . click ( savemenu , false , false , savemenu_callback ) ;
385+ menu . input . norm ( savemenu ) ;
350386
387+ savetimer . chk = $ ( savemenu , ':scope>div:nth-of-type(2) [type=checkbox]' ) ;
388+ savetimer . time = $ ( savemenu , ':scope>div:nth-of-type(2) input:not([type])' ) ;
389+ savetimer . chk . onclick = savetimer . onclick ;
390+
351391 autosave = $ ( root , '#autosave' ) ;
352392
353393
@@ -393,6 +433,57 @@ <h1 slot=seo-hdr class=visually-hidden>html editor</h1>
393433 } //focus
394434
395435
436+ function savemenu_kd ( e ) {
437+ console . log ( e . target ) ;
438+ if ( e . target . nodeName == 'INPUT' ) {
439+ return ;
440+ }
441+ return false ;
442+
443+ } //savemenu_kd
444+
445+
446+ function savemenu_callback ( type ) {
447+ console . log ( 'savemenu_callback' , arguments ) ;
448+ if ( type == 'show' ) {
449+ $ ( savemenu , ':scope>div:nth-of-type(2) input:not([type])' ) . focus ( ) ;
450+ keydown . add ( savemenu_kd ) ;
451+ }
452+ if ( type == 'hide' ) {
453+ keydown . rem ( savemenu_kd ) ;
454+ }
455+
456+ } //savemenu_callback
457+
458+
459+ savetimer . onclick = function ( ) {
460+ debug ( 'savetimer.click' ) ;
461+ clearTimeout ( savetimer . timer ) ;
462+
463+ if ( savetimer . chk . checked ) {
464+ var value = savetimer . time . value ;
465+ value = Number ( value ) ;
466+ if ( isNaN ( value ) ) {
467+ log . red ( 'invalid autosave time, using 300s' ) ;
468+ value = 300 ;
469+ }
470+ fn ( ) ;
471+ }
472+
473+
474+ function fn ( ) {
475+ debug ( 'savetimer' , value ) ;
476+ btn . save ( ) ;
477+ if ( savetimer . chk . checked ) {
478+ var ms = value * 1000 ;
479+ setTimeout ( fn , ms ) ;
480+ }
481+
482+ } //fn
483+
484+ } //savetimer
485+
486+
396487 //:
397488
398489
@@ -507,7 +598,7 @@ <h1 slot=seo-hdr class=visually-hidden>html editor</h1>
507598 editor . filename ( file ) ;
508599 editor . filename . save . hide ( ) ;
509600 filemod . cur = file ;
510- var title = file . name || file . filename ;
601+ var title = file . name || file . filename ;
511602 set . title ( title ) ;
512603 set . favicon ( icon . def ) ;
513604 }
0 commit comments