Project

General

Profile

Evolution #4573

Enlever Jquery UI du Core

Added by marcimat đŸŒ» 7 months ago. Updated 25 days ago.

Status:
Fermé
Priority:
Haut
Assignee:
-
Target version:
Start date:
10/13/2020
Due date:
% Done:

0%

Resolution:
fixed

Description

Jquery UI (https://jqueryui.com/) n’a plus d’activitĂ© maintenue (en tout cas aucune release depuis 4 ans maintenant).

Il serait opportun de supprimer jQuery_UI du core, et de le remplacer par des librairies spécifiques pour les besoins identifiés.

Tout d’abord l’usage dans le Core.

Je crois que l’on utilise :

le dateur

À remplacer par https://duetds.github.io/date-picker/ ?
Voir Ă©galement la discussion sur Saisies : https://git.spip.net/spip-contrib-extensions/saisies/issues/43

le sortable

À remplacer par https://sortablejs.github.io/sortablejs/ ?

D’autres plugins s’appuient sur d’autres Ă©lĂ©ments le jQuery-UI :

- Accordéons et Tabs (Fabrique)
- Une extension picker multidate (Agenda)
- ...

Dans un premier temps, il «suffit» qu’ils mettent le plugin jQueryUi actuel en dĂ©pendance...
Dans un second temps... trouver des alternatives adaptĂ©es... et faire en sorte qu’elles soient partageables entre diffĂ©rents plugins si besoin.

Sur le partageables

Il pourrait y avoir un plugin du core regroupant des librairies js utilisées réguliÚrement, comme le faisait le plugin jquery-ui, mais avec différentes librairies plus indépendantes.
Pourquoi pas. PlutĂŽt que de faire N petits plugins JS.

History

#1 Updated by nicod _ 7 months ago

+1 pour des scripts indépendants les uns des autres selon les besoins, remplaçables dans le temps, plutÎt que pour un gros framework monolithique.

Pour les accordéons, tabs, et autres, voir par exemple ces ressources :
https://van11y.net/
https://www.w3.org/TR/wai-aria-practices-1.1/ (plein de patterns d'interfaces dont on peut s'inspirer)

#2 Updated by tcharlss đŸœ 7 months ago

+1

#3 Updated by tcharlss đŸœ 7 months ago

Pour compléter la liste des widgets éventuels, un qui a l'air intéressant pour faire des dropdowns / boutons de menu : https://github.com/jonathanlevaillant/a11y-dropdown-component
Léger (1.1kb gzippé), accessible, et sans style par défaut (comme ça on fait ce qu'on veut).

#4 Updated by b b 7 months ago

On n'utiliserait pas le module autocomplete aussi par hasard ? (au moins dans selecteur generique)

https://github.com/solidusio/solidus/issues/2469 référence des alternatives pour sortable, datepicker et autocomplete

#5 Updated by nicod _ 7 months ago

Pour info, les autocomplete sont de trÚs gros piÚges pour l'accessibilité, ce sont des composants super complexes à gérer.
Mais sur le principe, si c'est un champ input avec autocomplete par exemple, et qui est fonctionnel mĂȘme sans l'autocomplete, alors ça peut passer.

Et pour info toujours, les assistants (lecteurs d'écran) gÚrent trÚs bien javascript aujourd'hui (tout ce qui est widget animés, dépliements etc).

#6 Updated by tcharlss đŸœ 7 months ago

Alors en fait pour le dropdown, la lib a11y-dropdown-component que je suggérais va pas le faire, 2 problÚmes :

  • Le menu n'est pas positionnĂ© « intelligemment » selon la place disponible (qu'on ne peut pas connaĂźtre par avance, ça dĂ©pend de la taille de l'Ă©cran et cie). Ça c'est un truc que le widget de jQuery UI gĂšre.
  • Et surtout on se retrouve avec les problĂšmes de z-index qu'on a actuellement avec le dropdown du menu des rĂŽles par exemple. La seule technique fiable c'est de dupliquer les menus dĂ©pliĂ©s Ă  la fin du HTML (en cachant l'original).

Dommage, candidat suivant !

#7 Updated by tcharlss đŸœ 7 months ago

Petite question pour pas suggérer des libs à tord : on vise quelle compatibilité ?
Est-ce que les scripts sous forme de modules ES6 ça passe ? (je suis pas trop au fait de leur support)
Forcément du jQuery ou du vanilla ?

#8 Updated by marcimat đŸŒ» 7 months ago

Je n’ai pas de rĂ©ponse Ă  tes questions @tcharlss

Par contre, dans SVP on est en train d’ajouter du dropdown avec bootsrap :

 lib/bootstrap/css/dropdown.css 
 lib/bootstrap/css/dropdown.css.map 
 lib/bootstrap/js/dropdown.js 
 lib/bootstrap/js/dropdown.js.map
 lib/bootstrap/js/popper.js
 lib/bootstrap/js/popper.js.map 
 lib/bootstrap/js/util.js
 lib/bootstrap/js/util.js.map

Boostrap JS est un bon candidat pour remplacer / proposer certains éléments.

#9 Updated by cedric - 3 months ago

  • Priority changed from Normal to Haut
  • Target version set to 4.0

Je mets 3.3 mais ça me semble chaud... et en mĂȘme temps releaser avec jquery ui maintenant c'est le trainer encore 4 ans.. (voire 10ans)

#10 Updated by cedric - 3 months ago

en profiter pour traiter #4139 sur le dateur

#11 Updated by cedric - 3 months ago

et #4549 pour le dateur toujours

#14 Updated by cedric - 28 days ago

Pour le dateur c'est réglé via https://git.spip.net/spip/spip/pulls/142

#15 Updated by cedric - 28 days ago

  • Status changed from Nouveau to En cours

Jquery UI est enlevé des zips via https://git.spip.net/spip/spip/commit/c04e7864e5bfb275b6cc4c6cc42d589032937e84

(je ne ferme pas, il faudra vérifier que le zip est bon avant)

#16 Updated by cedric - 25 days ago

  • Status changed from En cours to FermĂ©
  • Resolution set to fixed

Je viens de dl le zip nightly sur https://files.spip.net/spip/dev/spip-master.zip et il est bon : plus de jQuery UI dedans

#17 Updated by b b 25 days ago

\o/

#18 Updated by nicod _ 25 days ago

Par contre, il faudrait pouvoir le proposer en zip pour les plugins qui le <necessite> non ?

#19 Updated by marcimat đŸŒ» 25 days ago

Oui, en fait il est dans le dépot "plugins du core", et pas dans le dépot des plugins habituel. Je sais pas comment ça se gÚre

Also available in: Atom PDF