menu

Stack Technique

Process

Principe de design system
Pourquoi un nouveau process ?

Ce styleguide a été créé dans le but de simplifier le travail de design et celui de l’équipe technique. Le but étant à terme de créer un process ou les composants et la grille utilisés en design d'interface soient les mêmes utilisées dans l'intégration de la webapp via ce nouveau process.

Objectif
  • - Gain de temps
  • - Amélioration de l'UX/UI
  • - Maintenabilité
  • - Scalabilité
Les défis
  • - Base CSS de la webapp ne fonctionne pas sur ce process, désordonnée et manque de cohérence, beaucoup de retard à rattraper.
  • - Avoir une visualisation bien défini de la "découpe" de la webapp.
  • - Travailler en équipe et être tous concernés.
process

Grille

La grille bootstrap est en pleine transition vers une .

Grille par défaut de bootstrap 3.3.7

Extra small devices Phones (<768px) Small devices Tablets (≥768px) Medium devices Desktops (≥992px) Large devices Desktops (≥1200px)
Grid behavior Horizontal at all times Collapsed to start, horizontal above breakpoints
Container width None (auto) 750px 970px 1170px
Class prefix .col-xs- .col-sm- .col-md- .col-lg-
# of columns 12
Column width Auto ~62px ~81px ~97px
Gutter width 30px (15px on each side of a column)
Nestable Yes
Offsets Yes
Column ordering Yes

Grille personnalisée

Extra small devices Phones (<768px) Small devices Tablets (≥768px) Medium devices Desktops (≥992px) Large devices Desktops (≥1200px)
Grid behavior Horizontal at all times Collapsed to start, horizontal above breakpoints
Container width None (auto) 750px / 720px 970px / 960px 1170px / 1152px
Class prefix .col-xs- .col-sm- .col-md- .col-lg-
# of columns 12
Column width Auto ~62px / ~60px ~81px / ~80px ~97px / ~96px
Gutter width 30px (15px on each side of a column) / 16px (8px on each side of a column)
Nestable Yes
Offsets Yes
Column ordering Yes

Pour utiliser la nouvelle grille, il faut pour l'instant rajouter la classe custom-container au container.

								
<div class="container custom-container">
  <div class="row">
    <!-- content with new grid -->   </div>
</div>

Bootstrap personnalisé en local

Une version de Bootstrap a été créée avec les bons paramètres de grille. Mais il est encore trop tôt pour le moment de l'implémenter directement l'ensemble de la webapp qui a été conçue sur la version par défaut.

Lien vers le dépôt

Structure

Fichiers SCSS de la plateforme situé dans le dossier : Genealogie.Web\Content\styleguide\content\scss\
scss/
|
|– components/
|   |– _alert.scss
|   |– _banner.scss
|   |– _button.scss
|   |– _captcha.scss
|  ...  #Etc
|
|– general/
|   |– _fonts.scss
|   |– _general.scss
|   |– _navigation.scss
|   |– _old-style.scss
|
|– helpers/
|   |– _animations.scss
|   |– _useful-classname.scss
|   |– _variables.scss
|   |– mixin/
|       |– _mixin.scss
|       |– flex
|           |– _flex-mixin.scss
|
|– layout/
|   |– _ascending-tree.scss
|   |– _classic-tree.scss
|   |– _descending-tree.scss
|   |– _individual-sheet.scss
|  ...  #Etc
|
|– pages/
|   |– _andriveau.scss
|   |– _discover-offer.scss
|   |– _free-trial-general.scss
|   |– _home-conected.scss
|  ...  #Etc
|
'- menu-principal.scss
'- style-filae.scss     # Main Scss file
'- style-filae-minimal.scss   # Main Scss file in minimal version without some components and pages
Pour ce qui est des lignes de commandes à éxecuter pour lancer la compilation du SCSS, elles sont disponibles sur Redmine.

Mixins

Les mixins sont en majorité utilisées pour prefixer les propriétés CSS et assurer leur compatibilité avec IE .

Path : Genealogie.Web/Content/css/searchApi/scss/helpers/_mixin.scss

Flexbox

@include flexbox;
	@include align-items(center);
	@include justify-content(center);

Keyframe

@include keyframes(name) {
		// animation
	}

Rotation

@include rotate(0);

Animation

@include animation('name 1s 1');

Transition

@include transition(all 0.3s ease-in-out);

Box shadow

@include box-shadow(0px 3px 8px 0px rgba(0, 0, 0, 0.2));

Border radius

@include border-radius(6px);

Couleurs

Couleurs appelées par nom de variable SCSS
Invision Board

Variables

Primary colors

$coral #FF5555 Primary background color
$dark-coral #E02 For text links on white background only
$storm #222255  
$indigo #459  
$dark-indigo #333366  
$light-indigo #3344bb For text links or icons only
$women-color #ff9999  
$men-color #99cccc  

Secondary colors

$lagoon #00A3B7  
$tropic #FFBB00  
$yellow #FFCC33  
$mint #11A88B  
$fresh-mint #5DB  

Grey, black & white

$grey-01 #757585  
$grey-02 #D5D8DA  
$grey-03 #FBFBFA  
$grey-04 #6a7787  
$grey-05 #C2C5D0  
$black #333333  
$black-02 #303f4c  
$white #FFF  

Typographie

Typographie, design des titres, sous-titre

Lato

La typographie Lato est appelée via google font :

<link href="https://fonts.googleapis.com/css?family=Lato:300,300i,400,400i,700,700i,900,900i" rel="stylesheet">

Titres

Headline 1

Headline 2

Headline 3

Title

Subheader
link

Font Icons

3 fonts icons utilisées

Animations

Path : Genealogie.Web/Content/css/searchApi/scss/helpers/_animations.scss

Filtres

BTN FLIPPER

Lancer l'animation
											
					<h4 class="item__subtitle">BTN FLIPPER</h4>
<a class="toggle-flipp marge-bottom10px">Lancer l'animation</a>
<div id="applyEventsSelectionId" class="btn-flipper flipped ">
<button class="btn btn-action">Appliquer ma sélection</button>
</div>

Call to action

Liens

Cta fait à partir d'une balise lien html : <a href=""></a>

										
<div class="col-xs-12">
    <h4 class="item__title">BASIC</h4>
    <div class="item__block">
      <a href="#" class="btn btn-action">Action button</a>
      <a href="#" class="btn btn-default">Default button</a>
      <a href="#" class="btn btn-action disabled">Disabled action button</a>
      <a href="link-white">Link button</a>
    </div>    
    <div class="item__block item__block--coral">
      <a href="#" class="btn btn-action-bkgd">Action button</a>
      <a href="#" class="btn btn-default-bkgd">Default button</a>
      <a href="#" class="btn btn-action-bkgd disabled">Disabled action button</a>
      <a href="#" class="link-white">Link button</a>
    </div>
    
    <div class="item__block item__block--indigo">
      <a href="#" class="btn btn-action">Action button</a>
      <a href="#" class="btn btn-default-bkgd">Default button</a>
      <a href="#" class="btn btn-action-bkgd disabled">Disabled action button</a>
      <a href="#" class="link-white">Link button</a>
    </div>
    
    <div class="item__block item__block--dark-indigo">
      <a href="#" class="btn btn-action">Action button</a>
      <a href="#" class="btn btn-default-bkgd">Default button</a>
      <a href="#" class="btn btn-action-bkgd disabled">Disabled action button</a>
      <a href="#" class="link-white">Link button</a>
    </div>
    
    <div class="item__block item__block--storm">
      <a href="#" class="btn btn-action">Action button</a>
      <a href="#" class="btn btn-default-bkgd">Default button</a>
      <a href="#" class="btn btn-action-bkgd disabled">Disabled action button</a>
      <a href="#" class="link-white">Link button</a>
    </div>
    
    
    <h4 class="item__title">LARGE</h4>
    <div class="item__block item__block--small">
      <a href="#" class="btn btn-action btn-large">Large action button</a>
      <a href="#" class="btn btn-default btn-large">Large default button</a>
      <a href="#" class="btn btn-action btn-large disabled">Disabled large action button</a>
    </div>
    
    <h4 class="item__title">DANGER</h4>
    <div class="item__block item__block--small">
      <a href="#" class="btn btn-default danger">Lien default danger</a>
      <a href="#" class="btn btn-danger disabled">Lien default danger disabled</a>
    </div>
    
    <h4 class="item__title">FREE TRIAL</h4>
    <div class="item__block">
        <a href="" class="free-trial btn btn-action">
            <span>
              Démarrez maintenant
            </span>
            <i class="material-icons"></i>
        </a>
    </div>
</div>

Buttons

Cta fait à partir d'une balise button html : <button></button>

BASIC

LARGE

DANGER

FREE TRIAL

PAYMENT

										
<div class="col-xs-12">
  <h4 class="item__title">BASIC</h4>
  <div class="item__block item__block--small">
    <button class="btn btn-action">Action button</button>
    <button class="btn btn-default">Default button</button>
    <button class="btn btn-action disabled">Disabled action button</button>
  </div>
  
  <div class="item__block item__block--coral">
    <button class="btn btn-action-bkgd">Action button</button>
    <button class="btn btn-default-bkgd">Default button</button>
    <button class="btn btn-action-bkgd disabled">Disabled action button</button>
  </div>      
  
  <div class="item__block item__block--indigo">
    <button class="btn btn-action">Action button</button>
    <button class="btn btn-default-bkgd">Default button</button>
    <button class="btn btn-action disabled">Disabled action button</button>
  </div>
  
  <div class="item__block item__block--dark-indigo">
    <button class="btn btn-action">Action button</button>
    <button class="btn btn-default-bkgd">Default button</button>
    <button class="btn btn-action disabled">Disabled action button</button>
  </div>
  
  <div class="item__block item__block--storm">
    <button class="btn btn-action">Action button</button>
    <button class="btn btn-default-bkgd">Default button</button>
    <button class="btn btn-action disabled">Disabled action button</button>
  </div>
<h4 class="item__title">PAYMENT</h4>
<div class="item__block item__block-small">
    <button type="button" class="btn btn-default btn-small btn-payment">
        <span>Payer par PayPal</span>
        <span>
            <img src="https://www.filae.com/v4/genealogie/Content/img/paypal-logo-horizontal.png" class="paypal-logo">
        </span>
        <i class="material-icons dp48">chevron_right</i>
    </button>
</div> </div>

Input

Input / Textarea

Input simple non selectionné

Input simple selectionné

Input simple avec reset

Input float label

Input password float label

Afficher

Login modal input

Textarea

create

Tags

Input ajout de tag

Utilisation d'un plugin Jquery : Bootstrap Tags Input : https://bootstrap-tagsinput.github.io/bootstrap-tagsinput/examples

local_offer add
<div class="item__block item__block--small">
    <h4 class="item__subtitle">Input simple non selectionné</h4>
    <div class="row">
        <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
        <input class="form-control input-lg" name="Lastname" placeholder="Input non selectionné" value=""
            type="text">
        </div>
    </div>
</div>


<div class="item__block item__block--small">
    <h4 class="item__subtitle">Input simple selectionné</h4>
    <div class="row">
        <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
        <input class="form-control input-lg mainField" name="Lastname" placeholder="Input selectionné class 'mainField'"
            value="" type="text">
        </div>
    </div>
</div>

<div class="item__block item__block--small">
    <h4 class="item__subtitle">Input simple avec reset</h4>
    <div class="row">
        <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
        <div class="form-group">
            <input class="form-control input-lg mainField step-1 hasclear" id="inputLastname" maxlength="100"
            name="Lastname" placeholder="Nom (obligatoire)" tabindex="1" type="text" value="">
            <span id="inputLastnameClear" class="force-clear-right clearer glyphicon glyphicon-remove-circle  form-control-feedback"
            style=""></span>
        </div>
        </div>
    </div>
</div>

<div class="item__block item__block--small">
    <h4 class="item__subtitle">Input float label</h4>
    <div class="row">
        <div class="form-group">
        <div class="form-group input-simple col-xs-12 col-sm-6 col-md-6 col-lg-6">
            <input class="form-control" data-toggle="floatLabel" id="FirstName" name="First Name"
            placeholder="Prénom" type="text" value="" data-value="d">
            <label>Prénom</label>
        </div>
        </div>
    </div>
</div>

<div class="item__block item__block--small">
    <h4 class="item__subtitle">Input password float label</h4>
    <div class="row">
        <div class="form-group">
        <div class="form-group input-simple col-xs-12 col-sm-6 col-md-6 col-lg-6">
            <span class="show-password" id="show-password">Afficher</span>
            <input class="form-control" data-toggle="floatLabel" id="user-confirm-password-subscription"
            name="Confirm Registration Password" placeholder="Confirmez votre mot de passe" type="password"
            value="" data-value="">
            <label>Mot de passe</label>
        </div>
        </div>
    </div>
</div>

<h4 class="item__subtitle">Login modal input</h4>
<div class="item__block item__block--small item__block--login">
    <div class="inscr-conn login-bg">
        <div id="partial-view-layer">
        <section class="row">
            <article class="col-xs-12 col-sm-12 form-inscr-conn">
            <div class="row">
                <div class="form-group input-simple col-xs-12 col-sm-12 col-md-12 col-lg-12 modifier-champs">
                <input value="" id="email-connexion-subscription" required="true" placeholder="@"
                    data-toggle="floatLabel" class="form-control" name="EmailFormPopup" aria-required="true"
                    type="text" spellcheck="false" data-value="">
                <label>E-MAIL</label>
                <i class="material-icons dp48" data-original-title="" title="">create</i>
                </div>
            </div>

            <div class="row">
                <div class="form-group input-simple col-xs-12 col-sm-12 col-md-12 col-lg-12 modifier-champs">
                <span class="input-mdp">
                    <span class="show-password">Afficher</span>
                    <input id="user-confirm-password" type="password" name="mdp" class="form-control "
                    placeholder="Confirmez votre mot de passe" required="" data-toggle="floatLabel"
                    data-value="aaaaa">
                    <label for="mdp"></label>
                </span>
                </div>
            </div>
            </article>
        </section>
        </div>
    </div>
</div>

<div class="item__block item__block--small">
    <h4 class="item__subtitle">Textarea</h4>
    <div class="row">
        <div class="form-group input-simple col-lg-12 modifier-champs">
        <textarea class="form-control" cols="20" data-toggle="floatLabel" data-value="[Ville, Département]"
            id="userBiographie" maxlength="500" name="PersonalInfo.Biographie" placeholder="À propos de votre généalogie"
            rows="8" type="text"></textarea>
        <label for="texte">À propos de votre généalogie</label>
        <i class="material-icons dp48" data-original-title="" title="">create</i>
        </div>
    </div>
</div>

<div class="item__block item__block--small">
    <h4 class="item__subtitle">Tags</h4>

    <div class="bootstrap-tag-container">
        <h5>Input ajout de tag</h4>
        <p>Utilisation d'un plugin Jquery : Bootstrap Tags Input : <a href="https://bootstrap-tagsinput.github.io/bootstrap-tagsinput/examples"
            target="_blank">https://bootstrap-tagsinput.github.io/bootstrap-tagsinput/examples</a> </p>

        <div class="form-group input-simple">
            <input type="text" value="" data-role="tagsinput" placeholder="Ajouter un tag" />
            <i class="material-icons dp48 i-asso" data-original-title="" title="">local_offer</i>
            <i class="material-icons dp48" data-original-title="" title="">add</i>
        </div>
    </div>
</div>

Checkbox - Radio button

Checkbox : Label

Checkbox : Label INLINE

Checkbox : div > label

Checkbox : div > label INLINE

Checkbox : div > label BLANC

Radio label

Radio label INLINE

Radio : div > label

Radio : div > label INLINE

Radio : div > label BLANC

<div class="row">
    <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
        <h4 class="text-coral">Checkbox : Label</h4>
        <label class="checkbox checkbox-primary">
        <input type="checkbox">
        <span class="checkbox-material">
            <span class="check"></span>
        </span>
        checkbox label
        </label>
        <h4 class="text-coral">Checkbox : Label INLINE</h4>
        <label class="checkbox checkbox-primary checkbox-inline">
        <input type="checkbox">
        <span class="checkbox-material">
            <span class="check"></span>
        </span>
        checkbox label
        </label>
        <label class="checkbox checkbox-primary checkbox-inline">
        <input type="checkbox">
        <span class="checkbox-material">
            <span class="check"></span>
        </span>
        checkbox label
        </label>
        <h4 class="text-coral">Checkbox : div &gt; label</h4>
        <div class="checkbox checkbox-primary">
            <label>
                <input type="checkbox">
                <span class="checkbox-material">
                <span class="check"></span>
                </span>
                checkbox div &gt; label
            </label>
        </div>
        <h4 class="text-coral">Checkbox : div &gt; label INLINE</h4>
        <div class="checkbox checkbox-primary checkbox-inline">
            <label>
                <input type="checkbox">
                <span class="checkbox-material">
                <span class="check"></span>
                </span>
                checkbox div &gt; label INLINE
            </label>
        </div>
        <div class="checkbox checkbox-primary checkbox-inline">
            <label>
                <input type="checkbox">
                <span class="checkbox-material">
                <span class="check"></span>
                </span>
                checkbox div &gt; label INLINE
            </label>
        </div>
        <h4 class="text-coral">Checkbox : div &gt; label BLANC</h4>
        <div class="bg-storm">
            <div class="checkbox checkbox-blanc p-10">
                <label class="text-white">
                <input type="checkbox">
                <span class="checkbox-material">
                    <span class="check"></span>
                </span>
                checkbox Blanc div &gt; label
                </label>
            </div>
        </div>
    </div>
    <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
        <h4 class="text-coral">Radio label</h4>
        <label class="radio radio-primary">
        <input name="sexe" value="sexe" type="radio">
        <span class="circle"></span>
        <span class="check"></span>
        Radio label
        </label>
        <h4 class="text-coral">Radio label INLINE</h4>
        <label class="radio radio-primary radio-inline">
        <input name="sexe" value="sexe" type="radio">
        <span class="circle"></span>
        <span class="check"></span>
        Radio label
        </label>
        <label class="radio radio-primary radio-inline">
        <input name="sexe" value="sexe" type="radio">
        <span class="circle"></span>
        <span class="check"></span>
        Radio label
        </label>
        <h4 class="text-coral">Radio : div &gt; label</h4>
        <div class="radio radio-primary">
            <label>
                <input name="sexe" value="sexe" type="radio">
                <span class="circle"></span>
                <span class="check"></span>
                Radio div &gt; label
            </label>
        </div>
        <h4 class="text-coral">Radio : div &gt; label INLINE</h4>
        <div class="radio radio-primary radio-inline">
            <label>
                <input name="sexe" value="sexe" type="radio">
                <span class="circle"></span>
                <span class="check"></span>
                Radio div &gt; label INLINE
            </label>
        </div>
        <div class="radio radio-primary radio-inline">
            <label>
                <input name="sexe" value="sexe" type="radio">
                <span class="circle"></span>
                <span class="check"></span>
                Radio div &gt; label INLINE
            </label>
        </div>
        <h4 class="text-coral">Radio : div &gt; label BLANC</h4>
        <div class="bg-storm p-10">
            <div class="radio radio-blanc">
                <label class="text-white">
                <input name="sexe" value="sexe" type="radio">
                <span class="circle"></span>
                <span class="check"></span>
                Radio Blanc div &gt; label
                </label>
            </div>
        </div>
    </div>
</div>

Alerts

Patiente, votre demande d'accès est en attente

Vous avez demandé à l'arbre "[NOM de l'arbre privé]" créé par [Pseudo] depuis la fiche de [Prénom(s) NOM.

query_builder

Zut, votre demande d'accès a été refusée ...

En consultant la fiche de [Prénom(s) NOM], vous aviez demandé à [Pseudo] l'accès à l'arbre "[NOM de l'arbre privé]".

Pas de panique. Avez-vous pensé à préciser l'objet de vos recherches?

block

Hourra ! Votre demande d'accès a été acceptée !

[Pseudo] vous a donné l'accès à l'arbre "[Nom de l'arbre privé]" que vous lui aviez demandé à partir de la fiche de [Prénom(s) NOM].

done

<div class="alert alert-danger alert-dismissible fade in" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
<p><strong>Hum, pas sûr ! </strong> Réessayez de saisir votre mot de passe pour voir.</p>
</div>
<div class="row">
<div class="col-xs-12">
<div class="row bs-callout bs-callout-warning">
<span>
<h4>Patiente, votre demande d'accès est en attente</h4>
<p>
Vous avez demandé à l'arbre "[NOM de l'arbre privé]" créé par [Pseudo] depuis la fiche de
<span class="orange">[Prénom(s) NOM</span>.
</p>
</span>
<i title="" data-original-title="" class="material-icons dp48">query_builder</i>
<div class="footer-callout">
<a class="btn btn-default pull-left" href="">
Annuler la demande
</a>
<a class="btn btn-action btn-opacity pull-left" href="">
Relancer
</a>
<p>Vous pourrez relancer votre demande à partir du : [JJ+5 Mois]</p>
</div>
</div>
</div>
<div class="col-xs-12">
<div class=" row bs-callout bs-callout-danger">
<span>
<h4>Zut, votre demande d'accès a été refusée ...</h4>
<p>
En consultant la fiche de <span class="orange">[Prénom(s) NOM]</span>, vous aviez demandé à
[Pseudo] l'accès à l'arbre "[NOM de l'arbre privé]".
</p>
<p>Pas de panique. Avez-vous pensé à préciser l'objet de vos recherches?</p>
</span>
<i title="" data-original-title="" class="material-icons dp48">block</i>
</div>
</div>

<div class="col-xs-12">
<div class="row bs-callout bs-callout-success">
<span>
<h4>Hourra ! Votre demande d'accès a été acceptée !</h4>
<p>
[Pseudo] vous a donné l'accès à l'arbre "<span class="orange">[Nom de l'arbre privé]</span>"
que
vous lui aviez demandé à partir de la fiche de <span class="orange">[Prénom(s) NOM]</span>.
</p>
</span>
<i title="" data-original-title="" class="material-icons dp48">done</i>
<div class="footer-callout">
<a class="btn btn-action pull-left" href="">
Accéder à l'arbre
</a>
</div>
</div>
</div>
</div>

Switch

Utilisation du helper HTML razor :

@Html.CheckBoxFor(m => m.TreeList[i].Visible, new { @checked = true, @data_size = "mini", @class = "my-checkbox" })

Ci-dessus les switch qui agissent sur la visibilité public et privée d'un arbre.
A initialiser en javascript avec Bootstrap Switch

Voir avec les dev pour le lier à la bonne data au back.

$("[name='my-checkbox']").bootstrapSwitch();
@Html.CheckBoxFor(m => m.TreeList[i].Visible, new { @checked = true, @data_size = "mini", @class = "my-checkbox" })

Collapse

									<a class="information collapsed" data-toggle="collapse" href="#public" id="info-collapse" aria-expanded="false">Cliquez pour voir l'info</a>
<div class="collapse" id="public" aria-expanded="false" style="height: 0px;">
    <p>
        <span class="bold">Les arbres publics facilitent vos recherches et celle des autres membres :</span>
        En rendant votre arbre public, vous augmentez vos chances d’être contacté par des personnes
        faisant les mêmes recherches que vous. Elles ont certainement des informations susceptibles de
        vous intéresser.
        Votre travail ainsi partagé permet aux membres du site d’avancer plus vite dans leurs recherches.
        A tout moment, vous pouvez choisir de rendre votre arbre privé.
    </p>
    <p>
        <span class="bold">Vos informations restent protégées : </span>
        Les informations concernant les personnes en vie de votre arbre restent confidentielles et ne
        sont pas accessibles par la recherche.
        Vous seul pouvez modifier votre arbre, les autres utilisateurs ne bénéficiant que d’un droit
        d’accès.
    </p>
</div>

Pagination

20 | 50 | 100 résultats par page
Résultat 1 - 20 sur 603 957
									<div class="row">
    <div class="col-md-4" id="page-size" style="margin: 20px 0;">
        <span>20</span>
        |
        <a href="#" data-size="50" onclick="changeFilters('pageSize',50)">50</a>
        |
        <a href="#" data-size="100" onclick="changeFilters('pageSize',100)">100</a>
        résultats par page
    </div>
    <div class="col-md-4 text-center" style="margin: 20px 0;">
        Résultat 1 - 20 sur <b> 603 957</b>
    </div>
    <div class="col-md-4 text-center">
        <nav class="pull-right">
            <nav>
                <ul class="pagination">
                    <li data-page="0" class="disabled">
                        <a onclick="" aria-label="Précédent">
                            <span aria-hidden="true">«</span>
                        </a>
                    </li>

                    <li data-page="1" id="page1" class="active">
                        <a onclick="changeFilters('pageIndex',1, true, true)" href="#">1</a>
                    </li>
                    <li data-page="2" id="page2" class="">
                        <a onclick="changeFilters('pageIndex',2, true, true)" href="#">2</a>
                    </li>
                    <li data-page="3" id="page3" class="">
                        <a onclick="changeFilters('pageIndex',3, true, true)" href="#">3</a>
                    </li>
                    <li data-page="4" id="page4" class="">
                        <a onclick="changeFilters('pageIndex',4, true, true)" href="#">4</a>
                    </li>
                    <li data-page="5" id="page5" class="">
                        <a onclick="changeFilters('pageIndex',5, true, true)" href="#">5</a>
                    </li>

                    <li data-page="2" class="">
                        <a onclick="changeFilters('pageIndex',2, true, true)" aria-label="Suivant">
                            <span aria-hidden="true">»</span>
                        </a>
                    </li>
                </ul>
            </nav>
        </nav>
    </div>
</div>

Slider

Utilisation de la libraire OWL CAROUSEL
Department slider
Tweet slider

Initialisation et personnalisation du slider par du JS avec des options disponibles

$(document).ready(function () {

  // Department slider
  var owl = $(".owl-departement");
  
  owl.owlCarousel({
      autoplay: true,
      loop: true,
      autoplayTimeout: 3000,
      autoplayHoverPause: true,
      items: 1,
      responsive: {
          // breakpoint from 0 up
          0: {
              items: 1,
          },
          // breakpoint from 480 up
          480: {
              items: 2,
          },
          // breakpoint from 800 up
          768: {
              items: 3,
          },
          
          1024: {
              items: 4,
          }
      },
      
      itemsDesktop: [1200, 5], //5 items between 1200px and 992px
      itemsDesktopSmall: [1024, 4], //4 items betweem 992px and 767px
      itemsTablet: [767, 3], //3 items between 767px and 480px
      itemsMobile: [480, 2] // 2 items between 480px and 0 
  });
  
  // Custom Navigation Events
  $(".next").click(function () {
      owl.trigger('next.owl.carousel');
  })
  
  $(".prev").click(function () {
      owl.trigger('prev.owl.carousel');
  })
  

  // Tweets carousel
  $(".owl-tweet").owlCarousel({
      loop: true,
      autoplay: true,
      autoplayTimeout: 5000,
      margin: 15,
      responsive : {
          // breakpoint from 0 up
          0 : {
              items: 1,
          },
          // breakpoint from 480 up
          480 : {
              items: 1,
          },
          // breakpoint from 800 up
          800 : {
              items: 2,
          },

          1024 : {
              items: 2,
          }
      },
  });
                                      
                                                                    
});
									<div class="item__block item__block--small">
    <div class="item__subtitle">Department slider</div>
    <div class="bloc-departement">
        <div class="carousel-departement">
            <div class="customNavigation">
                <a class="prev"><i class="material-icons dp48">navigate_before</i></a>
                <a class="next"><i class="material-icons dp48">navigate_next</i></a>
            </div>
            <div id="owl-demo" class="owl-carousel owl-departement">
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/home-logo-dep-cote-dor.jpg"
                alt="logo cote d'or">
                </div>
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/home-logo-dep-dordogne.jpg"
                alt="logo dordogne">
                </div>
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/home-logo-dep-vienne.jpg"
                alt="logo vienne">
                </div>
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/home-logo-dep-calvados.jpg"
                alt="logo calvados">
                </div>
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/home-logo-dep-meurthe-et-moselle.jpg"
                alt="logo meurthe et moselle">
                </div>
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/home-logo-dep-haute-alpes.jpg"
                alt="logo hautes alpes">
                </div>
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/home-logo-dep-haute-saone.jpg"
                alt="logo haute saône">
                </div>
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/home-logo-dep-loir-et-cher.jpg"
                    alt="logo loir et cher">
                </div>
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/home-logo-dep-rhone.jpg"
                alt="logo rhone">
                </div>
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/home-logo-dep-savoie.jpg"
                    alt="logo savoie">
                </div>
                <div class="item">
                    <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/home-logo-dep-seine-et-marne.jpg"
                    alt="logo seine et marne">
                </div>
                <div class="item">
                    <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/home-logo-dep-touraine.jpg"
                    alt="logo touraine">
                </div>
                <div class="item">
                    <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/home-logo-dep-vendee.jpg"
                    alt="logo vendée">
                </div>
                <div class="item">
                    <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/home-logo-dep-yvelines.jpg"
                    alt="logo yvelines">
                </div>
                <div class="item">
                    <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/home-logo-ville-lyon.jpg"
                    alt="logo lyon">
                </div>
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/logo-departement-cantal.png"
                alt="logo cantal">
                </div>
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/logo-departement-ille-et-vilaine.png"
                alt="logo ille et vilaine">
                </div>
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/logo-departement-loire.jpg"
                alt="logo loire">
                </div>
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/logo-departement-seine-maritime.png"
                alt="logo seine et maritime">
                </div>
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/logo-departement-territoire-de-belfort.png"
                alt="logo territoire de belfort">
                </div>
                <div class="item">
                <img src="https://www.filae.com/v4/genealogie/content/img/home/logo-departement/logo-departement-valdoise.png"
                alt="logo valdoise">
                </div>
            </div>
        </div>
    </div>
</div>
<p>Initialisation et personnalisation du slider par du JS avec des <a href="https://owlcarousel2.github.io/OwlCarousel2/docs/api-options.html" target="_blank">options</a> disponibles</p>

<div class="item__block item__block--small">
    <div class="item__subtitle">Tweet slider</div>
    <div class="tweet-section-container">
        <div>
        <div id="owl-demo" class="owl-carousel owl-tweet owl-theme">
                <div class="item">
                    <blockquote class="twitter-tweet" data-lang="fr"><p lang="fr" dir="ltr">Que de découvertes depuis 3 jours sur mes <a href="https://twitter.com/hashtag/anc%C3%AAtres?src=hash&amp;ref_src=twsrc%5Etfw">#ancêtres</a>  ,ce qui ravit ma grand-mère et lui fait travailler sa mémoire 👍🏼<br>Grâce à <a href="https://twitter.com/filaecom?ref_src=twsrc%5Etfw">&#64;filaecom</a> je peux consulter les actes en ligne et encore plus avancer sur mon <a href="https://twitter.com/hashtag/arbreg%C3%A9n%C3%A9alogique?src=hash&amp;ref_src=twsrc%5Etfw">#arbregénéalogique</a> 🤗<br>C’est vraiment top, merci 🙂<br> <a href="https://twitter.com/hashtag/g%C3%A9n%C3%A9alogie?src=hash&amp;ref_src=twsrc%5Etfw">#généalogie</a> <a href="https://twitter.com/hashtag/origines?src=hash&amp;ref_src=twsrc%5Etfw">#origines</a></p>&mdash; Ségolène (&#64;SegoleneTrv) <a href="https://twitter.com/SegoleneTrv/status/1037690147796606977?ref_src=twsrc%5Etfw">6 septembre 2018</a></blockquote>
                </div>
                <div class="item">        
                    <blockquote class="twitter-tweet" data-cards="hidden" data-lang="fr"><p lang="fr" dir="ltr">@HomePageResources.ThanksToIndexation<a href="https://twitter.com/filaecom?ref_src=twsrc%5Etfw">&#64;filaecom</a> @HomePageResources.ReviewElise <a href="https://t.co/59H5LxfWDC">pic.twitter.com/59H5LxfWDC</a></p>&mdash; Elise Lenoble (&#64;EliseGenealogie) <a href="https://twitter.com/EliseGenealogie/status/959484481425104901?ref_src=twsrc%5Etfw">@HomePageResources.DateReviewElise</a></blockquote>    
                </div>

                <div class="item">
                    <blockquote class="twitter-tweet" data-cards="hidden" data-lang="fr"><p lang="fr" dir="ltr"><a href="https://twitter.com/filaecom?ref_src=twsrc%5Etfw">&#64;filaecom</a>  @HomePageResources.ReviewCeline<a href="https://twitter.com/hashtag/genealogie?src=hash&amp;ref_src=twsrc%5Etfw">#genealogie</a> <a href="https://t.co/hiNy4fSADV">pic.twitter.com/hiNy4fSADV</a></p>&mdash; Celine_Souef (&#64;CelSouef) <a href="https://twitter.com/CelSouef/status/959734025152757760?ref_src=twsrc%5Etfw">@HomePageResources.DateReviewCeline</a></blockquote>
                </div>

                <div class="item">
                    <blockquote class="twitter-tweet" data-lang="fr"><p lang="fr" dir="ltr">@HomePageResources.ReviewCronique <a href="https://twitter.com/filaecom?ref_src=twsrc%5Etfw">&#64;filaecom</a> @HomePageResources.NiceEvening<a href="https://twitter.com/hashtag/genealogie?src=hash&amp;ref_src=twsrc%5Etfw">#genealogie</a></p>&mdash; chroniques92 (&#64;chroniques92) <a href="https://twitter.com/chroniques92/status/958816202830336000?ref_src=twsrc%5Etfw">@HomePageResources.DateReviewCronique</a></blockquote>
                </div>

                <div class="item">
                    <blockquote class="twitter-tweet" data-cards="hidden" data-lang="fr"><p lang="fr" dir="ltr">@HomePageResources.Thanks <a href="https://twitter.com/filaecom?ref_src=twsrc%5Etfw">&#64;filaecom</a> @HomePageResources.ReviewJuloz <a href="https://twitter.com/hashtag/g%C3%A9n%C3%A9alogie?src=hash&amp;ref_src=twsrc%5Etfw">#généalogie</a> <a href="https://twitter.com/hashtag/Survivant?src=hash&amp;ref_src=twsrc%5Etfw">#Survivant</a> <a href="https://twitter.com/hashtag/Mortalit%C3%A9Infantile?src=hash&amp;ref_src=twsrc%5Etfw">#MortalitéInfantile</a> <a href="https://t.co/8kvKmIQ2sI">pic.twitter.com/8kvKmIQ2sI</a></p>&mdash; Juloz 📜 (&#64;juloz_1) <a href="https://twitter.com/juloz_1/status/929684303130386432?ref_src=twsrc%5Etfw">@HomePageResources.DateReviewJuloz</a></blockquote>
                </div>

                <div class="item">
                    <blockquote class="twitter-tweet" data-cards="hidden" data-lang="fr"><p lang="fr" dir="ltr"><a href="https://twitter.com/hashtag/1J1Anc%C3%AAtre?src=hash&amp;ref_src=twsrc%5Etfw">#1J1Ancêtre</a>@HomePageResources.ThanksTo  <a href="https://twitter.com/filaecom?ref_src=twsrc%5Etfw">&#64;filaecom</a>@HomePageResources.ReviewSudiste<a href="https://twitter.com/hashtag/g%C3%A9n%C3%A9alogie?src=hash&amp;ref_src=twsrc%5Etfw">#généalogie</a> <a href="https://t.co/UTxYvANAJz">pic.twitter.com/UTxYvANAJz</a></p>&mdash; ☀ LaSudiste ☀ (&#64;sudiste78) <a href="https://twitter.com/sudiste78/status/961902494707154945?ref_src=twsrc%5Etfw">@HomePageResources.DateReviewSudiste</a></blockquote>
                </div>

                <div class="item">
                    <blockquote class="twitter-tweet" data-lang="fr"><p lang="fr" dir="ltr">@HomePageResources.ReviewCronique2<a href="https://twitter.com/filaecom?ref_src=twsrc%5Etfw">&#64;filaecom</a> @HomePageResources.ReviewCronique3<a href="https://twitter.com/hashtag/genealogie?src=hash&amp;ref_src=twsrc%5Etfw">#genealogie</a></p>&mdash; chroniques92 (&#64;chroniques92) <a href="https://twitter.com/chroniques92/status/985429681691389953?ref_src=twsrc%5Etfw">@HomePageResources.DateReviewCronique2</a></blockquote>
                </div>

            </div>
        </div>
    </div>
</div>

Progress Bar

Path CSHTML : Genealogie.Web/Views/Gedcom/Controls/ProgressBar.cshtml

Path SCSS : Genealogie.Web/Content/css/searchApi/scss/components/_progressbar.scss

Mise à jour de votre arbre
55%
55% Complete

Cela peut prendre plus ou moins de temps selon le contenu de votre arbre. Vous pouvez quitter cette page si vous le souhaitez, un mail vous sera envoyé dès que le fichier sera prêt.


											
<div id="progressBar" class="col-xs-12">
    <!----on view bag add class cache -->
    <div class="telechargement-fichier">
        <div class="col-xs-12 col-sm-2 col-md-1 col-lg-1 hidden-xs">
                <i class="material-icons loop loading">loop</i>
        </div>
        <div class="col-xs-12 col-sm-10 col-md-11 col-lg-11">
                <div class="italic">
                    <strong>Mise à jour de votre arbre</strong>
                </div>
                <div class="marge-bottom15px">
                    <em class="percentage-upload">55%</em>
                </div>
    
            <div class="progress active">
                <div class="progress-bar progress-bar-active active" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 55%">
                    <span class="sr-only">55% Complete</span>
                </div>
            </div>
                <p class="subtitle-progress">Cela peut prendre plus ou moins de temps selon le contenu de votre arbre. Vous pouvez quitter cette page si vous le souhaitez, un mail vous sera envoyé dès que le fichier sera prêt.</p>
        </div>
    </div>
</div>

Quote

Path : Genealogie.Web/Content/css/searchApi/scss/components/_quote.scss

Citation texte

Citation image

Des milliards d'informations généalogiques
accessibles à partir d’un simple nom de famille !
@HomePageResources.JeanLouisBeaucarnotImage
“Filae, c'est magique !”
Jean-Louis Beaucarnot, journaliste et généalogiste
									<div class="item__block item__block--small">
    <h4 class="item__subtitle">Citation texte</h4>
    <div class="quote-text-container quote-search">
    <blockquote class="quote  ">
        "Filae révolutionne la généalogie sur Internet"
        <div class="quote-author">Guillaume de Morant, Revue française de Généalogie</div>
    </blockquote>
    </div>
</div>
<div class="item__block item__block--small">
    <h4 class="item__subtitle">Citation image</h4>
    <div class="beaucarnot-section-container">
        <div class="row">
            <div class="col-xs-12 col-sm-12 col-md-12 col-lg-6">
                <div class="filae-info-container">
                    <div class="filae-info">
                        <strong>Des milliards d'informations généalogiques</strong>
                    </div>
                            
                    <div class="filae-info-2 ">
                        accessibles à partir d’un simple nom de famille !
                    </div>
                </div>
            </div>

            <div class="col-xs-12 col-sm-12 col-md-6 col-lg-6">
                <div class="beaucarnot-section">
                    <div class="quote-container  quote-beaucarnot ">
                        <img src="../../content/img/home/v2/beaucarnot.png" alt=@HomePageResources.JeanLouisBeaucarnotImage>
                        <blockquote class="quote  ">
                            “Filae, c'est magique !”
                            <div class="quote-author">Jean-Louis Beaucarnot, journaliste et généalogiste</div>
                        </blockquote>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

Messages

Utilisation de la libraire CSS Speech Bubble Generator

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Eos sed error ad, officiis omnis dolor? Dicta tempora adipisci reprehenderit obcaecati illum porro velit magni, autem laborum voluptates, quaerat sit explicabo?

JJ Mois AAAA - 00h00

NP

									<div class="item__block item__block--small">
  <div class="row">
    <div class="col-xs-12">
      <div class="ancien-message envoye">
        <div class="col-xs-12 col-sm-2 col-md-4 col-lg-4 hidden-xs"></div>
        <div class="col-xs-9 col-sm-7 col-md-6 col-lg-6 bubble">
          <p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Eos sed error ad, officiis
            omnis dolor? Dicta tempora adipisci reprehenderit obcaecati illum porro velit magni,
            autem laborum voluptates, quaerat sit explicabo?</p>
          <p>JJ Mois AAAA - 00h00</p>
        </div>
        <div class="col-xs-3 col-sm-3 col-md-2 col-lg-2">
          <div class="profil homme">
            <p class="initiale">NP </p>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

URL