Media Gallery
July 17, 2026 ยท View on GitHub
A media gallery displays a group of thumbnails in a gallery format, allowing users to preview and select different media.
Overview
Media galleries are ideal for showcasing multiple images or other media related to a single product or topic. They provide an interactive way to browse through content with thumbnail previews that update the primary display when selected.
Best practices
When to use
- Showcasing multiple related images for a product or topic
- Providing an interactive way to browse through visual content
When not to use
- You only have one image (use the image component instead)
- The images are unrelated to each other
Usage
Import DAFF_MEDIA_GALLERY_COMPONENTS into your component:
import { DAFF_MEDIA_GALLERY_COMPONENTS } from '@daffodil/design/media-gallery';
@Component({
selector: 'custom-component',
templateUrl: './custom-component.component.html',
imports: [
DAFF_MEDIA_GALLERY_COMPONENTS,
],
})
export class CustomComponent {}
Deprecation notice:
DaffMediaGalleryModuleis deprecated. Use the standalone component imports instead.
Anatomy
A media gallery is composed of a container and one or more thumbnails:
<daff-media-gallery>
<ng-template daffThumbnail thumbnailSrc="/thumbnail-path.jpg" label="Your description">
<daff-image src="/image-path.jpg" alt="Your description" width="500" height="500"></daff-image>
</ng-template>
</daff-media-gallery>
<daff-media-gallery>: The wrapper component that contains all thumbnails and manages the display area.[daffThumbnail]: A structural directive that defines both the preview image and the content to display when selected. Thumbnails can contain any content type, not just images.
Thumbnail configuration
thumbnailSrcis used for the preview image rendered in the thumbnail strip.- The content inside the template is shown as the primary view when selected.
- Include the full content for each thumbnail inside the template, even if it appears to duplicate the thumbnail image, since this is what renders in the main display area when selected.
- Always provide an accessible
labelfor a thumbnail. - The first thumbnail is selected by default.
Never use
[daffThumbnail]as a standalone element. It must be placed within a<daff-media-gallery>.
Features
Video thumbnails
Set the isVideo property on a thumbnail to display a video icon on its preview, signaling that the content opens a video.
Skeleton screen
Set the skeleton property to true to display a placeholder skeleton screen that helps reduce load-time frustration.
Aspect ratio
Use a consistent aspect ratio across all content to avoid layout shifts. Mismatched content sizes can cause the primary content area to shift as different thumbnails are selected.
Thumbnails are rendered in a square by default, so a 1:1 ratio is recommended, but not required since thumbnails are automatically centered horizontally and vertically.
Accessibility
Built-in behavior
- Each thumbnail is rendered as a button with an autogenerated
aria-controlsvalue that matches theidof the content container displayed when the thumbnail is selected. - These
idvalues are autogenerated but can be overridden by providing a custom id to the<daff-media-gallery>element.
Developer responsibilities
- Always provide an accessible label for each thumbnail using the
labelattribute.