fix(SW-2171): Added focus state on rate cards and image-gallery

Approved-by: Arvid Norlin
This commit is contained in:
Erik Tiekstra
2025-04-16 10:24:51 +00:00
parent 27f5ca9851
commit 8b65f63d60
5 changed files with 37 additions and 28 deletions

View File

@@ -14,13 +14,9 @@
.imageWrapper {
position: relative;
overflow: hidden;
height: 200px;
max-width: 360px;
width: 100%;
}
.imageWrapper img {
border-radius: var(--Corner-radius-Medium);
}

View File

@@ -2,6 +2,7 @@
margin: 0 calc(-1 * var(--Spacing-x2));
min-height: 190px;
position: relative;
border-radius: var(--Corner-radius-Large) var(--Corner-radius-Large) 0 0;
}
div[data-multiroom="true"] .imageContainer {
@@ -26,7 +27,6 @@ div[data-multiroom="true"] .imageContainer {
.imageContainer img {
aspect-ratio: 16/9;
border-radius: var(--Corner-radius-Medium) var(--Corner-radius-Medium) 0 0;
max-width: 100%;
object-fit: cover;
}

View File

@@ -1,3 +1,10 @@
.wrapper {
position: relative;
width: 100%;
height: 100%;
border-radius: inherit;
}
.imageCount {
position: absolute;
bottom: 16px;
@@ -10,24 +17,24 @@
display: flex;
align-items: center;
gap: var(--Spacing-x-quarter);
}
.imageCountNumber {
color: var(--Text-Inverted);
}
.triggerArea {
display: flex;
cursor: pointer;
}
.triggerArea:not(.fill) {
position: relative;
.triggerArea {
background-color: transparent;
border-width: 0;
padding: 0;
position: absolute;
inset: 0;
cursor: pointer;
border-radius: inherit;
}
.image {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: inherit;
}
.imagePlaceholder {

View File

@@ -13,6 +13,7 @@ import Lightbox from "@/components/Lightbox"
import styles from "./imageGallery.module.css"
import type { ImageGalleryProps } from "@/types/components/imageGallery"
import { cx } from "class-variance-authority"
function ImageGallery({
images,
@@ -35,13 +36,7 @@ function ImageGallery({
return (
<>
<Button
className={`${styles.triggerArea} ${fill ? styles.fill : ""}`}
onPress={() => setLightboxIsOpen(true)}
aria-label={intl.formatMessage({
defaultMessage: "Open image gallery",
})}
>
<div className={cx(styles.wrapper, { [styles.fill]: fill })}>
<Image
className={styles.image}
src={firstImage.src}
@@ -49,13 +44,20 @@ function ImageGallery({
onError={() => setImageError(true)}
{...imageProps}
/>
<span className={styles.imageCount}>
<MaterialIcon icon="filter" color="Icon/Inverted" />
<Typography variant={"Body/Supporting text (caption)/smRegular"}>
<span className={styles.imageCountNumber}>{images.length}</span>
</Typography>
</span>
</Button>
<Typography variant={"Body/Supporting text (caption)/smRegular"}>
<span className={styles.imageCount}>
<MaterialIcon icon="filter" color="Icon/Inverted" />
<span>{images.length}</span>
</span>
</Typography>
<Button
className={styles.triggerArea}
onPress={() => setLightboxIsOpen(true)}
aria-label={intl.formatMessage({
defaultMessage: "Open image gallery",
})}
/>
</div>
<Lightbox
images={images}
dialogTitle={title}

View File

@@ -44,6 +44,10 @@
border: 1px solid var(--Scandic-Peach-80, 'black');
}
.radio:focus-visible ~ .rateCard {
outline: 2px solid var(--Border-Interactive-Focus);
}
label:not(:has(.radio:checked)) .checkIcon {
display: none;
}