Mercurial Hosting > freedit
comparison src/bbcode/bbcode.js @ 47:7ef9222474e2
add more button
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 14 Nov 2022 23:01:29 -0700 |
parents | 289718f121e4 |
children | 4e1a01db19ec |
comparison
equal
deleted
inserted
replaced
46:289718f121e4 | 47:7ef9222474e2 |
---|---|
37 formData.append( 'UPLOADCARE_PUB_KEY', 'fe3d30f3088a50941d45' ); | 37 formData.append( 'UPLOADCARE_PUB_KEY', 'fe3d30f3088a50941d45' ); |
38 formData.append( 'file', file ); | 38 formData.append( 'file', file ); |
39 request.send(formData); | 39 request.send(formData); |
40 } | 40 } |
41 | 41 |
42 function bb_getDiv(node) { | 42 function bb_getDivBbcode(node) { |
43 do { | 43 do { |
44 //console.log(node); | 44 //console.log(node); |
45 if( node.getAttribute('bbcode') !== null ) | 45 if( node.getAttribute('bbcode') !== null ) |
46 return node; | 46 return node; |
47 } while( node = node.parentNode ); | 47 } while( node = node.parentNode ); |
48 } | 48 } |
49 | 49 |
50 function bb_getTextarea(node) { | 50 function bb_getTextarea(node) { |
51 return bb_getDiv(node).querySelector('textarea'); | 51 return bb_getDivBbcode(node).querySelector('textarea'); |
52 } | 52 } |
53 | 53 |
54 function bb_uploaded(input,url,filename) { | 54 function bb_uploaded(input,url,filename) { |
55 let textarea = bb_getTextarea(input); | 55 let textarea = bb_getTextarea(input); |
56 textarea.setRangeText(url,textarea.selectionStart,textarea.selectionEnd,'select'); | 56 textarea.setRangeText(url,textarea.selectionStart,textarea.selectionEnd,'select'); |
64 textarea.setRangeText(closeTag,end,end); | 64 textarea.setRangeText(closeTag,end,end); |
65 textarea.setRangeText(openTag,start,start); | 65 textarea.setRangeText(openTag,start,start); |
66 let len = openTag.length; | 66 let len = openTag.length; |
67 textarea.setSelectionRange(start+len,end+len); | 67 textarea.setSelectionRange(start+len,end+len); |
68 textarea.focus(); | 68 textarea.focus(); |
69 } | |
70 | |
71 function bb_more(button) { | |
72 let checked = button.getAttribute('checked') !== null; | |
73 let buttons = button.parentNode.querySelectorAll('button'); | |
74 if( checked ) { | |
75 button.removeAttribute('checked'); | |
76 for( let b of buttons ) { | |
77 if( b === button ) | |
78 break; | |
79 b.setAttribute('hidden',''); | |
80 } | |
81 } else { | |
82 button.setAttribute('checked',''); | |
83 for( let b of buttons ) { | |
84 if( b === button ) | |
85 break; | |
86 b.removeAttribute('hidden'); | |
87 } | |
88 } | |
69 } | 89 } |
70 | 90 |
71 function bbcodeCreate(div,options) { | 91 function bbcodeCreate(div,options) { |
72 if( typeof(div) === 'string' ) { | 92 if( typeof(div) === 'string' ) { |
73 div = document.querySelector(div); | 93 div = document.querySelector(div); |
85 <button type=button onclick="bb_add(this,'[i]','[/i]')" title="Italic"><img src="/bbcode/icons/format_italic.svg"></button> | 105 <button type=button onclick="bb_add(this,'[i]','[/i]')" title="Italic"><img src="/bbcode/icons/format_italic.svg"></button> |
86 <button type=button onclick="bb_add(this,'[u]','[/u]')" title="Underline"><img src="/bbcode/icons/format_underlined.svg"></button> | 106 <button type=button onclick="bb_add(this,'[u]','[/u]')" title="Underline"><img src="/bbcode/icons/format_underlined.svg"></button> |
87 <button type=button onclick="bb_add(this,'[s]','[/s]')" title="Strikethrough"><img src="/bbcode/icons/format_strikethrough.svg"></button> | 107 <button type=button onclick="bb_add(this,'[s]','[/s]')" title="Strikethrough"><img src="/bbcode/icons/format_strikethrough.svg"></button> |
88 <button type=button onclick="bb_add(this,'[sub]','[/sub]')" title="Subscript"><img src="/bbcode/icons/subscript.svg"></button> | 108 <button type=button onclick="bb_add(this,'[sub]','[/sub]')" title="Subscript"><img src="/bbcode/icons/subscript.svg"></button> |
89 <button type=button onclick="bb_add(this,'[sup]','[/sup]')" title="Superscript"><img src="/bbcode/icons/superscript.svg"></button> | 109 <button type=button onclick="bb_add(this,'[sup]','[/sup]')" title="Superscript"><img src="/bbcode/icons/superscript.svg"></button> |
110 <button more checked type=button onclick="bb_more(this)" title="More..."><img src="/bbcode/icons/more_horiz.svg"></button> | |
90 <input type=file onchange="bb_upload(this,bb_uploaded)"> | 111 <input type=file onchange="bb_upload(this,bb_uploaded)"> |
91 <button type=button onclick="bb_fileButtonClick(this)" title="Upload File"><img src="/bbcode/icons/file_upload.svg"></button> | 112 <button type=button onclick="bb_fileButtonClick(this)" title="Upload File"><img src="/bbcode/icons/file_upload.svg"></button> |
92 ` ; | 113 ` ; |
93 if(save) { | 114 if(save) { |
94 html += `\ | 115 html += `\ |
109 div.querySelector('button[save]').addEventListener('click',save); | 130 div.querySelector('button[save]').addEventListener('click',save); |
110 if(cancel) | 131 if(cancel) |
111 div.querySelector('button[cancel]').addEventListener('click',cancel); | 132 div.querySelector('button[cancel]').addEventListener('click',cancel); |
112 let textarea = div.querySelector('textarea') | 133 let textarea = div.querySelector('textarea') |
113 bb_fixTextarea(textarea); | 134 bb_fixTextarea(textarea); |
135 bb_more( div.querySelector('button[more]') ); | |
114 } | 136 } |