From 976de66801d92183bd961bcf75621f3f352bd438 Mon Sep 17 00:00:00 2001
From: Oisin Coveney <oisin@metabase.com>
Date: Fri, 30 Aug 2024 13:12:09 +0300
Subject: [PATCH] Remove ButtonBar (#47212)

---
 .../components/ButtonBar/ButtonBar.styled.tsx | 37 --------------
 .../components/ButtonBar/ButtonBar.tsx        | 49 -------------------
 .../metabase/components/ButtonBar/index.tsx   |  2 -
 .../components/view/ViewFooter/ViewFooter.tsx | 29 ++++++-----
 4 files changed, 14 insertions(+), 103 deletions(-)
 delete mode 100644 frontend/src/metabase/components/ButtonBar/ButtonBar.styled.tsx
 delete mode 100644 frontend/src/metabase/components/ButtonBar/ButtonBar.tsx
 delete mode 100644 frontend/src/metabase/components/ButtonBar/index.tsx

diff --git a/frontend/src/metabase/components/ButtonBar/ButtonBar.styled.tsx b/frontend/src/metabase/components/ButtonBar/ButtonBar.styled.tsx
deleted file mode 100644
index 858377d6534..00000000000
--- a/frontend/src/metabase/components/ButtonBar/ButtonBar.styled.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-import styled from "@emotion/styled";
-import type { ReactNode } from "react";
-
-export const ButtonBarRoot = styled.div`
-  display: flex;
-  align-items: center;
-`;
-
-export interface ButtonBarLeftProps {
-  center?: ReactNode;
-}
-
-export const ButtonBarLeft = styled.div<ButtonBarLeftProps>`
-  display: flex;
-  flex: ${props => (props.center ? "1 0 0" : "")};
-  justify-content: flex-start;
-  align-items: center;
-  margin-right: ${props => (props.center ? "" : "auto")};
-`;
-
-export const ButtonBarCenter = styled.div`
-  display: flex;
-  align-items: center;
-`;
-
-export interface ButtonBarRightProps {
-  center?: ReactNode;
-}
-
-export const ButtonBarRight = styled.div<ButtonBarRightProps>`
-  display: flex;
-  flex: ${props => (props.center ? "1 0 0" : "")};
-  gap: 1rem;
-  justify-content: flex-end;
-  align-items: center;
-  margin-left: ${props => (props.center ? "" : "auto")};
-`;
diff --git a/frontend/src/metabase/components/ButtonBar/ButtonBar.tsx b/frontend/src/metabase/components/ButtonBar/ButtonBar.tsx
deleted file mode 100644
index d201254983e..00000000000
--- a/frontend/src/metabase/components/ButtonBar/ButtonBar.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-import type { HTMLAttributes, ReactNode } from "react";
-import { Children } from "react";
-
-import {
-  ButtonBarCenter,
-  ButtonBarLeft,
-  ButtonBarRight,
-  ButtonBarRoot,
-} from "./ButtonBar.styled";
-
-function normalizeArray(array?: ReactNode) {
-  if (Array.isArray(array)) {
-    array = array.filter(a => a);
-    if (Array.isArray(array) && array.length === 0) {
-      array = null;
-    } else {
-      array = Children.toArray(array);
-    }
-  }
-  return array;
-}
-
-interface ButtonBarProps extends HTMLAttributes<HTMLDivElement> {
-  left?: ReactNode;
-  right?: ReactNode;
-  center?: ReactNode;
-  children?: ReactNode;
-}
-
-// eslint-disable-next-line import/no-default-export -- deprecated usage
-export default function ButtonBar({
-  children,
-  left = children,
-  center,
-  right,
-  ...props
-}: ButtonBarProps) {
-  left = normalizeArray(left);
-  center = normalizeArray(center);
-  right = normalizeArray(right);
-
-  return (
-    <ButtonBarRoot {...props}>
-      <ButtonBarLeft center={center}>{left}</ButtonBarLeft>
-      {center && <ButtonBarCenter>{center}</ButtonBarCenter>}
-      <ButtonBarRight center={center}>{right}</ButtonBarRight>
-    </ButtonBarRoot>
-  );
-}
diff --git a/frontend/src/metabase/components/ButtonBar/index.tsx b/frontend/src/metabase/components/ButtonBar/index.tsx
deleted file mode 100644
index ddc600eb154..00000000000
--- a/frontend/src/metabase/components/ButtonBar/index.tsx
+++ /dev/null
@@ -1,2 +0,0 @@
-// eslint-disable-next-line import/no-default-export -- deprecated usage
-export { default } from "./ButtonBar";
diff --git a/frontend/src/metabase/query_builder/components/view/ViewFooter/ViewFooter.tsx b/frontend/src/metabase/query_builder/components/view/ViewFooter/ViewFooter.tsx
index 81dd57f5787..67c06afe2df 100644
--- a/frontend/src/metabase/query_builder/components/view/ViewFooter/ViewFooter.tsx
+++ b/frontend/src/metabase/query_builder/components/view/ViewFooter/ViewFooter.tsx
@@ -1,9 +1,9 @@
 import cx from "classnames";
 
-import ButtonBar from "metabase/components/ButtonBar";
 import CS from "metabase/css/core/index.css";
 import { useSelector } from "metabase/lib/redux";
 import { getIsVisualized } from "metabase/query_builder/selectors";
+import { Group } from "metabase/ui";
 import * as Lib from "metabase-lib";
 
 import { ViewFooterRoot } from "../ViewFooter.styled";
@@ -56,13 +56,12 @@ export const ViewFooter = ({
 
   return (
     <ViewFooterRoot
-      className={cx(className, CS.textMedium, CS.borderTop)}
+      className={cx(className, CS.textMedium, CS.borderTop, CS.fullWidth)}
       data-testid="view-footer"
     >
-      <ButtonBar
-        className={CS.flexFull}
-        left={
-          !hideChartSettings && (
+      <Group position="apart" pos="relative" noWrap w="100%">
+        <Group className={CS.flex1}>
+          {!hideChartSettings && (
             <LeftViewFooterButtonGroup
               isShowingChartTypeSidebar={isShowingChartTypeSidebar}
               isShowingChartSettingsSidebar={isShowingChartSettingsSidebar}
@@ -71,18 +70,18 @@ export const ViewFooter = ({
               onCloseChartSettings={onCloseChartSettings}
               onOpenChartSettings={onOpenChartSettings}
             />
-          )
-        }
-        center={
-          isVisualized && (
+          )}
+        </Group>
+        {isVisualized && (
+          <Group>
             <CenterViewFooterButtonGroup
               setUIControls={setUIControls}
               question={question}
               isShowingRawTable={isShowingRawTable}
             />
-          )
-        }
-        right={
+          </Group>
+        )}
+        <Group noWrap>
           <RightViewFooterButtonGroup
             question={question}
             result={result}
@@ -93,8 +92,8 @@ export const ViewFooter = ({
             onOpenTimelines={onOpenTimelines}
             onCloseTimelines={onCloseTimelines}
           />
-        }
-      />
+        </Group>
+      </Group>
     </ViewFooterRoot>
   );
 };
-- 
GitLab