npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@net-helium/hc-forms

v1.0.1

Published

Intégration de formulaires Hélium Connect sur des pages web

Downloads

146

Readme

Hélium Connect Forms

NPM Version License

Cette librairie permet d'intégrer facilement des formulaires Hélium Connect sur vos pages web.

Le problème résolu par cette librairie

En faisant l'intégration vous-même, vous êtes amené à utiliser un code HTML similaire à celui-ci :

<iframe title="Mon formulaire" src="URL_FORMULAIRE"></iframe>

Le problème est qu'il est impossible pour une <iframe> d'ajuster sa hauteur automatiquement en fonction du contenu du formulaire. Vous pouvez bien-sûr renseigner une hauteur fixe à l'iframe mais la hauteur d'un formulaire peut varier en fonction de plusieurs facteurs :

  • La page de confirmation du formulaire a une hauteur différente de la page des questions
  • Le formulaire est de type bloc par bloc ou question par question (les blocs et/ou questions auront des hauteurs différentes)
  • Le formulaire ajoute ou supprime des questions en fonction des réponses aux questions précédentes (affichage conditionnel)
  • L'utilisateur redimensionne la fenêtre de son navigateur

Si l'iframe est plus haute que nécessaire, il y aura un espace vide en dessous du formulaire. Si l'iframe n'est pas assez haute, une barre de scroll apparaitra.
Cette librairie génère une iframe pour chacun de vos formulaires et gère automatiquement sa hauteur en fonction des changements qui ont lieu dans le formulaire.

Installation

Chargement local à votre site

Installez la librairie localement sur votre site en utilisant une des commandes suivantes en fonction du package manager que vous utilisez :

# npm
npm install @net-helium/hc-forms

# pnpm
pnpm add @net-helium/hc-forms

# yarn
yarn add @net-helium/hc-forms

Intégrez une balise <script> sur vos pages qui pointe sur le fichier /dist/hc-forms.js du package.
Le chemin dépend de la gestion des assets sur votre site. Suivant les technologies et framework utilisés pour le développement de votre site, cette gestion sera différente.

<script src="/chemin-vers/dist/hc-forms.js" defer></script>

Chargement depuis un CDN

Si vous préférez charger la librairie depuis un CDN, intégrez l'une des balises <script> ci-dessous sur vos pages :

<!-- Lien vers la dernière version -->
<script src="https://cdn.jsdelivr.net/npm/@net-helium/hc-forms/dist/hc-forms.js" defer></script>

<!-- Lien vers une version spécifique (exemple avec la version 1.0.0) -->
<script src="https://cdn.jsdelivr.net/npm/@net-helium/[email protected]/dist/hc-forms.js" defer></script>

Usage

Pour intégrer un formulaire Hélium Connect, utilisez le code HTML suivant (remplacez URL_FORMULAIRE) :

<hc-form url="URL_FORMULAIRE"></hc-form>

Ce code génère une iframe contenant le formulaire avec une largeur de 100% par rapport à son conteneur (l'élément parent de <hc-form>) et une hauteur calculée en fonction du contenu du formulaire.
La hauteur de l'iframe sera modifiée automatiquement si le contenu du formulaire change ou si la fenêtre du navigateur est redimensionnée.

Si l'URL renseignée n'est pas une URL valide, un message d'erreur apparaitra à la place de l'iframe. Si l'URL est valide mais ne correspond pas à un formulaire Hélium Connect, une iframe sera générée avec le contenu de la page cible mais elle ne sera pas visible puisque la hauteur ne pourra pas être calculée par la librairie et restera donc à 0 pixels.

Problème sur le calcul de la hauteur

Si la hauteur n'est pas calculée correctement (une barre de scroll est visible), il est très probable qu'il s'agisse d'un problème de style dans le formulaire qui empêche de calculer la bonne hauteur correctement.
Si la correction de ce problème ne peut pas être faite tout de suite, vous avez la possibilité de compenser comme ceci :

<hc-form url="URL_FORMULAIRE" padding-bottom="15"></hc-form>

Dans cet exemple, la librairie ajoutera 15 pixels supplémentaires à chaque hauteur calculée. Cette option est une solution de secours en attendant une correction dans le formulaire plutôt qu'une solution définitive, il est préférable de corriger le style du formulaire sur le long terme.
Si le gabarit de votre formulaire a été réalisé par Net Hélium, remontez-nous le problème.

Si non renseignée, la valeur par défaut de padding-bottom est 0.

Élément fixe en haut de page

Lorsqu'il y a un changement de page dans le formulaire (arrivée sur la page de confirmation ou changement de page de questions par exemple), la librairie déclenche un scroll automatique sur votre page web en haut de l'iframe afin de placer l'internaute au début de la nouvelle page du formulaire.

Si vous avez un élément fixe en haut de votre page (typiquement un menu fixe qui reste visible à tout moment), il passera par dessus le début du formulaire. Pour éviter ce problème, vous pouvez utiliser le code suivant :

<hc-form url="URL_FORMULAIRE" scroll-offset="50"></hc-form>

Ce code indique à la librairie de décaler son scroll de 50 pixels par rapport au haut de la page.

À titre d'exemple, si on imagine que votre menu fixe fait 30 pixels de haut et que vous voulez un espace de 15 pixels entre le menu et le haut du formulaire après un scroll automatique réalisé par la librairie, la valeur de scroll-offset à renseigner est 45.

Si non renseignée, la valeur par défaut de scroll-offset est 0.

Modification dynamique

Il est possible de modifier dynamiquement les valeurs des attributs en JavaScript et elles seront prises en compte instantanément.

<hc-form> est une balise HTML comme une autre, il est donc possible de lui attribuer un id ou une class pour sélectionner le(s) formulaire(s) qui vous intéresse en CSS ou en JavaScript. Chaque attribut est mappé sur une propriété JavaScript correspondante :

// Récupération d'un <hc-form> avec un id `contact`
const contactForm = document.querySelector("hc-form#contact");

// Modification des propriétés
contactForm.url = "URL_AUTRE_FORMULAIRE";
contactForm.paddingBottom = 15;
contactForm.scrollOffset = 50;

Personnalisation du style

Les balises <hc-form> peuvent être stylées comme n'importe quelle autre balise HTML :

/* Bordure bleue sur tous les <hc-form> ayant la classe `blue-border` */
hc-form.blue-border {
  border: 2px solid #0099cc;
}

Si vous voulez modifier le style de l'iframe encapsulée dans un <hc-form> ou du message d'erreur en cas d'URL non valide :

/* Bordure bleue sur l'iframe de tous les <hc-form> ayant une classe `blue` */
hc-form.blue::part(iframe) {
  border: 2px solid #0099cc;
}

/* Alignement à droite du message d'erreur du <hc-form> ayant un id `contact` */
hc-form#contact::part(error-msg) {
  text-align: right;
}

La librairie définie des variables CSS avec des valeurs par défaut pour certaines règles CSS du message d'erreur (font-family, font-size et color) :

--hc-forms-error-font-family: Verdana, Arial, sans-serif;
--hc-forms-error-font-size: 1rem;
--hc-forms-error-color: #ff0000;

Vous pouvez modifier les valeurs pour ces règles en changeant les valeurs de ces variables :

/* Le message d'erreur de tous les <hc-form> aura une `font-size` de 2rem */
hc-form {
  --hc-forms-error-font-size: 2rem;
}

/* Le message d'erreur sera vert pour les <hc-form> ayant une classe `green-error` */
hc-form.green-error {
  --hc-forms-error-color: #4bd116;
}

Les styles par défaut de l'iframe sont les suivants :

border: none;
width: 100%;

Les styles par défaut du message d'erreur sont les suivants :

text-align: center;
font-family: var(--hc-forms-error-font-family, Verdana, Arial, sans-serif);
font-size: var(--hc-forms-error-font-size, 1rem);
color: var(--hc-forms-error-color, #ff0000);

Licence

Cette librairie est mise à disposition sous licence MIT.