uPortal-web-components

ESCO Content Menu

NPM Version Maven Central Build Status

Démonstration

https://uportal-project.github.io/uPortal-web-components/en/components/esco-content-menu/demo

Installation

# installer avec npm
npm install @uportal/esco-content-menu

# installer avec yarn
yarn add @uportal/esco-content-menu

installer avec maven

<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>uportal__esco-content-menu</artifactId>
    <version>{version number goes here}</version>
</dependency>

installer avec gradle

compile 'org.webjars.npm:uportal__esco-content-menu:{version number goes here}'

Utilisation comme composant Web

internationalisation

Les composants hamburger-menu, content-grid, and content-menu supportent la mixin d’internationalisation. Cela ajoute la propriété messages qui peut surchargera les textes par défaut dans les différents composants. Cette property propriété sera répercutée dans les composants PortletCard et le ActionFavorites.

Par exemple:

<esco-hamburger-menu
  messages='[{"locales": ["en", "en-US"], "messages": { "message": {"favorites": { "add": "Add me to your favorites!" } }}}]'
>
</esco-hamburger-menu>

Les massages disponibles comme suit:

{
  "message": {
    "services": {
      "title": "All services",
      "filter": "Find a service..."
    },
    "favorites": {
      "add": "Add to favorites",
      "remove": "Remove from favorites",
      "title": "My Favorites",
      "empty": "No favorite defined"
    },
    "filter": {
      "selectOption": "All categories"
    },
    "userInfoPortletUrl": {
      "title": "See my account informations"
    },
    "userChangeEtabUrl": {
      "title": "Select an other organization"
    },
    "buttons": {
      "logout": "Sign out",
      "menuClose": "Close menu"
    }
  }
}

Le menu hamburger

C’est le composant principal qui affiche un menu hamburger et qui ouvre une page entière avec le composant content-menu.

Html

<script src="/resource-server/webjars/vue/dist/vue.min.js"></script>
<script
  src="/resource-server/webjars/uportal__esco-content-menu/dist/esco.min.js"
  defer
></script>

<esco-hamburger-menu
  default-org-logo="..."
  api-url-org-info="..."
  portlet-api-url="..."
  layout-api-url="..."
  organization-api-url="..."
  user-info-api-url="..."
  context-api-url="/uPortal"
  sign-out-url="/uPortal/Logout"
  default-org-logo="https://www.toureiffel.paris/sites/default/files/styles/1440x810/public/2017-10/monument-landing-header-bg_0.jpg?itok=_dSLLBlZ"
  user-info-portlet-url="/uPortal/user-details"
  favorites-portlet-card-size="small"
  grid-portlet-card-size="auto"
  hide-action-mode="never"
>
</esco-hamburger-menu>

Pour une certaine intégration vous pourriez avoir besoin d’un peu plus, comme dans uPortal vous aurez besoin d’ajouter une div parent et d’appliquer sur son parent le plus proche section un style float : left.

Propriétés

Slots

Le contenu HTML du composant peut également être modifié à l’aide de la commande slots.

Icon Menu

L’attribut slot menu-icon slot permet d’appliquer une icône personnalisée remplaçant l’icône par défaut de Hamburger. Par exemple :

<esco-hamburger-menu
  default-org-logo="..."
  api-url-org-info="..."
  portlet-api-url="..."
  layout-api-url="..."
  organization-api-url="..."
  user-info-api-url="..."
  favorites-portlet-card-size="small"
  grid-portlet-card-size="auto"
  hide-action-mode="never"
>
  <div
    slot="menu-icon"
    style="background-image:url('https://mdbootstrap.com/img/svg/hamburger3.svg?color=FFF');height:20px;width:20px;"
  ></div>
</esco-hamburger-menu>

L’attribut slot menu-content slot permet d’appliquer un contenu autre que le sous-composant esco-contenu-menu.

<esco-hamburger-menu
  favorites-portlet-card-size="small"
  grid-portlet-card-size="auto"
  hide-action-mode="never"
>
  <div slot="menu-content">whatever...</div>
</esco-hamburger-menu>

Le menu contenu

Ce composant est un composant principal car il chargera en une seule page tous les éléments principaux (les informations utilisateur + organisation, les favoris et la liste des services).

Html

<script src="/resource-server/webjars/vue/dist/vue.min.js"></script>
<script
  src="/resource-server/webjars/uportal__esco-content-menu/dist/esco.min.js"
  defer
></script>

<esco-content-menu
  sign-out-url="/uPortal/Logout"
  default-org-logo="https://www.toureiffel.paris/sites/default/files/styles/1440x810/public/2017-10/monument-landing-header-bg_0.jpg?itok=_dSLLBlZ"
  user-info-portlet-url="/uPortal/user-details"
  favorites-portlet-card-size="small"
  grid-portlet-card-size="auto"
  hide-action-mode="never"
>
</esco-content-menu>

Propriétés

Ceci utilise les mêmes propriétés que dans le menu hamburger-menu (voir les détails dans le menu hamburger-menu) :

et avec des propriétés supplémentaires pour travailler avec le hamburger-menu:

Slots

The HTML content of the component can also be modified using slots.

Content User

The content-user slot permit to apply a custom component at this place, or to remove it. As example:

<esco-content-menu
  sign-out-url="/uPortal/Logout"
  default-org-logo="https://www.toureiffel.paris/sites/default/files/styles/1440x810/public/2017-10/monument-landing-header-bg_0.jpg?itok=_dSLLBlZ"
  favorites-portlet-card-size="small"
  grid-portlet-card-size="auto"
  hide-action-mode="never"
>
  <div slot="content-user"></div>
</esco-content-menu>
Header Buttons

The header-buttons slot permit to apply a custom component at this place, or to remove it. As example:

<esco-content-menu
  sign-out-url="/uPortal/Logout"
  default-org-logo="https://www.toureiffel.paris/sites/default/files/styles/1440x810/public/2017-10/monument-landing-header-bg_0.jpg?itok=_dSLLBlZ"
  favorites-portlet-card-size="small"
  grid-portlet-card-size="auto"
  hide-action-mode="never"
>
  <div slot="header-buttons"></div>
</esco-content-menu>

la grille de contenu

Ce composant fournit une façon flexible d’afficher une liste de portlet-card, en fonction de l’api rest de uPortal.

Html

<script src="/resource-server/webjars/vue/dist/vue.min.js"></script>
<script
  src="/resource-server/webjars/uportal__esco-content-menu/dist/esco.min.js"
  defer
></script>

<esco-content-grid
  portlet-card-size="gridPortletCardSize"
  hide-action="hideAction"
>
</esco-content-grid>

Propriétés

Propriétés autonomes :

et des propriétés supplémentaires pour travailler avec le composant parent content-menu:

Slots

Le contenu HTML du composant peut également être modifié à l’aide de la commande slots.

En-tête Gauche

The header-left slot permit to apply a custom title replacing the default “All services” one. As example:

<content-grid
  background-color="grey"
  portlet-card-size="medium"
  portlet-api-url="/uPortal/api/v4-3/dlm/portletRegistry.json?category=administration"
  layout-api-url="..."
>
  <h1 slot="header-left">Administration</h1>
</content-grid>
Header Right

L’attribut slot header-right permet d’appliquer un titre personnalisé remplaçant le filtre par défaut à droite. Par exemple :

<content-grid
  background-color="grey"
  portlet-card-size="medium"
  portlet-api-url="/uPortal/api/v4-3/dlm/portletRegistry.json?category=administration"
  layout-api-url="..."
>
  <div slot="header-rigth"></div>
</content-grid>
Preamble

The preamble slot permit to add descriptive text between the headers and grid. As example:

<content-grid
  background-color="grey"
  portlet-card-size="medium"
  portlet-api-url="/uPortal/api/v4-3/dlm/portletRegistry.json?category=administration"
  layout-api-url="..."
>
  <div slot="preamble">This is explanatory text for the grid.</div>
</content-grid>
Pied de page

L’attribut slot footer permet d’appliquer un titre personnalisé remplaçant le filtre par défaut sur le pied de page. Par exemple :

<content-grid
  background-color="grey"
  portlet-card-size="medium"
  portlet-api-url="/uPortal/api/v4-3/dlm/portletRegistry.json"
  layout-api-url="..."
>
  <div slot="footer"></div>
</content-grid>

Theming

Ce composant supporte les CSS Variables pour surcharger quelques valeurs par défaut. Donc définir les variables suivantes surchargera les valeurs par défaut.

:root {
  --content-grid-flex-grid-justify: center; // How to justify all flex grid elements, default value is center
  --content-grid-flex-grid-item-margin: 20px auto; // To set a margin on all flex items, default is `20px auto`
}

L’action favori

Le composant action-favorite est très simple, il affiche un bouton de démarrage qui permet d’ajouter ou de supprimer des favoris un portlet.

Html

<script src="/resource-server/webjars/vue/dist/vue.min.js"></script>
<script
  src="/resource-server/webjars/uportal__esco-content-menu/dist/esco.min.js"
  defer
></script>

<esco-action-favorite portlet-card-size="small" hide-action="false">
</esco-action-favorite>

Propriétés

Theming

Ce composant supporte les CSS Variables pour surcharger quelques valeurs par défaut. Donc définir les variables suivantes surchargera les valeurs par défaut.

:root {
  --action-favorites-dark-background-icon-color: #010101; // Pour définir une couleur différente de l'icône svg de favoris quand l'arrière-plan est sombre.
  --action-favorites-normal-icon-color: red; // Pour définir une couleur différente de l'icône svg de favoris quand l'arrière-plan est normal.
}

Les contenus favoris

Le composant n’est fonctionnel que dans le content-menu, il a besoin qu’une liste de portlets et une liste de favoris soit passée.

Certains travaux seraient nécessaires pour déménager sur le content-carousel.

Les contenus utilisateur

Ce composant permet d’afficher les informations de l’utilisateur avec les informations de son organisation. Peu de travail serait nécessaire pour pouvoir l’utiliser comme un composant autonome : comme avoir un service de récupération comme pour les portlets ou les favoris. Mais certaines parties sont des développements institutionnels pour pouvoir obtenir des informations d’organisation, donc nous attendons une nouvelle utilisation avant de faire quelque chose.

Html

Besoin de travail pour une utilisation autonome.

Propriétés

et des propriétés supplémentaires pour travailler avec le composant parent content-menu:

La carte portlet

Ce composant rend des informations sur une portlet sous forme de carte.

Html

<script src="/resource-server/webjars/vue/dist/vue.min.js"></script>
<script
  src="/resource-server/webjars/uportal__esco-content-menu/dist/esco.min.js"
  defer
></script>

<esco-portlet-card portlet-desc="portlet" size="small" hide-action="true">
</esco-portlet-card>

Properties

Le filtre de catégorie de la grille de contenu

Ce composant est une version externe du filtre intégré dans la grille de contenu qui permet un placement arbitraire sur la page.

Html

<script src="/resource-server/webjars/vue/dist/vue.min.js"></script>
<script
  src="/resource-server/webjars/uportal__esco-content-menu/dist/esco.min.js"
  defer
></script>

<esco-content-grid
  portlet-card-size="gridPortletCardSize"
  hide-action="hideAction"
>
</esco-content-grid>

<esco-content-grid-filter></esco-content-grid-filter>

Propriétés

L’ellipse

Ce composant permet d’appliquer un auto-fit/trunc ou un serrage de ligne à un texte lorsque la taille de la div doit être limitée. Il évite d’appliquer un débordement : caché et permet de gérer une ellipse sur plusieurs lignes.

Html

<script src="/resource-server/webjars/vue/dist/vue.min.js"></script>
<script src="/resource-server/webjars/uportal__esco-content-menu/dist/esco.min.js" defer></script>

<esco-ellipsis
  message="text">
</esco-elipsis>

Propriétés

Les boutons d’en-tête

Ce composant rend une partie d’en-tête avec quelques boutons principaux, comme fermer le menu de la page ou pour se déconnecter.

Html

<script src="/resource-server/webjars/vue/dist/vue.min.js"></script>
<script
  src="/resource-server/webjars/uportal__esco-content-menu/dist/esco.min.js"
  defer
></script>

<esco-header-button call-on-close="function"> </esco-header-button>

Properties

FAQ

Theming

Actuellement ce composant supporte CSS Variables pour surcharger les couleurs de boutons. Définir les variables suivante changera les couleurs du composant en conséquence. Les variables suivantes par défaut seront appliquées.

NOTE: Cela est appliqué seulement quand la propriété de size est définie à custom.

Vous devez définir cela dans votre feuille de style:

:root {
  --content-gridcard-padding: 5px;
  --content-gridcard-border: none;
  --content-gridcard-bg-color: white;
  --content-gridcard-border-radius: 5px;
  --content-gridcard-shadow: none;
  --content-gridcard-shadow-hover: none;
  --content-gridcard-size-w: 180px;
  --content-gridcard-size-h: 180px;
  --content-gridcard-icon-size: 75px;
  --content-gridcard-icon-size: 75px;
  --content-gridcard-title-fontsize: 16px;
  --content-gridcard-description-fontsize: 16px;

  --content-griditem-margin: 20px auto;
}