Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
eebabaa
feat: add dark theme and theme toggle to cde
LibbyUX Oct 23, 2026
9e12561
feat: use default material buttons in cde
LibbyUX Oct 23, 2026
37c673b
fix: update cde chart colors in place when the theme changes
LibbyUX Oct 23, 2026
db2f254
fix: use on-surface text roles in the cde visualization
LibbyUX Oct 23, 2026
f46e35f
feat: use default material button toggles in cde
LibbyUX Oct 23, 2026
b2c78bc
feat: use default material tooltips in cde
LibbyUX Oct 23, 2026
c82ef6c
fix: draw cde visualization panel dividers full length
LibbyUX Oct 23, 2026
cedc0c1
feat: use title medium panel titles and body small text in cde
LibbyUX Oct 23, 2026
8675c6b
feat: use body small type in cde charts
LibbyUX Oct 23, 2026
7780d1d
feat: use body medium text in the cde visualization
LibbyUX Oct 23, 2026
b07ff9b
fix: draw cde violin box plots in fixed black
LibbyUX Oct 23, 2026
b3d2afa
feat: use default material checkboxes and menus in cde
LibbyUX Oct 23, 2026
b000283
feat: match atlasng breadcrumbs in cde
LibbyUX Oct 23, 2026
dd15ce6
feat: match atlasng scrollbars in cde
LibbyUX Oct 23, 2026
fbf1a4c
fix: keep the cde cell types table from scrolling sideways
LibbyUX Oct 23, 2026
7fbc8d2
fix: align cde metadata labels and values in two columns
LibbyUX Oct 23, 2026
29950e4
fix: match cde scroll fades to the panel background
LibbyUX Oct 23, 2026
e93d76e
fix: use the theme surface for fullscreen panels
LibbyUX Oct 23, 2026
b92f49e
fix: support external viewports in the scroll overflow fade
LibbyUX Oct 23, 2026
ccdb9fa
feat: use the panel background for cde fullscreen views
LibbyUX Oct 23, 2026
4ff56e8
feat: use title small for cde panel titles
LibbyUX Oct 23, 2026
61aa2fe
feat: use the background token for cde panels and charts
LibbyUX Oct 23, 2026
64643a6
feat: show the dark cde hero background in the dark theme
LibbyUX Oct 23, 2026
3daae6a
feat: use 12px breadcrumbs on every cde-ui page
LibbyUX Oct 23, 2026
bbd358e
fix: use on-surface text roles on the cde landing page
LibbyUX Oct 23, 2026
d973bd8
feat: show a dark cde citation background in the dark theme
LibbyUX Oct 23, 2026
764abaa
fix: raise contrast of the cde hero outlined button label
LibbyUX Oct 23, 2026
d36b0f5
feat: show the dark cde create page background in the dark theme
LibbyUX Oct 23, 2026
37449d0
fix: use theme role colors for the cde landing mesh glows
LibbyUX Oct 24, 2026
4b89e35
feat: use title and body type roles on the cde landing cards
LibbyUX Oct 24, 2026
b398ea7
fix: stop the cde example thumbnail edge from flashing on hover
LibbyUX Oct 24, 2026
b14a385
feat: scale cde landing copy like the atlasng content paragraph
LibbyUX Oct 24, 2026
cdc20b4
feat: use material state layers, elevation, and shape tokens on the c…
LibbyUX Oct 24, 2026
33ebd03
feat: give cde landing cards material hover, press, and focus states
LibbyUX Oct 24, 2026
8787e28
fix: tidy the cde citation link and italicize the preprint server
LibbyUX Oct 24, 2026
7cec53c
feat: match atlasng text links and default material snackbars in cde
LibbyUX Oct 24, 2026
b260ace
feat: show a focus state layer on cde landing cards
LibbyUX Oct 24, 2026
4d5cb25
feat: use atlasng outlined button defaults on the cde hero
LibbyUX Oct 24, 2026
c47ce36
feat: theme the cde logo with secondary roles through the icon config
LibbyUX Oct 24, 2026
2c91dcd
fix: keep the paragraph weight on the cde citation link
LibbyUX Oct 24, 2026
76075a3
feat: use default material form fields and selects in cde
LibbyUX Oct 24, 2026
4321c5d
feat: match atlasng rich tooltip tokens in cde
LibbyUX Oct 24, 2026
a1032da
feat: apply atlasng material button defaults across cde
LibbyUX Oct 24, 2026
5fd020e
feat: use title and body type roles on the cde create page
LibbyUX Oct 24, 2026
a05296d
feat: outline cde workflow cards with theme shape and elevation
LibbyUX Oct 24, 2026
0368871
chore: remove dead css from the cde create page
LibbyUX Oct 24, 2026
6212c2e
fix: use secondary focus accents on cde text fields
LibbyUX Oct 24, 2026
b9df663
feat: refresh cde create page type, step numbers, cards, and requirem…
LibbyUX Oct 24, 2026
0cc1b86
feat: add an icon input to the error indicator
LibbyUX Oct 24, 2026
01ea548
feat: match the atlasng warning notice in cde error indicators
LibbyUX Oct 24, 2026
4c01aed
feat: tokenize the cde file pill
LibbyUX Oct 24, 2026
c60d46b
fix: close rich tooltips on escape and hide the plain tooltip while open
LibbyUX Oct 24, 2026
37accfc
fix: match atlasng rich tooltip spacing in cde
LibbyUX Oct 24, 2026
698a04b
feat: match atlasng error pages and cta buttons in cde
LibbyUX Oct 24, 2026
38fbea6
feat: match atlasng content sections, headers, and table of contents …
LibbyUX Oct 24, 2026
a47a58d
feat: match the atlasng table and results indicator on cde study pages
LibbyUX Oct 24, 2026
754e986
fix: use theme roles for cde study cards in the dark theme
LibbyUX Oct 24, 2026
44fea8d
feat: add a tonal content button and use it for the cde gallery's use…
LibbyUX Oct 24, 2026
79d114d
feat: match atlasng section spacing and the paragraph scale on cde co…
LibbyUX Oct 24, 2026
246a00f
feat: match atlasng table of contents rows in cde
LibbyUX Oct 24, 2026
cc4b89c
fix: use surface bright for cde study cards
LibbyUX Oct 24, 2026
075a015
fix: use outline-variant borders on the cde study table
LibbyUX Oct 24, 2026
b8c5a82
feat: move the cde gallery overview into the page header
LibbyUX Oct 24, 2026
fcbd8ca
feat: use title medium for the cde table of contents heading
LibbyUX Oct 24, 2026
63a0958
fix: use outline borders on cde study cards
LibbyUX Oct 24, 2026
f4b07fa
feat: match the atlasng header shell bar in cde
LibbyUX Oct 24, 2026
76f6315
fix: match atlasng notice spacing in cde error indicators
LibbyUX Oct 24, 2026
73fb237
feat: match atlasng header shell colors and surfaces in cde header menus
LibbyUX Oct 24, 2026
42a3699
feat: use body and title type roles in cde header menus
LibbyUX Oct 24, 2026
24c2c60
build: raise the cde-ui initial bundle budget to 5.5 mb
LibbyUX Oct 24, 2026
4e9d1d8
feat: use the overview as the cde gallery subtitle
LibbyUX Oct 24, 2026
17d9115
fix: update cde gallery totals for the hubmap datasets
LibbyUX Oct 24, 2026
487bf24
fix: sentence case the hubmap study in the cde gallery
LibbyUX Oct 24, 2026
602c4c3
fix: sort the hubmap study alphabetically in the cde gallery
LibbyUX Oct 24, 2026
a859ca5
feat: add side column and navigation list options to the table of con…
LibbyUX Oct 24, 2026
fef2950
feat: use the atlasng table of contents in cde
LibbyUX Oct 24, 2026
f8b8adf
fix: wrap cde table of contents titles
LibbyUX Oct 24, 2026
3de6c9c
fix: jump to the top instantly on cde route changes
LibbyUX Oct 24, 2026
1ff56c2
test: cover the custom scroll service
LibbyUX Oct 24, 2026
46cfec7
feat: add atlasng info colors to the atlasng hra theme
LibbyUX Oct 24, 2026
b9a587f
feat: match atlasng text links in the cde visualization
LibbyUX Oct 24, 2026
e668a96
feat: refresh the cde downloads drawer layout, copy, and notice
LibbyUX Oct 24, 2026
aa660a9
fix: pin scroll overflow fades to the viewport edges
LibbyUX Oct 24, 2026
688bd84
feat: shorten the cde histogram
LibbyUX Oct 24, 2026
11f5c24
fix: keep cde color swatches round and hide the picker arrow
LibbyUX Oct 24, 2026
0cec052
feat: restyle the cde color picker field and actions
LibbyUX Oct 24, 2026
f13f8d9
feat: use outlined format buttons in the cde downloads drawer
LibbyUX Oct 24, 2026
de2c141
feat: give cde visualization panels a consistent 16px inset
LibbyUX Oct 24, 2026
11ac8f2
fix: fit the cde violin graph to its panel width
LibbyUX Oct 24, 2026
7b21a7b
feat: outline the cde visualization panels and distance visualization…
LibbyUX Oct 24, 2026
5dec4f5
feat: add a bottom border to the cde-ui header
LibbyUX Oct 24, 2026
581c977
feat: switch cde-ui themes in a view transition
LibbyUX Oct 24, 2026
5e43895
feat: show larger cde violins with the cell types title at the top
LibbyUX Oct 24, 2026
08ead20
feat: give cde fullscreen views the panels' 16px inset
LibbyUX Oct 24, 2026
f9f42fe
fix: keep cde cell type checkbox states inside their cells
LibbyUX Oct 24, 2026
d44cd7b
fix: keep the cde histogram's end labels inside the chart
LibbyUX Oct 24, 2026
c9df3aa
fix: hide scroll overflow fades when an external viewport can't scroll
LibbyUX Oct 24, 2026
b526eef
revert: remove the tonal content button
LibbyUX Oct 26, 2026
3760053
fix: use the default primary loading bar in the cde visualization
LibbyUX Oct 26, 2026
6bd5c3f
fix: match atlasng snackbars in the cde web component
LibbyUX Oct 26, 2026
b94515b
fix: use theme tokens for cde tooltips and the color picker
LibbyUX Oct 26, 2026
c964c55
chore: remove an unused button height from the cde violin
LibbyUX Oct 26, 2026
ad5e587
fix: use atlasng hra chart defaults and body medium export legends
LibbyUX Oct 26, 2026
2cbea4c
fix: show cde cell type name tooltips when labels are truncated
LibbyUX Oct 26, 2026
2691b75
fix: stop the info modal title from showing a browser tooltip
LibbyUX Oct 26, 2026
4471be6
feat: lay out the cde cell info popup like the metadata panel
LibbyUX Oct 26, 2026
48de24c
feat: show cde metadata and cell info labels in on-surface
LibbyUX Oct 26, 2026
2613086
chore: merge atlasng hra theme into theme toggle
LibbyUX Oct 27, 2026
d27d426
chore: merge feature/cde-atlasng-hra-theme into feature/cde-theme-toggle
LibbyUX Oct 28, 2026
95e614d
chore: merge feature/cde-atlasng-hra-theme into feature/cde-theme-toggle
LibbyUX Oct 29, 2026
a92d170
chore: merge feature/cde-atlasng-hra-theme into feature/cde-theme-toggle
axdanbol Oct 29, 2026
316add1
chore: merge feature/cde-atlasng-hra-theme into feature/cde-theme-toggle
axdanbol Oct 29, 2026
8eb531b
style: format the cde create page with prettier 3.9
LibbyUX Oct 29, 2026
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
16 changes: 16 additions & 0 deletions apps/cde-ui/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,22 @@
"includePaths": ["node_modules/", "libs/design-system/styles", "apps/cde-ui/src/sass"]
},
"polyfills": ["zone.js"]
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kb",
"maximumError": "5.5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "8kb",
"maximumError": "16kb"
}
]
}
}
},
"serve": {
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions apps/cde-ui/src/app/app.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,16 @@
>
<mat-icon>explore</mat-icon>
</a>
<button
mat-icon-button
hraFeature="theme-toggle"
hraClickEvent
[hraPlainTooltip]="themeToggleLabel()"
[attr.aria-label]="themeToggleLabel()"
(click)="themeService.toggle()"
>
<mat-icon>{{ themeService.theme() === 'dark' ? 'light_mode' : 'dark_mode' }}</mat-icon>
</button>

<hra-help-button action="https://humanatlas.io/user-story/5" />

Expand Down
35 changes: 25 additions & 10 deletions apps/cde-ui/src/app/app.component.scss
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
@use 'utils';
@use 'vars';

:host {
display: flex;
flex-direction: column;
width: 100%;
min-width: 20rem;
min-height: 100vh;
background-color: vars.$surface;

::ng-deep hra-table-of-contents-layout {
@media (min-width: 1100px) {
margin: 0;
padding: 2.5rem;
gap: 0;
justify-content: center;
::ng-deep hra-table-of-contents-layout.hra-table-of-contents-layout-side-column {
margin: 0;
padding: 2.5rem;
gap: 0;
justify-content: center;

.content-container {
margin: 0 !important;
padding: 0 2.5rem !important;
}
.content-container {
margin: 0 !important;
padding: 0 2.5rem !important;
}
}

Expand All @@ -26,3 +29,15 @@
}
}
}

// Explore menu options: the option name over a body medium description
::ng-deep .more-menu .option-text {
display: flex;
flex-direction: column;
padding: 0.5rem 0;

.option-description {
@include utils.use-font(body, medium);
color: vars.$on-surface-variant;
}
}
19 changes: 18 additions & 1 deletion apps/cde-ui/src/app/app.component.spec.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,32 @@
import { HttpClientModule } from '@angular/common/http';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { signal } from '@angular/core';
import { PrivacyPreferencesService } from '@hra-ui/design-system/privacy';
import { PlainTooltipDirective } from '@hra-ui/design-system/tooltips/plain-tooltip';
import { Shallow } from 'shallow-render';
import { AppComponent } from './app.component';
import { Theme, ThemeService } from './services/theme-service/theme.service';

describe('AppComponent', () => {
let shallow: Shallow<AppComponent>;
beforeEach(async () => {
shallow = new Shallow(AppComponent).import(HttpClientModule, HttpClientTestingModule);
shallow = new Shallow(AppComponent)
.import(HttpClientModule, HttpClientTestingModule)
.dontMock(PlainTooltipDirective)
.mock(PrivacyPreferencesService, { launch: jest.fn() });
});

it(`should have as title 'cde-ui'`, async () => {
await expect(shallow.render()).resolves.toBeTruthy();
});

it('switches themes with the theme toggle', async () => {
const toggle = jest.fn();
const { find } = await shallow.mock(ThemeService, { theme: signal<Theme>('light'), toggle }).render();
const button = find('[hraFeature="theme-toggle"]');

expect(button.nativeElement.getAttribute('aria-label')).toEqual('Switch to dark theme');
button.triggerEventHandler('click', {});
expect(toggle).toHaveBeenCalled();
});
});
9 changes: 9 additions & 0 deletions apps/cde-ui/src/app/app.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { createNotifier } from 'ngxtension/create-notifier';
import { CRUMBS_DATA_KEY, removeLastCrumbRoute, ROOT_CRUMBS } from './shared/resolvers/crumbs.resolver';
import { getOptionalRouteData } from './shared/utils/route-properties';
import { Breakpoints, watchBreakpoint } from '@hra-ui/cdk/breakpoints';
import { ThemeService } from './services/theme-service/theme.service';

/**
* App component for CDE
Expand Down Expand Up @@ -59,6 +60,14 @@ export class AppComponent extends BaseApplicationComponent {
/** Whether the screen size is considered small (mobile) */
private readonly isSmallScreen = watchBreakpoint(Breakpoints.Mobile);

/** Light and dark theme switcher */
protected readonly themeService = inject(ThemeService);

/** Theme toggle label, naming the theme a click switches to */
protected readonly themeToggleLabel = computed(() =>
this.themeService.theme() === 'dark' ? 'Switch to light theme' : 'Switch to dark theme',
);

/** Computed breadcrumbs for the current route */
protected readonly crumbs = computed(() => {
if (this.isSmallScreen()) {
Expand Down
29 changes: 27 additions & 2 deletions apps/cde-ui/src/app/app.config.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { provideHttpClient } from '@angular/common/http';
import { ApplicationConfig } from '@angular/core';
import { ApplicationConfig, inject, provideEnvironmentInitializer } from '@angular/core';
import {
provideRouter,
withComponentInputBinding,
Expand All @@ -9,6 +9,7 @@ import {
import { provideContentTemplateDefs } from '@hra-ui/cdk/content-template';
import { provideNothrowPlatformLocation } from '@hra-ui/cdk/platform-location';
import { provideAnalytics, withErrorHandler, withRouterEvents } from '@hra-ui/common/analytics';
import { provideCustomScrollOptions } from '@hra-ui/common/custom-scroll';
import { provideAppConfiguration } from '@hra-ui/common/injectors';
import { provideRouterExt } from '@hra-ui/common/router-ext';
import { provideDesignSystem } from '@hra-ui/design-system';
Expand All @@ -20,13 +21,26 @@ import { GridContainerDef } from '@hra-ui/design-system/content-templates/grid-c
import { ImageDef } from '@hra-ui/design-system/content-templates/image';
import { MarkdownDef } from '@hra-ui/design-system/content-templates/markdown';
import { PageSectionDef } from '@hra-ui/design-system/content-templates/page-section';
import { IconDef, provideIcons } from '@hra-ui/design-system/icons';
import { IconConfig, IconConfigRegistryService, IconDef, provideIcons } from '@hra-ui/design-system/icons';
import { provideTableOfContentsLayoutOptions } from '@hra-ui/design-system/layouts/table-of-contents';
import { provideTableOfContentsOptions } from '@hra-ui/design-system/navigation/table-of-contents';
import { PageTableDef } from '@hra-ui/design-system/table';
import { providePlainTooltipOptions } from '@hra-ui/design-system/tooltips/plain-tooltip';
import { provideMarkdown } from 'ngx-markdown';
import { ROUTES } from './app.routes';
import { StudiesGridDef } from './components/studies-grid/types/studies-grid.definition';
import { handleNavigationError } from './shared/utils/navigation-error-handler';

/**
* CDE logo in theme colors, so it follows the light and dark themes wherever it appears,
* such as the landing page hero and the Spatial Omics Gallery header.
* Takes precedence over the fixed colors the design system gives every product logo.
*/
const CDE_LOGO_CONFIG: IconConfig = {
color: 'var(--mat-sys-on-secondary)',
backgroundColor: 'var(--mat-sys-secondary)',
};

/**
* Set of config options available during the application bootstrap operation.
*/
Expand All @@ -51,17 +65,28 @@ export const appConfig: ApplicationConfig = {
CopyEmailButtonDef,
StudiesGridDef,
]),
// Page changes jump to the top instead of animating with the design system's smooth scrolling.
// hubmapconsortium/hra-ui#2361 tracks the fix for every HRA app.
provideCustomScrollOptions({ instantNavigation: true }),
provideDesignSystem(),
provideEnvironmentInitializer(() => {
inject(IconConfigRegistryService).setIconConfig('cde', 'product', CDE_LOGO_CONFIG);
}),
provideHttpClient(),
provideIcons(),
provideMarkdown(),
provideNothrowPlatformLocation(),
providePlainTooltipOptions({ hraStyles: false }),
provideRouter(
ROUTES,
withComponentInputBinding(),
withInMemoryScrolling({ anchorScrolling: 'enabled', scrollPositionRestoration: 'enabled' }),
withNavigationErrorHandler(handleNavigationError),
),
provideRouterExt(),
// The table of contents follows AtlasNG's: a Material navigation list, in a side column from AtlasNG's
// medium breakpoint (960px)
provideTableOfContentsLayoutOptions({ sideColumnQuery: '(min-width: 960px)' }),
provideTableOfContentsOptions({ navList: true }),
],
};
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<ul class="examples">
@for (example of examples(); track example.url) {
<li>
<a class="example" hraFeature="example" [hraClickEvent]="{ url: example.url }" [hraLink]="example.url">
<a class="example" hraFeature="example" matRipple [hraClickEvent]="{ url: example.url }" [hraLink]="example.url">
<span class="thumbnail">
<img alt="" [attr.src]="example.image | assetUrl" />
</span>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
padding: 0.75rem;
color: inherit;
text-decoration: none;
@include cde-utils.card(0.625rem);
@include cde-utils.card(vars.$corner-small);

&:hover,
&:focus-visible {
Expand All @@ -38,23 +38,25 @@
}

&:focus-visible {
outline: 0.125rem solid vars.$tertiary;
outline-offset: -0.125rem;
@include cde-utils.focus-ring;
}
}

.thumbnail {
position: relative;
flex-shrink: 0;
width: min(6.5rem, 30%);
aspect-ratio: 16 / 10;
overflow: hidden;
border-radius: 0.5rem;
background-color: vars.$secondary;
border-radius: vars.$corner-small;
background-color: vars.$surface-container-high;

img {
display: block;
width: 100%;
height: 100%;
position: absolute;
top: -1px;
left: -1px;
width: calc(100% + 2px);
height: calc(100% + 2px);
object-fit: cover;
}
}
Expand All @@ -67,17 +69,17 @@
}

.title {
@include cde-utils.font(vars.$body-medium-font, 1.125rem, 1.5rem, 600, 0);
color: vars.$secondary;
@include utils.use-font(title, medium);
color: vars.$on-surface;
}

.description {
@include cde-utils.font(vars.$body-medium-font, 0.875rem, 1.25rem, 400, 0.0125rem);
color: vars.$primary;
@include utils.use-font(body, medium);
color: vars.$on-surface-variant;
}

.credit {
@include cde-utils.font(vars.$body-medium-font, 0.875rem, 1.25rem, 400, 0.0125rem);
@include utils.use-font(body, medium);
color: vars.$on-surface-variant;
}

Expand All @@ -91,8 +93,8 @@
height: 2.5rem;
margin-left: auto;
border-radius: vars.$corner-full;
background-color: utils.with-alpha(vars.$tertiary, 10%);
color: vars.$on-tertiary-fixed;
background-color: utils.with-alpha(vars.$primary, 10%);
color: vars.$on-primary-container;
}

@container (max-width: 28rem) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,14 @@ describe('ExampleListComponent', () => {
expect(screen.getByRole('link', { name: /Example B/ })).toHaveAttribute('href', '/example/1');
});

it('should ripple each row when pressed', async () => {
await setup();

for (const link of screen.getAllByRole('link')) {
expect(link).toHaveClass('mat-ripple');
}
});

it('should show the data credit only when provided', async () => {
const { container } = await setup();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { ChangeDetectionStrategy, Component, input } from '@angular/core';
import { MatRippleModule } from '@angular/material/core';
import { MatIconModule } from '@angular/material/icon';
import { HraCommonModule } from '@hra-ui/common';
import { LinkDirective } from '@hra-ui/common/router-ext';
Expand All @@ -22,7 +23,7 @@ export interface ExampleItem {
*/
@Component({
selector: 'cde-example-list',
imports: [HraCommonModule, LinkDirective, MatIconModule],
imports: [HraCommonModule, LinkDirective, MatIconModule, MatRippleModule],
templateUrl: './example-list.component.html',
styleUrl: './example-list.component.scss',
changeDetection: ChangeDetectionStrategy.OnPush,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<ng-container hraFeature="file-upload">
@if (!file && errorMessage()) {
<hra-error-indicator announce [errors]="[errorMessage(), errorActionMessage()]" />
<hra-error-indicator announce icon="warning" [errors]="[errorMessage(), errorActionMessage()]" />
}

@if (file && !errorMessage()) {
Expand All @@ -9,8 +9,6 @@
<button
mat-flat-button
class="upload"
hraPrimaryButton
hraButtonSize="large"
hraFeature="upload"
hraClickEvent
[attr.aria-label]="uploadAriaLabel() ?? null"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
<a
class="card"
hraFeature="primary-action"
matRipple
[hraClickEvent]="{ url: data.action.url }"
[hraLink]="data.action.url"
[hraLinkExternal]="data.action.external"
Expand Down
Loading
Loading