Solitaire - Drag and drop sans jQuery UI

2019-04-15 #javascript

Ce billet fait partie d'une série consacrée au travail en cours sur mon site de solitaires et aux évolutions que je souhaite y apporter :

  1. Introduction
  2. Passer de jQuery à Vanilla JS
  3. Améliorer FreeCell
  4. Ajouter des animations CSS
  5. Drag and drop sans jQuery UI
  6. Remplacer AjaxMin, etc...

À assez long terme par rapport à tout le reste (remplacer jQuery, terminr FreeCell, ajouter quelques animations...), j'aimerai revoir la gestion du glisser / déposer dans mes jeux.

Actuellement, toute cette partie est gérée via jQuery UI et jQuery UI Touch Punch pour les tablettes et les smartphones. Ils font très bien l'affaire, mais j'aimerais redévelopper cette fonctionnalité pour utiliser quelque chose de plus "moderne".

C'est un objectif assez lointain et pas vraiment urgent. D'abord cela ne pourra se faire qu'une fois que j'aurai réussi à abandonner complètement jQuery pour l'ensemble des jeux qui n'utilisent pas le drag & drop. Et c'est quelque chose que j'envisage pour après que FreeCell soit terminé et que j'ai ajouté quelques animations...

Pour remplacer jQuery UI, il faut déjà que je trouve une librairie Vanilla JS qui soit super simple pour gérer le glisser / déposer. Pour l'instant, j'ai repéré les 5 librairies JavaScript suivantes qui gèrent les navigateurs récents mais aussi Internet Explorer et les écrans tactiles...

Dragula

Dragula est une librairie JavaScript simple et sans aucune dépendance. Elle permet d'ajouter du drag & drop aux éléments du DOM. Elle gère les périphériques tactiles et fonctionne aussi avec IE7+.

Draggabilly

Draggabilly est une librairie JavaScript avec pour seul objectif de faire que le drag and drop marche. Elle fonctionne avec IE10+ et les appareils tactiles.

Draggable JS

Draggable JS est une bibliothèque JavaScript complètement paramétrable pour gérer tout ce qui est drag & drop, tri ou permutation. C'est une librairie orientée ES6 qui est compatible IE11+.

À l'origine, c'était un projet issu de la plateforme de eCommerce Shopify, mais il est désormais géré par d'autres personnes.

Interact.js

Interact.js est une librairie JavaScript légère et autonome pour gérer le glisser / déposer et le redimensionnement sur les navigateurs modernes. Elle fonctionne avec IE9+.

SortableJS

SortableJS est une librairie JavaScript simple et légère qui permet de trier une liste d'éléments du DOM. Elle fonctionne avec tous les navigateurs et appareils tactiles, dont IE9+.

C'est sans doute une librairie plus destinée au tri des "listes". Mais il y a quand même 2 points intéressants :

  • Il y a un "Grid Exemple" qui pourrait peut-être le faire pour un jeu de carte...
  • Il y a aussi 2 comparatifs vidéos par rapport à jQuery UI et Dragula.

Conclusion

Ça va me demander pas mal de travail pour étudier et tester tout ça avant de pouvoir sélectionner la "bonne" librairie dans un premier temps. Et après, il faudra encore parvenir à la maitriser suffisament pour réussir à l'intégrer dans mes jeux (et dans la mesure du possible avec dQuery.js).

C'est donc pas demain la veille que je vais attaquer ce gros morceau. Mais l'avantage, c'est que d'ici là j'aurai sans doute laissé tomber IE9...