From e37c8ce44cda454401f6733bcaa9c0d3c12ad0fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Chy=C5=82a?= Date: Wed, 5 Jul 2023 12:29:05 +0200 Subject: [PATCH] Refactor product list datagrid to use new hooks (#3845) --- .changeset/tiny-cherries-deny.md | 5 + .../ProductListDeleteButton.test.tsx | 42 ----- .../ProductListDeleteButton.tsx | 12 +- .../ProductListPage.stories.tsx | 1 - .../ProductListPage/ProductListPage.tsx | 3 - .../views/ProductList/ProductList.tsx | 176 +++++------------- src/products/views/ProductList/filters.ts | 7 +- 7 files changed, 64 insertions(+), 182 deletions(-) create mode 100644 .changeset/tiny-cherries-deny.md delete mode 100644 src/products/components/ProductListDeleteButton/ProductListDeleteButton.test.tsx diff --git a/.changeset/tiny-cherries-deny.md b/.changeset/tiny-cherries-deny.md new file mode 100644 index 000000000..c76bd80a6 --- /dev/null +++ b/.changeset/tiny-cherries-deny.md @@ -0,0 +1,5 @@ +--- +"saleor-dashboard": minor +--- + +Refactor product list datagrid to use useFilterPresets and useRowSelection hooks diff --git a/src/products/components/ProductListDeleteButton/ProductListDeleteButton.test.tsx b/src/products/components/ProductListDeleteButton/ProductListDeleteButton.test.tsx deleted file mode 100644 index 6e53a2da0..000000000 --- a/src/products/components/ProductListDeleteButton/ProductListDeleteButton.test.tsx +++ /dev/null @@ -1,42 +0,0 @@ -// @ts-strict-ignore -import { render, screen } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import React from "react"; - -import { ProductListDeleteButton } from "./ProductListDeleteButton"; - -jest.mock("react-intl", () => ({ - FormattedMessage: ({ defaultMessage }) => <>{defaultMessage}, -})); - -describe("ProductListDeleteButton", () => { - it("should return null when show is equal false", () => { - // Arrange & Act - const { container } = render( - , - ); - - // Assert - expect(container).toBeEmptyDOMElement(); - }); - - it("should render button", async () => { - // Arrange & Act - render(); - - // Assert - expect(screen.getByRole("button")).toBeInTheDocument(); - }); - - it("should fire callback on click", async () => { - // Arrange - const onClick = jest.fn(); - - // Act - render(); - await userEvent.click(screen.getByRole("button")); - - // Assert - expect(onClick).toHaveBeenCalled(); - }); -}); diff --git a/src/products/components/ProductListDeleteButton/ProductListDeleteButton.tsx b/src/products/components/ProductListDeleteButton/ProductListDeleteButton.tsx index 41026fd51..9d2cb0b8e 100644 --- a/src/products/components/ProductListDeleteButton/ProductListDeleteButton.tsx +++ b/src/products/components/ProductListDeleteButton/ProductListDeleteButton.tsx @@ -1,5 +1,5 @@ import { Button, Tooltip, TrashBinIcon } from "@saleor/macaw-ui/next"; -import React, { forwardRef } from "react"; +import React, { forwardRef, useState } from "react"; import { FormattedMessage } from "react-intl"; interface ProductListDeleteButtonProps { @@ -11,15 +11,23 @@ export const ProductListDeleteButton = forwardRef< HTMLButtonElement, ProductListDeleteButtonProps >(({ onClick, show = false }, ref) => { + const [isTooltipOpen, setIsTooltipOpen] = useState(false); + if (!show) { return null; } return ( - +