2
2
* @module
3
3
*/
4
4
5
+ import dialogPolyfill from "../lib/dialog-polyfill/script.js" ;
5
6
import { cast , kodi } from "../core/index.js" ;
6
7
import { complete } from "../core/labellers.js" ;
7
8
import { notify } from "../core/notify.js" ;
@@ -333,6 +334,39 @@ const setFullscreen = function () {
333
334
kodi . gui . setFullscreen ( ) . catch ( splash ) ;
334
335
} ;
335
336
337
+ const openSendText = function ( ) {
338
+ // Annuler l'action (venant d'un raccourci clavier) si le bouton est
339
+ // désactivé.
340
+ if ( document . querySelector ( "#opensendtext" ) . disabled ) {
341
+ return ;
342
+ }
343
+
344
+ const dialog = document . querySelector ( "#dialogsendtext" ) ;
345
+ dialog . querySelector ( `input[name="text"]` ) . value = "" ;
346
+ // Utiliser une prothèse en attendant que les boites de dialogue soit
347
+ // implémentées dans Firefox.
348
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=840640
349
+ dialogPolyfill . registerDialog ( dialog ) ;
350
+ dialog . showModal ( ) ;
351
+ } ;
352
+
353
+ const closeDialog = function ( event ) {
354
+ // Fermer la boite de dialogue si l'utilisateur clique en dehors de la
355
+ // boite.
356
+ if ( event . explicitOriginalTarget . classList . contains ( "backdrop" ) ) {
357
+ event . target . close ( ) ;
358
+ }
359
+ } ;
360
+
361
+ const sendText = function ( event ) {
362
+ const dialog = event . target ;
363
+ if ( "send" === dialog . returnValue ) {
364
+ const text = dialog . querySelector ( `input[name="text"]` ) . value ;
365
+ const done = dialog . querySelector ( `input[name="done"]` ) . checked ;
366
+ kodi . input . sendText ( text , done ) . catch ( splash ) ;
367
+ }
368
+ } ;
369
+
336
370
const showPlayerProcessInfo = function ( ) {
337
371
// Annuler l'action (venant d'un raccourci clavier) si le bouton est
338
372
// désactivé.
@@ -663,6 +697,7 @@ const load = async function () {
663
697
664
698
document . querySelector ( "#home" ) . disabled = false ;
665
699
document . querySelector ( "#fullscreen" ) . disabled = false ;
700
+ document . querySelector ( "#opensendtext" ) . disabled = false ;
666
701
document . querySelector ( "#playerprocessinfo" ) . disabled = false ;
667
702
668
703
document . querySelector ( "#clear" ) . disabled = false ;
@@ -721,6 +756,7 @@ document.querySelector("#osd").addEventListener("click", showOSD);
721
756
722
757
document . querySelector ( "#home" ) . addEventListener ( "click" , home ) ;
723
758
document . querySelector ( "#fullscreen" ) . addEventListener ( "click" , setFullscreen ) ;
759
+ document . querySelector ( "#opensendtext" ) . addEventListener ( "click" , openSendText ) ;
724
760
document . querySelector ( "#playerprocessinfo" ) . addEventListener (
725
761
"click" ,
726
762
showPlayerProcessInfo ,
@@ -737,6 +773,10 @@ document.querySelector("#donate").addEventListener("click", donate);
737
773
document . querySelector ( "#rate" ) . addEventListener ( "click" , rate ) ;
738
774
document . querySelector ( "#preferences" ) . addEventListener ( "click" , preferences ) ;
739
775
776
+ document . querySelector ( "#dialogsendtext" ) . addEventListener ( "close" , sendText ) ;
777
+ document . querySelector ( "#dialogsendtext" ) . addEventListener ( "click" ,
778
+ closeDialog ) ;
779
+
740
780
document . querySelector ( "#configure" ) . addEventListener ( "click" , preferences ) ;
741
781
742
782
// Attention ! La popup n'a pas automatiquement le focus quand elle est ouverte
@@ -748,6 +788,17 @@ globalThis.addEventListener("keydown", (event) => {
748
788
return ;
749
789
}
750
790
791
+ // Ignorer les raccourcis clavier quand une boite de dialogue est ouverte
792
+ // (sauf pour la touche Entrée qui valide le formulaire).
793
+ const dialog = event . target . closest ( "dialog" ) ;
794
+ if ( null !== dialog ) {
795
+ if ( "Enter" === event . key ) {
796
+ dialog . close ( dialog . querySelector ( ".primary" ) . value ) ;
797
+ event . preventDefault ( ) ;
798
+ }
799
+ return ;
800
+ }
801
+
751
802
// Écrire normalement les caractères dans la zone de texte (sauf pour la
752
803
// touche Entrée qui envoi l'URL saisie).
753
804
if ( "TEXTAREA" === event . target . tagName ) {
0 commit comments