Skip to content

Commit e802e6d

Browse files
committed
Merge branch 'release/0.18.14'
2 parents 2b117df + f661d47 commit e802e6d

File tree

10 files changed

+82
-82
lines changed

10 files changed

+82
-82
lines changed

CHANGELOG.mdx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ Prefix the change with one of these keywords:
1717

1818
## [Unreleased]
1919

20+
## [0.18.14]
21+
22+
### Changed
23+
24+
- Image slider subcomponent structure, reworked padding to prevent cut off
25+
2026
## [0.18.13]
2127

2228
### Fixed

lib/components/ImageSlider/Image.tsx

Lines changed: 0 additions & 49 deletions
This file was deleted.

lib/components/ImageSlider/ImageSlider.stories.tsx

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,15 @@ export const Primary: Story = {
2929
{sliderData.map((image, index) => {
3030
const { image: imageUrl, title, link, focalPointX, focalPointY, aspectRatio } = image
3131
return (
32-
<ImageSlider.Slide key={index}>
33-
<ImageSlider.Image
34-
key={index}
35-
imageUrl={imageUrl}
36-
title={title}
37-
link={link}
38-
focalPointX={focalPointX}
39-
focalPointY={focalPointY}
40-
aspectRatio={aspectRatio}
41-
/>
42-
</ImageSlider.Slide>
32+
<ImageSlider.Item
33+
key={index}
34+
imageUrl={imageUrl}
35+
title={title}
36+
link={link}
37+
focalPointX={focalPointX}
38+
focalPointY={focalPointY}
39+
aspectRatio={aspectRatio}
40+
/>
4341
)
4442
})}
4543
</ImageSlider>

lib/components/ImageSlider/ImageSlider.tsx

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { useEffect } from 'react'
22
import { ChevronLeftIcon, ChevronRightIcon } from '@heroicons/react/24/solid'
3-
import { Slide } from './Slide'
4-
import { Image } from './Image'
3+
import { ImageSliderItem } from './ImageSliderItem'
54
import SliderScript from './script.ts'
65

76
export interface ImageSliderProp {
@@ -26,22 +25,22 @@ export const ImageSliderWrapper = ({
2625

2726
return (
2827
<div
29-
className="slider overflow-hidden"
28+
className="cu-slider cu-component overflow-hidden -mr-4"
3029
data-slides-desktop={slidesPerViewDesktop}
3130
data-slides-tablet={slidesPerViewTablet}
3231
data-slides-mobile={slidesPerViewMobile}
3332
>
3433
{/* Slider Slides */}
35-
<div className="slider__wrap flex align-items-center">{children}</div>
34+
<div className="cu-slider--wrap flex align-items-center">{children}</div>
3635

3736
{/* Slider Arrow */}
3837
<div className="flex align-items-center gap-3 justify-center mt-4">
39-
<button className={`slider__arrow slider__arrow--prev ${arrowButtons}`}>
38+
<button className={`cu-slider--arrow cu-slider--arrow-prev ${arrowButtons}`}>
4039
<span className="sr-only">Go to Previous Slide</span>
4140
<ChevronLeftIcon className={arrowIcons} aria-hidden="true" />
4241
</button>
4342

44-
<button className={`slider__arrow slider__arrow--next ${arrowButtons}`}>
43+
<button className={`cu-slider--arrow cu-slider--arrow-next ${arrowButtons}`}>
4544
<span className="sr-only">Go to Next Slide</span>
4645
<ChevronRightIcon className={arrowIcons} aria-hidden="true" />
4746
</button>
@@ -51,8 +50,7 @@ export const ImageSliderWrapper = ({
5150
}
5251

5352
export const ImageSlider = Object.assign(ImageSliderWrapper, {
54-
Slide: Slide,
55-
Image: Image,
53+
Item: ImageSliderItem,
5654
})
5755

5856
ImageSliderWrapper.displayName = 'ImageSlider'
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { aspectRatioClasses } from '../../utils/propClasses'
2+
import { useLinkContext } from '../LinkProvider/useLinkContext'
3+
4+
type aspectRatioKeys = keyof typeof aspectRatioClasses
5+
6+
export interface ImageSliderItemProps {
7+
imageUrl: string
8+
focalPointX?: number
9+
focalPointY?: number
10+
title?: string
11+
link?: string
12+
aspectRatio?: aspectRatioKeys
13+
}
14+
15+
export const ImageSliderItem = ({
16+
imageUrl,
17+
focalPointX = 50,
18+
focalPointY = 50,
19+
title,
20+
link,
21+
aspectRatio = 'landscape',
22+
}: ImageSliderItemProps) => {
23+
const LinkComponent = useLinkContext()
24+
const inlineImageStyles = {
25+
backgroundImage: `url(${imageUrl})`,
26+
backgroundPosition: `${focalPointX}% ${focalPointY}%`,
27+
}
28+
29+
return (
30+
<div className="cu-slider--item pr-4">
31+
<div
32+
className={`relative ${aspectRatioClasses[aspectRatio]} bg-cover bg-center rounded-lg bg-black w-full h-full transition ease-in-out duration-[5000]`}
33+
style={inlineImageStyles}
34+
>
35+
{title && (
36+
<div
37+
className={`bg-black/75 text-white absolute bottom-2 left-2 right-2 px-4 py-2.5 rounded-md ${link ? 'hover:bg-cu-red/85' : ''}`}
38+
>
39+
{link ? (
40+
<LinkComponent href={link} className="cursor-pointer block hover-bg-cu-red">
41+
<p className="text-sm md:text-base font-semibold line-clamp-2">{title}</p>
42+
</LinkComponent>
43+
) : (
44+
<p className="text-sm md:text-base font-semibold line-clamp-2">{title}</p>
45+
)}
46+
</div>
47+
)}
48+
</div>
49+
</div>
50+
)
51+
}
52+
53+
ImageSliderItem.displayName = 'ImageSlider.Item'

lib/components/ImageSlider/Slide.tsx

Lines changed: 0 additions & 8 deletions
This file was deleted.

lib/components/ImageSlider/script.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
const SliderScript = () => {
22
// Initial setup
3-
const slider = document.querySelector('.slider') as HTMLElement
3+
const slider = document.querySelector('.cu-slider') as HTMLElement
44

55
if (slider === null) return
66

7-
const sliderWrap = slider.querySelector('.slider__wrap') as HTMLElement
8-
const slides = slider.querySelectorAll('.slider__slide')
7+
const sliderWrap = slider.querySelector('.cu-slider--wrap') as HTMLElement
8+
const slides = slider.querySelectorAll('.cu-slider--item')
99

1010
if (slider === null || slides === null) return
1111

12-
const previousArrow = slider.querySelector('.slider__arrow--prev') as HTMLElement
13-
const nextArrow = slider.querySelector('.slider__arrow--next') as HTMLElement
12+
const previousArrow = slider.querySelector('.cu-slider--arrow-prev') as HTMLElement
13+
const nextArrow = slider.querySelector('.cu-slider--arrow-next') as HTMLElement
1414

1515
if (previousArrow === null || nextArrow === null) return
1616

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@carletonuniversity/rds",
3-
"version": "0.18.13",
3+
"version": "0.18.14",
44
"private": false,
55
"description": "Raven Design System is Carleton University's design system",
66
"author": "Web Services",

public/assets/font-awesome/icon-list.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ export const iconNames = [
113113
{ value: 'landmark', label: 'Landmark' },
114114
{ value: 'laptop-mobile', label: 'Laptop mobile' },
115115
{ value: 'laptop', label: 'Laptop' },
116+
{ value: 'leaf-maple', label: 'Leaf maple' },
116117
{ value: 'leaf', label: 'Leaf' },
117118
{ value: 'light-emergency-on', label: 'Light emergency on' },
118119
{ value: 'lightbulb', label: 'Lightbulb' },
Lines changed: 1 addition & 0 deletions
Loading

0 commit comments

Comments
 (0)