Skip to content
Snippets Groups Projects
Unverified Commit b9214db8 authored by Alexander Polyankin's avatar Alexander Polyankin Committed by GitHub
Browse files

Move pinning items in collection to menu (#23408)

parent 426da4a3
No related branches found
No related tags found
No related merge requests found
...@@ -8,7 +8,6 @@ import Swapper from "metabase/components/Swapper"; ...@@ -8,7 +8,6 @@ import Swapper from "metabase/components/Swapper";
import CheckBox from "metabase/core/components/CheckBox"; import CheckBox from "metabase/core/components/CheckBox";
import Ellipsified from "metabase/core/components/Ellipsified"; import Ellipsified from "metabase/core/components/Ellipsified";
import Icon from "metabase/components/Icon"; import Icon from "metabase/components/Icon";
import Tooltip from "metabase/components/Tooltip";
import { isItemPinned } from "metabase/collections/utils"; import { isItemPinned } from "metabase/collections/utils";
import { import {
...@@ -17,7 +16,6 @@ import { ...@@ -17,7 +16,6 @@ import {
EntityItemSpinner, EntityItemSpinner,
EntityItemWrapper, EntityItemWrapper,
EntityMenuContainer, EntityMenuContainer,
PinButton,
} from "./EntityItem.styled"; } from "./EntityItem.styled";
function EntityIconCheckBox({ function EntityIconCheckBox({
...@@ -97,12 +95,11 @@ function EntityItemMenu({ ...@@ -97,12 +95,11 @@ function EntityItemMenu({
analyticsContext, analyticsContext,
}) { }) {
const isPinned = isItemPinned(item); const isPinned = isItemPinned(item);
const showPinnedAction = onPin && isPinned;
const showUnpinnedAction = onPin && !isPinned;
const actions = useMemo( const actions = useMemo(
() => () =>
[ [
showPinnedAction && { onPin && {
title: isPinned ? t`Unpin` : t`Pin this`, title: isPinned ? t`Unpin` : t`Pin this`,
icon: "pin", icon: "pin",
action: onPin, action: onPin,
...@@ -148,7 +145,6 @@ function EntityItemMenu({ ...@@ -148,7 +145,6 @@ function EntityItemMenu({
isBookmarked, isBookmarked,
isPreviewShown, isPreviewShown,
isPreviewAvailable, isPreviewAvailable,
showPinnedAction,
onPin, onPin,
onMove, onMove,
onCopy, onCopy,
...@@ -163,11 +159,6 @@ function EntityItemMenu({ ...@@ -163,11 +159,6 @@ function EntityItemMenu({
} }
return ( return (
<EntityMenuContainer align="center"> <EntityMenuContainer align="center">
{showUnpinnedAction && (
<Tooltip tooltip={t`Pin this`}>
<PinButton icon="pin" onClick={onPin} />
</Tooltip>
)}
<EntityMenu <EntityMenu
className={cx(className, "hover-child")} className={cx(className, "hover-child")}
triggerIcon="ellipsis" triggerIcon="ellipsis"
......
...@@ -4,7 +4,6 @@ import { color, darken } from "metabase/lib/colors"; ...@@ -4,7 +4,6 @@ import { color, darken } from "metabase/lib/colors";
import IconButtonWrapper from "metabase/components/IconButtonWrapper"; import IconButtonWrapper from "metabase/components/IconButtonWrapper";
import LoadingSpinner from "metabase/components/LoadingSpinner"; import LoadingSpinner from "metabase/components/LoadingSpinner";
import Button from "metabase/core/components/Button";
function getPinnedForeground(disabled) { function getPinnedForeground(disabled) {
return disabled ? darken(color("border"), 0.38) : color("accent4"); return disabled ? darken(color("border"), 0.38) : color("accent4");
...@@ -65,15 +64,6 @@ export const EntityMenuContainer = styled.div` ...@@ -65,15 +64,6 @@ export const EntityMenuContainer = styled.div`
color: ${color("text-medium")}; color: ${color("text-medium")};
`; `;
export const PinButton = styled(Button)`
color: ${color("text-medium")};
border: none;
&:hover {
color: ${color("brand")};
}
`;
export const EntityItemActions = styled.div` export const EntityItemActions = styled.div`
display: flex; display: flex;
align-items: center; align-items: center;
......
import { restore, popover } from "__support__/e2e/cypress"; import { popover, restore } from "__support__/e2e/cypress";
const DASHBOARD_ITEM_NAME = "Orders in a dashboard"; const DASHBOARD_ITEM_NAME = "Orders in a dashboard";
const CARD_ITEM_NAME = "Orders, Count"; const CARD_ITEM_NAME = "Orders, Count";
...@@ -24,11 +24,7 @@ describe("scenarios > collection pinned items overview", () => { ...@@ -24,11 +24,7 @@ describe("scenarios > collection pinned items overview", () => {
cy.wait("@pinnedItemsGET"); cy.wait("@pinnedItemsGET");
// pin a dashboard // pin a dashboard
cy.findByText(DASHBOARD_ITEM_NAME) pinItem(DASHBOARD_ITEM_NAME);
.closest("tr")
.within(() => {
cy.icon("pin").click();
});
cy.wait("@pinnedItemsGET"); cy.wait("@pinnedItemsGET");
// ensure the dashboard card is showing in the pinned section // ensure the dashboard card is showing in the pinned section
...@@ -44,11 +40,7 @@ describe("scenarios > collection pinned items overview", () => { ...@@ -44,11 +40,7 @@ describe("scenarios > collection pinned items overview", () => {
cy.wait("@pinnedItemsGET"); cy.wait("@pinnedItemsGET");
// pin a card // pin a card
cy.findByText(CARD_ITEM_NAME) pinItem(CARD_ITEM_NAME);
.closest("tr")
.within(() => {
cy.icon("pin").click();
});
cy.wait(["@pinnedItemsGET", "@cardQuery"]); cy.wait(["@pinnedItemsGET", "@cardQuery"]);
// ensure the card visualization is showing in the pinned section // ensure the card visualization is showing in the pinned section
...@@ -62,11 +54,7 @@ describe("scenarios > collection pinned items overview", () => { ...@@ -62,11 +54,7 @@ describe("scenarios > collection pinned items overview", () => {
cy.wait(["@pinnedItemsGET", "@cardQuery"]); cy.wait(["@pinnedItemsGET", "@cardQuery"]);
// pin a model // pin a model
cy.findByText(MODE_ITEM_NAME) pinItem(MODE_ITEM_NAME);
.closest("tr")
.within(() => {
cy.icon("pin").click();
});
cy.wait("@pinnedItemsGET"); cy.wait("@pinnedItemsGET");
// ensure the model card is showing in the pinned section // ensure the model card is showing in the pinned section
cy.findByTestId("pinned-items").within(() => { cy.findByTestId("pinned-items").within(() => {
...@@ -135,3 +123,11 @@ describe("scenarios > collection pinned items overview", () => { ...@@ -135,3 +123,11 @@ describe("scenarios > collection pinned items overview", () => {
}); });
}); });
}); });
const pinItem = name => {
cy.findByText(name)
.closest("tr")
.within(() => cy.icon("ellipsis").click());
popover().within(() => cy.icon("pin").click());
};
...@@ -431,12 +431,10 @@ describe("collection permissions", () => { ...@@ -431,12 +431,10 @@ describe("collection permissions", () => {
}); });
function openEllipsisMenuFor(item, index = 0) { function openEllipsisMenuFor(item, index = 0) {
return cy cy.findAllByText(item)
.findAllByText(item)
.eq(index) .eq(index)
.closest("tr") .closest("tr")
.find(".Icon-ellipsis") .within(() => cy.icon("ellipsis").click());
.click({ force: true });
} }
function clickButton(name) { function clickButton(name) {
...@@ -446,11 +444,8 @@ function clickButton(name) { ...@@ -446,11 +444,8 @@ function clickButton(name) {
} }
function pinItem(item) { function pinItem(item) {
cy.findAllByText(item) openEllipsisMenuFor(item);
.closest("tr") popover().within(() => cy.icon("pin").click());
.within(() => {
cy.icon("pin").click();
});
} }
function exposeChildrenFor(collectionName) { function exposeChildrenFor(collectionName) {
......
import { restore, visitDashboard } from "__support__/e2e/cypress"; import { popover, restore, visitDashboard } from "__support__/e2e/cypress";
describe("scenarios > home > homepage", () => { describe("scenarios > home > homepage", () => {
beforeEach(() => { beforeEach(() => {
...@@ -104,7 +104,7 @@ describe("scenarios > home > homepage", () => { ...@@ -104,7 +104,7 @@ describe("scenarios > home > homepage", () => {
cy.visit("/collection/root"); cy.visit("/collection/root");
cy.wait("@getCollectionItems"); cy.wait("@getCollectionItems");
getQuestionRow("Orders, Count").within(() => cy.icon("pin").click()); pinItem("Orders, Count");
cy.wait("@getCollectionItems"); cy.wait("@getCollectionItems");
cy.wait("@getQuestionQuery"); cy.wait("@getQuestionQuery");
...@@ -116,8 +116,12 @@ describe("scenarios > home > homepage", () => { ...@@ -116,8 +116,12 @@ describe("scenarios > home > homepage", () => {
}); });
}); });
const getQuestionRow = name => { const pinItem = name => {
return cy.findByText(name).closest("tr"); cy.findByText(name)
.closest("tr")
.within(() => cy.icon("ellipsis").click());
popover().within(() => cy.icon("pin").click());
}; };
const getXrayCandidates = () => [ const getXrayCandidates = () => [
......
...@@ -171,11 +171,10 @@ function bookmarkThenArchive(name) { ...@@ -171,11 +171,10 @@ function bookmarkThenArchive(name) {
} }
function pin(name) { function pin(name) {
cy.get("td") openEllipsisMenuFor(name);
.contains(name) popover().within(() => {
.closest("tr") cy.findByText("Pin this").click();
.find(".Icon-pin") });
.click();
} }
function archive(name) { function archive(name) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment