diff --git a/src/examples/button/ButtonExamples.tsx b/src/examples/button/ButtonExamples.tsx
index 484468bc7..7b94722e0 100644
--- a/src/examples/button/ButtonExamples.tsx
+++ b/src/examples/button/ButtonExamples.tsx
@@ -1,6 +1,7 @@
import { AskAUserForAnAddress } from "@examples/ask-a-user-for-an-address.tsx";
import { ConfirmADestructiveAction } from "@examples/confirm-a-destructive-action.tsx";
import { DisabledButtonWithARequiredField } from "@examples/disabled-button-with-a-required-field.tsx";
+import { CompactButtonsInATable } from "@examples/compact-buttons-in-a-table.tsx";
import { SandboxHeader } from "@components/sandbox/sandbox-header/sandboxHeader.tsx";
export const ButtonExamples = () => {
@@ -20,11 +21,18 @@ export const ButtonExamples = () => {
- {/*Button example */}
+ {/*Button example 3*/}
+
+ {/*Button example 4*/}
+
+
+
>;
};
diff --git a/src/examples/compact-buttons-in-a-table.tsx b/src/examples/compact-buttons-in-a-table.tsx
new file mode 100644
index 000000000..606f73411
--- /dev/null
+++ b/src/examples/compact-buttons-in-a-table.tsx
@@ -0,0 +1,466 @@
+import { Sandbox } from "@components/sandbox";
+import { CodeSnippet } from "@components/code-snippet/CodeSnippet.tsx";
+import {
+ GoabButton,
+ GoabButtonGroup,
+ GoabPagination,
+ GoabTable
+} from "@abgov/react-components";
+import { useContext, useEffect, useState } from "react";
+import { LanguageVersionContext } from "@contexts/LanguageVersionContext.tsx";
+import { faker } from "@faker-js/faker";
+
+interface User {
+ id: string;
+ firstName: string;
+ lastName: string;
+}
+export const CompactButtonsInATable = () => {
+ const { version } = useContext(LanguageVersionContext);
+ const [users, setUsers] = useState([]);
+ const [pageUsers, setPageUsers] = useState([]);
+ const [page, setPage] = useState(1);
+ const [perPage] = useState(10);
+ const noop = () => {};
+
+ useEffect(() => {
+ const _users = [];
+ for (let i = 1; i <= 100; i++) {
+ _users.push({
+ id: faker.string.uuid(),
+ firstName: faker.person.firstName(),
+ lastName: faker.person.lastName()
+ });
+ }
+ setUsers(_users);
+ setPageUsers(_users.slice(0, perPage));
+ }, [perPage]);
+
+ function changePage(newPage: number) {
+ const offset = (newPage - 1) * perPage;
+ const _users = users.slice(offset, offset + perPage);
+ setPage(newPage);
+ setPageUsers(_users);
+ }
+
+ return (
+ <>
+
+
+ {/*============= React code ==============*/}
+ {version === "old" && (
+ ([]);
+ const [pageUsers, setPageUsers] = useState([]);
+ const [page, setPage] = useState(1);
+ const [perPage] = useState(10);
+
+ useEffect(() => {
+ const _users = [];
+ for (let i = 1; i <= 100; i++) {
+ _users.push({
+ id: faker.datatype.uuid(),
+ firstName: faker.name.firstName(),
+ lastName: faker.name.lastName()
+ });
+ }
+ setUsers(_users);
+ setPageUsers(_users.slice(0, perPage));
+ }, [perPage]);
+
+ function changePage(newPage: number) {
+ const offset = (newPage - 1) * 10;
+ const _users = users.slice(offset, offset + perPage);
+ setPage(newPage);
+ setPageUsers(_users);
+ }
+ `}
+ />
+ )}
+
+ {version === "new" && (
+ ([]);
+ const [pageUsers, setPageUsers] = useState([]);
+ const [page, setPage] = useState(1);
+ const [perPage] = useState(10);
+
+ useEffect(() => {
+ const _users = [];
+ for (let i = 1; i <= 100; i++) {
+ _users.push({
+ id: faker.string.uuid(),
+ firstName: faker.person.firstName(),
+ lastName: faker.person.lastName()
+ });
+ }
+ setUsers(_users);
+ setPageUsers(_users.slice(0, perPage));
+ }, [perPage]);
+
+ function changePage(newPage: number) {
+ const offset = (newPage - 1) * 10;
+ const _users = users.slice(offset, offset + perPage);
+ setPage(newPage);
+ setPageUsers(_users);
+ }
+
+ `}
+ />
+ )}
+
+ {version === "old" && (
+
+
+
+ | First name |
+ Last name |
+ Number |
+ |
+
+
+
+ {pageUsers.map(u => (
+
+ | {u.firstName} |
+ {u.lastName} |
+ 12345667 |
+
+
+
+ View
+
+
+ |
+
+ ))}
+
+
+
+ changePage(event.page)}
+ />
+ `}
+ />
+ )}
+
+ {version === "new" && (
+
+
+
+ | First name |
+ Last name |
+ Number |
+ |
+
+
+
+ {pageUsers.map(u => (
+
+ | {u.firstName} |
+ {u.lastName} |
+ 12345667 |
+
+
+
+ View
+
+
+ |
+
+ ))}
+
+
+
+ changePage(event.page)}
+ />
+ `}
+ />
+ )}
+
+ {/*================ Angular code ==================*/}
+ {version === "old" && (
+
+ )}
+
+ {version === "new" && (
+
+ )}
+
+ {version === "old" && (
+
+
+
+ | First name |
+ Last name |
+
+ |
+
+
+
+
+ | {{ user.firstName }} |
+ {{ user.lastName }} |
+ 12345667 |
+
+
+
+ View
+
+
+ |
+
+
+
+
+
+ `}
+ />
+ )}
+
+ {version === "new" && (
+
+
+
+ | First name |
+ Last name |
+
+ |
+
+
+
+
+ | {{ user.firstName }} |
+ {{ user.lastName }} |
+ 12345667 |
+
+
+
+ View
+
+
+ |
+
+
+
+
+
+ `}
+ />
+ )}
+
+
+
+
+ | First name |
+ Last name |
+ Number |
+ |
+
+
+
+ {pageUsers.map(u => (
+
+ | {u.firstName} |
+ {u.lastName} |
+ 12345667 |
+
+
+
+ View
+
+
+ |
+
+ ))}
+
+
+
+ changePage(event.page)}
+ />
+
+ >
+ );
+}
+
+export default CompactButtonsInATable;
\ No newline at end of file
diff --git a/src/routes/components/Button.tsx b/src/routes/components/Button.tsx
index 2ab63d3d7..df56ee085 100644
--- a/src/routes/components/Button.tsx
+++ b/src/routes/components/Button.tsx
@@ -248,7 +248,7 @@ export default function ButtonPage() {
heading={
<>
Examples
-
+
>
}
>