[spip ↪ issue_5566_plainjs] 4 commits

placido/spip | 4 commits

Par placido, le 26 septembre 2024 à 11h39min :

feat : importmap

Ref #5566

Permet de créer des alias pour les ressources JS locales, ce qui facilite, côté navigateur, la syntaxe d’import des scripts de type module.

voir : <script type="importmap"> - HTML (HyperText Markup Language) | MDN

Cela résoud le problème des scripts dont l’url est changeante (via #PRODUIRE notamment).

NB : La balise <script [type=importmap]> est déclarée dans <head> avant l’appel du premier script de type module.

Nouveautés :

  • balise #IMPORT_JS : pour la résolution d’url de la ressource
  • un pipeline importmap : permet d’ajouter / supprimer les éléments à faire figurer dans l’annuaire, côté privé et/ou public, au choix.

2 cas d’usage pour l’exemple :

   import { default as spip } from "config.js"; // <- config.js.html étant un fichier dynamique référencé via le pipeline importmap
   console.log(spip);
<script type="module">
   import { fn } from "#IMPORT_JS{module_x.js}";
   fn();
</script>

Ajouté
ecrire/balise/import_js.php
ecrire/inc/importmap.php
Modifié
CHANGELOG.md
ecrire/inc/pipelines.php
ecrire/inc/pipelines_ecrire.php
ecrire/paquet.xml

Détails : feat : importmap (ebc41519) · Validations · placido / spip · GitLab

==============================
Par placido, le 26 septembre 2024 à 09h48min :

feat: méthode de chargement atomique

Ajouté
prive/javascript/_init.js.html
prive/javascript/_init.js_fonctions.php
prive/javascript/_inits/03_prive_config.js.html
prive/javascript/_inits/05_retrocompat.js.html
prive/javascript/_inits/20_ajaxbloc.js
prive/javascript/_inits/30_ajaxform.js
prive/javascript/ajaxCallback/src/ajaxbloc.js
prive/javascript/ajaxCallback/src/ajaxform.js
prive/javascript/ajaxCallback/src/anim.js
prive/javascript/ajaxCallback/src/cvt_verifier.js
prive/javascript/ajaxCallback/src/history.js
prive/javascript/ajaxCallback/src/log.js
prive/javascript/ajaxCallback/src/main.js
prive/javascript/ajaxCallback/src/reader.js
prive/javascript/ajaxCallback/src/url.js
prive/javascript/retrocompat.js
prive/javascript/retrocompat.min.js
Supprimé
prive/javascript/_prive_init.js
prive/javascript/_spip_init.js
Modifié
ecrire/inc/importmap.php
prive/javascript/ajaxCallback.js
prive/javascript/ajaxCallback.min.js
prive/javascript/ajaxCallback/package.json
prive/squelettes/inclure/head.html
prive/squelettes/inclure/importmap.html
prive/squelettes/inclure/importmap_fonctions.php

Détails : feat: méthode de chargement atomique (9028df0e) · Validations · placido / spip · GitLab

==============================
Par placido, le 23 août 2024 à 20h36min :

change : ajaxCallback.js réécrit en javascript natif

  • Le fichier gère notamment le rechargement des inclures ajaxés, des formulaires et des boutons d’action
  • Exit les dépendances à jQuery et jquery.form.js
  • Le fichier est ventilé en sous-modules pour faciliter lisibilité et maintenabilité
  • Il devient lui-même un module (esm) dont les fonctions utilitaires peuvent (doivent) être importées (ex. : onAjaxLoad, parametre_url, …)

Changements notables :

Il n’est plus une propriété directe de window (spipConfig.core) ; mais se trouve localisé dans un module JS (config.js.html). Étant déclaré dans le pipeline importmap, on peut y accéder et modifier les valeurs simplement, comme ceci :

<script type="module">
   import { default as spip } from "config.js";
   console.log(spip);
   spip.ajax_image_searching = "⌛";
</script>

Autres changements :

  • On peut activer le mode verbeux (log) simplement grâce au paramètre d’url?var_mode=debug_js. Des modules tiers peuvent s’appuyer sur ce dernier :
import {log} from "ajaxCallBack.js";
log('quelque_chose');
  • Les fonctions d’animations animateLoading(), endLoading(), animateRemove() et animateAppend(), reposent sur des déclarations CSS. Pour l’heure, seule animateLoading() est personnalisable via l’objet de config (spip.css.animateLoading)
  • La fonction positionner() implémente désormais scrollIntoView, et l’ajustement de la marge verticale est à personnalisée manuellement via la règle CSS : scroll-margin
  • Les fonctionsjQuery.spip.intercepted.xxx, sont considérées totalement dépréciées, et supprimées.
  • Les fonctions jQuery.uaMatch, et jQuery.browser sont considérées dépréciées, mais demeurent dans le fichier résiduel jquery.browser.js le temps d’opérer la transition avec les fonctions de l’espace privé qui les nécessitent.
  • jquery.form.js n’est plus appelé par le pipeline jquery_plugins
  • les sous-dossiers node_modules/ sont exclus de l’indexation git.

Ajouté
prive/javascript/_prive_init.js
prive/javascript/_spip_init.js
prive/javascript/ajaxCallback.min.js
prive/javascript/ajaxCallback/ajaxbloc.js
prive/javascript/ajaxCallback/ajaxform.js
prive/javascript/ajaxCallback/anim.js
prive/javascript/ajaxCallback/cvt_verifier.js
prive/javascript/ajaxCallback/history.js
prive/javascript/ajaxCallback/log.js
prive/javascript/ajaxCallback/main.js
prive/javascript/ajaxCallback/package.json
prive/javascript/ajaxCallback/reader.js
prive/javascript/ajaxCallback/url.js
prive/javascript/config.js.html
prive/javascript/jquery.browser.js
prive/javascript/obsolete.js.html
Modifié
.gitignore
CHANGELOG.md
ecrire/inc/importmap.php
ecrire/inc/pipelines.php
ecrire/inc/pipelines_ecrire.php
prive/javascript/ajaxCallback.js
prive/squelettes/inclure/head.html

Détails : change : ajaxCallback.js réécrit en javascript natif (7bec367e) · Validations · placido / spip · GitLab

==============================
Par placido, le 23 août 2024 à 20h35min :

feat : importmap

Ref #5566

Permet de créer des alias pour les ressources JS locales, ce qui facilite, côté navigateur, la syntaxe d’import des scripts de type module.

voir : <script type="importmap"> - HTML (HyperText Markup Language) | MDN

Cela résoud le problème des scripts dont l’url est changeante (via #PRODUIRE notamment).

NB : La balise <script [type=importmap]> est déclarée dans <head> avant l’appel du premier script de type module.

Nouveautés :

  • balise #IMPORT_JS : pour la résolution d’url de la ressource
  • un pipeline importmap : permet d’ajouter / supprimer les éléments à faire figurer dans l’annuaire, côté privé et/ou public, au choix.

2 cas d’usage pour l’exemple :

   import { default as spip } from "config.js"; // <- config.js.html étant un fichier dynamique référencé via le pipeline importmap
   console.log(spip);
<script type="module">
   import { init } from "#IMPORT_JS{module_x.js}";
   init();
</script>

Ajouté
ecrire/balise/import_js.php
ecrire/inc/importmap.php
prive/squelettes/inclure/importmap.html
prive/squelettes/inclure/importmap_fonctions.php
Modifié
CHANGELOG.md
ecrire/paquet.xml

Détails : feat : importmap (bc9248bf) · Validations · placido / spip · GitLab