11import './nodeMenu.less'
22import i18n from '../i18n'
33
4- const createDiv = ( id ) => {
4+ const createDiv = ( id , innerHTML ) => {
55 const div = document . createElement ( 'div' )
66 div . id = id
7+ div . innerHTML = innerHTML
78 return div
89}
910
@@ -29,42 +30,45 @@ const colorList = [
2930]
3031
3132export default function ( mind ) {
32- const locale = i18n [ mind . locale ] ? mind . locale : 'en'
33- let bgOrFont
34- const styleDiv = createDiv ( 'nm-style' )
35- const tagDiv = createDiv ( 'nm-tag' )
36- const iconDiv = createDiv ( 'nm-icon' )
37- const urlDiv = createDiv ( 'nm-url' )
33+ function clearSelect ( klass , remove ) {
34+ var elems = mind . container . querySelectorAll ( klass )
35+ ; [ ] . forEach . call ( elems , function ( el ) {
36+ el . classList . remove ( remove )
37+ } )
38+ }
3839
39- styleDiv . innerHTML = `
40- <div class="nm-fontsize-container">
41- ${ [ '15' , '24' , '32' ]
40+ // create element
41+ const locale = i18n [ mind . locale ] ? mind . locale : 'en'
42+ const styleDiv = createDiv ( 'nm-style' , `
43+ <div class="nm-fontsize-container">
44+ ${ [ '15' , '24' , '32' ]
4245 . map ( size => {
4346 return `<div class="size" data-size="${ size } ">
44- <svg class="icon" style="width: ${ size } px;height: ${ size } px" aria-hidden="true">
45- <use xlink:href="#icon-a"></use>
46- </svg></div>`
47+ <svg class="icon" style="width: ${ size } px;height: ${ size } px" aria-hidden="true">
48+ <use xlink:href="#icon-a"></use>
49+ </svg></div>`
4750 } )
4851 . join ( '' ) } <div class="bold"><svg class="icon" aria-hidden="true">
49- <use xlink:href="#icon-B"></use>
50- </svg></div>
51- </div>
52- <div class="nm-fontcolor-container">
53- ${ colorList
52+ <use xlink:href="#icon-B"></use>
53+ </svg></div>
54+ </div>
55+ <div class="nm-fontcolor-container">
56+ ${ colorList
5457 . map ( color => {
5558 return `<div class="split6"><div class="palette" data-color="${ color } " style="background-color: ${ color } ;"></div></div>`
5659 } )
5760 . join ( '' ) }
58- </div>
59- <div class="bof">
60- <span class="font">${ i18n [ locale ] . font } </span>
61- <span class="background">${ i18n [ locale ] . background } </span>
62- </div>
63- `
64- tagDiv . innerHTML = `${ i18n [ locale ] . tag } <input class="nm-tag " tabindex="-1" placeholder="${ i18n [ locale ] . tagsSeparate } " /><br>`
65- iconDiv . innerHTML = `${ i18n [ locale ] . icon } <input class="nm-icon " tabindex="-1" placeholder=" ${ i18n [ locale ] . iconsSeparate } " /><br>`
66- urlDiv . innerHTML = `${ i18n [ locale ] . url } <input class="nm-url" tabindex="-1" /><br>`
61+ </div>
62+ <div class="bof">
63+ <span class="font">${ i18n [ locale ] . font } </span>
64+ <span class="background">${ i18n [ locale ] . background } </span>
65+ </div>` )
66+ const tagDiv = createDiv ( 'nm-tag' , ` ${ i18n [ locale ] . tag } <input class="nm-tag" tabindex="-1" placeholder=" ${ i18n [ locale ] . tagsSeparate } " />` )
67+ const iconDiv = createDiv ( 'nm-icon' , `${ i18n [ locale ] . icon } <input class="nm-icon " tabindex="-1" placeholder="${ i18n [ locale ] . iconsSeparate } " />` )
68+ const urlDiv = createDiv ( 'nm-url' , `${ i18n [ locale ] . url } <input class="nm-url " tabindex="-1" />` )
69+ const memoDiv = createDiv ( 'nm-memo' , `${ i18n [ locale ] . memo || 'Memo' } <textarea class="nm-memo" rows="5" tabindex="-1" />` )
6770
71+ // create container
6872 const menuContainer = document . createElement ( 'nmenu' )
6973 menuContainer . innerHTML = `
7074 <div class="button-container"><svg class="icon" aria-hidden="true">
@@ -75,23 +79,22 @@ export default function(mind) {
7579 menuContainer . appendChild ( tagDiv )
7680 menuContainer . appendChild ( iconDiv )
7781 menuContainer . appendChild ( urlDiv )
82+ menuContainer . appendChild ( memoDiv )
7883 menuContainer . hidden = true
79-
80- function clearSelect ( klass , remove ) {
81- var elems = mind . container . querySelectorAll ( klass )
82- ; [ ] . forEach . call ( elems , function ( el ) {
83- el . classList . remove ( remove )
84- } )
85- }
86-
8784 mind . container . append ( menuContainer )
85+
86+ // query input element
8887 const sizeSelector = menuContainer . querySelectorAll ( '.size' )
8988 const bold :HTMLElement = menuContainer . querySelector ( '.bold' )
9089 const buttonContainer :HTMLElement = menuContainer . querySelector ( '.button-container' )
9190 const fontBtn :HTMLElement = menuContainer . querySelector ( '.font' )
9291 const tagInput :HTMLInputElement = mind . container . querySelector ( '.nm-tag' )
9392 const iconInput :HTMLInputElement = mind . container . querySelector ( '.nm-icon' )
9493 const urlInput :HTMLInputElement = mind . container . querySelector ( '.nm-url' )
94+ const memoInput :HTMLInputElement = mind . container . querySelector ( '.nm-memo' )
95+
96+ // handle input and button click
97+ let bgOrFont
9598 menuContainer . onclick = e => {
9699 if ( ! mind . currentNode ) return
97100 const nodeObj = mind . currentNode . nodeObj
@@ -170,6 +173,10 @@ export default function(mind) {
170173 if ( ! mind . currentNode ) return
171174 mind . updateNodeHyperLink ( mind . currentNode . nodeObj , e . target . value )
172175 }
176+ memoInput . onchange = ( e :InputEvent & { target : HTMLInputElement } ) => {
177+ if ( ! mind . currentNode ) return
178+ mind . currentNode . nodeObj . memo = e . target . value
179+ }
173180 let state = 'open'
174181 buttonContainer . onclick = e => {
175182 if ( state === 'open' ) {
@@ -182,6 +189,8 @@ export default function(mind) {
182189 buttonContainer . innerHTML = `<svg class="icon" aria-hidden="true"><use xlink:href="#icon-close"></use></svg>`
183190 }
184191 }
192+
193+ // handle node selection
185194 mind . bus . addListener ( 'unselectNode' , function ( ) {
186195 menuContainer . hidden = true
187196 } )
@@ -217,10 +226,7 @@ export default function(mind) {
217226 } else {
218227 iconInput . value = ''
219228 }
220- if ( nodeObj . hyperLink ) {
221- urlInput . value = nodeObj . hyperLink
222- } else {
223- urlInput . value = ''
224- }
229+ urlInput . value = nodeObj . hyperLink || ''
230+ memoInput . value = nodeObj . memo || ''
225231 } )
226232}
0 commit comments