22 * Clipboard functions
33 *
44 * Dependencies:
5- * - popper.js (https://github.com/popperjs/popper-core)
6- * - clipboard.js (https://github.com/zenorocha/clipboard.js)
5+ * clipboard.js (https://github.com/zenorocha/clipboard.js)
76 */
87
8+ import Tooltip from 'bootstrap/js/src/tooltip' ;
9+
910const clipboardSelector = '.code-header>button' ;
1011
1112const ICON_DEFAULT = 'far fa-clipboard' ;
@@ -38,11 +39,11 @@ function unlock(node) {
3839function showTooltip ( btn ) {
3940 const succeedTitle = btn . getAttribute ( ATTR_TITLE_SUCCEED ) ;
4041 btn . setAttribute ( ATTR_TITLE_ORIGIN , succeedTitle ) ;
41- bootstrap . Tooltip . getInstance ( btn ) . show ( ) ;
42+ Tooltip . getInstance ( btn ) . show ( ) ;
4243}
4344
4445function hideTooltip ( btn ) {
45- bootstrap . Tooltip . getInstance ( btn ) . hide ( ) ;
46+ Tooltip . getInstance ( btn ) . hide ( ) ;
4647 btn . removeAttribute ( ATTR_TITLE_ORIGIN ) ;
4748}
4849
@@ -56,7 +57,7 @@ function resumeIcon(btn) {
5657 icon . setAttribute ( 'class' , ICON_DEFAULT ) ;
5758}
5859
59- export function initClipboard ( ) {
60+ function setCodeClipboard ( ) {
6061 const clipboardList = document . querySelectorAll ( clipboardSelector ) ;
6162
6263 if ( clipboardList . length === 0 ) {
@@ -73,7 +74,7 @@ export function initClipboard() {
7374
7475 [ ...clipboardList ] . map (
7576 ( elem ) =>
76- new bootstrap . Tooltip ( elem , {
77+ new Tooltip ( elem , {
7778 placement : 'left'
7879 } )
7980 ) ;
@@ -97,11 +98,15 @@ export function initClipboard() {
9798 unlock ( trigger ) ;
9899 } , TIMEOUT ) ;
99100 } ) ;
101+ }
100102
101- /* --- Post link sharing --- */
102-
103+ function setLinkClipboard ( ) {
103104 const btnCopyLink = document . getElementById ( 'copy-link' ) ;
104105
106+ if ( btnCopyLink === null ) {
107+ return ;
108+ }
109+
105110 btnCopyLink . addEventListener ( 'click' , ( e ) => {
106111 const target = e . target ;
107112
@@ -116,7 +121,7 @@ export function initClipboard() {
116121
117122 // Switch tooltip title
118123 target . setAttribute ( ATTR_TITLE_ORIGIN , succeedTitle ) ;
119- bootstrap . Tooltip . getInstance ( target ) . show ( ) ;
124+ Tooltip . getInstance ( target ) . show ( ) ;
120125
121126 lock ( target ) ;
122127
@@ -128,6 +133,11 @@ export function initClipboard() {
128133 } ) ;
129134
130135 btnCopyLink . addEventListener ( 'mouseleave' , ( e ) => {
131- bootstrap . Tooltip . getInstance ( e . target ) . hide ( ) ;
136+ Tooltip . getInstance ( e . target ) . hide ( ) ;
132137 } ) ;
133138}
139+
140+ export function initClipboard ( ) {
141+ setCodeClipboard ( ) ;
142+ setLinkClipboard ( ) ;
143+ }
0 commit comments