@amsterdam/design-system-react 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/Accordion/Accordion.js +4 -1
- package/dist/Accordion/Accordion.test.js +19 -3
- package/dist/Accordion/AccordionSection.test.js +1 -1
- package/dist/ActionGroup/ActionGroup.test.js +1 -1
- package/dist/Alert/Alert.test.js +1 -1
- package/dist/Avatar/Avatar.test.js +1 -1
- package/dist/Badge/Badge.test.js +1 -1
- package/dist/Blockquote/Blockquote.test.js +3 -4
- package/dist/Breadcrumb/Breadcrumb.test.js +1 -1
- package/dist/Breadcrumb/BreadcrumbLink.test.js +1 -1
- package/dist/Breakout/Breakout.test.js +11 -19
- package/dist/Breakout/BreakoutCell.d.ts +3 -1
- package/dist/Breakout/BreakoutCell.js +1 -0
- package/dist/Breakout/BreakoutCell.test.js +20 -16
- package/dist/Button/Button.test.js +8 -1
- package/dist/Card/Card.d.ts +10 -0
- package/dist/Card/Card.js +8 -1
- package/dist/Card/Card.test.js +1 -1
- package/dist/Card/CardHeading.d.ts +11 -0
- package/dist/Card/CardHeading.js +10 -0
- package/dist/Card/CardHeading.test.js +34 -0
- package/dist/Card/CardHeadingGroup.test.js +1 -1
- package/dist/Card/CardImage.d.ts +7 -0
- package/dist/Card/CardImage.js +10 -0
- package/dist/{Footer/FooterSpotlight.test.js → Card/CardImage.test.js} +9 -9
- package/dist/Card/CardLink.test.js +1 -1
- package/dist/CharacterCount/CharacterCount.test.js +1 -1
- package/dist/Checkbox/Checkbox.test.js +2 -3
- package/dist/Column/Column.d.ts +4 -3
- package/dist/Column/Column.js +2 -1
- package/dist/Column/Column.test.js +10 -12
- package/dist/DateInput/DateInput.test.js +1 -1
- package/dist/DescriptionList/DescriptionList.test.js +1 -1
- package/dist/DescriptionList/DescriptionListDescription.test.js +1 -1
- package/dist/DescriptionList/DescriptionListSection.test.js +1 -1
- package/dist/DescriptionList/DescriptionListTerm.test.js +1 -1
- package/dist/Dialog/Dialog.test.js +1 -1
- package/dist/ErrorMessage/ErrorMessage.test.js +1 -1
- package/dist/Field/Field.test.js +1 -1
- package/dist/FieldSet/FieldSet.test.js +1 -1
- package/dist/Figure/Figure.test.js +1 -1
- package/dist/Figure/FigureCaption.test.js +1 -1
- package/dist/FileInput/FileInput.test.js +1 -1
- package/dist/FileList/FileList.test.js +1 -1
- package/dist/FileList/FileListItem.test.js +1 -1
- package/dist/Grid/Grid.d.ts +8 -5
- package/dist/Grid/Grid.js +2 -0
- package/dist/Grid/Grid.test.js +13 -29
- package/dist/Grid/GridCell.test.js +2 -8
- package/dist/Grid/paddingClasses.d.ts +2 -2
- package/dist/Heading/Heading.test.js +17 -11
- package/dist/Hint/Hint.test.js +1 -1
- package/dist/Icon/Icon.d.ts +1 -1
- package/dist/Icon/Icon.test.js +3 -4
- package/dist/IconButton/IconButton.js +1 -1
- package/dist/IconButton/IconButton.test.js +1 -1
- package/dist/Image/Image.d.ts +4 -8
- package/dist/Image/Image.test.js +1 -1
- package/dist/ImageSlider/ImageSlider.test.js +1 -1
- package/dist/ImageSlider/ImageSliderItem.test.js +1 -1
- package/dist/ImageSlider/ImageSliderScroller.test.js +1 -1
- package/dist/ImageSlider/ImageSliderThumbnails.js +1 -1
- package/dist/ImageSlider/ImageSliderThumbnails.test.js +1 -1
- package/dist/InvalidFormAlert/InvalidFormAlert.test.js +1 -1
- package/dist/Label/Label.test.js +3 -4
- package/dist/Link/Link.d.ts +0 -6
- package/dist/Link/Link.js +1 -1
- package/dist/Link/Link.test.js +22 -29
- package/dist/LinkList/LinkList.test.js +1 -1
- package/dist/LinkList/LinkListLink.test.js +1 -1
- package/dist/Logo/Logo.test.js +2 -3
- package/dist/Mark/Mark.test.js +1 -1
- package/dist/OrderedList/OrderedList.test.js +1 -1
- package/dist/OrderedList/OrderedListItem.test.js +1 -1
- package/dist/Overlap/Overlap.test.js +1 -1
- package/dist/{Footer/FooterSpotlight.d.ts → Page/Page.d.ts} +2 -2
- package/dist/Page/Page.js +9 -0
- package/dist/{MegaMenu/MegaMenu.test.js → Page/Page.test.js} +9 -9
- package/dist/Page/index.d.ts +2 -0
- package/dist/Page/index.js +1 -0
- package/dist/{Footer/Footer.d.ts → PageFooter/PageFooter.d.ts} +2 -2
- package/dist/PageFooter/PageFooter.js +17 -0
- package/dist/{Footer/Footer.test.js → PageFooter/PageFooter.test.js} +9 -9
- package/dist/{Footer/FooterMenu.d.ts → PageFooter/PageFooterMenu.d.ts} +2 -2
- package/dist/PageFooter/PageFooterMenu.js +9 -0
- package/dist/{Footer/FooterMenu.test.js → PageFooter/PageFooterMenu.test.js} +9 -9
- package/dist/{Footer/FooterMenuLink.d.ts → PageFooter/PageFooterMenuLink.d.ts} +2 -2
- package/dist/PageFooter/PageFooterMenuLink.js +9 -0
- package/dist/{Footer/FooterMenuLink.test.js → PageFooter/PageFooterMenuLink.test.js} +9 -9
- package/dist/PageFooter/PageFooterSpotlight.d.ts +9 -0
- package/dist/PageFooter/PageFooterSpotlight.js +9 -0
- package/dist/{MegaMenu/MegaMenuListCategory.test.js → PageFooter/PageFooterSpotlight.test.js} +9 -9
- package/dist/PageFooter/index.d.ts +5 -0
- package/dist/PageFooter/index.js +1 -0
- package/dist/{Header/Header.d.ts → PageHeader/PageHeader.d.ts} +4 -4
- package/dist/PageHeader/PageHeader.js +31 -0
- package/dist/{Header/Header.test.js → PageHeader/PageHeader.test.js} +37 -38
- package/dist/PageHeader/PageHeaderGridCellNarrowWindowOnly.d.ts +2 -0
- package/dist/PageHeader/PageHeaderGridCellNarrowWindowOnly.js +6 -0
- package/dist/{Header/HeaderGridCellNarrowWindowOnly.test.js → PageHeader/PageHeaderGridCellNarrowWindowOnly.test.js} +10 -10
- package/dist/PageHeader/PageHeaderMenuIcon.d.ts +2 -0
- package/dist/PageHeader/PageHeaderMenuIcon.js +2 -0
- package/dist/{Header/HeaderMenuLink.d.ts → PageHeader/PageHeaderMenuLink.d.ts} +2 -2
- package/dist/PageHeader/PageHeaderMenuLink.js +5 -0
- package/dist/{Header/HeaderMenuLink.test.js → PageHeader/PageHeaderMenuLink.test.js} +13 -13
- package/dist/PageHeader/index.d.ts +3 -0
- package/dist/PageHeader/index.js +1 -0
- package/dist/PageHeading/PageHeading.test.js +2 -3
- package/dist/Pagination/Pagination.test.js +1 -1
- package/dist/Paragraph/Paragraph.test.js +1 -1
- package/dist/PasswordInput/PasswordInput.test.js +1 -1
- package/dist/Radio/Radio.test.js +1 -1
- package/dist/Row/Row.d.ts +4 -3
- package/dist/Row/Row.js +2 -1
- package/dist/Row/Row.test.js +10 -12
- package/dist/SearchField/SearchField.d.ts +2 -0
- package/dist/SearchField/SearchField.test.js +2 -3
- package/dist/SearchField/SearchFieldInput.test.js +2 -3
- package/dist/Select/Select.test.js +1 -1
- package/dist/Select/SelectOption.test.js +1 -1
- package/dist/Select/SelectOptionGroup.test.js +1 -1
- package/dist/SkipLink/SkipLink.test.js +1 -1
- package/dist/Spotlight/Spotlight.d.ts +4 -2
- package/dist/Spotlight/Spotlight.js +1 -0
- package/dist/Spotlight/Spotlight.test.js +11 -9
- package/dist/StandaloneLink/StandaloneLink.d.ts +17 -0
- package/dist/StandaloneLink/StandaloneLink.js +10 -0
- package/dist/StandaloneLink/StandaloneLink.test.js +40 -0
- package/dist/StandaloneLink/index.d.ts +2 -0
- package/dist/StandaloneLink/index.js +1 -0
- package/dist/Switch/Switch.test.js +1 -1
- package/dist/Table/Table.test.js +1 -1
- package/dist/Table/TableBody.test.js +1 -1
- package/dist/Table/TableCaption.test.js +1 -1
- package/dist/Table/TableCell.test.js +1 -1
- package/dist/Table/TableFooter.test.js +1 -1
- package/dist/Table/TableHeader.test.js +1 -1
- package/dist/Table/TableHeaderCell.test.js +1 -1
- package/dist/Table/TableRow.test.js +1 -1
- package/dist/TableOfContents/TableOfContents.test.js +1 -1
- package/dist/TableOfContents/TableOfContentsLink.test.js +1 -1
- package/dist/TableOfContents/TableOfContentsList.test.js +1 -1
- package/dist/Tabs/Tabs.d.ts +6 -6
- package/dist/Tabs/Tabs.js +4 -5
- package/dist/Tabs/Tabs.test.js +21 -6
- package/dist/Tabs/TabsButton.d.ts +4 -4
- package/dist/Tabs/TabsButton.js +4 -4
- package/dist/Tabs/TabsButton.test.js +10 -10
- package/dist/Tabs/TabsContext.d.ts +2 -7
- package/dist/Tabs/TabsContext.js +0 -1
- package/dist/Tabs/TabsList.js +1 -1
- package/dist/Tabs/TabsList.test.js +1 -1
- package/dist/Tabs/TabsPanel.d.ts +4 -4
- package/dist/Tabs/TabsPanel.js +4 -4
- package/dist/Tabs/TabsPanel.test.js +10 -12
- package/dist/TextArea/TextArea.test.js +1 -1
- package/dist/TextInput/TextInput.test.js +2 -3
- package/dist/TimeInput/TimeInput.test.js +1 -1
- package/dist/UnorderedList/UnorderedList.test.js +1 -1
- package/dist/UnorderedList/UnorderedListItem.test.js +1 -1
- package/dist/common/accessibility.d.ts +9 -1
- package/dist/index.cjs.js +1000 -1057
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +164 -194
- package/dist/index.esm.js +998 -1053
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +4 -6
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/dist/Footer/Footer.js +0 -17
- package/dist/Footer/FooterMenu.js +0 -9
- package/dist/Footer/FooterMenuLink.js +0 -9
- package/dist/Footer/FooterSpotlight.js +0 -9
- package/dist/Footer/index.d.ts +0 -5
- package/dist/Footer/index.js +0 -1
- package/dist/Header/Header.js +0 -31
- package/dist/Header/HeaderGridCellNarrowWindowOnly.d.ts +0 -2
- package/dist/Header/HeaderGridCellNarrowWindowOnly.js +0 -6
- package/dist/Header/HeaderMenuIcon.d.ts +0 -2
- package/dist/Header/HeaderMenuIcon.js +0 -2
- package/dist/Header/HeaderMenuLink.js +0 -5
- package/dist/Header/index.d.ts +0 -3
- package/dist/Header/index.js +0 -1
- package/dist/MegaMenu/MegaMenu.d.ts +0 -14
- package/dist/MegaMenu/MegaMenu.js +0 -12
- package/dist/MegaMenu/MegaMenuListCategory.d.ts +0 -9
- package/dist/MegaMenu/MegaMenuListCategory.js +0 -9
- package/dist/MegaMenu/index.d.ts +0 -3
- package/dist/MegaMenu/index.js +0 -1
- package/dist/PageMenu/PageMenu.d.ts +0 -25
- package/dist/PageMenu/PageMenu.js +0 -12
- package/dist/PageMenu/PageMenu.test.js +0 -45
- package/dist/PageMenu/PageMenuLink.d.ts +0 -13
- package/dist/PageMenu/PageMenuLink.js +0 -10
- package/dist/PageMenu/PageMenuLink.test.js +0 -40
- package/dist/PageMenu/index.d.ts +0 -3
- package/dist/PageMenu/index.js +0 -1
- package/dist/Screen/Screen.d.ts +0 -21
- package/dist/Screen/Screen.js +0 -9
- package/dist/Screen/Screen.test.d.ts +0 -1
- package/dist/Screen/Screen.test.js +0 -40
- package/dist/Screen/index.d.ts +0 -2
- package/dist/Screen/index.js +0 -1
- package/dist/TopTaskLink/TopTaskLink.d.ts +0 -17
- package/dist/TopTaskLink/TopTaskLink.js +0 -9
- package/dist/TopTaskLink/TopTaskLink.test.d.ts +0 -1
- package/dist/TopTaskLink/TopTaskLink.test.js +0 -42
- package/dist/TopTaskLink/index.d.ts +0 -1
- package/dist/TopTaskLink/index.js +0 -1
- /package/dist/{Footer/Footer.test.d.ts → Card/CardHeading.test.d.ts} +0 -0
- /package/dist/{Footer/FooterMenu.test.d.ts → Card/CardImage.test.d.ts} +0 -0
- /package/dist/{Footer/FooterMenuLink.test.d.ts → Page/Page.test.d.ts} +0 -0
- /package/dist/{Footer/FooterSpotlight.test.d.ts → PageFooter/PageFooter.test.d.ts} +0 -0
- /package/dist/{Header/HeaderGridCellNarrowWindowOnly.test.d.ts → PageFooter/PageFooterMenu.test.d.ts} +0 -0
- /package/dist/{Header/HeaderMenuLink.test.d.ts → PageFooter/PageFooterMenuLink.test.d.ts} +0 -0
- /package/dist/{MegaMenu/MegaMenu.test.d.ts → PageFooter/PageFooterSpotlight.test.d.ts} +0 -0
- /package/dist/{Header/Header.test.d.ts → PageHeader/PageHeader.test.d.ts} +0 -0
- /package/dist/{MegaMenu/MegaMenuListCategory.test.d.ts → PageHeader/PageHeaderGridCellNarrowWindowOnly.test.d.ts} +0 -0
- /package/dist/{PageMenu/PageMenu.test.d.ts → PageHeader/PageHeaderMenuLink.test.d.ts} +0 -0
- /package/dist/{Header → PageHeader}/matchMedia.mock.d.ts +0 -0
- /package/dist/{Header → PageHeader}/matchMedia.mock.js +0 -0
- /package/dist/{PageMenu/PageMenuLink.test.d.ts → StandaloneLink/StandaloneLink.test.d.ts} +0 -0
|
@@ -15,7 +15,7 @@ describe('Link list', () => {
|
|
|
15
15
|
const component = screen.getByRole('list');
|
|
16
16
|
expect(component).toHaveClass('ams-link-list');
|
|
17
17
|
});
|
|
18
|
-
it('renders an
|
|
18
|
+
it('renders an extra class name', () => {
|
|
19
19
|
render(_jsx(LinkList, { className: "extra" }));
|
|
20
20
|
const component = screen.getByRole('list');
|
|
21
21
|
expect(component).toHaveClass('ams-link-list extra');
|
|
@@ -21,7 +21,7 @@ describe('Link list link', () => {
|
|
|
21
21
|
const component = screen.getByRole('link');
|
|
22
22
|
expect(component).toHaveClass('ams-link-list__link');
|
|
23
23
|
});
|
|
24
|
-
it('renders an
|
|
24
|
+
it('renders an extra class name', () => {
|
|
25
25
|
render(_jsx(LinkList.Link, { className: "extra", href: "#" }));
|
|
26
26
|
const component = screen.getByRole('link');
|
|
27
27
|
expect(component).toHaveClass('ams-link-list__link extra');
|
package/dist/Logo/Logo.test.js
CHANGED
|
@@ -15,11 +15,10 @@ describe('Logo', () => {
|
|
|
15
15
|
const component = container.querySelector(':only-child');
|
|
16
16
|
expect(component).toHaveClass('ams-logo');
|
|
17
17
|
});
|
|
18
|
-
it('renders an
|
|
18
|
+
it('renders an extra class name', () => {
|
|
19
19
|
const { container } = render(_jsx(Logo, { className: "extra" }));
|
|
20
20
|
const component = container.querySelector(':only-child');
|
|
21
|
-
expect(component).toHaveClass('extra');
|
|
22
|
-
expect(component).toHaveClass('ams-logo');
|
|
21
|
+
expect(component).toHaveClass('ams-logo extra');
|
|
23
22
|
});
|
|
24
23
|
it('supports ForwardRef in React', () => {
|
|
25
24
|
const ref = createRef();
|
package/dist/Mark/Mark.test.js
CHANGED
|
@@ -15,7 +15,7 @@ describe('Mark', () => {
|
|
|
15
15
|
const component = container.querySelector(':only-child');
|
|
16
16
|
expect(component).toHaveClass('ams-mark');
|
|
17
17
|
});
|
|
18
|
-
it('renders an
|
|
18
|
+
it('renders an extra class name', () => {
|
|
19
19
|
const { container } = render(_jsx(Mark, { className: "extra" }));
|
|
20
20
|
const component = container.querySelector(':only-child');
|
|
21
21
|
expect(component).toHaveClass('ams-mark extra');
|
|
@@ -24,7 +24,7 @@ describe('Ordered list', () => {
|
|
|
24
24
|
const component = screen.getByRole('list');
|
|
25
25
|
expect(component).toHaveClass('ams-ordered-list--inverse');
|
|
26
26
|
});
|
|
27
|
-
it('renders an
|
|
27
|
+
it('renders an extra class name', () => {
|
|
28
28
|
render(_jsx(OrderedList, { className: "extra" }));
|
|
29
29
|
const component = screen.getByRole('list');
|
|
30
30
|
expect(component).toHaveClass('ams-ordered-list extra');
|
|
@@ -14,7 +14,7 @@ describe('Ordered list item', () => {
|
|
|
14
14
|
const component = screen.getByRole('listitem');
|
|
15
15
|
expect(component).toHaveClass('ams-ordered-list__item');
|
|
16
16
|
});
|
|
17
|
-
it('renders an
|
|
17
|
+
it('renders an extra class name', () => {
|
|
18
18
|
render(_jsx(OrderedListItem, { className: "extra" }));
|
|
19
19
|
const component = screen.getByRole('listitem');
|
|
20
20
|
expect(component).toHaveClass('ams-ordered-list__item extra');
|
|
@@ -15,7 +15,7 @@ describe('Overlap', () => {
|
|
|
15
15
|
const component = container.querySelector(':only-child');
|
|
16
16
|
expect(component).toHaveClass('ams-overlap');
|
|
17
17
|
});
|
|
18
|
-
it('renders an
|
|
18
|
+
it('renders an extra class name', () => {
|
|
19
19
|
const { container } = render(_jsx(Overlap, { className: "extra" }));
|
|
20
20
|
const component = container.querySelector(':only-child');
|
|
21
21
|
expect(component).toHaveClass('ams-overlap extra');
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright Gemeente Amsterdam
|
|
4
4
|
*/
|
|
5
5
|
import type { HTMLAttributes, PropsWithChildren } from 'react';
|
|
6
|
-
export type
|
|
7
|
-
export declare const
|
|
6
|
+
export type PageProps = PropsWithChildren<HTMLAttributes<HTMLDivElement>>;
|
|
7
|
+
export declare const Page: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
|
|
8
8
|
children?: import("react").ReactNode | undefined;
|
|
9
9
|
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @license EUPL-1.2+
|
|
4
|
+
* Copyright Gemeente Amsterdam
|
|
5
|
+
*/
|
|
6
|
+
import clsx from 'clsx';
|
|
7
|
+
import { forwardRef } from 'react';
|
|
8
|
+
export const Page = forwardRef(({ children, className, ...restProps }, ref) => (_jsx("div", { ...restProps, className: clsx('ams-page', className), ref: ref, children: children })));
|
|
9
|
+
Page.displayName = 'Page';
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { createRef } from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { Page } from './Page';
|
|
5
5
|
import '@testing-library/jest-dom';
|
|
6
|
-
describe('
|
|
6
|
+
describe('Page', () => {
|
|
7
7
|
it('renders', () => {
|
|
8
|
-
const { container } = render(_jsx(
|
|
8
|
+
const { container } = render(_jsx(Page, {}));
|
|
9
9
|
const component = container.querySelector(':only-child');
|
|
10
10
|
expect(component).toBeInTheDocument();
|
|
11
11
|
expect(component).toBeVisible();
|
|
12
12
|
});
|
|
13
13
|
it('renders a design system BEM class name', () => {
|
|
14
|
-
const { container } = render(_jsx(
|
|
14
|
+
const { container } = render(_jsx(Page, {}));
|
|
15
15
|
const component = container.querySelector(':only-child');
|
|
16
|
-
expect(component).toHaveClass('ams-
|
|
16
|
+
expect(component).toHaveClass('ams-page');
|
|
17
17
|
});
|
|
18
|
-
it('renders an
|
|
19
|
-
const { container } = render(_jsx(
|
|
18
|
+
it('renders an extra class name', () => {
|
|
19
|
+
const { container } = render(_jsx(Page, { className: "extra" }));
|
|
20
20
|
const component = container.querySelector(':only-child');
|
|
21
|
-
expect(component).toHaveClass('ams-
|
|
21
|
+
expect(component).toHaveClass('ams-page extra');
|
|
22
22
|
});
|
|
23
23
|
it('supports ForwardRef in React', () => {
|
|
24
24
|
const ref = createRef();
|
|
25
|
-
const { container } = render(_jsx(
|
|
25
|
+
const { container } = render(_jsx(Page, { ref: ref }));
|
|
26
26
|
const component = container.querySelector(':only-child');
|
|
27
27
|
expect(ref.current).toBe(component);
|
|
28
28
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Page } from './Page';
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Copyright Gemeente Amsterdam
|
|
4
4
|
*/
|
|
5
5
|
import type { HTMLAttributes, PropsWithChildren } from 'react';
|
|
6
|
-
export type
|
|
7
|
-
export declare const
|
|
6
|
+
export type PageFooterProps = PropsWithChildren<HTMLAttributes<HTMLElement>>;
|
|
7
|
+
export declare const PageFooter: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
|
|
8
8
|
children?: import("react").ReactNode | undefined;
|
|
9
9
|
} & import("react").RefAttributes<HTMLElement>> & {
|
|
10
10
|
Menu: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLUListElement> & {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @license EUPL-1.2+
|
|
4
|
+
* Copyright Gemeente Amsterdam
|
|
5
|
+
*/
|
|
6
|
+
import clsx from 'clsx';
|
|
7
|
+
import { forwardRef } from 'react';
|
|
8
|
+
import { PageFooterMenu } from './PageFooterMenu';
|
|
9
|
+
import { PageFooterMenuLink } from './PageFooterMenuLink';
|
|
10
|
+
import { PageFooterSpotlight } from './PageFooterSpotlight';
|
|
11
|
+
const PageFooterRoot = forwardRef(({ children, className, ...restProps }, ref) => (_jsx("footer", { ...restProps, className: clsx('ams-page-footer', className), ref: ref, children: children })));
|
|
12
|
+
PageFooterRoot.displayName = 'PageFooter';
|
|
13
|
+
export const PageFooter = Object.assign(PageFooterRoot, {
|
|
14
|
+
Menu: PageFooterMenu,
|
|
15
|
+
MenuLink: PageFooterMenuLink,
|
|
16
|
+
Spotlight: PageFooterSpotlight,
|
|
17
|
+
});
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { render, screen } from '@testing-library/react';
|
|
3
3
|
import { createRef } from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { PageFooter } from './PageFooter';
|
|
5
5
|
import '@testing-library/jest-dom';
|
|
6
|
-
describe('Footer', () => {
|
|
6
|
+
describe('Page Footer', () => {
|
|
7
7
|
it('renders an HTML footer element', () => {
|
|
8
|
-
render(_jsx(
|
|
8
|
+
render(_jsx(PageFooter, {}));
|
|
9
9
|
const component = screen.getByRole('contentinfo');
|
|
10
10
|
expect(component).toBeInTheDocument();
|
|
11
11
|
expect(component).toBeVisible();
|
|
12
12
|
});
|
|
13
13
|
it('renders a design system BEM class name', () => {
|
|
14
|
-
render(_jsx(
|
|
14
|
+
render(_jsx(PageFooter, {}));
|
|
15
15
|
const component = screen.getByRole('contentinfo');
|
|
16
|
-
expect(component).toHaveClass('ams-footer');
|
|
16
|
+
expect(component).toHaveClass('ams-page-footer');
|
|
17
17
|
});
|
|
18
|
-
it('renders an
|
|
19
|
-
render(_jsx(
|
|
18
|
+
it('renders an extra class name', () => {
|
|
19
|
+
render(_jsx(PageFooter, { className: "extra" }));
|
|
20
20
|
const component = screen.getByRole('contentinfo');
|
|
21
|
-
expect(component).toHaveClass('ams-footer extra');
|
|
21
|
+
expect(component).toHaveClass('ams-page-footer extra');
|
|
22
22
|
});
|
|
23
23
|
it('supports ForwardRef in React', () => {
|
|
24
24
|
const ref = createRef();
|
|
25
|
-
render(_jsx(
|
|
25
|
+
render(_jsx(PageFooter, { ref: ref }));
|
|
26
26
|
const component = screen.getByRole('contentinfo');
|
|
27
27
|
expect(ref.current).toBe(component);
|
|
28
28
|
});
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright Gemeente Amsterdam
|
|
4
4
|
*/
|
|
5
5
|
import type { HTMLAttributes, PropsWithChildren } from 'react';
|
|
6
|
-
export type
|
|
7
|
-
export declare const
|
|
6
|
+
export type PageFooterMenuProps = PropsWithChildren<HTMLAttributes<HTMLUListElement>>;
|
|
7
|
+
export declare const PageFooterMenu: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLUListElement> & {
|
|
8
8
|
children?: import("react").ReactNode | undefined;
|
|
9
9
|
} & import("react").RefAttributes<HTMLUListElement>>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @license EUPL-1.2+
|
|
4
|
+
* Copyright Gemeente Amsterdam
|
|
5
|
+
*/
|
|
6
|
+
import clsx from 'clsx';
|
|
7
|
+
import { forwardRef } from 'react';
|
|
8
|
+
export const PageFooterMenu = forwardRef(({ children, className, ...restProps }, ref) => (_jsx("ul", { ...restProps, className: clsx('ams-page-footer__menu', className), ref: ref, children: children })));
|
|
9
|
+
PageFooterMenu.displayName = 'PageFooter.Menu';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { render, screen } from '@testing-library/react';
|
|
3
3
|
import { createRef } from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { PageFooter } from './PageFooter';
|
|
5
5
|
import '@testing-library/jest-dom';
|
|
6
|
-
describe('Footer
|
|
6
|
+
describe('Page Footer Menu', () => {
|
|
7
7
|
it('renders a footer menu with children', () => {
|
|
8
|
-
render(_jsxs(
|
|
8
|
+
render(_jsxs(PageFooter.Menu, { children: [_jsx(PageFooter.MenuLink, { href: "#", lang: "en", children: "English" }), _jsx(PageFooter.MenuLink, { href: "#", children: "Mijn Amsterdam" })] }));
|
|
9
9
|
const component = screen.getByRole('list');
|
|
10
10
|
const children = screen.getAllByRole('listitem');
|
|
11
11
|
expect(component).toBeInTheDocument();
|
|
@@ -13,19 +13,19 @@ describe('Footer menu', () => {
|
|
|
13
13
|
expect(children).toHaveLength(2);
|
|
14
14
|
});
|
|
15
15
|
it('renders a design system BEM class name', () => {
|
|
16
|
-
render(_jsx(
|
|
16
|
+
render(_jsx(PageFooter.Menu, {}));
|
|
17
17
|
const component = screen.getByRole('list');
|
|
18
|
-
expect(component).toHaveClass('ams-footer__menu');
|
|
18
|
+
expect(component).toHaveClass('ams-page-footer__menu');
|
|
19
19
|
});
|
|
20
20
|
it('is able to pass a React ref', () => {
|
|
21
21
|
const ref = createRef();
|
|
22
|
-
render(_jsx(
|
|
22
|
+
render(_jsx(PageFooter.Menu, { ref: ref, children: _jsx(PageFooter.MenuLink, { href: "#", lang: "en", children: "English" }) }));
|
|
23
23
|
const component = screen.getByRole('list');
|
|
24
24
|
expect(ref.current).toBe(component);
|
|
25
25
|
});
|
|
26
|
-
it('renders an
|
|
27
|
-
render(_jsx(
|
|
26
|
+
it('renders an extra class name', () => {
|
|
27
|
+
render(_jsx(PageFooter.Menu, { className: "intro" }));
|
|
28
28
|
const component = screen.getByRole('list');
|
|
29
|
-
expect(component).toHaveClass('ams-footer__menu intro');
|
|
29
|
+
expect(component).toHaveClass('ams-page-footer__menu intro');
|
|
30
30
|
});
|
|
31
31
|
});
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright Gemeente Amsterdam
|
|
4
4
|
*/
|
|
5
5
|
import type { AnchorHTMLAttributes, PropsWithChildren } from 'react';
|
|
6
|
-
export type
|
|
7
|
-
export declare const
|
|
6
|
+
export type PageFooterMenuLinkProps = PropsWithChildren<AnchorHTMLAttributes<HTMLAnchorElement>>;
|
|
7
|
+
export declare const PageFooterMenuLink: import("react").ForwardRefExoticComponent<AnchorHTMLAttributes<HTMLAnchorElement> & {
|
|
8
8
|
children?: import("react").ReactNode | undefined;
|
|
9
9
|
} & import("react").RefAttributes<HTMLAnchorElement>>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @license EUPL-1.2+
|
|
4
|
+
* Copyright Gemeente Amsterdam
|
|
5
|
+
*/
|
|
6
|
+
import clsx from 'clsx';
|
|
7
|
+
import { forwardRef } from 'react';
|
|
8
|
+
export const PageFooterMenuLink = forwardRef(({ children, className, ...restProps }, ref) => (_jsx("li", { className: "ams-page-footer__menu-item", children: _jsx("a", { ...restProps, className: clsx('ams-page-footer__menu-link', className), ref: ref, children: children }) })));
|
|
9
|
+
PageFooterMenuLink.displayName = 'PageFooter.MenuLink';
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { render, screen } from '@testing-library/react';
|
|
3
3
|
import { createRef } from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { PageFooter } from './PageFooter';
|
|
5
5
|
import '@testing-library/jest-dom';
|
|
6
|
-
describe('Page
|
|
6
|
+
describe('Page Footer Menu Link', () => {
|
|
7
7
|
it('renders with href attribute', () => {
|
|
8
|
-
render(_jsx(
|
|
8
|
+
render(_jsx(PageFooter.MenuLink, { href: "#", children: "Link" }));
|
|
9
9
|
const component = screen.getByRole('link');
|
|
10
10
|
expect(component).toBeInTheDocument();
|
|
11
11
|
expect(component).toHaveAttribute('href', '#');
|
|
12
12
|
});
|
|
13
13
|
it('renders a design system BEM class name', () => {
|
|
14
|
-
render(_jsx(
|
|
14
|
+
render(_jsx(PageFooter.MenuLink, { href: "#", children: "Link" }));
|
|
15
15
|
const component = screen.getByRole('link');
|
|
16
|
-
expect(component).toHaveClass('ams-footer__menu-link');
|
|
16
|
+
expect(component).toHaveClass('ams-page-footer__menu-link');
|
|
17
17
|
});
|
|
18
|
-
it('renders an
|
|
19
|
-
render(_jsx(
|
|
18
|
+
it('renders an extra class name', () => {
|
|
19
|
+
render(_jsx(PageFooter.MenuLink, { className: "extra", href: "#", children: "Link" }));
|
|
20
20
|
const component = screen.getByRole('link');
|
|
21
|
-
expect(component).toHaveClass('ams-footer__menu-link extra');
|
|
21
|
+
expect(component).toHaveClass('ams-page-footer__menu-link extra');
|
|
22
22
|
});
|
|
23
23
|
it('supports ForwardRef in React', () => {
|
|
24
24
|
const ref = createRef();
|
|
25
|
-
render(_jsx(
|
|
25
|
+
render(_jsx(PageFooter.MenuLink, { className: "extra", href: "#", ref: ref, children: "Link" }));
|
|
26
26
|
const component = screen.getByRole('link');
|
|
27
27
|
expect(ref.current).toBe(component);
|
|
28
28
|
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license EUPL-1.2+
|
|
3
|
+
* Copyright Gemeente Amsterdam
|
|
4
|
+
*/
|
|
5
|
+
import type { HTMLAttributes, PropsWithChildren } from 'react';
|
|
6
|
+
export type PageFooterSpotlightProps = PropsWithChildren<HTMLAttributes<HTMLDivElement>>;
|
|
7
|
+
export declare const PageFooterSpotlight: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
|
|
8
|
+
children?: import("react").ReactNode | undefined;
|
|
9
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @license EUPL-1.2+
|
|
4
|
+
* Copyright Gemeente Amsterdam
|
|
5
|
+
*/
|
|
6
|
+
import clsx from 'clsx';
|
|
7
|
+
import { forwardRef } from 'react';
|
|
8
|
+
export const PageFooterSpotlight = forwardRef(({ children, className, ...restProps }, ref) => (_jsx("div", { ...restProps, className: clsx('ams-page-footer__spotlight', className), ref: ref, children: children })));
|
|
9
|
+
PageFooterSpotlight.displayName = 'PageFooter.Spotlight';
|
package/dist/{MegaMenu/MegaMenuListCategory.test.js → PageFooter/PageFooterSpotlight.test.js}
RENAMED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { createRef } from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { PageFooter } from './PageFooter';
|
|
5
5
|
import '@testing-library/jest-dom';
|
|
6
|
-
describe('
|
|
6
|
+
describe('Page Footer Spotlight', () => {
|
|
7
7
|
it('renders', () => {
|
|
8
|
-
const { container } = render(_jsx(
|
|
8
|
+
const { container } = render(_jsx(PageFooter.Spotlight, {}));
|
|
9
9
|
const component = container.querySelector(':only-child');
|
|
10
10
|
expect(component).toBeInTheDocument();
|
|
11
11
|
expect(component).toBeVisible();
|
|
12
12
|
});
|
|
13
13
|
it('renders a design system BEM class name', () => {
|
|
14
|
-
const { container } = render(_jsx(
|
|
14
|
+
const { container } = render(_jsx(PageFooter.Spotlight, {}));
|
|
15
15
|
const component = container.querySelector(':only-child');
|
|
16
|
-
expect(component).toHaveClass('ams-
|
|
16
|
+
expect(component).toHaveClass('ams-page-footer__spotlight');
|
|
17
17
|
});
|
|
18
|
-
it('renders an
|
|
19
|
-
const { container } = render(_jsx(
|
|
18
|
+
it('renders an extra class name', () => {
|
|
19
|
+
const { container } = render(_jsx(PageFooter.Spotlight, { className: "extra" }));
|
|
20
20
|
const component = container.querySelector(':only-child');
|
|
21
|
-
expect(component).toHaveClass('ams-
|
|
21
|
+
expect(component).toHaveClass('ams-page-footer__spotlight extra');
|
|
22
22
|
});
|
|
23
23
|
it('supports ForwardRef in React', () => {
|
|
24
24
|
const ref = createRef();
|
|
25
|
-
const { container } = render(_jsx(
|
|
25
|
+
const { container } = render(_jsx(PageFooter.Spotlight, { ref: ref }));
|
|
26
26
|
const component = container.querySelector(':only-child');
|
|
27
27
|
expect(ref.current).toBe(component);
|
|
28
28
|
});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { PageFooter } from './PageFooter';
|
|
2
|
+
export type { PageFooterProps } from './PageFooter';
|
|
3
|
+
export type { PageFooterMenuProps } from './PageFooterMenu';
|
|
4
|
+
export type { PageFooterMenuLinkProps } from './PageFooterMenuLink';
|
|
5
|
+
export type { PageFooterSpotlightProps } from './PageFooterSpotlight';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { PageFooter } from './PageFooter';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { HTMLAttributes, ReactNode } from 'react';
|
|
6
6
|
import type { LogoBrand } from '../Logo';
|
|
7
|
-
export type
|
|
7
|
+
export type PageHeaderProps = {
|
|
8
8
|
/** The name of the application. */
|
|
9
9
|
brandName?: string;
|
|
10
10
|
/** The name of the brand for which to display the logo. */
|
|
@@ -15,14 +15,14 @@ export type HeaderProps = {
|
|
|
15
15
|
logoLinkTitle?: string;
|
|
16
16
|
/** The text for the menu button. */
|
|
17
17
|
menuButtonText?: string;
|
|
18
|
-
/** A slot for the menu items. Use
|
|
18
|
+
/** A slot for the menu items. Use PageHeader.MenuLink here. */
|
|
19
19
|
menuItems?: ReactNode;
|
|
20
20
|
/** The accessible label for the navigation section. */
|
|
21
21
|
navigationLabel?: string;
|
|
22
22
|
/** Whether the menu button is visible on wide screens. */
|
|
23
23
|
noMenuButtonOnWideWindow?: boolean;
|
|
24
24
|
} & HTMLAttributes<HTMLElement>;
|
|
25
|
-
export declare const
|
|
25
|
+
export declare const PageHeader: import("react").ForwardRefExoticComponent<{
|
|
26
26
|
/** The name of the application. */
|
|
27
27
|
brandName?: string;
|
|
28
28
|
/** The name of the brand for which to display the logo. */
|
|
@@ -33,7 +33,7 @@ export declare const Header: import("react").ForwardRefExoticComponent<{
|
|
|
33
33
|
logoLinkTitle?: string;
|
|
34
34
|
/** The text for the menu button. */
|
|
35
35
|
menuButtonText?: string;
|
|
36
|
-
/** A slot for the menu items. Use
|
|
36
|
+
/** A slot for the menu items. Use PageHeader.MenuLink here. */
|
|
37
37
|
menuItems?: ReactNode;
|
|
38
38
|
/** The accessible label for the navigation section. */
|
|
39
39
|
navigationLabel?: string;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @license EUPL-1.2+
|
|
4
|
+
* Copyright Gemeente Amsterdam
|
|
5
|
+
*/
|
|
6
|
+
import clsx from 'clsx';
|
|
7
|
+
import { forwardRef, useEffect, useState } from 'react';
|
|
8
|
+
import { Icon } from '../Icon';
|
|
9
|
+
import { Logo } from '../Logo';
|
|
10
|
+
import { PageHeaderGridCellNarrowWindowOnly } from './PageHeaderGridCellNarrowWindowOnly';
|
|
11
|
+
import { PageHeaderMenuIcon } from './PageHeaderMenuIcon';
|
|
12
|
+
import { PageHeaderMenuLink } from './PageHeaderMenuLink';
|
|
13
|
+
import useIsAfterBreakpoint from '../common/useIsAfterBreakpoint';
|
|
14
|
+
const LogoLinkContent = ({ brandName, logoBrand }) => (_jsxs(_Fragment, { children: [_jsx("span", { className: clsx(logoBrand === 'amsterdam' && Boolean(brandName) && 'ams-page-header__logo-container'), children: _jsx(Logo, { brand: logoBrand }) }), brandName && (_jsx("span", { "aria-hidden": "true", className: "ams-page-header__brand-name", children: brandName }))] }));
|
|
15
|
+
const PageHeaderRoot = forwardRef(({ brandName, children, className, logoBrand = 'amsterdam', logoLink = '/', logoLinkTitle = 'Ga naar de homepage', menuButtonText = 'Menu', menuItems, navigationLabel = 'Hoofdnavigatie', noMenuButtonOnWideWindow, ...restProps }, ref) => {
|
|
16
|
+
const [open, setOpen] = useState(false);
|
|
17
|
+
const hasMegaMenu = Boolean(children);
|
|
18
|
+
const isWideWindow = hasMegaMenu && useIsAfterBreakpoint('wide');
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
// Close the menu when the menu button disappears
|
|
21
|
+
if (noMenuButtonOnWideWindow && isWideWindow) {
|
|
22
|
+
setOpen(false);
|
|
23
|
+
}
|
|
24
|
+
}, [isWideWindow]);
|
|
25
|
+
return (_jsxs("header", { ...restProps, className: clsx('ams-page-header', className), ref: ref, children: [_jsxs("a", { className: "ams-page-header__logo-link", href: logoLink, children: [_jsx("span", { className: "ams-visually-hidden", children: logoLinkTitle }), _jsx(LogoLinkContent, { brandName: brandName, logoBrand: logoBrand })] }), (hasMegaMenu || menuItems) && (_jsxs("nav", { "aria-labelledby": "primary-navigation", className: "ams-page-header__navigation", children: [_jsx("h2", { className: "ams-visually-hidden", id: "primary-navigation", children: navigationLabel }), _jsx("div", { className: "ams-page-header__logo-link ams-page-header__logo-link--hidden", children: _jsx(LogoLinkContent, { brandName: brandName, logoBrand: logoBrand }) }), _jsxs("ul", { className: "ams-page-header__menu", children: [menuItems, hasMegaMenu && (_jsx("li", { className: clsx(noMenuButtonOnWideWindow && 'ams-page-header__mega-menu-button-item--hide-on-wide-window'), children: _jsxs("button", { "aria-controls": "ams-page-header-mega-menu", "aria-expanded": open, className: "ams-page-header__mega-menu-button", onClick: () => setOpen(!open), type: "button", children: [_jsx("span", { className: "ams-page-header__mega-menu-button-label", children: menuButtonText }), _jsx("span", { "aria-hidden": "true", className: "ams-page-header__mega-menu-button-hidden-label", children: menuButtonText }), _jsx(Icon, { svg: _jsx(PageHeaderMenuIcon, { className: clsx('ams-page-header__menu-icon', open && 'ams-page-header__menu-icon--open') }) })] }) }))] }), hasMegaMenu && (_jsx("div", { className: clsx('ams-page-header__mega-menu', !open && 'ams-page-header__mega-menu--closed'), id: "ams-page-header-mega-menu", children: children }))] }))] }));
|
|
26
|
+
});
|
|
27
|
+
PageHeaderRoot.displayName = 'PageHeader';
|
|
28
|
+
export const PageHeader = Object.assign(PageHeaderRoot, {
|
|
29
|
+
GridCellNarrowWindowOnly: PageHeaderGridCellNarrowWindowOnly,
|
|
30
|
+
MenuLink: PageHeaderMenuLink,
|
|
31
|
+
});
|