Bouton copier pour clé API et liens retour

Bonjour,

Est-il jouable d’avoir un bouton copier pour les clés API

Ainsi que pour les URL API retour

Cela donnerait du confort à l’utilisateur et éviterait de copier un espace ou autre.
Et peut être même que depuis une tablette ou autre cela rendrait le tout plus facile à faire.

On voit cela de plus en plus souvent et je trouve cela pratique et ergonomique.

:pray: :beers:

Dans mon plugin homebridge, j’utilise la lib https://clipboardjs.com/

ça serait bien de l’avoir (ou une autre) dans le core…

Bonjour,

Attention, pour le commit de cette feature avec navigator.clipboard.writeText (core/administration.js at 31059bbd11b870b35931dc4bd8d8aa17a3dbc3ba · jeedom/core · GitHub) :
La solution implémentée ne fonctionne que dans un contexte sécurisé (HTTPS) :
Secure contexts - Web security | MDN

(vérification du contexte sécurisé avec : window.isSecureContext == true)

  • Erreur Javascript avec un essai en http avec une url Jeedom locale : Uncaught TypeError: Cannot read properties of undefined (reading ‹ writeText ›)
  • Fonctionne correctement avec le même Jeedom en https

Une solution consiste à passer par la création d’un élément intermédiaire pour copier le texte.
Test rapide pour éviter la création d’un élément intermédiaire (mais qui positionne le focus sur le champ de la clé) :

  if (_target = event.target.closest('.bt_copyPass')) {
	_target.closest('.input-group').querySelector('.span_apikey').select();
    document.execCommand('copy');

    /*
   navigator.clipboard.writeText(_target.closest('.input-group').querySelector('.span_apikey').jeeValue()).then(function() {
    }, function() {
    });
   */
  }

Bonjour,
Je viens d’appliquer ta modification, a voir si ca marche bien pour tout le monde.

Il y aurait aussi moyen de conserver le code précédent lorsque c’est autorisé :

  if (_target = event.target.closest('.bt_copyPass')) {
    if (!navigator.clipboard) {
      _target.closest('.input-group').querySelector('.span_apikey').select();
      document.execCommand('copy');
      return;
    }

    navigator.clipboard.writeText(_target.closest('.input-group').querySelector('.span_apikey').jeeValue()).then(function() {
      /* clipboard successfully set */
    }, function() {
      /* clipboard write failed */
    });
  }

Ca fait 2 code je suis pas fan

Je comprends.

Sinon, je viens de créer un PR : une petite amélioration pour que le champ une fois copié ne reste pas sélectionné.

  if (_target = event.target.closest('.bt_copyPass')) {
	_target.closest('.input-group').querySelector('.span_apikey').select();
    document.execCommand('copy');
    window.getSelection()?.removeAllRanges();
  }

Super merci je viens de valider le pr.

Je viens de retester, cela fonctionne.

Merci à tous les deux

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.