diff --git a/e2e/test/scenarios/admin/datamodel/editor.cy.spec.js b/e2e/test/scenarios/admin/datamodel/editor.cy.spec.js index f0418cd3e493f..14ee16f6d9129 100644 --- a/e2e/test/scenarios/admin/datamodel/editor.cy.spec.js +++ b/e2e/test/scenarios/admin/datamodel/editor.cy.spec.js @@ -659,7 +659,7 @@ const getFieldSection = fieldName => { }; const moveField = (fieldIndex, deltaY) => { - cy.get(".Grabber") + cy.findByTestId("grabber") .eq(fieldIndex) .trigger("pointerdown", 0, 0, { force: true, button: 0, isPrimary: true }) .wait(200) diff --git a/frontend/src/metabase/components/Grabber/Grabber.jsx b/frontend/src/metabase/components/Grabber/Grabber.jsx index 7889d500b0cd7..3f031e897b48b 100644 --- a/frontend/src/metabase/components/Grabber/Grabber.jsx +++ b/frontend/src/metabase/components/Grabber/Grabber.jsx @@ -1,10 +1,13 @@ /* eslint-disable react/prop-types */ import cx from "classnames"; +import GrabberS from "metabase/css/components/grabber.module.css"; +import CS from "metabase/css/core/index.css"; + export default function Grabber({ className = "", style, ...props }) { return (
diff --git a/frontend/src/metabase/core/components/Sortable/SortableList.tsx b/frontend/src/metabase/core/components/Sortable/SortableList.tsx index da63e07465f28..4e6b8d44982e6 100644 --- a/frontend/src/metabase/core/components/Sortable/SortableList.tsx +++ b/frontend/src/metabase/core/components/Sortable/SortableList.tsx @@ -9,6 +9,7 @@ import { SortableContext, arrayMove } from "@dnd-kit/sortable"; import { useState, useMemo, useEffect } from "react"; import _ from "underscore"; +import GrabberS from "metabase/css/components/grabber.module.css"; import { isNotNull } from "metabase/lib/types"; type ItemId = number | string; @@ -77,7 +78,7 @@ export const SortableList = ({ }; const handleDragStart = (event: DragStartEvent) => { - document.body.classList.add("grabbing"); + document.body.classList.add(GrabberS.grabbing); onSortStart?.(event); @@ -88,7 +89,7 @@ export const SortableList = ({ }; const handleDragEnd = () => { - document.body.classList.remove("grabbing"); + document.body.classList.remove(GrabberS.grabbing); if (activeItem && onSortEnd) { onSortEnd({ id: getId(activeItem), diff --git a/frontend/src/metabase/css/admin.module.css b/frontend/src/metabase/css/admin.module.css index cf69bce311058..7c9f47111e9c9 100644 --- a/frontend/src/metabase/css/admin.module.css +++ b/frontend/src/metabase/css/admin.module.css @@ -191,7 +191,3 @@ :global(.AdminTable tbody tr:first-child td) { padding-top: var(--margin-1); } - -:global(.ColumnSortHelper) { - box-shadow: 0 7px 20px var(--color-shadow); -} diff --git a/frontend/src/metabase/css/components/grabber.module.css b/frontend/src/metabase/css/components/grabber.module.css index 13a322d2ab43a..c73bdd5b47242 100644 --- a/frontend/src/metabase/css/components/grabber.module.css +++ b/frontend/src/metabase/css/components/grabber.module.css @@ -1,4 +1,4 @@ -:global(.Grabber) { +.Grabber { /* This image is a svg circle as a data url. We tile it for the whole div. */ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle fill='%23E3E7E9' r='1.5' cx='2.5' cy='2.5' /%3E%3C/svg%3E"); @@ -6,18 +6,22 @@ background-size: 5px 5px; } +.ColumnSortHelper { + box-shadow: 0 7px 20px var(--color-shadow); +} + /* .sort-helper isn't used in . You'll need to set that on a parent being sorted. */ -:global(.ColumnSortHelper .Grabber), -:global(.Grabber:hover) { +.ColumnSortHelper .Grabber, +.Grabber:hover { /* This image is the same but with a different fill color. */ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle fill='%23C7CFD4' r='1.5' cx='2.5' cy='2.5' /%3E%3C/svg%3E"); } /* This should be applied on document.body during dragging. */ -:global(.grabbing) { +.grabbing { cursor: grabbing; } -:global(.grabbing *) { +.grabbing * { cursor: grabbing; } diff --git a/frontend/src/metabase/css/core/colors.module.css b/frontend/src/metabase/css/core/colors.module.css index 911c536d769a4..e2e3db1203d97 100644 --- a/frontend/src/metabase/css/core/colors.module.css +++ b/frontend/src/metabase/css/core/colors.module.css @@ -100,6 +100,7 @@ /* white - move to bottom for specificity since its often used on hovers, etc */ :global(.text-white), +.text-white, .textWhite, :global(.text-white-hover:hover) { color: var(--color-text-white); diff --git a/frontend/src/metabase/nav/containers/MainNavbar/MainNavbarContainer/BookmarkList/BookmarkList.tsx b/frontend/src/metabase/nav/containers/MainNavbar/MainNavbarContainer/BookmarkList/BookmarkList.tsx index 33aee43251884..c509b3ce5bb3d 100644 --- a/frontend/src/metabase/nav/containers/MainNavbar/MainNavbarContainer/BookmarkList/BookmarkList.tsx +++ b/frontend/src/metabase/nav/containers/MainNavbar/MainNavbarContainer/BookmarkList/BookmarkList.tsx @@ -14,6 +14,7 @@ import { t } from "ttag"; import CollapseSection from "metabase/components/CollapseSection"; import { Sortable } from "metabase/core/components/Sortable"; import Tooltip from "metabase/core/components/Tooltip"; +import GrabberS from "metabase/css/components/grabber.module.css"; import Bookmarks from "metabase/entities/bookmarks"; import * as Urls from "metabase/lib/urls"; import { PLUGIN_COLLECTIONS } from "metabase/plugins"; @@ -130,13 +131,13 @@ const BookmarkList = ({ }, []); const handleSortStart = useCallback(() => { - document.body.classList.add("grabbing"); + document.body.classList.add(GrabberS.grabbing); setIsSorting(true); }, []); const handleSortEnd = useCallback( input => { - document.body.classList.remove("grabbing"); + document.body.classList.remove(GrabberS.grabbing); setIsSorting(false); const newIndex = bookmarks.findIndex(b => b.id === input.over.id); const oldIndex = bookmarks.findIndex(b => b.id === input.active.id);