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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@amsom-habitat/locataire-contrat-details

v0.0.18

Published

Ce package contient des composants pour gérer les détails de locataires et leurs contrats.

Downloads

509

Readme

@amsom-habitat/locataire-contrat-details

Ce package contient des composants pour gérer les détails de locataires et leurs contrats.

Composants

  • ListingLocataires - Composant principal pour afficher et gérer les locataires (voir documentation détaillée)
  • ContratHistorique - Composant modal pour afficher l'historique des événements d'un contrat avec formatage automatique
  • AmsomDropdown - Composant dropdown (voir documentation)

Installation

npm i @amsom-habitat/locataire-contrat-details

Prérequis (peerDependencies)

Ce package nécessite les dépendances suivantes dans votre projet :

{
  "vue": "^3.4.0",
  "@amsom-habitat/ui": "^2.0.0",
  "@amsom-habitat/vertical-stepper": "^1.0.0",
  "@fortawesome/fontawesome-svg-core": "^6.0.0 || ^7.0.0",
  "@fortawesome/free-solid-svg-icons": "^6.0.0 || ^7.0.0",
  "@fortawesome/vue-fontawesome": "^3.0.0"
}

Utilisation rapide

ListingLocataires

<template>
  <listing-locataires
    :list="locatairesList"
    :loading="isLoading"
    :get-historique-contrat="loadHistorique"
    :fields="customFields"
    enable-edit
    enable-history
    @save-edit="handleSaveEdit"
  />
</template>

<script>
import ListingLocataires from '@amsom-habitat/locataire-contrat-details'

export default {
  components: { ListingLocataires },
  data() {
    return {
      // Personnalisation des champs affichés (optionnel)
      customFields: [
        {
          key: 'mobile',
          label: 'Mobile',
          icon: 'fa-solid fa-mobile-alt',
          type: 'tel',
          editable: true,
          required: true,
          pattern: '[0-9]{10}',
          maxlength: 10,
          placeholder: 'Mobile',
          formatter: (value) => value?.toString().replace(/(\d{2})(?=\d)/g, '$1 '),
          link: (value) => `tel:${value}`
        },
        {
          key: 'mail',
          label: 'Email',
          icon: 'fa-solid fa-envelope',
          type: 'email',
          editable: true,
          required: true,
          placeholder: 'Email',
          link: (value) => `mailto:${value}`
        }
        // Ajouter vos propres champs personnalisés
      ]
    }
  },
  methods: {
    async loadHistorique(locataire) {
      // Retourner directement les données brutes du suivi
      // ContratHistorique formatera automatiquement les données
      const response = await api.getSuiviContrat(locataire.typeContrat, locataire.idContrat)
      return response.data
    },
    handleSaveEdit({ original, edited }) {
      // Gérer la sauvegarde des modifications
      console.log('Modifications:', edited)
    }
  }
}
</script>

Configuration des champs :

Par défaut, le composant affiche : mobile, telephone, telPro, mail, loginExtranet.

Trois façons de configurer les champs :

1. Override complet avec fields

Remplace complètement les champs par défaut :

:fields="[
  { key: 'mobile', label: 'Mobile', icon: 'fa-mobile-alt', type: 'tel', editable: true },
  { key: 'mail', label: 'Email', icon: 'fa-envelope', type: 'email', editable: true }
]"

2. Retirer des champs avec removeFields

Filtre les champs par défaut :

:remove-fields="['telPro', 'loginExtranet']"
// Affichera seulement : mobile, telephone, mail

3. Ajouter des champs avec addFields

Conserve les champs par défaut et en ajoute :

:add-fields="[
  {
    key: 'adresse',
    label: 'Adresse',
    icon: 'fa-map-marker-alt',
    type: 'text',
    editable: false
  }
### ContratHistorique

Composant de présentation pour afficher l'historique des événements. **Ne gère pas la modal** - le parent doit l'encapsuler dans une modal si nécessaire.

```vue
<template>
  <amsom-modal :is-open="isOpen" @close="isOpen = false">
    <template #modal-header>
      <h5>Historique du contrat</h5>
    </template>
    <template #modal-body>
      <contrat-historique
        :historique="historiqueData"
        :loading="isLoading"
      >
        <template #empty-message>
          <p>Aucun événement trouvé.</p>
        </template>
      </contrat-historique>
    </template>
  </amsom-modal>
</template>

<script>
import { ContratHistorique } from '@amsom-habitat/locataire-contrat-details'
import { AmsomModal } from '@amsom-habitat/ui'

export default {
  components: { ContratHistorique, AmsomModal }
  // Le composant formate automatiquement les données brutes pour le vertical stepper
}
</script>

Format des données attendu :

Le composant accepte des données brutes de l'API et les formate automatiquement :

;[
  {
    codeEvenement: 'RDV', // ou evenement
    codeAction: 'VIS', // ou action
    dateSuivi: 1234567890, // timestamp Unix
    description: "Détails de l'événement",
    auteur: "Nom de l'auteur"
  }
]

Icônes automatiques :

  • RDV → calendrier
  • CON/LOCA → maison
  • Autres → utilisateur

AmsomDropdown

minlength: 5, min: 0, max: 100, step: 1, placeholder: 'Texte', readonly: false, disabled: false, autocomplete: 'tel', // Personnalisation avancée : formatter: (value) => value, // Fonction de formatage pour l'affichage link: (value) => tel:${value}, // Fonction pour créer un lien cliquable inputStyle: 'width: 200px', // Style CSS personnalisé inputProps: { // Props HTML additionnelles 'aria-label': 'Description', 'data-custom': 'value' } }


Voir la [documentation complète](ListingLocataires.md) pour tous les détails.

### ContratHistorique

```vue
<template>
  <contrat-historique
    :is-open="isOpen"
    :locataire="locataire"
    :historique="historiqueData"
    :loading="isLoading"
    @close="isOpen = false"
  />
</template>

<script>
import { ContratHistorique } from '@amsom-habitat/locataire-contrat-details'

export default {
  components: { ContratHistorique }
  // Le composant formate automatiquement les données brutes pour le vertical stepper
}
</script>

Note : ContratHistorique accepte des données brutes de suivi et les formate automatiquement pour AmsomVerticalStepper.

AmsomDropdown

import { AmsomDropdown } from '@amsom-habitat/locataire-contrat-details'

Voir la documentation.

Développment

Après avoir fait vos dev, veillez à bien tenir à jour le changelog.md ainsi que la version du package.json puis faites :

git add .
git commit -m '<commentaire>'
git push origin <branch>

Tests

Les tests sont réalisé de manière automatique sur les branches main et dev mais peuvent être fait localement, notemment pour voir l'evolution du développement via la commande :

npm run storybook

Le valideur devra, si des changements sont observés, aller sur la pipeline pour valider les différences à l'aide de chromatic, sans cela aucun merge-request ne sera possible. Si un merge est effectué, une double verification sera necessaire.

Déploiement

Après avoir merge les dev sur la branche main, exécutez :

make publish

Cette commande vérifie la version, le changelog et publie le tout