[prive ↪ spip_5566_plainjs] 8 commits

placido/prive | 8 commits

Par placido, le 9 octobre 2024 à 10h25min :

docs(changelog): #spip/spip#5566

Modifié
CHANGELOG.md

Détails : docs(changelog): #spip/spip#5566 (752c6391) · Validations · placido / prive · GitLab

==============================
Par placido, le 9 octobre 2024 à 10h25min :

fix : .formulaire_configurer_preferences

ref spip/spip#5566

L’attribut onchange sur les input s’avèrait être incompatible avec la nouvelle implémentation des formulaires dynamiques (peut-être liée à l’absence de jquery.forms.js ??)

Exit la syntaxe jQuery.

Modifié
formulaires/configurer_preferences.html

Détails : fix : `.formulaire_configurer_preferences` (34c17a2a) · Validations · placido / prive · GitLab

==============================
Par placido, le 9 octobre 2024 à 10h25min :

fix : animations pour .formulaire_editer-liens

ref : spip/spip#5566

Modifié
formulaires/editer_liens.html

Détails : fix : animations pour `.formulaire_editer-liens` (1e14ba64) · Validations · placido / prive · GitLab

==============================
Par placido, le 9 octobre 2024 à 10h25min :

fix: envoyer les variables qui doivent être annulées dans le contexte ajax dans un var_nullify plutot que de les envoyer sous forme de chaine vide

report depuis !20 a887315d9b0095fcbe3ef1bd977696343284b460

  • considérer 0 comme un 3ième argument valide pour générer une valeur de retour parametre_url()

Modifié
javascript/ajaxCallback.js
javascript/ajaxCallback.min.js
javascript/ajaxCallback/src/ajaxbloc.js
javascript/ajaxCallback/src/url.js

Détails : fix: envoyer les variables qui doivent être annulées dans le contexte ajax... (3843dc77) · Validations · placido / prive · GitLab

==============================
Par placido, le 9 octobre 2024 à 10h25min :

feat : Méthode de chargement alternative des ressources javascript

ref : spip/spip#5566 Principe : Dissocier le chargement des « libs » et le code d’initialisation Les ressources externes (libs) sont chargées, au choix : - via insert_head et concaténées par le compresseur (méthode classique, lorque cela concerne toutes les pages) - occasionnellement, depuis un squelette via une directive import {fn} from #IMPORT_JS{module_foo}; si compatible (esm) Les codes d’initialisation : - [CONCIS] : dans la mesure du possible, on n’y fait que : *- compléter l’objet de configuration global (anciennement spipConfig) *- cibler les éléments *- attacher des écouteurs d’événements *- lancer l’exécution (et sa persistance via onAjaxLoad) ; de préférence une seule fonctionnalité à la fois - [GLOBAL] : s’applique sur toutes les pages (repose sur #INSERT_HEAD) - [AUTOMATIQUE] : insertion automatique du contenu au sein d’une balise <script[type="module"]/> si le chemin du fichier contient javascript/_inits/ (un peu à la manière dont les plugins peuvent présenter une feuille de style dynamique pour l’espace privé style_prive_plugin_foo.html ) - [POLYMORPHE] : fichiers statiques (.js) et dynamiques (.js.html) sont possibles. - [ORDONNÉ] : on peut choisir dans quel ordre de la file ce code sera chargé en préfixant le nom du fichier d’un numéro (facultatif) qui fait office d’index ex : javascript/_inits/20_popup.js sera inséré (et exécuté) avant javascript/_inits/30_alert.js - [SURCHARGEABLE] : la logique spipienne d’un plugin pouvant surcharger un fichier d’un plugin qu’il nécessite, demeure (l’index, et l’extension, sont ignorés pour la surcharge) - [SOUPLE] : un fichier d’initialisation dont le path contient (‹ prive/ ›) ne sera appelé que pour l’espace privé. En complément, s’il existe, pour la partie publique, un fichier d’initialisation vide (dont le nom correspond à un fichier disponible depuis prive/) alors on charge le contenu de ce dernier (un peu à la manière d’un gabarit vide de formulaire ayant déclaré des saisies) Les avantages de cette méthode : - Un bien meilleur contrôle sur l’enchaînement et l’ordre d’exécution dans la page (?var_mode=debug_js offrant même un contrôle visuel direct). - Le bénéfice inhérent à la balise <script[type="module"]/> qui opère de manière différée : plus la peine de s’assurer qu’une lib est bien chargée avant de lancer l’exécution. - Simplifie la déclaration des variables de configuration, jusqu’ici déclarées en ligne dans le <head> via #INSERT_HEAD_CSS (ex window.mediabox_settings) - Vitesse de déploiement : Pas la peine de déclarer X entrées dans le pipeline insert_head - Réemploi possible espace privé <=> partie publique Quelques exemples (pas si) farfelus rendus possibles : - Je suis hyperoptimiste et j’estime que mon tout nouveau site n’a besoin pas besoin de supporter les usages legacy echo '// neant' > squelettes/javascript/_inits/retrocompat.js - Je veux redéfinir le style embarqué des éléments lors d’une animation de chargement (.loading) touch squelettes/javascript/_inits/15_style_anim.js Puis dans le fichier : import { default as spip } from "config.js"; spip.css.animateLoading = 'background-color:red;'; etc… 48fcdd

Ajouté
javascript/_init.js.html
javascript/_init.js_fonctions.php
javascript/_inits/03_prive_config.js.html
javascript/_inits/05_retrocompat.js.html
javascript/_inits/20_ajaxbloc.js
javascript/_inits/30_ajaxform.js
Modifié
squelettes/inclure/head.html

Détails : feat : Méthode de chargement alternative des ressources javascript (715ea71e) · Validations · placido / prive · GitLab

==============================
Par placido, le 9 octobre 2024 à 10h22min :

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

ref : spip/spip#5566 - Le fichier gère notamment le rechargement des inclures ajaxés, des formulaires et des boutons d’action - Il devient un module ESM dont les fonctions utilitaires (onAjaxLoad, parametre_url, …) doivent désormais être appelées via la syntaxe import typique des modules. - Le fichier est ventilé en sous-modules pour faciliter lisibilité et maintenabilité, ce qui requiert une étape de compilation ou « build » : (ex : bun run build ou bun run watch depuis le dossier prive/javascript/ajaxCallback.js) - Exit les dépendances à jQuery et jquery.form.js - Un fichier retrocompat.js est dévolu à assurer une certaine rétro-compatibilité. Changements notables : ## L’objet de configuration global est désormais un module « config.js » Ce module est accessible pour les scripts non ESM via un « alias » (proxy) depuis window.spipConfig ; La méthode recommandée pour y accéder depuis un squelette est la suivante <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 . 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. chores : ne pas prendre en compte les dossiers node_modules/ 1aea0f

Ajouté
javascript/ajaxCallback.min.js
javascript/ajaxCallback/package.json
javascript/ajaxCallback/src/ajaxbloc.js
javascript/ajaxCallback/src/ajaxform.js
javascript/ajaxCallback/src/anim.js
javascript/ajaxCallback/src/cvt_verifier.js
javascript/ajaxCallback/src/history.js
javascript/ajaxCallback/src/log.js
javascript/ajaxCallback/src/main.js
javascript/ajaxCallback/src/reader.js
javascript/ajaxCallback/src/url.js
javascript/config.js.html
javascript/jquery.browser.js
javascript/retrocompat.js
javascript/retrocompat.min.js
squelettes/inclure/importmap.html
squelettes/inclure/importmap_fonctions.php
Modifié
.gitignore
javascript/ajaxCallback.js

Détails : change : ajaxCallback.js réécrit en javascript natif (36ae1b82) · Validations · placido / prive · GitLab

==============================
Par Maïeul Rouquette, le 8 octobre 2024 à 14h58min :

docs(changelog): accent en trop et backsticks en moins

Modifié
CHANGELOG.md

Détails : docs(changelog): accent en trop et backsticks en moins (86fa1f53) · Validations · placido / prive · GitLab

==============================
Par Maïeul Rouquette, le 8 octobre 2024 à 14h56min :

style: retour ligne

Modifié
CHANGELOG.md

Détails : style: retour ligne (b4cbce3e) · Validations · placido / prive · GitLab