2022-03-05 23:28:29 +01:00
'use strict' ;
2022-07-29 22:52:58 +02:00
class RegisterEventHelper {
2022-03-05 23:28:29 +01:00
constructor ( ) {
2022-03-06 14:45:01 +01:00
this . registerTooltips ( ) ;
this . registerSpecialCharInput ( ) ;
2022-03-05 23:28:29 +01:00
}
registerLoadHandler ( fn ) {
2022-07-31 21:47:31 +02:00
document . addEventListener ( 'turbo:render' , fn ) ;
2022-03-05 23:28:29 +01:00
document . addEventListener ( 'turbo:load' , fn ) ;
}
2022-03-06 14:45:01 +01:00
registerTooltips ( ) {
this . registerLoadHandler ( ( ) => {
$ ( ".tooltip" ) . remove ( ) ;
2022-07-24 20:23:12 +02:00
//Exclude dropdown buttons from tooltips, otherwise we run into endless errors from bootstrap (bootstrap.esm.js:614 Bootstrap doesn't allow more than one instance per element. Bound instance: bs.dropdown.)
$ ( 'a[title], button[title]:not([data-bs-toggle="dropdown"]), span[title], h6[title], h3[title], i.fas[title]' )
2022-03-06 14:45:01 +01:00
//@ts-ignore
. tooltip ( "hide" ) . tooltip ( { container : "body" , placement : "auto" , boundary : 'window' } ) ;
} ) ;
}
registerSpecialCharInput ( ) {
this . registerLoadHandler ( ( ) => {
//@ts-ignore
2022-07-31 21:47:31 +02:00
$ ( "input[type=text], input[type=search]" ) . unbind ( "keydown" ) . keydown ( function ( event ) {
2022-03-06 14:45:01 +01:00
let greek = event . altKey ;
let greek _char = "" ;
if ( greek ) {
switch ( event . key ) {
case "w" : //Omega
greek _char = '\u2126' ;
break ;
case "u" :
case "m" : //Micro
greek _char = "\u00B5" ;
break ;
case "p" : //Phi
greek _char = "\u03C6" ;
break ;
case "a" : //Alpha
greek _char = "\u03B1" ;
break ;
case "b" : //Beta
greek _char = "\u03B2" ;
break ;
case "c" : //Gamma
greek _char = "\u03B3" ;
break ;
case "d" : //Delta
greek _char = "\u03B4" ;
break ;
case "l" : //Pound
greek _char = "\u00A3" ;
break ;
case "y" : //Yen
greek _char = "\u00A5" ;
break ;
case "o" : //Yen
greek _char = "\u00A4" ;
break ;
case "1" : //Sum symbol
greek _char = "\u2211" ;
break ;
case "2" : //Integral
greek _char = "\u222B" ;
break ;
case "3" : //Less-than or equal
greek _char = "\u2264" ;
break ;
case "4" : //Greater than or equal
greek _char = "\u2265" ;
break ;
case "5" : //PI
greek _char = "\u03c0" ;
break ;
case "q" : //Copyright
greek _char = "\u00A9" ;
break ;
case "e" : //Euro
greek _char = "\u20AC" ;
break ;
}
if ( greek _char == "" ) return ;
let $txt = $ ( this ) ;
//@ts-ignore
let caretPos = $txt [ 0 ] . selectionStart ;
let textAreaTxt = $txt . val ( ) . toString ( ) ;
$txt . val ( textAreaTxt . substring ( 0 , caretPos ) + greek _char + textAreaTxt . substring ( caretPos ) ) ;
}
} ) ;
//@ts-ignore
this . greek _once = true ;
} )
}
2022-03-05 23:28:29 +01:00
}
export default new RegisterEventHelper ( ) ;