[prive ↪ spip_5566_plainjs] 10 commits

placido/prive | 10 commits

Par placido, le 31 octobre 2024 à 11h22min :

docs(changelog): #spip/spip#5566

Modifié
CHANGELOG.md

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

==============================
Par placido, le 31 octobre 2024 à 11h22min :

build: ajaxCallback.js
rétablir ajaxCallback.js et ajaxCallback.min.js dans le référentiel git, jusqu’alors écartés pour simplifier la fusion de commits

Modifié
.gitignore
javascript/ajaxCallback.js
javascript/ajaxCallback.min.js

Détails : build: ajaxCallback.js (9261df08) · Validations · placido / prive · GitLab

==============================
Par placido, le 31 octobre 2024 à 11h21min :

feat: un module « presentation » pour les fonctions du prive/

ref spip/spip#5566

Un module boite à outils pour les besoins d’animation / présentation de l’espace privé.
On y introduit les fonctionnalités naguère inclues dans ajaxCallback.js + celles qui composaient le fichier presentation.js, mais cette fosi-ci dans une version sans jQuery.

  • logo_survol
  • puce_survol
  • blocs_depliants
  • reloadExecPage

Plus quelques fonctions utilitaires :

  • slideUp, slideDown, slideToggle
  • throttle et debounce pour la performance sur les événements
  • hoverClass

l’ancienne version non modulaire presentation.js n’est plus chargée dans la head

Ajouté
javascript/_inits/35_logo_survol.js
javascript/_inits/38_puces_survol.js
javascript/_inits/40_depliants.js
javascript/presentation.min.js
javascript/presentation/package.json
javascript/presentation/src/depliants.js
javascript/presentation/src/dom-slide.js
javascript/presentation/src/hoverClass.js
javascript/presentation/src/logo.js
javascript/presentation/src/main.js
javascript/presentation/src/perf.js
javascript/presentation/src/puces.js
javascript/presentation/src/reloadExecPage.js
Modifié
javascript/_inits/05_retrocompat.js.html
javascript/presentation.js
javascript/retrocompat.js
squelettes/inclure/head.html
squelettes/inclure/importmap.html

Détails : feat: un module "presentation" pour les fonctions du `prive/` (8282ceea) · Validations · placido / prive · GitLab

==============================
Par placido, le 31 octobre 2024 à 11h21min :

feat: admin_vider_cache n’a pas besoin de jQuery

Modifié
squelettes/inclure/admin_vider_cache.html

Détails : feat: `admin_vider_cache` n'a pas besoin de jQuery (06442174) · Validations · placido / prive · GitLab

==============================
Par placido, le 31 octobre 2024 à 11h21min :

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` (7705f8f6) · Validations · placido / prive · GitLab

==============================
Par placido, le 31 octobre 2024 à 11h21min :

fix: animations pour .formulaire_editer-liens

ref : spip/spip#5566

Modifié
formulaires/editer_liens.html

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

==============================
Par placido, le 31 octobre 2024 à 11h21min :

add: set_focus cherche l’élément le plus pertinent pour le focus

Tente de rechercher notamment le prochain item de pagination, ou alors le premier input en erreur.
Est appelée notammment par positionner().

harmoniser le tableau d’options comme dernier argument des fonctions dans ajaxbloc.js

Ajouté
javascript/ajaxCallback/src/focus.js
Modifié
javascript/ajaxCallback/src/ajaxbloc.js
javascript/ajaxCallback/src/ajaxform.js
javascript/ajaxCallback/src/anim.js
javascript/ajaxCallback/src/main.js
javascript/retrocompat.min.js

Détails : add: `set_focus` cherche l'élément le plus pertinent pour le focus (b674c90b) · Validations · placido / prive · GitLab

==============================
Par placido, le 31 octobre 2024 à 11h19min :

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/src/ajaxbloc.js
javascript/ajaxCallback/src/url.js

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

==============================
Par placido, le 31 octobre 2024 à 11h19min :

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 (eb1d43d8) · Validations · placido / prive · GitLab

==============================
Par placido, le 31 octobre 2024 à 11h19min :

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 (cc6c63ae) · Validations · placido / prive · GitLab