From a009257dc04a6b5a2fa8c233c720e1692567acc1 Mon Sep 17 00:00:00 2001 From: Nick Fitzpatrick <nick@metabase.com> Date: Mon, 29 Aug 2022 17:36:51 -0300 Subject: [PATCH] Updating remaining Funnel Viz Settings style changes (#25035) --- .../components/ChartSettings.jsx | 4 +-- .../components/ChartSettingsWidget.styled.tsx | 9 ++++--- .../components/ChartSettingsWidget.tsx | 3 +++ .../settings/ChartSettingFieldPicker.jsx | 25 +++++++++++------- .../ChartSettingFieldPicker.styled.tsx | 26 +++++++++++++++++++ .../ChartSettingOrderedRows.styled.tsx | 2 +- .../components/settings/ColumnItem.jsx | 2 +- .../components/settings/ColumnItem.styled.tsx | 5 ++-- .../visualizations/visualizations/Funnel.jsx | 3 ++- 9 files changed, 58 insertions(+), 21 deletions(-) diff --git a/frontend/src/metabase/visualizations/components/ChartSettings.jsx b/frontend/src/metabase/visualizations/components/ChartSettings.jsx index ce18201b7d4..c0f3b046fed 100644 --- a/frontend/src/metabase/visualizations/components/ChartSettings.jsx +++ b/frontend/src/metabase/visualizations/components/ChartSettings.jsx @@ -297,10 +297,10 @@ class ChartSettings extends Component { return ( <div className={cx(className, "flex flex-column")}> {showSectionPicker && ( - <div className="flex flex-no-shrink pl4 pt2 pb1">{sectionPicker}</div> + <div className="flex flex-no-shrink pl4 pb1">{sectionPicker}</div> )} {noPreview ? ( - <div className="full-height relative scroll-y scroll-show pt3 pb4"> + <div className="full-height relative scroll-y scroll-show pt2 pb4"> {widgetList} </div> ) : ( diff --git a/frontend/src/metabase/visualizations/components/ChartSettingsWidget.styled.tsx b/frontend/src/metabase/visualizations/components/ChartSettingsWidget.styled.tsx index ddb6d177ae6..850fd1bef75 100644 --- a/frontend/src/metabase/visualizations/components/ChartSettingsWidget.styled.tsx +++ b/frontend/src/metabase/visualizations/components/ChartSettingsWidget.styled.tsx @@ -11,12 +11,13 @@ export const Root = styled.div<{ disabled?: boolean; noPadding?: boolean; inline?: boolean; + marginBottom?: string; }>` ${props => !props.noPadding && css` - margin-left: 2em; - margin-right: 2em; + margin-left: 2rem; + margin-right: 2rem; `} ${props => @@ -28,7 +29,7 @@ export const Root = styled.div<{ ${props => !props.hidden && css` - margin-bottom: 1.5em; + margin-bottom: ${props.marginBottom || "1.5em"}; `} ${props => @@ -64,7 +65,7 @@ export const Root = styled.div<{ export const Title = styled.label<VariantProp>` display: flex; align-items: center; - margin-bottom: 0.5em; + margin-bottom: 1rem; ${props => props.variant === "default" && diff --git a/frontend/src/metabase/visualizations/components/ChartSettingsWidget.tsx b/frontend/src/metabase/visualizations/components/ChartSettingsWidget.tsx index 721e0e489f6..c3ef96bd4a9 100644 --- a/frontend/src/metabase/visualizations/components/ChartSettingsWidget.tsx +++ b/frontend/src/metabase/visualizations/components/ChartSettingsWidget.tsx @@ -17,6 +17,7 @@ type Props = { disabled?: boolean; widget?: React.ComponentType; inline?: boolean; + marginBottom?: string; props?: Record<string, unknown>; noPadding?: boolean; variant?: "default" | "form-field"; @@ -30,6 +31,7 @@ const ChartSettingsWidget = ({ disabled, variant = "default", inline = false, + marginBottom = undefined, widget: Widget, props, // disables X padding for certain widgets so divider line extends to edge @@ -47,6 +49,7 @@ const ChartSettingsWidget = ({ disabled={disabled} className={cx({ "Form-field": isFormField })} inline={inline} + marginBottom={marginBottom} > {title && ( <Title variant={variant} className={cx({ "Form-label": isFormField })}> diff --git a/frontend/src/metabase/visualizations/components/settings/ChartSettingFieldPicker.jsx b/frontend/src/metabase/visualizations/components/settings/ChartSettingFieldPicker.jsx index 0ad2ecd25bb..ccb130f3818 100644 --- a/frontend/src/metabase/visualizations/components/settings/ChartSettingFieldPicker.jsx +++ b/frontend/src/metabase/visualizations/components/settings/ChartSettingFieldPicker.jsx @@ -1,11 +1,13 @@ /* eslint-disable react/prop-types */ import React from "react"; import { t } from "ttag"; -import cx from "classnames"; import _ from "underscore"; import { keyForColumn } from "metabase/lib/dataset"; import ChartSettingSelect from "./ChartSettingSelect"; -import { SettingsIcon } from "./ChartSettingFieldPicker.styled"; +import { + SettingsIcon, + ChartSettingFieldPickerRoot, +} from "./ChartSettingFieldPicker.styled"; const ChartSettingFieldPicker = ({ value, @@ -25,7 +27,7 @@ const ChartSettingFieldPicker = ({ } } return ( - <div className={cx(className, "flex align-center")}> + <ChartSettingFieldPickerRoot className={className}> <ChartSettingSelect className="flex-full" value={value} @@ -34,10 +36,11 @@ const ChartSettingFieldPicker = ({ placeholder={t`Select a field`} placeholderNoOptions={t`No valid fields`} isInitiallyOpen={value === undefined} + hiddenIcons /> {columnKey && ( <SettingsIcon - name="gear" + name="ellipsis" onClick={() => { onShowWidget({ id: "column_settings", @@ -48,12 +51,14 @@ const ChartSettingFieldPicker = ({ }} /> )} - <SettingsIcon - data-testid={`remove-${value}`} - name="close" - onClick={onRemove} - /> - </div> + {onRemove && ( + <SettingsIcon + data-testid={`remove-${value}`} + name="close" + onClick={onRemove} + /> + )} + </ChartSettingFieldPickerRoot> ); }; diff --git a/frontend/src/metabase/visualizations/components/settings/ChartSettingFieldPicker.styled.tsx b/frontend/src/metabase/visualizations/components/settings/ChartSettingFieldPicker.styled.tsx index 5fa69d757a1..bf7a25ccd2e 100644 --- a/frontend/src/metabase/visualizations/components/settings/ChartSettingFieldPicker.styled.tsx +++ b/frontend/src/metabase/visualizations/components/settings/ChartSettingFieldPicker.styled.tsx @@ -1,6 +1,32 @@ import styled from "@emotion/styled"; import { color } from "metabase/lib/colors"; import Icon from "metabase/components/Icon"; +import SelectButton from "metabase/core/components/SelectButton"; + +export const ChartSettingFieldPickerRoot = styled.div` + display: flex; + align-items: center; + border: 1px solid ${color("border")}; + border-radius: 0.5rem; + padding-right: 1rem; + + ${SelectButton.Root} { + border: none; + padding: 0.75rem; + } + + ${SelectButton.Icon} { + margin-left: 0; + color: ${color("text-dark")}; + height: 0.625rem; + } + + ${SelectButton.Content} { + font-size: 0.875rem; + line-height: 1rem; + margin-right: 0.25rem; + } +`; export const SettingsIcon = styled(Icon)` margin-left: 0.5rem; diff --git a/frontend/src/metabase/visualizations/components/settings/ChartSettingOrderedRows.styled.tsx b/frontend/src/metabase/visualizations/components/settings/ChartSettingOrderedRows.styled.tsx index a3ba39815dc..a6f4691d331 100644 --- a/frontend/src/metabase/visualizations/components/settings/ChartSettingOrderedRows.styled.tsx +++ b/frontend/src/metabase/visualizations/components/settings/ChartSettingOrderedRows.styled.tsx @@ -2,7 +2,7 @@ import styled from "@emotion/styled"; import { color } from "metabase/lib/colors"; export const ChartSettingOrderedRowsRoot = styled.div` - margin-left: 0.5rem; + margin-left: 1rem; `; export const ChartSettingMessage = styled.div` diff --git a/frontend/src/metabase/visualizations/components/settings/ColumnItem.jsx b/frontend/src/metabase/visualizations/components/settings/ColumnItem.jsx index 448d7d9b103..1347d807e31 100644 --- a/frontend/src/metabase/visualizations/components/settings/ColumnItem.jsx +++ b/frontend/src/metabase/visualizations/components/settings/ColumnItem.jsx @@ -31,7 +31,7 @@ const ColumnItem = ({ }) => ( <ColumnItemRoot draggable={draggable} onClick={onClick}> <ColumnItemContainer> - {draggable && <ColumnItemDragHandle name="grabber2" />} + {draggable && <ColumnItemDragHandle name="grabber2" size={12} />} <ColumnItemContent> <ColumnItemSpan>{title}</ColumnItemSpan> {onEdit && <ActionIcon icon="ellipsis" onClick={onEdit} />} diff --git a/frontend/src/metabase/visualizations/components/settings/ColumnItem.styled.tsx b/frontend/src/metabase/visualizations/components/settings/ColumnItem.styled.tsx index 46579b6a2a3..a6b4c7c0680 100644 --- a/frontend/src/metabase/visualizations/components/settings/ColumnItem.styled.tsx +++ b/frontend/src/metabase/visualizations/components/settings/ColumnItem.styled.tsx @@ -35,14 +35,14 @@ export const ColumnItemSpan = styled.span` word-wrap: anywhere; font-weight: 700; margin: 0; - font-size: 0.75rem; + font-size: 0.875rem; line-height: 1rem; flex: auto; color: ${color("text-dark")}; `; export const ColumnItemContent = styled.div` - padding: 0 0.625rem; + padding: 0 0.5rem; position: relative; align-items: center; display: flex; @@ -54,6 +54,7 @@ export const ColumnItemContainer = styled.div` position: relative; flex: auto; display: flex; + align-items: center; `; export const ColumnItemIcon = styled(Icon)` diff --git a/frontend/src/metabase/visualizations/visualizations/Funnel.jsx b/frontend/src/metabase/visualizations/visualizations/Funnel.jsx index a83aa133d88..bc512b4c1e8 100644 --- a/frontend/src/metabase/visualizations/visualizations/Funnel.jsx +++ b/frontend/src/metabase/visualizations/visualizations/Funnel.jsx @@ -106,10 +106,11 @@ export default class Funnel extends Component { ...columnSettings({ hidden: true }), ...dimensionSetting("funnel.dimension", { section: t`Data`, - title: t`Step`, + title: t`Column with steps`, dashboard: false, useRawSeries: true, showColumnSetting: true, + marginBottom: "0.625rem", }), "funnel.rows": { section: t`Data`, -- GitLab