@ -1,11 +1,44 @@
function Note ( ) {
function Note ( vnode _init ) {
const { note } = vnode _init . attrs ;
let is _editing = false ;
let temp _text = note . text ;
const edit _handler = function ( ) {
is _editing = true ;
} ;
const cancel _handler = function ( ) {
is _editing = false ;
} ;
const text _change _handler = function ( e ) {
temp _text = e . target . value ;
// prevent redraw, because the temp text is anyway contained in the textarea:
// also, the "Save" button is going to cause its own redraw; otherwise clicking it would cause two redraws (and it is noticeable, that's how I knew two redraws were happening)
e . redraw = false ;
} ;
const save _handler = function ( ) {
note . text = temp _text ;
is _editing = false ;
} ;
return {
return {
view : function ( vnode ) {
view : function ( ) {
const { note } = vnode . attrs ;
if ( is _editing ) {
return m ( '.note' , [
return m ( '.note' , [
m ( 'textarea' , { key : 'textarea' , onchange : text _change _handler } , note . text ) ,
m ( '.buttons' , { key : 'editing-buttons' } , [
m ( 'button' , { key : 'cancel-button' , onclick : cancel _handler } , 'Cancel' ) ,
m ( 'button' , { key : 'save-button' , onclick : save _handler } , 'Save' )
] )
] ) ;
}
else {
return m ( '.note' , [
m ( '.text' , { key : 'text' } , note . text ) ,
m ( '.text' , { key : 'text' } , note . text ) ,
m ( 'button' , { key : 'edit-button' } , 'Edit' )
m ( '.buttons' , { key : 'viewing-buttons' } , [
m ( 'button' , { key : 'edit-button' , onclick : edit _handler } , 'Edit' )
] )
] ) ;
] ) ;
}
}
}
} ;
} ;
}
}