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
etdebounce
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
==============================
Par placido, le 31 octobre 2024 à 11h21min :
feat: admin_vider_cache
n’a pas besoin de jQuery
Modifié
squelettes/inclure/admin_vider_cache.html
==============================
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
==============================
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 retourparametre_url()
Modifié
javascript/ajaxCallback/src/ajaxbloc.js
javascript/ajaxCallback/src/url.js
==============================
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
==============================
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