From c20f086b3ed6badb5675993c02079008d7031fad Mon Sep 17 00:00:00 2001 From: Jialecl Date: Mon, 21 Apr 2025 13:08:29 +0200 Subject: [PATCH 01/15] Datagrid component redesign --- packages/lib/src/data-grid/DataGrid.tsx | 142 +++++++++++------------- 1 file changed, 64 insertions(+), 78 deletions(-) diff --git a/packages/lib/src/data-grid/DataGrid.tsx b/packages/lib/src/data-grid/DataGrid.tsx index 83ee3d9cc..3e589d385 100644 --- a/packages/lib/src/data-grid/DataGrid.tsx +++ b/packages/lib/src/data-grid/DataGrid.tsx @@ -22,37 +22,9 @@ import { import DxcPaginator from "../paginator/Paginator"; import { DxcActionsCell } from "../table/Table"; import HalstackContext from "../HalstackContext"; +import { scrollbarStyles } from "../styles/scroll"; -const ActionContainer = styled.div` - display: flex; - height: 100%; - align-items: center; - justify-content: center; - font-size: 14px; - width: 100%; -`; - -const HierarchyContainer = styled.div<{ - level: number; -}>` - padding-left: ${(props) => `calc(${props.theme.dataPaddingLeft} * ${props.level})`}; - button { - display: grid; - grid-template-columns: auto 1fr; - align-items: center; - gap: 0.5rem; - padding: 0px; - border: 0px; - width: 100%; - height: ${(props) => props.theme.dataRowHeight}px; - background: transparent; - text-align: left; - font-size: ${(props) => props.theme.dataFontSize}; - font-family: inherit; - color: inherit; - cursor: pointer; - } -`; +const root = document.documentElement; const DataGridContainer = styled.div<{ paginatorRendered: boolean; @@ -60,64 +32,46 @@ const DataGridContainer = styled.div<{ width: 100%; height: ${(props) => (props.paginatorRendered ? `calc(100% - 50px)` : `100%`)}; .rdg { - border-radius: 4px; + border-radius: var(--border-radius-s); height: 100%; border: 0px; - &::-webkit-scrollbar { - width: 8px; - height: 8px; - } - &::-webkit-scrollbar-thumb { - background-color: ${(props) => props.theme.scrollBarThumbColor}; - border-radius: 6px; - } - &::-webkit-scrollbar-track { - background-color: ${(props) => props.theme.scrollBarTrackColor}; - border-radius: 6px; - } + ${scrollbarStyles} } - .rdg-cell:has(> #action) { + .rdg-cell:has(> #small_action) { padding: 0px; } .rdg-cell { display: grid; align-items: center; width: 100%; - padding: 0px ${(props) => props.theme.dataPaddingRight} 0 ${(props) => props.theme.dataPaddingLeft}; - font-family: ${(props) => props.theme.dataFontFamily}; - font-size: ${(props) => props.theme.dataFontSize}; - font-style: ${(props) => props.theme.dataFontStyle}; - font-weight: ${(props) => props.theme.dataFontWeight}; - color: ${(props) => props.theme.dataFontColor}; - text-transform: ${(props) => props.theme.dataFontTextTransform}; - line-height: ${(props) => props.theme.dataTextLineHeight}; - border-bottom: ${(props) => - `${props.theme.rowSeparatorThickness} ${props.theme.rowSeparatorStyle} ${props.theme.rowSeparatorColor}`}; - border-right: ${(props) => - `${props.theme.rowSeparatorThickness} ${props.theme.rowSeparatorStyle} ${props.theme.rowSeparatorColor}`}; - background-color: ${(props) => props.theme.dataBackgroundColor}; - outline-color: ${(props) => props.theme.focusColor} !important; + padding: 0px var(--spacing-padding-xs); + font-family: var(--typography-font-family); + font-size: var(--typography-label-m); + font-weight: var(--typography-label-regular); + color: var(--color-fg-neutral-dark); + border-bottom: var(--border-width-s) var(--border-style-default) var(--border-color-neutral-lightest); + border-right: var(--border-width-s) var(--border-style-default) var(--border-color-neutral-lightest); + background-color: var(--color-bg-neutral-lightest); + + &[aria-selected="true"] { + outline: var(--border-width-m) var(--border-style-default) var(--border-color-secondary-medium); + } .rdg-text-editor:focus { border-color: transparent; - background-color: transparent; - color: ${(props) => props.theme.dataFontColor}; + background-color: var(--color-bg-neutral-lightest); + color: var(--color-fg-neutral-dark); } } .rdg-header-row { - border-top-left-radius: ${(props) => props.theme.headerBorderRadius}; - border-top-right-radius: ${(props) => props.theme.headerBorderRadius}; + border-top-left-radius: var(--border-radius-s); + border-top-right-radius: var(--border-radius-s); .rdg-cell { - font-family: ${(props) => props.theme.headerFontFamily}; - font-size: ${(props) => props.theme.headerFontSize}; - font-style: ${(props) => props.theme.headerFontStyle}; - font-weight: ${(props) => props.theme.headerFontWeight}; - color: ${(props) => props.theme.headerFontColor}; - text-transform: ${(props) => props.theme.headerFontTextTransform}; - padding: 0px ${(props) => props.theme.headerPaddingRight} 0 ${(props) => props.theme.headerPaddingLeft}; - line-height: ${(props) => props.theme.headerTextLineHeight}; - background-color: ${(props) => props.theme.headerBackgroundColor}; + font-weight: var(--font-weight-bold); + color: var(--color-fg-neutral-bright); + padding: 0px var(--spacing-padding-xs); + background-color: var(--color-bg-primary-strong); .sortIconContainer { - margin-left: 0.5rem; + margin-left: var(--spacing-gap-s); display: flex; height: 100%; align-items: center; @@ -130,10 +84,10 @@ const DataGridContainer = styled.div<{ } } .rdg-summary-row { - background-color: #fafafa; + background-color: var(--color-bg-neutral-lighter); .rdg-cell { border: 0px; - font-weight: 600; + font-weight: var(--font-weight-semibold); } } .ellipsis-cell { @@ -168,6 +122,38 @@ const DataGridContainer = styled.div<{ } `; +const HierarchyContainer = styled.div<{ + level: number; +}>` + padding-left: ${(props) => `calc(var(--spacing-gap-s) * ${props.level})`}; + button { + display: grid; + grid-template-columns: auto 1fr; + align-items: center; + gap: var(--spacing-gap-s); + padding: 0px; + border: 0px; + width: 100%; + height: var(--height-l); + background-color: var(--color-bg-neutral-lightest); + font-family: var(--typography-font-family); + font-size: var(--typography-label-m); + font-weight: var(--typography-label-regular); + color: var(--color-fg-neutral-dark); + text-align: left; + cursor: pointer; + } +`; + +const ActionContainer = styled.div` + display: flex; + height: 100%; + align-items: center; + justify-content: center; + font-size: var(--height-s); + width: 100%; +`; + const DxcDataGrid = ({ columns, rows, @@ -232,7 +218,7 @@ const DxcDataGrid = ({ } // if row has expandable content return ( - + {row.expandedContent && renderExpandableTrigger(row, rowsToRender, uniqueRowId, setRowsToRender)} ); @@ -275,7 +261,7 @@ const DxcDataGrid = ({ renderCell({ row }) { if (!row.isExpandedChildContent) { return ( - + {renderCheckbox(rows, row, uniqueRowId, selectedRows, onSelectRows)} ); @@ -283,7 +269,7 @@ const DxcDataGrid = ({ return null; }, renderHeaderCell: () => ( - + {renderHeaderCheckbox(rows, uniqueRowId, selectedRows, colorsTheme, onSelectRows)} ), @@ -419,7 +405,7 @@ const DxcDataGrid = ({ rowHeight={(row) => row.isExpandedChildContent && typeof row.expandedContentHeight === "number" && row.expandedContentHeight > 0 ? row.expandedContentHeight - : (colorsTheme.dataGrid?.dataRowHeight ?? 0) + : (parseFloat(getComputedStyle(root).getPropertyValue("--height-l")) ?? 0) } selectedRows={selectedRows} bottomSummaryRows={summaryRow ? [summaryRow] : undefined} From 0e3f47e857447aeebd3aa47047c211e776ce0b5a Mon Sep 17 00:00:00 2001 From: Jialecl Date: Mon, 21 Apr 2025 16:14:43 +0200 Subject: [PATCH 02/15] moved document to the component --- packages/lib/src/data-grid/DataGrid.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/lib/src/data-grid/DataGrid.tsx b/packages/lib/src/data-grid/DataGrid.tsx index 3e589d385..6dfecc121 100644 --- a/packages/lib/src/data-grid/DataGrid.tsx +++ b/packages/lib/src/data-grid/DataGrid.tsx @@ -24,8 +24,6 @@ import { DxcActionsCell } from "../table/Table"; import HalstackContext from "../HalstackContext"; import { scrollbarStyles } from "../styles/scroll"; -const root = document.documentElement; - const DataGridContainer = styled.div<{ paginatorRendered: boolean; }>` @@ -177,6 +175,7 @@ const DxcDataGrid = ({ const [rowsToRender, setRowsToRender] = useState(rows); const colorsTheme = useContext(HalstackContext); const [page, changePage] = useState(defaultPage); + const root = document.documentElement; const goToPage = (newPage: number) => { if (onPageChange) { From f7822b9bb6343b0ccd35cf0c8961d5b17fc4b0f7 Mon Sep 17 00:00:00 2001 From: Jialecl Date: Tue, 22 Apr 2025 09:14:40 +0200 Subject: [PATCH 03/15] datagrid test fixed due to document --- packages/lib/src/data-grid/DataGrid.test.tsx | 15 +++++++++++---- packages/lib/src/data-grid/DataGrid.tsx | 9 +++++++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/lib/src/data-grid/DataGrid.test.tsx b/packages/lib/src/data-grid/DataGrid.test.tsx index 61a0a8376..4e7f0c89e 100644 --- a/packages/lib/src/data-grid/DataGrid.test.tsx +++ b/packages/lib/src/data-grid/DataGrid.test.tsx @@ -1,6 +1,15 @@ import { render } from "@testing-library/react"; import DxcDataGrid from "./DataGrid"; -import { GridColumn, HierarchyGridRow } from "./types"; +import { GridColumn } from "./types"; + +Object.defineProperty(window, "getComputedStyle", { + value: () => ({ + getPropertyValue: (prop: string) => { + if (prop === "--height-l") return "36px"; + return ""; + }, + }), +}); const columns: GridColumn[] = [ { @@ -56,9 +65,7 @@ describe("Data grid component tests", () => { window.HTMLElement.prototype.scrollIntoView = jest.fn; }); test("Renders with correct content", async () => { - const { getByText, getAllByRole } = await render( - - ); + const { getByText, getAllByRole } = await render(); expect(getByText("46")).toBeTruthy(); const rows = getAllByRole("row"); expect(rows.length).toBe(5); diff --git a/packages/lib/src/data-grid/DataGrid.tsx b/packages/lib/src/data-grid/DataGrid.tsx index 6dfecc121..8c5088be1 100644 --- a/packages/lib/src/data-grid/DataGrid.tsx +++ b/packages/lib/src/data-grid/DataGrid.tsx @@ -175,7 +175,7 @@ const DxcDataGrid = ({ const [rowsToRender, setRowsToRender] = useState(rows); const colorsTheme = useContext(HalstackContext); const [page, changePage] = useState(defaultPage); - const root = document.documentElement; + const [colHeight, setColHeight] = useState(36); const goToPage = (newPage: number) => { if (onPageChange) { @@ -282,6 +282,11 @@ const DxcDataGrid = ({ const [columnsOrder, setColumnsOrder] = useState((): number[] => columnsToRender.map((_, index) => index)); const [sortColumns, setSortColumns] = useState([]); + useEffect(() => { + const rootStyles = getComputedStyle(document.documentElement); + if (rootStyles) setColHeight(parseFloat(rootStyles.getPropertyValue("--height-l"))); + }, []); + useEffect(() => { setColumnsOrder(Array.from({ length: columnsToRender.length }, (_, index) => index)); }, [columnsToRender.length]); @@ -404,7 +409,7 @@ const DxcDataGrid = ({ rowHeight={(row) => row.isExpandedChildContent && typeof row.expandedContentHeight === "number" && row.expandedContentHeight > 0 ? row.expandedContentHeight - : (parseFloat(getComputedStyle(root).getPropertyValue("--height-l")) ?? 0) + : (colHeight ?? 0) } selectedRows={selectedRows} bottomSummaryRows={summaryRow ? [summaryRow] : undefined} From dfb8a2b8e25b780a9847570383fa9509bdb7389d Mon Sep 17 00:00:00 2001 From: Jialecl Date: Tue, 22 Apr 2025 14:36:12 +0200 Subject: [PATCH 04/15] ThemeProvider removed --- packages/lib/src/data-grid/DataGrid.tsx | 71 ++++++++++++------------ packages/lib/src/data-grid/utils.tsx | 73 ++++++++----------------- 2 files changed, 58 insertions(+), 86 deletions(-) diff --git a/packages/lib/src/data-grid/DataGrid.tsx b/packages/lib/src/data-grid/DataGrid.tsx index 8c5088be1..8229ee6b1 100644 --- a/packages/lib/src/data-grid/DataGrid.tsx +++ b/packages/lib/src/data-grid/DataGrid.tsx @@ -1,6 +1,6 @@ import { useContext, useEffect, useMemo, useState } from "react"; import DataGrid, { SortColumn } from "react-data-grid"; -import styled, { ThemeProvider } from "styled-components"; +import styled from "styled-components"; import DataGridPropsType, { HierarchyGridRow, GridRow, ExpandableGridRow } from "./types"; import "react-data-grid/lib/styles.css"; import { @@ -173,7 +173,6 @@ const DxcDataGrid = ({ defaultPage = 1, }: DataGridPropsType): JSX.Element => { const [rowsToRender, setRowsToRender] = useState(rows); - const colorsTheme = useContext(HalstackContext); const [page, changePage] = useState(defaultPage); const [colHeight, setColHeight] = useState(36); @@ -269,7 +268,7 @@ const DxcDataGrid = ({ }, renderHeaderCell: () => ( - {renderHeaderCheckbox(rows, uniqueRowId, selectedRows, colorsTheme, onSelectRows)} + {renderHeaderCheckbox(rows, uniqueRowId, selectedRows, onSelectRows)} ), }, @@ -395,41 +394,39 @@ const DxcDataGrid = ({ }, [sortedRows, minItemsPerPageIndex, maxItemsPerPageIndex]); return ( - - itemsPerPage}> - (uniqueRowId ? rowKeyGetter(row, uniqueRowId) : "")} - rowHeight={(row) => - row.isExpandedChildContent && typeof row.expandedContentHeight === "number" && row.expandedContentHeight > 0 - ? row.expandedContentHeight - : (colHeight ?? 0) - } - selectedRows={selectedRows} - bottomSummaryRows={summaryRow ? [summaryRow] : undefined} - headerRowHeight={colorsTheme.dataGrid.headerRowHeight} - summaryRowHeight={colorsTheme.dataGrid.summaryRowHeight} - className="fill-grid" + itemsPerPage}> + (uniqueRowId ? rowKeyGetter(row, uniqueRowId) : "")} + rowHeight={(row) => + row.isExpandedChildContent && typeof row.expandedContentHeight === "number" && row.expandedContentHeight > 0 + ? row.expandedContentHeight + : (colHeight ?? 0) + } + selectedRows={selectedRows} + bottomSummaryRows={summaryRow ? [summaryRow] : undefined} + headerRowHeight={colHeight} + summaryRowHeight={colHeight} + className="fill-grid" + /> + {showPaginator && (totalItems ?? rows.length) > itemsPerPage && ( + - {showPaginator && (totalItems ?? rows.length) > itemsPerPage && ( - - )} - - + )} + ); }; diff --git a/packages/lib/src/data-grid/utils.tsx b/packages/lib/src/data-grid/utils.tsx index f10bde38d..0aa8f13a2 100644 --- a/packages/lib/src/data-grid/utils.tsx +++ b/packages/lib/src/data-grid/utils.tsx @@ -5,31 +5,10 @@ import { ReactNode, SetStateAction } from "react"; import { Column, RenderSortStatusProps, SortColumn, textEditor } from "react-data-grid"; import DxcActionIcon from "../action-icon/ActionIcon"; import DxcCheckbox from "../checkbox/Checkbox"; -import { AdvancedTheme } from "../common/variables"; import { DeepPartial, HalstackProvider } from "../HalstackContext"; import DxcIcon from "../icon/Icon"; import { GridColumn, HierarchyGridRow, GridRow, ExpandableGridRow } from "./types"; -/** - * Function to overwrite the checkbox theme based on a passed theme object. - * @param {DeepPartial} theme - Theme object with dataGrid properties. - * @returns {object} New theme object with customized checkbox styles. - */ -const overwriteTheme = (theme: DeepPartial) => { - const newTheme = { - checkbox: { - backgroundColorChecked: theme?.dataGrid?.headerCheckboxBackgroundColorChecked, - hoverBackgroundColorChecked: theme?.dataGrid?.headerCheckboxHoverBackgroundColorChecked, - borderColor: theme?.dataGrid?.headerCheckboxBorderColor, - hoverBorderColor: theme?.dataGrid?.headerCheckboxHoverBorderColor, - checkColor: theme?.dataGrid?.headerCheckboxCheckColor, - focusColor: theme?.dataGrid?.focusColor, - }, - }; - - return newTheme; -}; - /** * Converts grid columns into react-data-grid column format. * @param {GridColumn} gridColumn - Object representing the properties of a grid column. @@ -234,7 +213,6 @@ export const renderCheckbox = ( * @param {GridRow[] | HierarchyGridRow[] | ExpandableGridRow[]} rows - Array of rows that are currently displayed. * @param {string} uniqueRowId - The key used to uniquely identify each row. * @param {Set} selectedRows - Set containing the IDs of selected rows. - * @param {DeepPartial} colorsTheme - Custom theme colors for the checkbox. * @param {Function} onSelectRows - Callback function that triggers when rows are selected/deselected. * @returns {JSX.Element} Checkbox for the header checkbox. */ @@ -242,36 +220,33 @@ export const renderHeaderCheckbox = ( rows: GridRow[] | HierarchyGridRow[] | ExpandableGridRow[], uniqueRowId: string, selectedRows: Set, - colorsTheme: DeepPartial, onSelectRows: (_selected: Set) => void ) => ( - - 0 && !rows.some((row) => !selectedRows.has(rowKeyGetter(row, uniqueRowId)))} - onChange={(checked) => { - const updatedSelection = new Set(selectedRows); - - if (checked) { - rows.forEach((row) => { - updatedSelection.add(rowKeyGetter(row, uniqueRowId)); - if (row.childRows && Array.isArray(row.childRows)) { - getChildrenSelection(row.childRows, uniqueRowId, updatedSelection, checked); - } - }); - } else { - rows.forEach((row) => { - updatedSelection.delete(rowKeyGetter(row, uniqueRowId)); - if (row.childRows && Array.isArray(row.childRows)) { - getChildrenSelection(row.childRows, uniqueRowId, updatedSelection, checked); - } - }); - } + 0 && !rows.some((row) => !selectedRows.has(rowKeyGetter(row, uniqueRowId)))} + onChange={(checked) => { + const updatedSelection = new Set(selectedRows); - onSelectRows(updatedSelection); - }} - disabled={rows.length === 0 || !rows.some((row) => uniqueRowId in row)} - /> - + if (checked) { + rows.forEach((row) => { + updatedSelection.add(rowKeyGetter(row, uniqueRowId)); + if (row.childRows && Array.isArray(row.childRows)) { + getChildrenSelection(row.childRows, uniqueRowId, updatedSelection, checked); + } + }); + } else { + rows.forEach((row) => { + updatedSelection.delete(rowKeyGetter(row, uniqueRowId)); + if (row.childRows && Array.isArray(row.childRows)) { + getChildrenSelection(row.childRows, uniqueRowId, updatedSelection, checked); + } + }); + } + + onSelectRows(updatedSelection); + }} + disabled={rows.length === 0 || !rows.some((row) => uniqueRowId in row)} + /> ); /** From 5f75deb8680268b7be9d23768486566eab5b9d5a Mon Sep 17 00:00:00 2001 From: Jialecl Date: Wed, 30 Apr 2025 08:32:06 +0200 Subject: [PATCH 05/15] Datagrid documentation --- .../pages/components/data-grid/code.tsx | 18 + .../pages/components/data-grid/index.tsx | 10 +- .../components/data-grid/specifications.tsx | 21 - .../pages/components/data-grid/usage.tsx | 21 - .../data-grid/DataGridPageLayout.tsx | 17 +- .../DataGridOverviewPage.tsx} | 178 +++--- .../overview/images/datagrid-anatomy.png | Bin 0 -> 186148 bytes .../data-grid/specs/DataGridSpecsPage.tsx | 576 ------------------ .../data-grid/usage/examples/draggable.ts | 58 -- .../usage/examples/expandedContent.ts | 76 --- .../data-grid/usage/examples/filterable.ts | 92 --- .../data-grid/usage/examples/selectable.ts | 57 -- 12 files changed, 127 insertions(+), 997 deletions(-) create mode 100644 apps/website/pages/components/data-grid/code.tsx delete mode 100644 apps/website/pages/components/data-grid/specifications.tsx delete mode 100644 apps/website/pages/components/data-grid/usage.tsx rename apps/website/screens/components/data-grid/{usage/DataGridUsagePage.tsx => overview/DataGridOverviewPage.tsx} (50%) create mode 100644 apps/website/screens/components/data-grid/overview/images/datagrid-anatomy.png delete mode 100644 apps/website/screens/components/data-grid/specs/DataGridSpecsPage.tsx delete mode 100644 apps/website/screens/components/data-grid/usage/examples/draggable.ts delete mode 100644 apps/website/screens/components/data-grid/usage/examples/expandedContent.ts delete mode 100644 apps/website/screens/components/data-grid/usage/examples/filterable.ts delete mode 100644 apps/website/screens/components/data-grid/usage/examples/selectable.ts diff --git a/apps/website/pages/components/data-grid/code.tsx b/apps/website/pages/components/data-grid/code.tsx new file mode 100644 index 000000000..5ccf26d9c --- /dev/null +++ b/apps/website/pages/components/data-grid/code.tsx @@ -0,0 +1,18 @@ +import Head from "next/head"; +import type { ReactElement } from "react"; +import DataGridCodePage from "screens/components/data-grid/code/DataGridCodePage"; +import DataGridPageLayout from "screens/components/data-grid/DataGridPageLayout"; + +const Code = () => { + return ( + <> + + Data Grid — Halstack Design System + + + + ); +}; + +Code.getLayout = (page: ReactElement) => {page}; +export default Code; diff --git a/apps/website/pages/components/data-grid/index.tsx b/apps/website/pages/components/data-grid/index.tsx index f6f6f2a17..ec2f17f2b 100644 --- a/apps/website/pages/components/data-grid/index.tsx +++ b/apps/website/pages/components/data-grid/index.tsx @@ -1,8 +1,7 @@ import Head from "next/head"; import type { ReactElement } from "react"; -import DataGridCodePage from "screens/components/data-grid/code/DataGridCodePage"; import DataGridPageLayout from "screens/components/data-grid/DataGridPageLayout"; - +import DataGridOverviewPage from "screens/components/data-grid/overview/DataGridOverviewPage"; const Usage = () => { return ( @@ -10,13 +9,10 @@ const Usage = () => { Data Grid — Halstack Design System - + ); }; -Usage.getLayout = function getLayout(page: ReactElement) { - return {page}; -}; - +Usage.getLayout = (page: ReactElement) => {page}; export default Usage; diff --git a/apps/website/pages/components/data-grid/specifications.tsx b/apps/website/pages/components/data-grid/specifications.tsx deleted file mode 100644 index 254c432ff..000000000 --- a/apps/website/pages/components/data-grid/specifications.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import Head from "next/head"; -import type { ReactElement } from "react"; -import DataGridSpecsPage from "screens/components/data-grid/specs/DataGridSpecsPage"; -import DataGridPageLayout from "screens/components/data-grid/DataGridPageLayout"; - -const Specifications = () => { - return ( - <> - - Data Grid Specs — Halstack Design System - - - - ); -}; - -Specifications.getLayout = function getLayout(page: ReactElement) { - return {page}; -}; - -export default Specifications; diff --git a/apps/website/pages/components/data-grid/usage.tsx b/apps/website/pages/components/data-grid/usage.tsx deleted file mode 100644 index bf0271cda..000000000 --- a/apps/website/pages/components/data-grid/usage.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import Head from "next/head"; -import type { ReactElement } from "react"; -import DataGridUsagePage from "screens/components/data-grid/usage/DataGridUsagePage"; -import DataGridPageLayout from "screens/components/data-grid/DataGridPageLayout"; - -const Usage = () => { - return ( - <> - - Data Grid Usage — Halstack Design System - - - - ); -}; - -Usage.getLayout = function getLayout(page: ReactElement) { - return {page}; -}; - -export default Usage; diff --git a/apps/website/screens/components/data-grid/DataGridPageLayout.tsx b/apps/website/screens/components/data-grid/DataGridPageLayout.tsx index 119c92025..bdc7394ea 100644 --- a/apps/website/screens/components/data-grid/DataGridPageLayout.tsx +++ b/apps/website/screens/components/data-grid/DataGridPageLayout.tsx @@ -6,15 +6,14 @@ import { ReactNode } from "react"; const DataGridPageHeading = ({ children }: { children: ReactNode }) => { const tabs = [ - { label: "Code", path: "/components/data-grid" }, - { label: "Usage", path: "/components/data-grid/usage" }, - { label: "Specifications", path: "/components/data-grid/specifications" }, + { label: "Overiew", path: "/components/data-grid" }, + { label: "Code", path: "/components/data-grid/code" }, ]; return ( - + - + { closable={false} /> - A data grid is a component designed to display large volumes in a structured and organized manner. It - structures data into rows and columns, making it easy for users to visualize, analyze, and interact with the - information. The data grid also improves user experience by providing features like sorting, filtering, and - editing. + The datagrid component is used to display and manage large sets of data in a tabular format, allowing users + to sort, filter, and interact with the data efficiently. - + {children} diff --git a/apps/website/screens/components/data-grid/usage/DataGridUsagePage.tsx b/apps/website/screens/components/data-grid/overview/DataGridOverviewPage.tsx similarity index 50% rename from apps/website/screens/components/data-grid/usage/DataGridUsagePage.tsx rename to apps/website/screens/components/data-grid/overview/DataGridOverviewPage.tsx index 448d64134..6e7ba7b40 100644 --- a/apps/website/screens/components/data-grid/usage/DataGridUsagePage.tsx +++ b/apps/website/screens/components/data-grid/overview/DataGridOverviewPage.tsx @@ -1,28 +1,59 @@ -import { DxcBulletedList, DxcFlex, DxcParagraph } from "@dxc-technology/halstack-react"; +import { DxcParagraph, DxcBulletedList, DxcTable, DxcFlex, DxcLink } from "@dxc-technology/halstack-react"; import QuickNavContainer from "@/common/QuickNavContainer"; import QuickNavContainerLayout from "@/common/QuickNavContainerLayout"; import DocFooter from "@/common/DocFooter"; -import Example from "@/common/example/Example"; -import expandedContent from "./examples/expandedContent"; -import selectable from "./examples/selectable"; -import filterable from "./examples/filterable"; -import draggable from "./examples/draggable"; +import Image from "@/common/Image"; +import anatomy from "./images/datagrid-anatomy.png"; const sections = [ { - title: "Overview", + title: "Introduction", content: ( - The Datagrid component offers a robust solution for displaying and managing tabular data. It supports essential - features such as sorting and filtering, allowing users to organize and refine data easily. With multi-selection - capabilities, users can perform bulk actions like deleting or exporting records efficiently. The component also - includes in-line editing for quick data modifications directly within the grid, and expandable rows for - showcasing additional details without cluttering the main view. Additionally, users can reorder columns to - customize their data layout, ensuring an intuitive and flexible user experience tailored to their specific - needs. + The datagrid component offers a robust solution for displaying and managing tabular data. It supports essential + features such as sorting, allowing users to organize and refine data easily. With{" "} + multi-selection capabilities, users can perform bulk actions like deleting or exporting records + efficiently. The component also includes in-line editing for quick data modifications directly + within the grid, and expandable rows for showcasing additional details without cluttering the + main view. Additionally, users can reorder columns to customize their data layout, ensuring an + intuitive and flexible user experience tailored to their specific needs. ), }, + { + title: "Anatomy", + content: ( + <> + Datagrid's anatomy + + + Header row: it's the top section of the datagrid that displays the column titles and can + support actions like sorting or filtering. + + + Cell: basic unit of the datagrid where individual pieces of data are displayed and aligned + with the column. + + + Summary row (Optional): row at the bottom that shows summarized or aggregated data + for one or multiple columns. + + + Selectable row (Optional): a data row that users can click to select, usually for + performing actions like editing or deleting. + + + Expanded row (Optional): a row that, when expanded, reveals additional contextual + information related to that entry. + + + Expandable indicator (Optional): an icon or control that shows users a row can be + expanded to access more detailed content. + + + + ), + }, { title: "Key interactions and features", subSections: [ @@ -31,51 +62,42 @@ const sections = [ content: ( <> - Users can select one or multiple rows for bulk actions. - Row selection can persist across pages when pagination is used in the Datagrid, ensuring users can - perform bulk actions on rows even if they navigate away from the current view. + Users can select one or multiple rows for bulk actions. It's recommended to include + checkboxes for multiple row selection, or else radio buttons for single-row selection. + + + Row selection can persist across pages when pagination is usedin the datagrid, ensuring + users can perform bulk actions on rows even if they navigate away from the current view. Users can set a default selected row on initial load, useful for pre-populating forms or automatically highlighting the most relevant data for their specific use case. - Users can easily undo multiple selections at once using the select/deselect all feature located in the - Datagrid’s header, streamlining bulk actions. + Users can easily undo multiple selections at once using the select/deselect all feature + located in the datagrid's header, streamlining bulk actions. ), - subSections: [ - { - title: "Example", - content: , - }, - ], }, { - title: "Sorting and filtering", + title: "Row selection", content: ( <> - Users can apply sorting to multiple columns simultaneously, enabling more complex data analysis by - arranging data based on different criteria. + Users can apply sorting to multiple columns simultaneously, enabling more complex data + analysis by arranging data based on different criteria. - Filtering in our Datagrid is enabled through integrated Halstack components, such as Dropdowns, and is + Filtering in our datagrid is enabled through integrated Halstack components, such as dropdowns, and is applied at the row level for precise data refinement. ), - subSections: [ - { - title: "Example", - content: , - }, - ], }, { title: "In-line editing", @@ -88,12 +110,16 @@ const sections = [ need to be made directly within the data source for efficiency and real-time updates. - Changes made through in-line editing are immediately reflected in the Datagrid, giving users real-time - feedback on their edits. + Changes made through in-line editing are immediately reflected in the datagrid, giving + users real-time feedback on their edits. + + + Built-in validation ensures that only correct and acceptable values are submitted, reducing errors and + improving data accuracy. - Additionally, when editing permissions are required, the Datagrid can be configured with other Halstack - components, such as the Button, to enable editing only after the button is activated. + Additionally, when editing permissions are required, the datagrid can be configured with other Halstack + components, such as the button, to enable editing only after the button is activated. @@ -105,9 +131,14 @@ const sections = [ <> - The Datagrid component allows users to reveal additional information for specific rows without - cluttering the main view. This optimizes space efficiency and improves user experience by offering - access to in-depth information when needed, all while maintaining a clean and organized grid layout. + The datagrid component allows users to{" "} + reveal additional information for specific rows without cluttering the main view. This + optimizes space efficiency and improves user experience by offering access to in-depth information when + needed, all while maintaining a clean and organized grid layout. + + + When a row is expanded, it displays supplementary details, such as extra data fields, images, or action + buttons, providing context and enhancing data exploration. The expanded area can display various content types, such as additional data fields, images, or action @@ -116,12 +147,6 @@ const sections = [ ), - subSections: [ - { - title: "Example", - content: , - }, - ], }, { title: "Column reordering", @@ -129,11 +154,12 @@ const sections = [ <> - The re-ordering feature of our Datagrid allows users to rearrange columns according to their preferences - by dragging and dropping them, enhancing the personalized data viewing experience. + The re-ordering feature of our datagrid allows users to rearrange columns according to + their preferences by dragging and dropping them, enhancing the personalized data + viewing experinece. - By letting users prioritize the most relevant columns, this feature helps them access and analyze data + y letting users prioritize the most relevant columns, this feature helps them access and analyze data more efficiently. It is also designed to be user-friendly, enabling quick adjustments with minimal effort. @@ -144,12 +170,6 @@ const sections = [ ), - subSections: [ - { - title: "Example", - content: , - }, - ], }, ], }, @@ -159,70 +179,70 @@ const sections = [ <> - Data contextualization: provide context within the grid by labeling columns clearly, + Data contextualization: provide context within the grid by labeling columns clearly, ensuring users understand the significance of the data they are viewing. - Column alignment: although data can be aligned in columns however the user chooses, it must + Column alignment: though data can be aligned in columns however the user chooses, it must be aligned consistently across columns to enhance readability: - Text: aligned to the left for natural reading flow. + Text: aligned to the left for natural reading flow. - Numbers and currencies: align numbers, currencies, and other quantitative data to the - right for clear comparison, especially when dealing with decimals or aligning figures by their numerical - place value. + Numbers and currencies: align numbers, currencies, and other quantitative data to the{" "} + right for clear comparison, especially when dealing with decimals or aligning figures + by their numerical place value. - Dates and times: aligned to the left for readability, as users generally read these + Dates and times: aligned to the left for readability, as users generally read these like text, but consider right-aligning if dates need to be compared sequentially. - Actions: align action buttons or interactive elements (such as "Edit" or "Delete") to - the center or right, depending on layout consistency. Centering actions can make them more accessible - and distinguishable from data fields. + Actions: align action buttons or interactive elements (such as "Edit" or "Delete") to the{" "} + center or right, depending on layout consistency. Centering actions + can make them more accessible and distinguishable from data fields. - Booleans: align checkboxes or toggles to the center to visually separate them from text + Booleans: align checkboxes or toggles to the center to visually separate them from text or data and create a clear, interactive area. - Icons: aligned to the center or next to their corresponding text, with spacing, to + Icons: aligned to the center or next to their corresponding text, with spacing, to maintain clarity and improve the user interface. - Column sizing: make sure that columns are sized appropriately for the type of data they + Column sizing: make sure that columns are sized appropriately for the type of data they display (e.g. dates should not take up too much space, neither do numerical values, which must take only the minimal space it requires for them to be shown without truncation). - Clear default sorting: Set a sensible default sorting order for columns to help users + Clear default sorting: set a sensible default sorting order for columns to help users quickly access the most relevant data when they first interact with the grid. - Clear filters option: when filtering data, include a button to clear all filters at once, + Clear filters option: when filtering data, include a button to clear all filters at once, allowing users to quickly reset their views and return to the unfiltered dataset. - Accessible bulk actions: ensure that bulk actions, such as “Delete” or “Export,” are easily + Accessible bulk actions: ensure that bulk actions, such as "Delete" or "Export", are easily accessible once rows are selected, facilitating efficient data management. Consider also implementing confirmation prompts for bulk actions to prevent accidental data loss and ensure users are intentional with their actions. - Use of expandable rows: use expandable rows to display additional information that isn’t + Use of expandable rows: use expandable rows to display additional information that isn't crucial for immediate viewing, but avoid overusing this feature to prevent increased cognitive load on users. - Limit expandable content: use expandable rows sparingly to avoid overwhelming users, + Limit expandable content: use expandable rows sparingly to avoid overwhelming users, ensuring that only essential supplementary information is included. - Scrolling: the Datagrid supports both horizontal and vertical scrolling to handle extensive + Scrolling: the datagrid supports both horizontal and vertical scrolling to handle extensive data sets, ensuring all rows and columns are accessible without cluttering the UI. While the component supports scrolling, it is designed to prioritize displaying the most essential data upfront, minimizing the need for scrolling to reduce potential user confusion and enhance accessibility. @@ -233,15 +253,15 @@ const sections = [ }, ]; -const DataGridUsagePage = () => { +const DataGridOverviewPage = () => { return ( - + ); }; -export default DataGridUsagePage; +export default DataGridOverviewPage; diff --git a/apps/website/screens/components/data-grid/overview/images/datagrid-anatomy.png b/apps/website/screens/components/data-grid/overview/images/datagrid-anatomy.png new file mode 100644 index 0000000000000000000000000000000000000000..55b7b5a115776056eb3630ec228ecf69b3375b9d GIT binary patch literal 186148 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%0Anu62>_T%cG?ZHHip3!??sPms~G?)0IjYm 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 literal 0 HcmV?d00001 diff --git a/apps/website/screens/components/data-grid/specs/DataGridSpecsPage.tsx b/apps/website/screens/components/data-grid/specs/DataGridSpecsPage.tsx deleted file mode 100644 index 9e85b4dbc..000000000 --- a/apps/website/screens/components/data-grid/specs/DataGridSpecsPage.tsx +++ /dev/null @@ -1,576 +0,0 @@ -import { DxcParagraph, DxcBulletedList, DxcTable, DxcFlex, DxcLink } from "@dxc-technology/halstack-react"; -import Image from "@/common/Image"; -import Link from "next/link"; -import QuickNavContainer from "@/common/QuickNavContainer"; -import QuickNavContainerLayout from "@/common/QuickNavContainerLayout"; -import DocFooter from "@/common/DocFooter"; -import Figure from "@/common/Figure"; -import Code from "@/common/Code"; - -const sections = [ - { - title: "Design tokens", - subSections: [ - { - title: "Color", - content: ( - - - - Component token - Element - Core token - Value - - - - - - rowSeparatorColor - - Separator - - color-grey-300 - - #cccccc - - - - dataBackgroundColor - - Data grid - - color-white - - #ffffff - - - - dataFontColor - - Data grid - - color-black - - #000000 - - - - headerBackgroundColor - - Header - - color-black - - #000000 - - - - headerBackgroundColor - - Header - - color-purple-700 - - #5f249f - - - - headerFontColor - - Header - - color-white - - #ffffff - - - - headerCheckboxBackgroundColorChecked - - Header checkbox - - color-white - - #ffffff - - - - headerCheckboxHoverBackgroundColorChecked - - Header checkbox:hover - - color-grey-200 - - #e6e6e6 - - - - headerCheckboxBorderColor - - Header checkbox - - color-white - - #ffffff - - - - headerCheckboxHoverBorderColor - - Header checkbox:hover - - color-white - - #ffffff - - - - headerCheckboxCheckColor - - Header checkbox - - color-purple-700 - - #5f249f - - - - focusColor - - Data grid - - color-blue-600 - - #0095ff - - - - scrollBarThumbColor - - Scroll bar - - color-grey-700 - - #666666 - - - - scrollBarTrackColor - - Scroll bar - - color-grey-300 - - #cccccc - - - - actionIconColor - - Actions cell - - color-purple-700 - - #5f249f - - - - disabledActionIconColor - - Actions cell - - color-grey-500 - - #999999 - - - - hoverActionIconColor - - Actions cell - - color-purple-700 - - #5f249f - - - - focusActionIconColor - - Actions cell - - color-purple-700 - - #5f249f - - - - activeActionIconColor - - Actions cell - - color-purple-700 - - #5f249f - - - - actionBackgroundColor - - Actions cell - - color-transparent - - transparent - - - - disabledActionBackgroundColor - - Actions cell - - color-transparent - - transparent - - - - hoverActionBackgroundColor - - Actions cell - - color-grey-100 - - #f2f2f2 - - - - focusActionBorderColor - - Actions cell - - color-blue-600 - - #0095ff - - - - activeActionBackgroundColor - - Actions cell - - color-grey-300 - - #cccccc - - - - ), - }, - { - title: "Typography", - content: ( - - - - Component token - Element - Core token - Value - - - - - - dataFontFamily - - Data grid - - font-family-sans - - 'Open Sans', sans-serif - - - - dataFontSize - - Data grid - - font-scale-02 - - 0.875rem / 14px - - - - dataFontStyle - - Data grid - - font-style-normal - - normal - - - - dataFontWeight - - Data grid - - font-weight-regular - - 400 - - - - dataFontTextTransform - - Data grid - - - none - - - - dataTextLineHeight - - Data grid - - - normal - - - - headerFontFamily - - Header - - font-family-sans - - 'Open Sans', sans-serif - - - - headerFontSize - - Header - - font-scale-02 - - 0.875rem / 14px - - - - headerFontSize - - Header - - font-style-normal - - normal - - - - headerFontWeight - - Header - - font-weight-bold - - bold - - - - headerFontTextTransform - - Header - - - none - - - - headerTextLineHeight - - Header - - - normal - - - - ), - }, - { - title: "Separator", - content: ( - - - - Component token - Element - Core token - Value - - - - - - rowSeparatorThickness - - Separator - - - 1px - - - - rowSeparatorStyle - - Separator - - border-style-solid - - solid - - - - ), - }, - { - title: "Spacing", - content: ( - - - - Component token - Element - Core token - Value - - - - - - dataPaddingRight - - Data grid - - spacing-8 - - 0.5rem / 8px - - - - dataPaddingLeft - - Data grid - - spacing-8 - - 0.5rem / 8px - - - - headerPaddingRight - - Header - - spacing-8 - - 0.5rem / 8px - - - - headerPaddingLeft - - Header - - spacing-8 - - 0.5rem / 8px - - - - ), - }, - { - title: "Size", - content: ( - - - - Component token - Element - Core token - Value - - - - - - dataRowHeight - - Data grid - - - 36 - - - - headerRowHeight - - Header - - - 36 - - - - summaryRowHeight - - Summary row - - - 36 - - - - headerBorderRadius - - Header - - - 4px - - - - ), - }, - ], - }, - { - title: "Accessibility", - subSections: [ - { - title: "WAI-ARIA", - content: ( - <> - - - WAI-ARIA authoring practices -{" "} - - Data Grid Examples - - - - - ), - }, - ], - }, -]; - -const DataGridSpecsPage = () => { - return ( - - - - - - - ); -}; - -export default DataGridSpecsPage; diff --git a/apps/website/screens/components/data-grid/usage/examples/draggable.ts b/apps/website/screens/components/data-grid/usage/examples/draggable.ts deleted file mode 100644 index 6a9f52d69..000000000 --- a/apps/website/screens/components/data-grid/usage/examples/draggable.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { DxcDataGrid, DxcInset } from "@dxc-technology/halstack-react"; - -const code = `() => { - const columns = [ - { - key: "label", - label: "Name", - draggable: true, - }, - { - key: "id", - label: "ID", - draggable: true, - }, - { - key: "complete", - label: "% Complete", - draggable: true, - alignment: "right", - }, - ]; - - const rows = [ - { - label: "Task 1", - id: "ID-1", - complete: 46, - }, - { - label: "Task 2", - id: "ID-2", - complete: 51, - }, - { - label: "Task 3", - id: "ID-3", - complete: 40, - }, - { - label: "Task 4", - id: "ID-4", - complete: 10, - }, - ]; - - return ( - - - - ); -}`; - -const scope = { - DxcDataGrid, - DxcInset, -}; - -export default { code, scope }; diff --git a/apps/website/screens/components/data-grid/usage/examples/expandedContent.ts b/apps/website/screens/components/data-grid/usage/examples/expandedContent.ts deleted file mode 100644 index cd3b7b9d0..000000000 --- a/apps/website/screens/components/data-grid/usage/examples/expandedContent.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { DxcContainer, DxcDataGrid, DxcInset, DxcParagraph } from "@dxc-technology/halstack-react"; - -const code = `() => { - const columns = [ - { - key: "id", - label: "ID", - }, - { - key: "complete", - label: "% Complete", - alignment: "right", - }, - ]; - - const rows = [ - { - id: "Row 1", - complete: 46, - expandedContent: "Expanded content" - }, - { - id: "Row 2", - complete: 51, - expandedContent: - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras laoreet vulputate augue, non cursus justo eleifend non. - Nam ante erat, finibus at tincidunt ut, convallis sed tortor. Proin commodo vestibulum sagittis. - Nunc elit lorem, lobortis quis est in, tempus feugiat velit. Donec commodo hendrerit augue non suscipit. - Nam facilisis leo at est auctor, a faucibus diam lacinia. - In finibus urna id felis dictum blandit. - Praesent pharetra sapien ac purus fringilla, ac molestie metus ullamcorper. - Phasellus aliquet lobortis bibendum. Fusce convallis nulla at mauris tincidunt hendrerit sed sit amet est. - Fusce aliquam quam id efficitur convallis. Vivamus mattis ex in nisi aliquet, et volutpat nulla rhoncus. - Integer dui mauris, fringilla eu vulputate vel, ullamcorper ut orci. - - - In hac habitasse platea dictumst. - Sed velit arcu, consectetur pharetra hendrerit id, convallis id erat. - Quisque eu ante sed ligula blandit placerat ac vitae purus. - Proin ullamcorper dapibus erat. - Vestibulum hendrerit iaculis ipsum, sit amet aliquam enim ornare vitae. - Nullam molestie malesuada cursus. - Maecenas et blandit eros, at posuere urna. - Ut enim neque, volutpat sit amet scelerisque id, hendrerit vitae mi. - Morbi sit amet laoreet ante, eget gravida leo. Sed eu dolor at leo vestibulum imperdiet. - Aenean fringilla lorem et condimentum sollicitudin. - - , - expandedContentHeight: 200 - }, - { - id: "Row 3", - complete: 40, - }, - { - id: "Row 4", - complete: 10, - }, - - ]; - return ( - - - - ); -}`; - -const scope = { - DxcDataGrid, - DxcContainer, - DxcInset, - DxcParagraph, -}; - -export default { code, scope }; diff --git a/apps/website/screens/components/data-grid/usage/examples/filterable.ts b/apps/website/screens/components/data-grid/usage/examples/filterable.ts deleted file mode 100644 index c9c1f1c19..000000000 --- a/apps/website/screens/components/data-grid/usage/examples/filterable.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { DxcDataGrid, DxcFlex, DxcInset, DxcSelect } from "@dxc-technology/halstack-react"; -import { useState } from "react"; - -const code = `() => { - const columns = [ - { - key: "id", - label: "ID", - }, - { - key: "complete", - label: "% Complete", - alignment: "right", - }, - ]; - - const rows1 = [ - { - id: "Row 1", - complete: 46, - }, - { - id: "Row 2", - complete: 51, - }, - { - id: "Row 3", - complete: 40, - }, - { - id: "Row 4", - complete: 10, - }, - ]; - - const rows2 = [ - { - id: "Row 11", - complete: 20, - }, - { - id: "Row 12", - complete: 1, - }, - { - id: "Row 13", - complete: 67, - }, - { - id: "Row 14", - complete: 47, - }, - ]; - - const options = [ - { label: "Data set 1", value: "rows1" }, - { label: "Data set 2", value: "rows2" }, - ]; - - const [rows, setRows]= useState(rows1); - const onChange = ({ value }) => { - value === "rows1" ? setRows(rows1) : setRows(rows2); - }; - - return ( - - - - - - - ); -}`; - -const scope = { - DxcDataGrid, - DxcSelect, - DxcInset, - DxcFlex, - useState, -}; - -export default { code, scope }; diff --git a/apps/website/screens/components/data-grid/usage/examples/selectable.ts b/apps/website/screens/components/data-grid/usage/examples/selectable.ts deleted file mode 100644 index a321c7044..000000000 --- a/apps/website/screens/components/data-grid/usage/examples/selectable.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { DxcDataGrid, DxcInset } from "@dxc-technology/halstack-react"; -import { useState } from "react"; - -const code = `() => { - const columns = [ - { - key: "id", - label: "ID", - }, - { - key: "complete", - label: "% Complete", - alignment: "right", - }, - ]; - - const rows = [ - { - id: "Row 1", - complete: 46, - }, - { - id: "Row 2", - complete: 51, - }, - { - id: "Row 3", - complete: 40, - }, - { - id: "Row 4", - complete: 10, - }, - ]; - - const [selectedRows, setSelectedRows] = useState(new Set([1, 2])); - return ( - - - - ); -}`; - -const scope = { - DxcDataGrid, - DxcInset, - useState, -}; - -export default { code, scope }; From 6d648b8e7fee4b83352549a3df4868a41c042624 Mon Sep 17 00:00:00 2001 From: Jialecl Date: Wed, 30 Apr 2025 11:19:34 +0200 Subject: [PATCH 06/15] testing delay to fix snapshots --- packages/lib/src/data-grid/DataGrid.stories.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/lib/src/data-grid/DataGrid.stories.tsx b/packages/lib/src/data-grid/DataGrid.stories.tsx index 92e9af1cc..9107519ad 100644 --- a/packages/lib/src/data-grid/DataGrid.stories.tsx +++ b/packages/lib/src/data-grid/DataGrid.stories.tsx @@ -1077,6 +1077,9 @@ type Story = StoryObj; export const Chromatic: Story = { render: DataGrid, + parameters: { + chromatic: { delay: 1000 }, + }, }; export const CustomSort: Story = { From 2ede7077fcd6029bbe69b1939f9e4da5f95e9e58 Mon Sep 17 00:00:00 2001 From: Jialecl Date: Wed, 30 Apr 2025 11:23:31 +0200 Subject: [PATCH 07/15] delay increased --- packages/lib/src/data-grid/DataGrid.stories.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/lib/src/data-grid/DataGrid.stories.tsx b/packages/lib/src/data-grid/DataGrid.stories.tsx index 9107519ad..26193e5dd 100644 --- a/packages/lib/src/data-grid/DataGrid.stories.tsx +++ b/packages/lib/src/data-grid/DataGrid.stories.tsx @@ -1078,7 +1078,7 @@ type Story = StoryObj; export const Chromatic: Story = { render: DataGrid, parameters: { - chromatic: { delay: 1000 }, + chromatic: { delay: 10000 }, }, }; From 4b75804119f9d317623b8bc03703b8e2090e4278 Mon Sep 17 00:00:00 2001 From: Jialecl Date: Wed, 30 Apr 2025 11:41:32 +0200 Subject: [PATCH 08/15] restructuring visual tests --- .../lib/src/data-grid/DataGrid.stories.tsx | 57 +++++++++++-------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/packages/lib/src/data-grid/DataGrid.stories.tsx b/packages/lib/src/data-grid/DataGrid.stories.tsx index 26193e5dd..8241a2f43 100644 --- a/packages/lib/src/data-grid/DataGrid.stories.tsx +++ b/packages/lib/src/data-grid/DataGrid.stories.tsx @@ -652,13 +652,6 @@ const customSortRows = [ ]; const DataGrid = () => { - const [selectedRows, setSelectedRows] = useState((): Set => new Set()); - const [selectedChildRows, setSelectedChildRows] = useState((): Set => new Set()); - - const [itemsPerPage, setItemsPerPage] = useState(5); - const [rowsControlled, setRowsControlled] = useState(expandableRows.slice(0, itemsPerPage)); - const [page, setPage] = useState(0); - return ( <> @@ -669,6 +662,34 @@ const DataGrid = () => { <DxcDataGrid columns={columns} rows={expandableRows} uniqueRowId="id" expandable /> </ExampleContainer> + <ExampleContainer> + <Title title="Summary row" theme="light" level={4} /> + <DxcDataGrid + columns={columns} + rows={expandableRows} + summaryRow={{ label: "Total", total: 100 }} + uniqueRowId="id" + /> + </ExampleContainer> + <ExampleContainer> + <Title title="Scrollable Data Grid" theme="light" level={4} /> + <DxcContainer height="250px"> + <DxcDataGrid columns={columns} rows={expandableRows} uniqueRowId="id" /> + </DxcContainer> + </ExampleContainer> + </> + ); +}; + +const DataGridControlled = () => { + const [selectedRows, setSelectedRows] = useState((): Set<number | string> => new Set()); + const [selectedChildRows, setSelectedChildRows] = useState((): Set<number | string> => new Set()); + const [itemsPerPage, setItemsPerPage] = useState(5); + const [rowsControlled, setRowsControlled] = useState(expandableRows.slice(0, itemsPerPage)); + const [page, setPage] = useState(0); + + return ( + <> <ExampleContainer> <Title title="Selectable" theme="light" level={4} /> <DxcDataGrid @@ -707,21 +728,6 @@ const DataGrid = () => { onSelectRows={setSelectedChildRows} /> </ExampleContainer> - <ExampleContainer> - <Title title="Summary row" theme="light" level={4} /> - <DxcDataGrid - columns={columns} - rows={expandableRows} - summaryRow={{ label: "Total", total: 100 }} - uniqueRowId="id" - /> - </ExampleContainer> - <ExampleContainer> - <Title title="Scrollable Data Grid" theme="light" level={4} /> - <DxcContainer height="250px"> - <DxcDataGrid columns={columns} rows={expandableRows} uniqueRowId="id" /> - </DxcContainer> - </ExampleContainer> <ExampleContainer> <Title title="Empty Data Grid" theme="light" level={4} /> <DxcDataGrid @@ -1077,9 +1083,10 @@ type Story = StoryObj<typeof DxcDataGrid>; export const Chromatic: Story = { render: DataGrid, - parameters: { - chromatic: { delay: 10000 }, - }, +}; + +export const Controlled: Story = { + render: DataGridControlled, }; export const CustomSort: Story = { From 13a6f667484e691d21d2e155078411cf385fca8d Mon Sep 17 00:00:00 2001 From: Jialecl <jialestrabajos@gmail.com> Date: Wed, 30 Apr 2025 11:50:50 +0200 Subject: [PATCH 09/15] Visual tests commented --- packages/lib/src/data-grid/DataGrid.stories.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/lib/src/data-grid/DataGrid.stories.tsx b/packages/lib/src/data-grid/DataGrid.stories.tsx index 8241a2f43..45c019bdd 100644 --- a/packages/lib/src/data-grid/DataGrid.stories.tsx +++ b/packages/lib/src/data-grid/DataGrid.stories.tsx @@ -658,7 +658,7 @@ const DataGrid = () => { <Title title="Default" theme="light" level={4} /> <DxcDataGrid columns={columns} rows={expandableRows} uniqueRowId="id" /> </ExampleContainer> - <ExampleContainer> + {/* <ExampleContainer> <Title title="Expandable" theme="light" level={4} /> <DxcDataGrid columns={columns} rows={expandableRows} uniqueRowId="id" expandable /> </ExampleContainer> @@ -676,7 +676,7 @@ const DataGrid = () => { <DxcContainer height="250px"> <DxcDataGrid columns={columns} rows={expandableRows} uniqueRowId="id" /> </DxcContainer> - </ExampleContainer> + </ExampleContainer> */} </> ); }; From d90d36fa49b6a593e4f5f2bbefd717577245e73a Mon Sep 17 00:00:00 2001 From: Jialecl <jialestrabajos@gmail.com> Date: Wed, 30 Apr 2025 11:55:10 +0200 Subject: [PATCH 10/15] Adding back some tests --- packages/lib/src/data-grid/DataGrid.stories.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/lib/src/data-grid/DataGrid.stories.tsx b/packages/lib/src/data-grid/DataGrid.stories.tsx index 45c019bdd..b95a5ac05 100644 --- a/packages/lib/src/data-grid/DataGrid.stories.tsx +++ b/packages/lib/src/data-grid/DataGrid.stories.tsx @@ -658,7 +658,7 @@ const DataGrid = () => { <Title title="Default" theme="light" level={4} /> <DxcDataGrid columns={columns} rows={expandableRows} uniqueRowId="id" /> </ExampleContainer> - {/* <ExampleContainer> + <ExampleContainer> <Title title="Expandable" theme="light" level={4} /> <DxcDataGrid columns={columns} rows={expandableRows} uniqueRowId="id" expandable /> </ExampleContainer> @@ -671,7 +671,7 @@ const DataGrid = () => { uniqueRowId="id" /> </ExampleContainer> - <ExampleContainer> + {/* <ExampleContainer> <Title title="Scrollable Data Grid" theme="light" level={4} /> <DxcContainer height="250px"> <DxcDataGrid columns={columns} rows={expandableRows} uniqueRowId="id" /> From 97c35bca097f1bf24bad42eee31f5c3a3085e0f9 Mon Sep 17 00:00:00 2001 From: Jialecl <jialestrabajos@gmail.com> Date: Wed, 30 Apr 2025 11:58:40 +0200 Subject: [PATCH 11/15] uncommenting all tests --- packages/lib/src/data-grid/DataGrid.stories.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/lib/src/data-grid/DataGrid.stories.tsx b/packages/lib/src/data-grid/DataGrid.stories.tsx index b95a5ac05..8241a2f43 100644 --- a/packages/lib/src/data-grid/DataGrid.stories.tsx +++ b/packages/lib/src/data-grid/DataGrid.stories.tsx @@ -671,12 +671,12 @@ const DataGrid = () => { uniqueRowId="id" /> </ExampleContainer> - {/* <ExampleContainer> + <ExampleContainer> <Title title="Scrollable Data Grid" theme="light" level={4} /> <DxcContainer height="250px"> <DxcDataGrid columns={columns} rows={expandableRows} uniqueRowId="id" /> </DxcContainer> - </ExampleContainer> */} + </ExampleContainer> </> ); }; From fa5eb164ab976ba7167d682c5e9c5756a4618e2e Mon Sep 17 00:00:00 2001 From: Jialecl <jialestrabajos@gmail.com> Date: Wed, 30 Apr 2025 12:08:35 +0200 Subject: [PATCH 12/15] removed unnecessary tests --- .../lib/src/data-grid/DataGrid.stories.tsx | 86 ------------------- 1 file changed, 86 deletions(-) diff --git a/packages/lib/src/data-grid/DataGrid.stories.tsx b/packages/lib/src/data-grid/DataGrid.stories.tsx index 8241a2f43..123ae75df 100644 --- a/packages/lib/src/data-grid/DataGrid.stories.tsx +++ b/packages/lib/src/data-grid/DataGrid.stories.tsx @@ -952,14 +952,6 @@ const DataGridUnknownUniqueRowId = () => { return ( <> - <ExampleContainer> - <Title title="Default" theme="light" level={4} /> - <DxcDataGrid columns={columns} rows={expandableRows} uniqueRowId="error" /> - </ExampleContainer> - <ExampleContainer> - <Title title="Expandable" theme="light" level={4} /> - <DxcDataGrid columns={columns} rows={expandableRows} uniqueRowId="error" expandable /> - </ExampleContainer> <ExampleContainer> <Title title="Selectable" theme="light" level={4} /> <DxcDataGrid @@ -971,18 +963,6 @@ const DataGridUnknownUniqueRowId = () => { onSelectRows={setSelectedRows} /> </ExampleContainer> - <ExampleContainer> - <Title title="Selectable & expandable" theme="light" level={4} /> - <DxcDataGrid - columns={columns} - rows={expandableRows} - uniqueRowId="error" - expandable - selectable - selectedRows={selectedRows} - onSelectRows={setSelectedRows} - /> - </ExampleContainer> <ExampleContainer> <Title title="DataGrid with children" theme="light" level={4} /> <DxcDataGrid columns={childcolumns} rows={childRows} uniqueRowId="error" /> @@ -998,21 +978,6 @@ const DataGridUnknownUniqueRowId = () => { onSelectRows={setSelectedChildRows} /> </ExampleContainer> - <ExampleContainer> - <Title title="Summary row" theme="light" level={4} /> - <DxcDataGrid - columns={columns} - rows={expandableRows} - summaryRow={{ label: "Total", total: 100 }} - uniqueRowId="error" - /> - </ExampleContainer> - <ExampleContainer> - <Title title="Scrollable Data Grid" theme="light" level={4} /> - <DxcContainer height="250px"> - <DxcDataGrid columns={columns} rows={expandableRows} uniqueRowId="error" /> - </DxcContainer> - </ExampleContainer> <ExampleContainer> <Title title="Empty Data Grid" theme="light" level={4} /> <DxcDataGrid @@ -1024,57 +989,6 @@ const DataGridUnknownUniqueRowId = () => { onSelectRows={setSelectedChildRows} /> </ExampleContainer> - <ExampleContainer> - <Title title="Controlled Rows" theme="light" level={4} /> - <DxcDataGrid - columns={columns} - rows={rowsControlled} - uniqueRowId="error" - showPaginator - onSort={(sortColumn) => { - if (sortColumn) { - const { columnKey, direction } = sortColumn; - console.log(`Sorting the column '${columnKey}' by '${direction}' direction`); - setRowsControlled((currentRows) => { - return currentRows.sort((a, b) => { - if (isKeyOfRow(columnKey, a) && isKeyOfRow(columnKey, b)) { - const valueA = a[columnKey]; - const valueB = b[columnKey]; - if (valueA != null && valueB != null) { - if (direction === "ASC") { - return valueA < valueB ? -1 : valueA > valueB ? 1 : 0; - } else { - return valueA < valueB ? 1 : valueA > valueB ? -1 : 0; - } - } else { - return 0; - } - } else { - return 0; - } - }); - }); - } else { - console.log("Removed sorting criteria"); - setRowsControlled(expandableRows.slice(page * itemsPerPage, page * itemsPerPage + itemsPerPage)); - } - }} - onPageChange={(page) => { - const internalPage = page - 1; - setPage(internalPage); - setRowsControlled( - expandableRows.slice(internalPage * itemsPerPage, internalPage * itemsPerPage + itemsPerPage) - ); - }} - itemsPerPage={itemsPerPage} - itemsPerPageOptions={[5, 10]} - itemsPerPageFunction={(n) => { - setItemsPerPage(n); - setRowsControlled(expandableRows.slice(0, n)); - }} - totalItems={expandableRows.length} - /> - </ExampleContainer> </> ); }; From 15ad42bbd40e328ad7b839a81c16461ab44e9591 Mon Sep 17 00:00:00 2001 From: Jialecl <jialestrabajos@gmail.com> Date: Fri, 2 May 2025 11:41:09 +0200 Subject: [PATCH 13/15] Documentation fixes based on review --- apps/website/pages/components/data-grid/code.tsx | 2 +- apps/website/pages/components/data-grid/index.tsx | 8 ++++---- .../components/data-grid/DataGridPageLayout.tsx | 2 +- .../data-grid/overview/DataGridOverviewPage.tsx | 14 +++++++------- packages/lib/src/data-grid/DataGrid.stories.tsx | 4 ---- packages/lib/src/data-grid/DataGrid.tsx | 3 +-- 6 files changed, 14 insertions(+), 19 deletions(-) diff --git a/apps/website/pages/components/data-grid/code.tsx b/apps/website/pages/components/data-grid/code.tsx index 5ccf26d9c..5f9367842 100644 --- a/apps/website/pages/components/data-grid/code.tsx +++ b/apps/website/pages/components/data-grid/code.tsx @@ -7,7 +7,7 @@ const Code = () => { return ( <> <Head> - <title>Data Grid — Halstack Design System + Data grid — Halstack Design System diff --git a/apps/website/pages/components/data-grid/index.tsx b/apps/website/pages/components/data-grid/index.tsx index ec2f17f2b..af1b58abe 100644 --- a/apps/website/pages/components/data-grid/index.tsx +++ b/apps/website/pages/components/data-grid/index.tsx @@ -3,16 +3,16 @@ import type { ReactElement } from "react"; import DataGridPageLayout from "screens/components/data-grid/DataGridPageLayout"; import DataGridOverviewPage from "screens/components/data-grid/overview/DataGridOverviewPage"; -const Usage = () => { +const Index = () => { return ( <> - Data Grid — Halstack Design System + Data grid — Halstack Design System ); }; -Usage.getLayout = (page: ReactElement) => {page}; -export default Usage; +Index.getLayout = (page: ReactElement) => {page}; +export default Index; diff --git a/apps/website/screens/components/data-grid/DataGridPageLayout.tsx b/apps/website/screens/components/data-grid/DataGridPageLayout.tsx index bdc7394ea..dbeb44b4a 100644 --- a/apps/website/screens/components/data-grid/DataGridPageLayout.tsx +++ b/apps/website/screens/components/data-grid/DataGridPageLayout.tsx @@ -6,7 +6,7 @@ import { ReactNode } from "react"; const DataGridPageHeading = ({ children }: { children: ReactNode }) => { const tabs = [ - { label: "Overiew", path: "/components/data-grid" }, + { label: "Overview", path: "/components/data-grid" }, { label: "Code", path: "/components/data-grid/code" }, ]; diff --git a/apps/website/screens/components/data-grid/overview/DataGridOverviewPage.tsx b/apps/website/screens/components/data-grid/overview/DataGridOverviewPage.tsx index 6e7ba7b40..4412de2b3 100644 --- a/apps/website/screens/components/data-grid/overview/DataGridOverviewPage.tsx +++ b/apps/website/screens/components/data-grid/overview/DataGridOverviewPage.tsx @@ -67,8 +67,8 @@ const sections = [ checkboxes for multiple row selection, or else radio buttons for single-row selection. - Row selection can persist across pages when pagination is usedin the datagrid, ensuring - users can perform bulk actions on rows even if they navigate away from the current view. + Row selection can persist across pages when pagination is used in the datagrid, + ensuring users can perform bulk actions on rows even if they navigate away from the current view. Users can set a default selected row on initial load, useful for pre-populating forms or automatically @@ -83,7 +83,7 @@ const sections = [ ), }, { - title: "Row selection", + title: "Sorting and filtering", content: ( <> @@ -156,10 +156,10 @@ const sections = [ The re-ordering feature of our datagrid allows users to rearrange columns according to their preferences by dragging and dropping them, enhancing the personalized data - viewing experinece. + viewing experience. - y letting users prioritize the most relevant columns, this feature helps them access and analyze data + By letting users prioritize the most relevant columns, this feature helps them access and analyze data more efficiently. It is also designed to be user-friendly, enabling quick adjustments with minimal effort. @@ -183,7 +183,7 @@ const sections = [ ensuring users understand the significance of the data they are viewing. - Column alignment: though data can be aligned in columns however the user chooses, it must + Column alignment: although data can be aligned in columns however the user chooses, it must be aligned consistently across columns to enhance readability: @@ -259,7 +259,7 @@ const DataGridOverviewPage = () => { - + ); }; diff --git a/packages/lib/src/data-grid/DataGrid.stories.tsx b/packages/lib/src/data-grid/DataGrid.stories.tsx index 123ae75df..efdb88555 100644 --- a/packages/lib/src/data-grid/DataGrid.stories.tsx +++ b/packages/lib/src/data-grid/DataGrid.stories.tsx @@ -946,10 +946,6 @@ const DataGridUnknownUniqueRowId = () => { const [selectedRows, setSelectedRows] = useState((): Set => new Set()); const [selectedChildRows, setSelectedChildRows] = useState((): Set => new Set()); - const [itemsPerPage, setItemsPerPage] = useState(5); - const [rowsControlled, setRowsControlled] = useState(expandableRows.slice(0, itemsPerPage)); - const [page, setPage] = useState(0); - return ( <> diff --git a/packages/lib/src/data-grid/DataGrid.tsx b/packages/lib/src/data-grid/DataGrid.tsx index 8229ee6b1..a21c4ffa7 100644 --- a/packages/lib/src/data-grid/DataGrid.tsx +++ b/packages/lib/src/data-grid/DataGrid.tsx @@ -1,4 +1,4 @@ -import { useContext, useEffect, useMemo, useState } from "react"; +import { useEffect, useMemo, useState } from "react"; import DataGrid, { SortColumn } from "react-data-grid"; import styled from "styled-components"; import DataGridPropsType, { HierarchyGridRow, GridRow, ExpandableGridRow } from "./types"; @@ -21,7 +21,6 @@ import { } from "./utils"; import DxcPaginator from "../paginator/Paginator"; import { DxcActionsCell } from "../table/Table"; -import HalstackContext from "../HalstackContext"; import { scrollbarStyles } from "../styles/scroll"; const DataGridContainer = styled.div<{ From ef988391b107f1c71b5f0331fa9d8767b0384828 Mon Sep 17 00:00:00 2001 From: Jialecl Date: Thu, 29 May 2025 08:50:21 +0200 Subject: [PATCH 14/15] Hierarchical data added to documentation --- .../overview/DataGridOverviewPage.tsx | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/apps/website/screens/components/data-grid/overview/DataGridOverviewPage.tsx b/apps/website/screens/components/data-grid/overview/DataGridOverviewPage.tsx index 4412de2b3..b2dde9228 100644 --- a/apps/website/screens/components/data-grid/overview/DataGridOverviewPage.tsx +++ b/apps/website/screens/components/data-grid/overview/DataGridOverviewPage.tsx @@ -171,6 +171,30 @@ const sections = [ ), }, + { + title: "Hierarchical data", + content: ( + <> + + + The datagrid supports hierarchical or tree-structured data, allowing users to explore + nested information within expandable rows. This is especially useful when working with parent-child + relationships, such as organizational structures, grouped datasets, or categories with subcategories. + + + Rows can be expanded to reveal child rows, enabling users to{" "} + view and interact with multi-level data in context, without navigating away or loading + separate tables. + + + This feature improves clarity and usability for complex datasets by letting users{" "} + drill down into relevant sections while keeping the rest of the grid collapsed and + clean. + + + + ), + }, ], }, { From 08cfafde2393430959efb2f21a565e0c35320b72 Mon Sep 17 00:00:00 2001 From: Jialecl Date: Thu, 29 May 2025 10:41:40 +0200 Subject: [PATCH 15/15] commenting scrollable test --- packages/lib/src/data-grid/DataGrid.stories.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/lib/src/data-grid/DataGrid.stories.tsx b/packages/lib/src/data-grid/DataGrid.stories.tsx index 00251c135..ea4a0728f 100644 --- a/packages/lib/src/data-grid/DataGrid.stories.tsx +++ b/packages/lib/src/data-grid/DataGrid.stories.tsx @@ -671,12 +671,12 @@ const DataGrid = () => { uniqueRowId="id" /> - + {/* <DxcContainer height="250px"> <DxcDataGrid columns={columns} rows={expandableRows} uniqueRowId="id" /> </DxcContainer> - </ExampleContainer> + </ExampleContainer> */} </> ); };