Bonjour,

Je bosse actuellement sur un calendrier avec Vue et je cherche à créer une popup.
Cette popup se lancerait dès que l'utilisateur cliquerai sur un jour du calendrier.

J'ai vu que BootstrapVue proposait des popup (Popover) vraiment sympa, j'ai donc créer un composant "Popover" que j'ai modifié avec mes besoins.
Maintenant je cherche à "lancer" ce component dès que le client click sur une cellule du calendrier (soit un jour).
Est-ce que vous pensez cela jouable ?

3 réponses


Salut,
Tu peux montrer le code actuel que tu as :)

Ipooo
Auteur

Salut,
Merci pour ta réponse :)

Yes pas de problème!
Mon code du component "Calendar"

 <tr class="row-week">
          <td :id="date.day + '-' + date.month" class="day" v-for="(date) in firstWeek" :item = "date" :key="date._id">
            <label>{{date.day}}</label>
          </td>
        </tr>
        <tr class="row-week">
          <td :id="date.day + '-' + date.month" class="day" v-for="(date) in secondWeek" :item="date" :key="date._id">
            <label>{{date.day}}</label>
          </td>
        </tr>
        <tr class="row-week">
          <td :id="date.day + '-' + date.month"  class="day" v-for="(date) in thirdWeek" :item="date" :key="date._id">
            <label>{{date.day}}</label>
          </td>
        </tr>
        <tr class="row-week">
          <td :id="date.day + '-' + date.month"  class="day" v-for="date in fourthWeek" :key="date._id">
            <label>{{date.day}}</label>
          </td>
        </tr>
        <tr class="row-week">
          <td :id="date.day + '-' + date.month" class="day" v-for="date in fifthWeek" :key="date._id"> 
            <label>{{date.day}}</label>    
          </td>
        </tr>
        <tr class="row-week">
          <td :id="date.day + '-' + date.month" class="day" v-for="date in lastWeek" :key="date._id"> 
            <label>{{date.day}}</label>
          </td>
        </tr>
      </table>
    </div>
    <button id="test">Test</button>
    <Popover target="test"/>
   </template>

Le code du component "Popover" :

<template>
    <b-popover
      :target="target"
      triggers="click"
      :show.sync="popoverShow"
      placement="auto"
      ref="popover"
      @show="onShow"
      @shown="onShown"
      @hidden="onHidden"
    >
      <template slot="title">
        <b-button @click="onClose" class="close" aria-label="Close">
          <span class="d-inline-block" aria-hidden="true">&times;</span>
        </b-button>
        Ajouter un intervenant
      </template>

      <div>
        <b-form-group
          label="Name"
          label-for="popover-input-1"
          label-cols="3"
          :state="input1state"
          class="mb-1"
          description="Choix intervenant"
          invalid-feedback="This field is required"
        >
          <b-form-select
            ref="input1"
            id="popover-input-1"
            v-model="input1"
            :state="input1state"
            :options="options1"
            size="sm"
          ></b-form-select>
        </b-form-group>

        <b-form-group
          label="Statut"
          label-for="popover-input-2"
          label-cols="3"
          :state="input2state"
          class="mb-1"
          description="Choix du statut"
          invalid-feedback="This field is required"
        >
          <b-form-select
            ref="input2"
            id="popover-input-2"
            v-model="input2"
            :state="input2state"
            :options="options2"
            size="sm"
          ></b-form-select>
        </b-form-group>

        <b-alert show class="small">
          <strong>Current Values:</strong><br>
          Intervenant: <strong>{{ input1 }}</strong><br>
          Statut: <strong>{{ input2 }}</strong>
        </b-alert>

        <b-button @click="onClose" size="sm" variant="danger">Cancel</b-button>
        <b-button id="confirmButton" @click="onOk" size="sm" variant="success">Valider</b-button>
      </div>
    </b-popover>
</template>

Pour l'instant j'ai ça qui fonctionne :

J'ai défini une props "target" sur le component Popover pour l'utiliser comme ceci dans mon component Calendar

<Popover target="test"/>

pour l'instant ça fonctionne lorsque je mets un bouton avec l'id "test", il me reste plus qu'à trouver une fonction qui récupère l'id de mes cellules pour ajuster le target et c'est niquel je pense :)

Je t'ai mis juste l'essentiel, dis moi si tu veux plus de renseignement sur les variables et les méthodes des composants ;)

Ipooo
Auteur

Ok je viens de trouver!
Merci quand même :)