From 6e8188bcc9681a394af36a634dd07df2730676a7 Mon Sep 17 00:00:00 2001 From: Ryan Laurie <30528226+iethree@users.noreply.github.com> Date: Mon, 20 Feb 2023 16:07:00 -0700 Subject: [PATCH] Add action parameter mapping explainer text (#28391) * add parameter mapping explainer text * update link * use styled component link * update actiondashcardSettings tests --- .../ActionDashcardSettings.styled.tsx | 16 ++++++++++++++++ .../ActionViz/ActionDashcardSettings.tsx | 18 +++++++++++++++++- .../ActionDashcardSettings.unit.spec.tsx | 9 +++++---- .../ActionViz/ActionParameterMapper.styled.tsx | 5 ----- .../ActionViz/ActionParameterMapper.tsx | 5 ++--- 5 files changed, 40 insertions(+), 13 deletions(-) diff --git a/frontend/src/metabase/actions/components/ActionViz/ActionDashcardSettings.styled.tsx b/frontend/src/metabase/actions/components/ActionViz/ActionDashcardSettings.styled.tsx index 1228c42488c..3078b242b97 100644 --- a/frontend/src/metabase/actions/components/ActionViz/ActionDashcardSettings.styled.tsx +++ b/frontend/src/metabase/actions/components/ActionViz/ActionDashcardSettings.styled.tsx @@ -3,6 +3,8 @@ import styled from "@emotion/styled"; import { space } from "metabase/styled-components/theme"; import { color } from "metabase/lib/colors"; +import Link from "metabase/core/components/Link"; + export const ActionSettingsWrapper = styled.div` display: flex; height: 80vh; @@ -14,6 +16,7 @@ export const ActionSettingsHeader = styled.h2` font-size: 1.25rem; padding-bottom: ${space(1)}; padding-left: ${space(3)}; + padding-right: ${space(3)}; `; // make strolling nicer by fading out the top and bottom of the column @@ -51,6 +54,7 @@ export const ActionSettingsLeft = styled.div` `; export const ActionSettingsRight = styled.div` + max-width: 30rem; display: flex; flex: 1; flex-direction: column; @@ -77,3 +81,15 @@ export const ModalActions = styled.div` padding: 1rem; border-top: 1px solid ${color("border")}; `; + +export const ExplainerText = styled.p` + margin-left: ${space(3)}; + margin-right: ${space(3)}; + + color: ${color("text-medium")}; +`; + +export const BrandLinkWithLeftMargin = styled(Link)` + margin-left: ${space(1)}; + color: ${color("brand")}; +`; diff --git a/frontend/src/metabase/actions/components/ActionViz/ActionDashcardSettings.tsx b/frontend/src/metabase/actions/components/ActionViz/ActionDashcardSettings.tsx index 46b16369f4a..5372c3c9ebc 100644 --- a/frontend/src/metabase/actions/components/ActionViz/ActionDashcardSettings.tsx +++ b/frontend/src/metabase/actions/components/ActionViz/ActionDashcardSettings.tsx @@ -22,6 +22,8 @@ import { ActionSettingsLeft, ActionSettingsRight, ModalActions, + ExplainerText, + BrandLinkWithLeftMargin, } from "./ActionDashcardSettings.styled"; const mapDispatchToProps = { @@ -50,6 +52,8 @@ export function ActionDashcardSettings({ setActionForDashcard(dashcard, newAction); }; + const hasParameters = !!action?.parameters?.length; + return ( <ActionSettingsWrapper> <ActionSettingsLeft> @@ -59,7 +63,19 @@ export function ActionDashcardSettings({ <ActionSettingsRight> {action ? ( <> - <ActionSettingsHeader>{action.name}</ActionSettingsHeader> + {hasParameters && ( + <> + <ActionSettingsHeader> + {t`Where should the values for '${action.name}' come from?`} + </ActionSettingsHeader> + <ExplainerText> + {t`You can either ask users to enter values, or use the value of a dashboard filter.`} + <BrandLinkWithLeftMargin to="https://www.metabase.com/docs/actions/custom"> + {t`Learn more.`} + </BrandLinkWithLeftMargin> + </ExplainerText> + </> + )} <ParameterMapperContainer> <ConnectedActionParameterMappingForm dashcard={dashcard} diff --git a/frontend/src/metabase/actions/components/ActionViz/ActionDashcardSettings.unit.spec.tsx b/frontend/src/metabase/actions/components/ActionViz/ActionDashcardSettings.unit.spec.tsx index 8297773d62f..d42a9064f37 100644 --- a/frontend/src/metabase/actions/components/ActionViz/ActionDashcardSettings.unit.spec.tsx +++ b/frontend/src/metabase/actions/components/ActionViz/ActionDashcardSettings.unit.spec.tsx @@ -1,7 +1,7 @@ import React from "react"; import userEvent from "@testing-library/user-event"; import nock from "nock"; -import { renderWithProviders, screen, waitFor } from "__support__/ui"; +import { renderWithProviders, screen } from "__support__/ui"; import { setupActionEndpoints, @@ -149,9 +149,10 @@ describe("ActionViz > ActionDashcardSettings", () => { }); // action name should be visible in library and parameter mapper - await waitFor(() => - expect(screen.getAllByText("Action Trois")).toHaveLength(2), - ); + expect(await screen.findByText("Action Trois")).toBeInTheDocument(); + expect( + await screen.findByText(/the values for 'Action Trois'/i), + ).toBeInTheDocument(); }); it("shows parameters for an action", async () => { diff --git a/frontend/src/metabase/actions/components/ActionViz/ActionParameterMapper.styled.tsx b/frontend/src/metabase/actions/components/ActionViz/ActionParameterMapper.styled.tsx index 23d93aa3b46..dc7747d9d73 100644 --- a/frontend/src/metabase/actions/components/ActionViz/ActionParameterMapper.styled.tsx +++ b/frontend/src/metabase/actions/components/ActionViz/ActionParameterMapper.styled.tsx @@ -3,11 +3,6 @@ import styled from "@emotion/styled"; import { space } from "metabase/styled-components/theme"; import { color } from "metabase/lib/colors"; -export const ParameterMapperContainer = styled.div` - min-width: 15rem; - max-width: 25rem; -`; - export const ParameterFormSection = styled.div` margin-top: ${space(2)}; `; diff --git a/frontend/src/metabase/actions/components/ActionViz/ActionParameterMapper.tsx b/frontend/src/metabase/actions/components/ActionViz/ActionParameterMapper.tsx index 10e4085fdd5..8051feb0174 100644 --- a/frontend/src/metabase/actions/components/ActionViz/ActionParameterMapper.tsx +++ b/frontend/src/metabase/actions/components/ActionViz/ActionParameterMapper.tsx @@ -23,7 +23,6 @@ import EmptyState from "metabase/components/EmptyState"; import type Question from "metabase-lib/Question"; import { - ParameterMapperContainer, ParameterFormSection, ParameterFormLabel, } from "./ActionParameterMapper.styled"; @@ -83,7 +82,7 @@ export const ActionParameterMappingForm = ({ ); return ( - <ParameterMapperContainer> + <div> {actionParameters.map((actionParam: WritebackParameter) => ( <ParameterFormSection key={actionParam.id}> <ParameterFormLabel> @@ -108,7 +107,7 @@ export const ActionParameterMappingForm = ({ {actionParameters.length === 0 && ( <EmptyState message={t`This action has no parameters to map`} /> )} - </ParameterMapperContainer> + </div> ); }; -- GitLab