From 810caf2353f147820b8f8b6521a78a441036c20f Mon Sep 17 00:00:00 2001
From: Martin Leblanc <m26lebla@uwaterloo.ca>
Date: Tue, 25 Feb 2025 14:25:24 -0500
Subject: [PATCH] ISTWCMS-5650: Add the css and html for buttons and dots in
 facts figure caraousel

---
 .../04-components/banners/_banners.scss       | 120 +++++++++---------
 .../facts-and-figures/_facts-and-figures.scss |  40 ++++++
 .../facts-and-figures/facts-and-figures.js    |  13 +-
 .../facts-and-figures/facts-and-figures.twig  |   8 ++
 4 files changed, 120 insertions(+), 61 deletions(-)

diff --git a/src/patterns/04-components/banners/_banners.scss b/src/patterns/04-components/banners/_banners.scss
index f989b348..6b7fe702 100644
--- a/src/patterns/04-components/banners/_banners.scss
+++ b/src/patterns/04-components/banners/_banners.scss
@@ -239,71 +239,73 @@
 .carousel.flickity-enabled {
   opacity: 1;
 }
+.uw-carousel__banner {
+  .flickity-button {
+    background: transparent;
+  }
+  /* big previous & next buttons */
+  .flickity-prev-next-button {
+    top: 40%;
+    width: 5rem;
+    height: 5rem;
+  }
+  /* icon color */
+  .flickity-button-icon {
+    fill: var(--uw-black);
+  }
+  /* hide disabled button */
+  .flickity-button:disabled {
+    display: none;
+  }
 
-
-.flickity-button {
-  background: transparent;
-}
-/* big previous & next buttons */
-.flickity-prev-next-button {
-  top: 40%;
-  width: 5rem;
-  height: 5rem;
-}
-/* icon color */
-.flickity-button-icon {
-  fill: var(--uw-black);
-}
-/* hide disabled button */
-.flickity-button:disabled {
-  display: none;
-}
-
-/* position dots up a bit */
-.flickity-page-dots {
-  bottom: -1.5rem;
-  display: flex;
-}
-/* dots are lines */
-.flickity-page-dots .dot {
-  height: 1.5rem;
-  width: 100%;
-  margin: 0;
-  background: var(--gray-2);
-  border-radius: 0;
-  border-left: 1px;
-  border-bottom: 1px;
-  border-color: var(--gray-5);
-  border-style: solid;
-  opacity:1;
-  &:first-child {
-    border-left: 0;
+  /* position dots up a bit */
+  .flickity-page-dots {
+    bottom: -1.5rem;
+    display: flex;
   }
-  &.is-selected {
-    background:var(--uw-black);
+  /* dots are lines */
+  .flickity-page-dots .dot {
+    height: 1.5rem;
+    width: 100%;
+    margin: 0;
+    background: var(--gray-2);
+    border-radius: 0;
+    border-left: 1px;
+    border-bottom: 1px;
+    border-color: var(--gray-5);
+    border-style: solid;
+    opacity:1;
+    &:first-child {
+      border-left: 0;
+    }
+    &.is-selected {
+      background:var(--uw-black);
+    }
+    &:hover,
+    &:focus{
+      background: var(--gray-5);
+    }
   }
-  &:hover,
-  &:focus{
-    background: var(--gray-5);
+
+  .flickity-enabled:focus .flickity-viewport {
+    outline: thin dotted;
+    outline: 5px auto -webkit-focus-ring-color;
+  }
+  .uw-ff--carousel .flickity-enabled:focus .flickity-viewport {
+    outline: none;
   }
-}
 
-.flickity-enabled:focus .flickity-viewport {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-}
-.uw-ff--carousel .flickity-enabled:focus .flickity-viewport {
-  outline: none;
-}
+  .flickity-button:focus {
+    outline: none;
+    box-shadow: 0 0 0 5px var(--uw-black);
+    .flickity-button-icon {
+      fill: var(--uw-black);
+    }
+  }
 
-.flickity-button:focus {
-  outline: none;
-  box-shadow: 0 0 0 5px var(--uw-black);
-  .flickity-button-icon {
-    fill: var(--uw-black);
+  .carousel.is-fullscreen .card__banner {
+    height: 100%;
   }
-}
 
-.carousel.is-fullscreen .card__banner {
-  height: 100%;
 }
+
diff --git a/src/patterns/04-components/facts-and-figures/_facts-and-figures.scss b/src/patterns/04-components/facts-and-figures/_facts-and-figures.scss
index bf9717cb..bddc54e6 100644
--- a/src/patterns/04-components/facts-and-figures/_facts-and-figures.scss
+++ b/src/patterns/04-components/facts-and-figures/_facts-and-figures.scss
@@ -837,6 +837,46 @@ are the same height. */
     }
   }
 }
+.flickity-page-dots {
+  bottom: -50px;
+}
+.uw-button--wrap {
+  display: flex;
+  width:100%;
+  justify-content: center;
+  margin-top: var(--size-8);
+  button {
+    background: var(--gray-2);
+    color: var(--uw-black);
+    display: inline-block;
+    font-family: var(--font-condensedbook);
+    font-size: var(--font-size-1);
+    font-weight: 200;
+    letter-spacing: .055rem;
+    margin: 0 var(--size-1);
+    max-width: inherit;
+    padding: var(--size-105);
+    text-decoration: none;
+    text-transform: uppercase;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    user-select: none;
+    vertical-align: middle;
+    white-space: nowrap;
+    width: auto;
+    &:hover,
+    &:focus {
+      background: var(--gray-5) !important;
+      color: var(--uw-white) !important;
+    }
+  }
+  button.uw-button--previous {
+    right: auto;
+  }
+  button.uw-button--next {
+    left: auto;
+  }
+}
 
 .infographic-fields-inline .fieldset-wrapper {
   display: grid;
diff --git a/src/patterns/04-components/facts-and-figures/facts-and-figures.js b/src/patterns/04-components/facts-and-figures/facts-and-figures.js
index 313a2168..57f0ea88 100644
--- a/src/patterns/04-components/facts-and-figures/facts-and-figures.js
+++ b/src/patterns/04-components/facts-and-figures/facts-and-figures.js
@@ -20,8 +20,8 @@
           $carousel.flickity({
             cellAlign: 'left',
             contain: true,
-            pageDots: false,
-            prevNextButtons: true,
+            pageDots: true,
+            prevNextButtons: false,
             wrapAround: true,
             groupCells: function () {
               var width = $(window).width();
@@ -36,7 +36,16 @@
               }
             }
           });
+          // previous button
+          $('.uw-button--previous').on( 'click', function() {
+            $carousel.flickity('previous');
+          });
+          // next
+          $('.uw-button--next').on( 'click', function() {
+            $carousel.flickity('next');
+          });
         }
+
       }
 
       /**
diff --git a/src/patterns/04-components/facts-and-figures/facts-and-figures.twig b/src/patterns/04-components/facts-and-figures/facts-and-figures.twig
index e0a032af..80746d79 100644
--- a/src/patterns/04-components/facts-and-figures/facts-and-figures.twig
+++ b/src/patterns/04-components/facts-and-figures/facts-and-figures.twig
@@ -59,4 +59,12 @@
 
     {% endif %}
   </div>
+
+{% if ffs.num_per_carousel %}
+  <div class="uw-button--wrap">
+    <button class="uw-button--previous"> < Prev</button>
+    <button class="uw-button--next">Next ></button>
+  </div>
+
+{% endif %}
 </div>
-- 
GitLab