Tagdatepicker

[Magento 2] Un champ Date de Naissance custom avec validation côté javascript, placeholder et masque de saisie avec le plugin Cleave

Testé fonctionnel Magento 2.3, 2.4

Nous allons supprimer le widget calendar du champ date de naissance du formulaire de création de compte de Magento 2.
Attention: le champ Date de Naissance n’apparaît pas par défaut! Il faut l’activer via l’interface d’administration (Google est ton ami).

Demo en ligne de Cleave.js.

app/design/frontend/MyVendor/mytheme/Magento_Customer/templates/widget/dob.phtml:

Apporter plus d’attention au passages suivants:

  • data-validate='{"required":true, "validate-date": {"dateFormat": "dd\/MM\/y"}, "validate-dob": true}' sur l'input type="text" permet la bonne validation de votre champ Date de Naissance
  • <script>require(['cleave'... qui initialise le masque de saisie sur le champ via le plugin Cleave.js

app/design/frontend/MyVendor/mytheme/requirejs-config.js:

Import des sources de Cleave.js dans le projet:

Au moment où j’ai mise en place cette fonctionnalité, la dernière version tagguée de Cleave.js était la v1.6.0, mais n’hésitez pas à mettre à jour avec une version supérieure si existante!

Placez la source minifiée dans app/design/frontend/MyVendor/mytheme/web/js/vendor/cleave/dist/cleave.min.js.

[UI/UX Design] Retours d’expérience sur des plugins JavaScript améliorant l’ergonomie des formulaires

Champs <strong><code><input type="date" />: datepickers

Flatpickr

  • Utilisé en prod: Oui
  • Version utilisée: v4.6.1 (dernière en date le 04/07/2019)
  • Compatibilité approuvée avec jQuery version: 1.10.2

Plugin Flatpickr: astuces d’utilisation

Plugin Flatpickr: problèmes rencontrés et solutions (troubleshooting)

Ne pas utiliser d’input type= »date »

L'input type="date" fera apparaître le datepicker natif du navigateur en plus de celui du plugin Flatpickr. Il faut utiliser input type="text".

Conflits avec la librairie JS Prototype et l’utilisation par Flatpickr de la méthode .map()

Merci Kévin pour avoir remonté le problème et fourni une solution 🙂

Les sources de Flatpickr utilisent la méthode .map() qui génère des conflits lorsque la librairie JS Prototype est également chargée dans la page. C’est le cas, notamment, de tous les projets Magento 1.9.x.

Il faut modifier le code source de Flatpickr comme suit (ici, la version 4.6.1 minifiée). Repérer les 3 lignes suivantes (269-271 normalement) :

…et les remplacer par:

Champs <input type="tel" />: téléphone

International Telephone Input

  • Utilisé en prod: Oui (https://www.stock-booking.com/ – Formulaire de demande de devis accessible depuis les fiches produit/entrepôt)
  • Version utilisée: v16.0.0 (et plus précisément, le build jQuery)
  • Compatibilité approuvée avec jQuery version: 1.10.2

Plugin : astuces d’utilisation

Plugin : problèmes rencontrés et solutions (troubleshooting)

  • Version utilisée: ()
  • Compatibilité approuvée avec jQuery version: 1.10.2
  • Plugin : astuces d’utilisation

    Plugin : problèmes rencontrés et solutions (troubleshooting)

    © 2021 devfrontend.info

    Theme by Anders NorénUp ↑