From 8ce0616d60dc86a2ecd44eb04ab86b160e626fdb Mon Sep 17 00:00:00 2001 From: Kevin Ansfield Date: Thu, 6 Feb 2025 16:54:44 +0000 Subject: [PATCH] Wired up visibility settings for CTA card closes https://linear.app/ghost/issue/PLG-332 - added `useVisibilityToggle` hook to `` - passed `toggleVisibility` and `visibilityOptions` props from the hook through to `` component ready for use by `` - replaced static visibility settings in `` with `` - updated our `insertCard` e2e utility function to return a locator for the card making subsequent testing a little bit nicer --- .../src/components/ui/SettingsPanel.jsx | 2 +- .../src/components/ui/TabView.jsx | 4 +- .../src/components/ui/VisibilitySettings.jsx | 2 +- .../src/components/ui/cards/CtaCard.jsx | 51 ++++----- .../src/nodes/CallToActionNodeComponent.jsx | 6 + .../src/nodes/HtmlNodeComponent.jsx | 17 +-- .../test/e2e/cards/cta-card.test.js | 108 +++++++++++++++--- packages/koenig-lexical/test/utils/e2e.js | 2 + 8 files changed, 135 insertions(+), 57 deletions(-) diff --git a/packages/koenig-lexical/src/components/ui/SettingsPanel.jsx b/packages/koenig-lexical/src/components/ui/SettingsPanel.jsx index 7155e770c..ef1b35772 100644 --- a/packages/koenig-lexical/src/components/ui/SettingsPanel.jsx +++ b/packages/koenig-lexical/src/components/ui/SettingsPanel.jsx @@ -264,7 +264,7 @@ export function ColorPickerSetting({label, isExpanded, onSwatchChange, onPickerC document.removeEventListener('click', closePicker); }; } - }, [isExpanded]); + }, [isExpanded, onTogglePicker]); return (
diff --git a/packages/koenig-lexical/src/components/ui/TabView.jsx b/packages/koenig-lexical/src/components/ui/TabView.jsx index 73845fe6c..d2e89395d 100644 --- a/packages/koenig-lexical/src/components/ui/TabView.jsx +++ b/packages/koenig-lexical/src/components/ui/TabView.jsx @@ -29,7 +29,7 @@ const TabView = ({tabs, defaultTab, tabContent}) => { ))}
-
+
{tabContent[activeTab]}
@@ -47,4 +47,4 @@ TabView.propTypes = { tabContent: PropTypes.objectOf(PropTypes.node).isRequired }; -export {TabView}; \ No newline at end of file +export {TabView}; diff --git a/packages/koenig-lexical/src/components/ui/VisibilitySettings.jsx b/packages/koenig-lexical/src/components/ui/VisibilitySettings.jsx index feba82e26..2ca3ca2b7 100644 --- a/packages/koenig-lexical/src/components/ui/VisibilitySettings.jsx +++ b/packages/koenig-lexical/src/components/ui/VisibilitySettings.jsx @@ -15,7 +15,7 @@ export function VisibilitySettings({visibilityOptions, toggleVisibility}) { }); return ( -
+

{group.label}

{toggles} {index < visibilityOptions.length - 1 && ( diff --git a/packages/koenig-lexical/src/components/ui/cards/CtaCard.jsx b/packages/koenig-lexical/src/components/ui/cards/CtaCard.jsx index 13284ad0a..00181d3dd 100644 --- a/packages/koenig-lexical/src/components/ui/cards/CtaCard.jsx +++ b/packages/koenig-lexical/src/components/ui/cards/CtaCard.jsx @@ -8,6 +8,7 @@ import clsx from 'clsx'; import {Button} from '../Button'; import {ButtonGroupSetting, ColorOptionSetting, ColorPickerSetting, InputSetting, InputUrlSetting, MediaUploadSetting, SettingsPanel, ToggleSetting} from '../SettingsPanel'; import {ReadOnlyOverlay} from '../ReadOnlyOverlay'; +import {VisibilitySettings} from '../VisibilitySettings'; import {getAccentColor} from '../../../utils/getAccentColor'; import {textColorForBackgroundColor} from '@tryghost/color-utils'; @@ -72,6 +73,7 @@ export function CtaCard({ isEditing = false, layout = 'immersive', showButton = false, + visibilityOptions = {}, handleButtonColor = () => {}, handleColorChange = () => {}, onFileChange = () => {}, @@ -81,7 +83,8 @@ export function CtaCard({ updateButtonUrl = () => {}, updateHasSponsorLabel = () => {}, updateLayout = () => {}, - updateShowButton = () => {} + updateShowButton = () => {}, + toggleVisibility = () => {} }) { const [buttonColorPickerExpanded, setButtonColorPickerExpanded] = useState(false); @@ -193,26 +196,10 @@ export function CtaCard({ ); const visibilitySettings = ( - <> -

Web

- - - -
-

Email

- - - + ); return ( @@ -247,13 +234,13 @@ export function CtaCard({ 'block', layout === 'immersive' ? 'w-full' : 'w-16 shrink-0' )}> - Placeholder
)} @@ -279,10 +266,10 @@ export function CtaCard({ {/* Button */} { (showButton && (isEditing || (buttonText && buttonUrl))) &&
-