From 0532b7b1dc197f20f3bc5783b53a7c54de7af446 Mon Sep 17 00:00:00 2001 From: Oisin Coveney <oisin@metabase.com> Date: Mon, 28 Oct 2024 11:23:39 +0200 Subject: [PATCH] Move view styled components to corresponding component folders (#49140) --- .../components/view/View/View.styled.tsx | 85 ------------------- .../components/view/View/{ => View}/View.jsx | 18 ++-- .../components/view/View/View/View.styled.tsx | 21 +++++ .../components/view/View/View/index.ts | 1 + .../ViewHeaderContainer.jsx | 7 +- .../ViewHeaderContainer.styled.tsx | 18 ++++ .../ViewMainContainer/ViewMainContainer.jsx | 12 +-- .../ViewMainContainer.styled.tsx | 32 +++++++ .../ViewNativeQueryEditor.jsx | 3 +- .../ViewNativeQueryEditor.styled.tsx | 18 ++++ 10 files changed, 112 insertions(+), 103 deletions(-) delete mode 100644 frontend/src/metabase/query_builder/components/view/View/View.styled.tsx rename frontend/src/metabase/query_builder/components/view/View/{ => View}/View.jsx (92%) create mode 100644 frontend/src/metabase/query_builder/components/view/View/View/View.styled.tsx create mode 100644 frontend/src/metabase/query_builder/components/view/View/View/index.ts create mode 100644 frontend/src/metabase/query_builder/components/view/View/ViewHeaderContainer/ViewHeaderContainer.styled.tsx create mode 100644 frontend/src/metabase/query_builder/components/view/View/ViewMainContainer/ViewMainContainer.styled.tsx create mode 100644 frontend/src/metabase/query_builder/components/view/View/ViewNativeQueryEditor/ViewNativeQueryEditor.styled.tsx diff --git a/frontend/src/metabase/query_builder/components/view/View/View.styled.tsx b/frontend/src/metabase/query_builder/components/view/View/View.styled.tsx deleted file mode 100644 index c4d4978f2b5..00000000000 --- a/frontend/src/metabase/query_builder/components/view/View/View.styled.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import { css } from "@emotion/react"; -import styled from "@emotion/styled"; - -import DebouncedFrame from "metabase/components/DebouncedFrame"; -import { SyncedParametersList } from "metabase/query_builder/components/SyncedParametersList"; -import { breakpointMaxSmall } from "metabase/styled-components/theme/media-queries"; - -import { ViewTitleHeader } from "../ViewHeader"; - -export const QueryBuilderViewRoot = styled.div` - display: flex; - flex-direction: column; - background-color: var(--mb-color-bg-white); - height: 100%; - position: relative; -`; - -export const QueryBuilderContentContainer = styled.div` - display: flex; - flex: 1 0 auto; - position: relative; - - ${breakpointMaxSmall} { - justify-content: end; - } -`; - -export const QueryBuilderMain = styled.main<{ isSidebarOpen: boolean }>` - display: flex; - flex-direction: column; - flex: 1 0 auto; - flex-basis: 0; - - ${breakpointMaxSmall} { - ${props => - props.isSidebarOpen && - css` - display: none !important; - `}; - position: relative; - } -`; - -/** - * The height of the header for the query builder view. - * Currently hard coded based on the observation from the dev tools. - * It prevents the header from jumping when the notebook view is toggled. - * - * If we want to calculate this heaight based on the children of the header, - * we have to take into account the size of the buttons being used, as well as - * their line-height + font size. We should add the padding and the border to that. - * - * @link https://github.com/metabase/metabase/issues/40334 - */ -const headerHeight = "4rem"; - -export const BorderedViewTitleHeader = styled(ViewTitleHeader)` - border-bottom: 1px solid var(--mb-color-border); - padding-top: 8px; - padding-bottom: 8px; - min-height: ${headerHeight}; -`; - -export const QueryBuilderViewHeaderContainer = styled.div` - flex-shrink: 0; - background-color: var(--mb-color-bg-white); - position: relative; - z-index: 3; -`; - -export const NativeQueryEditorContainer = styled.div` - margin-bottom: 1rem; - border-bottom: 1px solid var(--mb-color-border); - z-index: 2; -`; - -export const StyledDebouncedFrame = styled(DebouncedFrame)` - flex: 1 0 auto; - flex-grow: 1; -`; - -export const StyledSyncedParametersList = styled(SyncedParametersList)` - margin-top: 1rem; - margin-left: 1.5rem; -`; diff --git a/frontend/src/metabase/query_builder/components/view/View/View.jsx b/frontend/src/metabase/query_builder/components/view/View/View/View.jsx similarity index 92% rename from frontend/src/metabase/query_builder/components/view/View/View.jsx rename to frontend/src/metabase/query_builder/components/view/View/View/View.jsx index 2d77fc00a51..221f398bc9b 100644 --- a/frontend/src/metabase/query_builder/components/view/View/View.jsx +++ b/frontend/src/metabase/query_builder/components/view/View/View/View.jsx @@ -17,20 +17,20 @@ import { rememberLastUsedDatabase, setArchivedQuestion, } from "metabase/query_builder/actions"; -import { ViewHeaderContainer } from "metabase/query_builder/components/view/View/ViewHeaderContainer/ViewHeaderContainer"; -import { ViewLeftSidebarContainer } from "metabase/query_builder/components/view/View/ViewLeftSidebarContainer/ViewLeftSidebarContainer"; -import { ViewMainContainer } from "metabase/query_builder/components/view/View/ViewMainContainer/ViewMainContainer"; -import { ViewRightSidebarContainer } from "metabase/query_builder/components/view/View/ViewRightSidebarContainer/ViewRightSidebarContainer"; import { SIDEBAR_SIZES } from "metabase/query_builder/constants"; import { MetricEditor } from "metabase/querying/metrics/components/MetricEditor"; import * as Lib from "metabase-lib"; -import DatasetEditor from "../../DatasetEditor"; -import { QueryModals } from "../../QueryModals"; -import { SavedQuestionIntroModal } from "../../SavedQuestionIntroModal"; -import ViewSidebar from "../ViewSidebar"; +import DatasetEditor from "../../../DatasetEditor"; +import { QueryModals } from "../../../QueryModals"; +import { SavedQuestionIntroModal } from "../../../SavedQuestionIntroModal"; +import ViewSidebar from "../../ViewSidebar"; +import { NotebookContainer } from "../NotebookContainer"; +import { ViewHeaderContainer } from "../ViewHeaderContainer"; +import { ViewLeftSidebarContainer } from "../ViewLeftSidebarContainer"; +import { ViewMainContainer } from "../ViewMainContainer"; +import { ViewRightSidebarContainer } from "../ViewRightSidebarContainer"; -import { NotebookContainer } from "./NotebookContainer"; import { QueryBuilderContentContainer, QueryBuilderViewRoot, diff --git a/frontend/src/metabase/query_builder/components/view/View/View/View.styled.tsx b/frontend/src/metabase/query_builder/components/view/View/View/View.styled.tsx new file mode 100644 index 00000000000..d14e9fea8b3 --- /dev/null +++ b/frontend/src/metabase/query_builder/components/view/View/View/View.styled.tsx @@ -0,0 +1,21 @@ +import styled from "@emotion/styled"; + +import { breakpointMaxSmall } from "metabase/styled-components/theme/media-queries"; + +export const QueryBuilderViewRoot = styled.div` + display: flex; + flex-direction: column; + background-color: var(--mb-color-bg-white); + height: 100%; + position: relative; +`; + +export const QueryBuilderContentContainer = styled.div` + display: flex; + flex: 1 0 auto; + position: relative; + + ${breakpointMaxSmall} { + justify-content: end; + } +`; diff --git a/frontend/src/metabase/query_builder/components/view/View/View/index.ts b/frontend/src/metabase/query_builder/components/view/View/View/index.ts new file mode 100644 index 00000000000..4c1d08c04b0 --- /dev/null +++ b/frontend/src/metabase/query_builder/components/view/View/View/index.ts @@ -0,0 +1 @@ +export * from "./View"; diff --git a/frontend/src/metabase/query_builder/components/view/View/ViewHeaderContainer/ViewHeaderContainer.jsx b/frontend/src/metabase/query_builder/components/view/View/ViewHeaderContainer/ViewHeaderContainer.jsx index d3aaad00943..06d25288e91 100644 --- a/frontend/src/metabase/query_builder/components/view/View/ViewHeaderContainer/ViewHeaderContainer.jsx +++ b/frontend/src/metabase/query_builder/components/view/View/ViewHeaderContainer/ViewHeaderContainer.jsx @@ -2,12 +2,13 @@ import { ArchivedEntityBanner } from "metabase/archive/components/ArchivedEntityBanner"; import CS from "metabase/css/core/index.css"; import NewQuestionHeader from "metabase/query_builder/components/view/NewQuestionHeader"; +import { Transition } from "metabase/ui"; +import * as Lib from "metabase-lib"; + import { BorderedViewTitleHeader, QueryBuilderViewHeaderContainer, -} from "metabase/query_builder/components/view/View/View.styled"; -import { Transition } from "metabase/ui"; -import * as Lib from "metabase-lib"; +} from "./ViewHeaderContainer.styled"; const fadeIn = { in: { opacity: 1 }, diff --git a/frontend/src/metabase/query_builder/components/view/View/ViewHeaderContainer/ViewHeaderContainer.styled.tsx b/frontend/src/metabase/query_builder/components/view/View/ViewHeaderContainer/ViewHeaderContainer.styled.tsx new file mode 100644 index 00000000000..ae8ee4bcc4a --- /dev/null +++ b/frontend/src/metabase/query_builder/components/view/View/ViewHeaderContainer/ViewHeaderContainer.styled.tsx @@ -0,0 +1,18 @@ +import styled from "@emotion/styled"; + +import { ViewTitleHeader } from "metabase/query_builder/components/view/ViewHeader"; + +const headerHeight = "4rem"; + +export const BorderedViewTitleHeader = styled(ViewTitleHeader)` + border-bottom: 1px solid var(--mb-color-border); + padding-top: 8px; + padding-bottom: 8px; + min-height: ${headerHeight}; +`; +export const QueryBuilderViewHeaderContainer = styled.div` + flex-shrink: 0; + background-color: var(--mb-color-bg-white); + position: relative; + z-index: 3; +`; diff --git a/frontend/src/metabase/query_builder/components/view/View/ViewMainContainer/ViewMainContainer.jsx b/frontend/src/metabase/query_builder/components/view/View/ViewMainContainer/ViewMainContainer.jsx index 0b0f62f038c..9a587c3567b 100644 --- a/frontend/src/metabase/query_builder/components/view/View/ViewMainContainer/ViewMainContainer.jsx +++ b/frontend/src/metabase/query_builder/components/view/View/ViewMainContainer/ViewMainContainer.jsx @@ -1,15 +1,17 @@ /* eslint-disable react/prop-types */ import CS from "metabase/css/core/index.css"; import QueryVisualization from "metabase/query_builder/components/QueryVisualization"; +import { TimeseriesChrome } from "metabase/querying/filters/components/TimeseriesChrome"; +import * as Lib from "metabase-lib"; + +import { ViewFooter } from "../../ViewFooter"; +import { ViewNativeQueryEditor } from "../ViewNativeQueryEditor"; + import { QueryBuilderMain, StyledDebouncedFrame, StyledSyncedParametersList, -} from "metabase/query_builder/components/view/View/View.styled"; -import { ViewNativeQueryEditor } from "metabase/query_builder/components/view/View/ViewNativeQueryEditor/ViewNativeQueryEditor"; -import { ViewFooter } from "metabase/query_builder/components/view/ViewFooter"; -import { TimeseriesChrome } from "metabase/querying/filters/components/TimeseriesChrome"; -import * as Lib from "metabase-lib"; +} from "./ViewMainContainer.styled"; export const ViewMainContainer = props => { const { diff --git a/frontend/src/metabase/query_builder/components/view/View/ViewMainContainer/ViewMainContainer.styled.tsx b/frontend/src/metabase/query_builder/components/view/View/ViewMainContainer/ViewMainContainer.styled.tsx new file mode 100644 index 00000000000..390e18b7b00 --- /dev/null +++ b/frontend/src/metabase/query_builder/components/view/View/ViewMainContainer/ViewMainContainer.styled.tsx @@ -0,0 +1,32 @@ +import { css } from "@emotion/react"; +import styled from "@emotion/styled"; + +import DebouncedFrame from "metabase/components/DebouncedFrame"; +import { SyncedParametersList } from "metabase/query_builder/components/SyncedParametersList"; +import { breakpointMaxSmall } from "metabase/styled-components/theme"; + +export const QueryBuilderMain = styled.main<{ + isSidebarOpen: boolean; +}>` + display: flex; + flex-direction: column; + flex: 1 0 auto; + flex-basis: 0; + + ${breakpointMaxSmall} { + ${props => + props.isSidebarOpen && + css` + display: none !important; + `}; + position: relative; + } +`; +export const StyledDebouncedFrame = styled(DebouncedFrame)` + flex: 1 0 auto; + flex-grow: 1; +`; +export const StyledSyncedParametersList = styled(SyncedParametersList)` + margin-top: 1rem; + margin-left: 1.5rem; +`; diff --git a/frontend/src/metabase/query_builder/components/view/View/ViewNativeQueryEditor/ViewNativeQueryEditor.jsx b/frontend/src/metabase/query_builder/components/view/View/ViewNativeQueryEditor/ViewNativeQueryEditor.jsx index 138daae3e6d..d74e843cca3 100644 --- a/frontend/src/metabase/query_builder/components/view/View/ViewNativeQueryEditor/ViewNativeQueryEditor.jsx +++ b/frontend/src/metabase/query_builder/components/view/View/ViewNativeQueryEditor/ViewNativeQueryEditor.jsx @@ -1,8 +1,9 @@ /* eslint-disable react/prop-types */ import NativeQueryEditor from "metabase/query_builder/components/NativeQueryEditor"; -import { NativeQueryEditorContainer } from "metabase/query_builder/components/view/View/View.styled"; import * as Lib from "metabase-lib"; +import { NativeQueryEditorContainer } from "./ViewNativeQueryEditor.styled"; + export const ViewNativeQueryEditor = props => { const { question, diff --git a/frontend/src/metabase/query_builder/components/view/View/ViewNativeQueryEditor/ViewNativeQueryEditor.styled.tsx b/frontend/src/metabase/query_builder/components/view/View/ViewNativeQueryEditor/ViewNativeQueryEditor.styled.tsx new file mode 100644 index 00000000000..da8f69d98e9 --- /dev/null +++ b/frontend/src/metabase/query_builder/components/view/View/ViewNativeQueryEditor/ViewNativeQueryEditor.styled.tsx @@ -0,0 +1,18 @@ +import styled from "@emotion/styled"; + +/** + * The height of the header for the query builder view. + * Currently hard coded based on the observation from the dev tools. + * It prevents the header from jumping when the notebook view is toggled. + * + * If we want to calculate this heaight based on the children of the header, + * we have to take into account the size of the buttons being used, as well as + * their line-height + font size. We should add the padding and the border to that. + * + * @link https://github.com/metabase/metabase/issues/40334 + */ +export const NativeQueryEditorContainer = styled.div` + margin-bottom: 1rem; + border-bottom: 1px solid var(--mb-color-border); + z-index: 2; +`; -- GitLab