Skip to content

Commit

Permalink
Merge pull request #2491 from SpareBank1/semantiske-farger-messages
Browse files Browse the repository at this point in the history
Semantiske farger messages
  • Loading branch information
tuva-odegard authored Jan 21, 2025
2 parents d789b12 + ca4d507 commit 6756a8d
Show file tree
Hide file tree
Showing 14 changed files with 329 additions and 217 deletions.
1 change: 1 addition & 0 deletions packages/ffe-core/less/theme.less
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@
/* Form element borders */
--ffe-g-border-color: var(--ffe-farge-varmgraa);
--ffe-g-border-radius: 8px;
--ffe-g-border-radius-lg: 16px;
--ffe-g-border-width: 1px;
--ffe-g-border-width-focus: 2px;

Expand Down
13 changes: 1 addition & 12 deletions packages/ffe-messages-react/src/ContextMessage.spec.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ describe('<ContextMessage />', () => {
['error', 'alert', 'Feilmelding'],
['success', 'group', 'Suksessmelding'],
['tips', 'group', 'Tipsmelding'],
['news', 'group', 'Nyhetsmelding'],
['warning', 'group', 'Advarsel'],
] as const)('should render each type %s', (type, role, name) => {
render(<ContextMessage type={type} />);
expect(screen.getByRole(role, { name })).toBeInTheDocument();
Expand Down Expand Up @@ -79,17 +79,6 @@ describe('<ContextMessage />', () => {
expect(group.classList.contains('ffe-message--info')).toBeTruthy();
});

it('should --colored-bg modifier classes ', () => {
render(<ContextMessage type="info" onColoredBg={true} />);
const group = screen.getByRole('group');
expect(group.classList.contains('ffe-message')).toBeTruthy();
expect(group.classList.contains('ffe-message--context')).toBeTruthy();
expect(
group.classList.contains('ffe-message--colored-bg'),
).toBeTruthy();
expect(group.classList.contains('ffe-message--info')).toBeTruthy();
});

it('should be closeable', async () => {
render(<ContextMessage type="info" closeButton={true} />);
expect(
Expand Down
70 changes: 68 additions & 2 deletions packages/ffe-messages-react/src/ContextMessage.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import React, { FunctionComponent } from 'react';
import { ContextMessage } from './ContextMessage';
import { MessageHeader } from './MessageHeader';
import type { StoryObj, Meta } from '@storybook/react';
import { LinkText } from '@sb1/ffe-core-react';

const meta: Meta<typeof ContextMessage> = {
title: 'Komponenter/Messages/ContextMessage',
Expand All @@ -14,11 +15,76 @@ export default meta;

type Story = StoryObj<typeof ContextMessage>;

const messageArgs = {
closeButton: true,
header: 'Meldingstittel',
};

export const Standard: Story = {
args: {
...messageArgs,
type: 'info',
},
render: args => (
<ContextMessage {...args}>
Kontekstuelle meldinger er informasjon som skal gis i en kontekst
<LinkText>Lenke</LinkText>
</ContextMessage>
),
};

export const Info: Story = {
args: {
...messageArgs,
type: 'info',
closeButton: true,
header: 'Meldingstittel',
},
render: args => (
<ContextMessage {...args}>
Kontekstuelle meldinger er informasjon som skal gis i en kontekst
</ContextMessage>
),
};

export const Tips: Story = {
args: {
...messageArgs,
type: 'tips',
},
render: args => (
<ContextMessage {...args}>
Kontekstuelle meldinger er informasjon som skal gis i en kontekst
</ContextMessage>
),
};

export const Success: Story = {
args: {
...messageArgs,
type: 'success',
},
render: args => (
<ContextMessage {...args}>
Kontekstuelle meldinger er informasjon som skal gis i en kontekst
</ContextMessage>
),
};

export const Warning: Story = {
args: {
...messageArgs,
type: 'warning',
},
render: args => (
<ContextMessage {...args}>
Kontekstuelle meldinger er informasjon som skal gis i en kontekst
</ContextMessage>
),
};

export const Error: Story = {
args: {
...messageArgs,
type: 'error',
},
render: args => (
<ContextMessage {...args}>
Expand Down
6 changes: 1 addition & 5 deletions packages/ffe-messages-react/src/ContextMessage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,19 @@ export interface ContextMessageProps
iconFileUrl?: string;
/** Decides the language of the aria-label for the close icon */
locale?: Locale;
/** info, success, tips, news or error */
/** info, success, tips, warning or error */
type: MessageType;
/** Called when closed */
onClose?: () => void;
/** Show close button */
closeButton?: boolean;
/** Adds alternative styling for better contrast on certain backgrounds */
onColoredBg?: boolean;
/** The header */
header?: React.ReactElement<MessageHeaderProps> | string;
}

export const ContextMessage: React.FC<ContextMessageProps> = ({
type,
className,
onColoredBg,
locale = 'nb',
children,
onClose,
Expand All @@ -52,7 +49,6 @@ export const ContextMessage: React.FC<ContextMessageProps> = ({
`ffe-message--${type}`,
{
'ffe-message--context-compact': compact,
'ffe-message--colored-bg': onColoredBg,
},
className,
)}
Expand Down
13 changes: 1 addition & 12 deletions packages/ffe-messages-react/src/MessageBox.spec.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ describe('<MessageBox />', () => {
['error', 'alert', 'Feilmelding'],
['success', 'group', 'Suksessmelding'],
['tips', 'group', 'Tipsmelding'],
['news', 'group', 'Nyhetsmelding'],
['warning', 'group', 'Advarsel'],
] as const)('should render each type %s', (type, role, name) => {
render(<MessageBox type={type} />);
expect(screen.getByRole(role, { name })).toBeInTheDocument();
Expand Down Expand Up @@ -65,15 +65,4 @@ describe('<MessageBox />', () => {
expect(group.classList.contains('my-class')).toBeTruthy();
expect(group.classList.contains('ffe-message--colored-bg')).toBeFalsy();
});

it('should --colored-bg modifier classes ', () => {
render(<MessageBox type="info" onColoredBg={true} />);
const group = screen.getByRole('group');
expect(group.classList.contains('ffe-message')).toBeTruthy();
expect(group.classList.contains('ffe-message--box')).toBeTruthy();
expect(
group.classList.contains('ffe-message--colored-bg'),
).toBeTruthy();
expect(group.classList.contains('ffe-message--info')).toBeTruthy();
});
});
73 changes: 72 additions & 1 deletion packages/ffe-messages-react/src/MessageBox.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import React, { FunctionComponent } from 'react';
import { MessageBox } from './MessageBox';
import { MessageHeader } from './MessageHeader';
import type { StoryObj, Meta } from '@storybook/react';
import { LinkText } from '@sb1/ffe-core-react';

const meta: Meta<typeof MessageBox> = {
title: 'Komponenter/Messages/MessageBox',
Expand All @@ -14,10 +15,80 @@ export default meta;

type Story = StoryObj<typeof MessageBox>;

const messageArgs = {
header: 'Meldingstittel',
};

export const Standard: Story = {
args: {
...messageArgs,
type: 'info',
},
render: args => (
<MessageBox {...args}>
Meldingsboksene skal inneholde informasjon som er nyttig og relevant
for brukerne.
<LinkText>Lenke</LinkText>
</MessageBox>
),
};

export const Info: Story = {
args: {
...messageArgs,
type: 'info',
},
render: args => (
<MessageBox {...args}>
Meldingsboksene skal inneholde informasjon som er nyttig og relevant
for brukerne.
</MessageBox>
),
};

export const Tips: Story = {
args: {
...messageArgs,
type: 'tips',
},
render: args => (
<MessageBox {...args}>
Meldingsboksene skal inneholde informasjon som er nyttig og relevant
for brukerne.
</MessageBox>
),
};

export const Success: Story = {
args: {
...messageArgs,
type: 'success',
},
render: args => (
<MessageBox {...args}>
Meldingsboksene skal inneholde informasjon som er nyttig og relevant
for brukerne.
</MessageBox>
),
};

export const Warning: Story = {
args: {
...messageArgs,
type: 'warning',
},
render: args => (
<MessageBox {...args}>
Meldingsboksene skal inneholde informasjon som er nyttig og relevant
for brukerne.
</MessageBox>
),
};

export const Error: Story = {
args: {
...messageArgs,
type: 'error',
header: 'Meldingstittel',
},
render: args => (
<MessageBox {...args}>
Expand Down
8 changes: 1 addition & 7 deletions packages/ffe-messages-react/src/MessageBox.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,8 @@ export interface MessageBoxProps extends React.ComponentPropsWithoutRef<'div'> {
iconFileUrl?: string;
/** The header */
header?: React.ReactElement<MessageHeaderProps> | string;
/** info, success, tips, news or error */
/** info, success, tips, warning or error */
type: MessageType;
/** Adds alternative styling for better contrast on certain backgrounds */
onColoredBg?: boolean;
/** Decides the language of the aria-label for the close icon */
locale?: Locale;
}
Expand All @@ -25,7 +23,6 @@ export const MessageBox: React.FC<MessageBoxProps> = ({
iconFileUrl,
children,
locale = 'nb',
onColoredBg,
className,
...rest
}) => {
Expand All @@ -35,9 +32,6 @@ export const MessageBox: React.FC<MessageBoxProps> = ({
`ffe-message`,
`ffe-message--box`,
`ffe-message--${type}`,
{
'ffe-message--colored-bg': onColoredBg,
},
className,
)}
role={type === 'error' ? 'alert' : 'group'}
Expand Down
13 changes: 1 addition & 12 deletions packages/ffe-messages-react/src/SystemMessage.spec.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ describe('<SystemMessage />', () => {
['error', 'alert', 'Feilmelding'],
['success', 'group', 'Suksessmelding'],
['tips', 'group', 'Tipsmelding'],
['news', 'group', 'Nyhetsmelding'],
['warning', 'group', 'Advarsel'],
] as const)('should render each type %s', (type, role, name) => {
render(<SystemMessage type={type} />);
expect(screen.getByRole(role, { name })).toBeInTheDocument();
Expand All @@ -24,17 +24,6 @@ describe('<SystemMessage />', () => {
expect(group.classList.contains('ffe-message--colored-bg')).toBeFalsy();
});

it('should --colored-bg modifier classes ', () => {
render(<SystemMessage type="info" onColoredBg={true} />);
const group = screen.getByRole('group');
expect(group.classList.contains('ffe-message')).toBeTruthy();
expect(group.classList.contains('ffe-message--system')).toBeTruthy();
expect(
group.classList.contains('ffe-message--colored-bg'),
).toBeTruthy();
expect(group.classList.contains('ffe-message--info')).toBeTruthy();
});

it('should be closeable', async () => {
render(<SystemMessage type="info" />);
expect(
Expand Down
Loading

0 comments on commit 6756a8d

Please sign in to comment.