# Développement

# Création d'un Hub Element

# Utilisation d'un composant Vue

N'importe quel composant Vue peut être utilisé pour définir une entrée du Hub Station.
Néanmoins, pour fonctionner correctement il est nécessaire que le composant hérite du composant HubElement (ou utilise le mixin HubElementMixin correspondant).

# Exemple

1) Soit le composant Vue existant :

ListView.vue

<template>
  <div>
    <ul>
      <li v-for="item in listItems">{{ item.label }}</li>
    </ul>
  </div>
</template>
<script>
export default {
  props: {
    listItems: {
      type: Array,
      default: () => []
    }
  }
};
</script>

2) Création du Hub Element

Voir Hub Element pour une description du composant/mixin Hub Element.

ListViewEntry.vue

<template>
  <div>
    <div v-if="isDockCollapsed">
      <i class="fa fa-ul"></i>
    </div>
    <div v-else-if="isDockExpanded">
      <span>Liste des utilisateurs</span>
    </div>
    <div v-else-if="isHubContent">
      <list-view :listItems="items"></list-view>
    </div>
  </div>
</template>
<script>
import ListView from "./ListView.vue"; // Le composant existant
import HubElement from "@anakeen/hub-components/components/lib/HubElement";
// ou
// import HubElementMixin from "@anakeen/hub-components/components/lib/HubElementMixin";
export default {
  name: "list-view-entry",
  extends: HubElement, // ou mixins: [ HubElementMixins ],
  components: {
    ListView
  },
  props: {
    items: {
      // Le composant déclare des propriétés de même type que le composant ListView
      type: Array,
      default: () => []
    }
  }
};
</script>

3) Enregistrement du Hub Element

index.js

import ListViewEntry from "./ListViewEntry.vue";

if (window.ank && window.ank.hub && window.ank.hub["list-view-entry"]) {
  // Enregistrement du composant
  window.ank.hub["list-view-entry"].resolve(ListViewEntry);
}

# Utilisation du Hub Element

Un composant Hub Element peut être directement utilisé et "instancié" via l'interface d'administration du Hub (voir Paramétrage du Hub).

    Mise à jour le : 11/28/2019, 4:50:34 AM