Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 35 additions & 65 deletions samples/layouts/carousel/animations/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,96 +3,66 @@
<head>
<title>Carousel Animations</title>
<meta charset="UTF-8" />

<link rel="shortcut icon" href="https://dl.infragistics.com/x/img/browsers/wc.png" >
<link rel="shortcut icon" href="https://dl.infragistics.com/x/img/browsers/wc.png" />
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Kanit&display=swap" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Titillium Web" />
<link rel="stylesheet" href="https://dl.infragistics.com/x/css/samples/shared.v8.css" type="text/css" />
</head>

<body>
<div id="root">
<div class="carousel-wrapper">
<div class="action-wrapper">
<div class="action">
<span>Animation type</span>
<igc-select id="select">
<igc-select-item value="slide" selected>Slide</igc-select-item>
<igc-select-item value="fade">Fade</igc-select-item>
<igc-select-item value="none">None</igc-select-item>
<span class="action-label">Animation</span>
<igc-select>
<igc-select-item value="slide" selected><span>Slide</span></igc-select-item>
<igc-select-item value="fade"><span>Fade</span></igc-select-item>
<igc-select-item value="none"><span>None</span></igc-select-item>
</igc-select>
</div>
<div class="action">
<igc-switch label-position="before">Vertical alignment</igc-switch>
<igc-switch label-position="before"><span>Vertical</span></igc-switch>
</div>
</div>
<igc-carousel hide-indicators>
<igc-carousel hide-indicators animation-type="slide">
<igc-carousel-slide>
<div class="slide-wrapper">
<igc-card>
<igc-card-header>
<span slot="title">Ignite UI for Angular</span>
</igc-card-header>
<igc-card-content>
<p>30+ Material-based Angular components to code speedy web apps faster.</p>
</igc-card-content>
<igc-card-media>
<img src="https://dl.infragistics.com/x/img/carousel/slide1-angular.png">
</igc-card-media>
<igc-card-actions>
<igc-button slot="start" href="https://www.infragistics.com/products/ignite-ui-angular" target="_blank" rel="noopener">
Visit Page
</igc-button>
</igc-card-actions>
</igc-card>
</div>
<article class="slide-wrapper">
<div class="slide-content">
<span class="slide-label">01</span>
<h3>Slide transition</h3>
<p>Moves content horizontally or vertically to preserve directional context.</p>
<div class="slide-details"><span>Best for sequential browsing</span><strong>320ms</strong></div>
</div>
<div class="slide-preview" aria-hidden="true"><span></span><span></span><span></span></div>
</article>
</igc-carousel-slide>
<igc-carousel-slide>
<div class="slide-wrapper">
<igc-card>
<igc-card-header>
<span slot="title">Ignite UI for Javascript</span>
</igc-card-header>
<igc-card-content>
<p>A complete JavaScript UI library empowering you to build data-rich responsive web apps.</p>
</igc-card-content>
<igc-card-media>
<img src="https://dl.infragistics.com/x/img/carousel/slide2-ignite.png">
</igc-card-media>
<igc-card-actions>
<igc-button slot="start" href="https://www.infragistics.com/products/ignite-ui" target="_blank" rel="noopener">
Visit Page
</igc-button>
</igc-card-actions>
</igc-card>
</div>
<article class="slide-wrapper">
<div class="slide-content">
<span class="slide-label">02</span>
<h3>Fade transition</h3>
<p>Cross-fades between slides when the relationship between items is looser.</p>
<div class="slide-details"><span>Best for featured content</span><strong>240ms</strong></div>
</div>
<div class="slide-preview" aria-hidden="true"><span></span><span></span><span></span></div>
</article>
</igc-carousel-slide>
<igc-carousel-slide>
<div class="slide-wrapper">
<igc-card>
<igc-card-header>
<span slot="title">Ultimate UI for ASP.NET</span>
</igc-card-header>
<igc-card-content>
<p>Build full-featured business apps with the most versatile set of ASP.NET AJAX UI controls.</p>
</igc-card-content>
<igc-card-media>
<img src="https://dl.infragistics.com/x/img/carousel/slide3-aspnet.png">
</igc-card-media>
<igc-card-actions>
<igc-button slot="start" href="https://www.infragistics.com/products/aspnet" target="_blank" rel="noopener">
Visit Page
</igc-button>
</igc-card-actions>
</igc-card>
</div>
<article class="slide-wrapper">
<div class="slide-content">
<span class="slide-label">03</span>
<h3>No transition</h3>
<p>Updates the active slide immediately for reduced motion or dense workflows.</p>
<div class="slide-details"><span>Best for direct state changes</span><strong>0ms</strong></div>
</div>
<div class="slide-preview" aria-hidden="true"><span></span><span></span><span></span></div>
</article>
</igc-carousel-slide>
</igc-carousel>
</div>
</div>
<!-- This script is needed only for parcel and it will be excluded for webpack -->
<% if (false) { %><script src="src/index.ts"></script><% } %>

</body>
</html>
182 changes: 160 additions & 22 deletions samples/layouts/carousel/animations/src/index.css
Original file line number Diff line number Diff line change
@@ -1,48 +1,186 @@
/* shared styles are loaded from: */
/* https://dl.infragistics.com/x/css/samples/shared.v8.css */
.carousel-wrapper {
height: 600px;
width: 90%;
margin: 20px auto;
display: flex;
width: min(860px, 100%);
flex-direction: column;
justify-content: space-between;
gap: 16px;
margin: 16px auto 0;
}

.action-wrapper {
height: 40px;
width: 500px;
display: flex;
justify-content: space-between;
margin-bottom: 10px;
align-items: center;
justify-content: flex-end;
gap: 24px;
}

.action {
display: flex;
align-items: center;
gap: 8px;
}

.action-label {
color: var(--ig-gray-700);
}

igc-select {
width: 150px;
--ig-size: var(--ig-size-small);
}

igc-switch {
--ig-size: var(--ig-size-small);
}

igc-carousel {
height: 360px;
overflow: hidden;
border: 1px solid var(--ig-gray-300);
border-radius: 8px;
background: var(--ig-surface-500);
}

igc-carousel::part(previous),
igc-carousel::part(next) {
width: 40px;
height: 40px;
}

igc-carousel::part(previous) {
left: 16px;
}

igc-carousel::part(next) {
right: 16px;
}

igc-carousel[vertical]::part(previous),
igc-carousel[vertical]::part(next) {
left: auto;
right: 16px;
transform: none;
}

.slide-wrapper {
display: flex;
position: relative;
display: grid;
box-sizing: border-box;
place-items: center;
width: 100%;
height: 100%;
margin: 0;
padding: 56px 84px;
overflow: hidden;
background:
linear-gradient(135deg, rgba(25, 118, 210, 0.08), transparent 46%),
linear-gradient(315deg, rgba(0, 150, 136, 0.10), transparent 42%),
var(--ig-gray-100);
}

.slide-content {
width: min(460px, calc(100% - 128px));
max-width: 460px;
color: var(--ig-gray-900);
}

.slide-label {
display: block;
margin-bottom: 12px;
color: var(--ig-primary-600);
font-size: 12px;
font-weight: 700;
}

.slide-content h3 {
margin: 0;
font-size: 32px;
line-height: 1.15;
}

.slide-content p {
margin: 12px 0 0;
color: var(--ig-gray-700);
font-size: 18px;
line-height: 1.45;
}

.slide-details {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 10px;
gap: 16px;
margin-top: 28px;
padding: 10px 14px;
border: 1px solid var(--ig-gray-300);
border-radius: 999px;
background: rgba(255, 255, 255, 0.72);
}

igc-carousel {
border: 0.5px solid #dde0e4;
.slide-details span {
color: var(--ig-gray-700);
}

igc-select {
width: 150px;
margin-left: 10px;
--ig-size: var(--ig-size-small);
.slide-details strong {
color: var(--ig-gray-900);
}

igc-card {
border: none;
.slide-preview {
position: absolute;
right: 84px;
top: 50%;
display: grid;
width: 120px;
height: 220px;
grid-template-columns: repeat(3, 1fr);
align-items: center;
gap: 14px;
transform: translateY(-50%);
}

.slide-preview span {
display: block;
border-radius: 8px;
background: var(--ig-primary-100);
box-shadow: 0 10px 24px rgba(11, 31, 53, 0.12);
}

.slide-preview span:nth-child(1) {
height: 120px;
opacity: 0.55;
}

.slide-preview span:nth-child(2) {
height: 180px;
background: var(--ig-primary-300);
}

igc-card-header {
padding: 8px 16px;
}
.slide-preview span:nth-child(3) {
height: 92px;
opacity: 0.75;
}

@media (max-width: 640px) {
.action-wrapper {
align-items: flex-start;
flex-direction: column;
gap: 12px;
}

.slide-wrapper {
grid-template-columns: 1fr;
gap: 28px;
padding: 32px 64px;
}

.slide-preview {
position: static;
width: 100%;
height: 120px;
transform: none;
}

.slide-content h3 {
font-size: 28px;
}
}
38 changes: 16 additions & 22 deletions samples/layouts/carousel/animations/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,22 @@
import { defineComponents, IgcButtonComponent, IgcCardComponent, IgcCarouselComponent, IgcSelectComponent, IgcSwitchComponent } from "igniteui-webcomponents";
import {
defineComponents,
IgcCarouselComponent,
IgcSelectComponent,
IgcSwitchComponent,
} from "igniteui-webcomponents";
import "igniteui-webcomponents/themes/light/bootstrap.css";
import "./index.css";

defineComponents(IgcCarouselComponent, IgcSelectComponent, IgcCardComponent, IgcButtonComponent, IgcSwitchComponent);
defineComponents(IgcCarouselComponent, IgcSelectComponent, IgcSwitchComponent);

export class CarouselAnimations {
private carousel: IgcCarouselComponent;
private select: IgcSelectComponent;
private switch: IgcSwitchComponent;
const carousel = document.querySelector("igc-carousel") as IgcCarouselComponent;
const select = document.querySelector("igc-select") as IgcSelectComponent;
const verticalSwitch = document.querySelector("igc-switch") as IgcSwitchComponent;

constructor() {
this.carousel = document.querySelector('igc-carousel') as IgcCarouselComponent;
this.select = document.querySelector('igc-select') as IgcSelectComponent;
this.switch = document.querySelector('igc-switch') as IgcSwitchComponent;
select.addEventListener("igcChange", (event: CustomEvent<{ value: "slide" | "fade" | "none" }>) => {
carousel.animationType = event.detail.value;
});

this.select.addEventListener("igcChange", (e) => {
const animation = e.detail.value as 'slide' | 'fade' | 'none';
this.carousel.animationType = animation;
});

this.switch.addEventListener("igcChange", (e) => {
this.carousel.vertical = e.detail.checked;
});
}
}

new CarouselAnimations();
verticalSwitch.addEventListener("igcChange", (event: CustomEvent<{ checked: boolean }>) => {
carousel.vertical = event.detail.checked;
});
Loading
Loading