From 4ecd07b453e85ccbd51c28208a64b1a4749bb6e9 Mon Sep 17 00:00:00 2001 From: Philipp Stracker Date: Thu, 13 Feb 2025 16:22:40 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=9A=20Rename=20UI=20hook=20to=20make?= =?UTF-8?q?=20it=20more=20generic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/ReusableComponents/AccordionSection.js | 4 ++-- .../hooks/{useAccordionState.js => useToggleState.js} | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) rename modules/ppcp-settings/resources/js/hooks/{useAccordionState.js => useToggleState.js} (56%) diff --git a/modules/ppcp-settings/resources/js/Components/ReusableComponents/AccordionSection.js b/modules/ppcp-settings/resources/js/Components/ReusableComponents/AccordionSection.js index 44c5beb27..379a16580 100644 --- a/modules/ppcp-settings/resources/js/Components/ReusableComponents/AccordionSection.js +++ b/modules/ppcp-settings/resources/js/Components/ReusableComponents/AccordionSection.js @@ -2,7 +2,7 @@ import { Icon } from '@wordpress/components'; import { chevronDown, chevronUp } from '@wordpress/icons'; import classNames from 'classnames'; -import { useAccordionState } from '../../hooks/useAccordionState'; +import { useToggleState } from '../../hooks/useToggleState'; import { Content, Description, @@ -21,7 +21,7 @@ const Accordion = ( { children = null, className = '', } ) => { - const { isOpen, toggleOpen } = useAccordionState( { id, initiallyOpen } ); + const { isOpen, toggleOpen } = useToggleState( { id, initiallyOpen } ); const wrapperClasses = classNames( 'ppcp-r-accordion', className, { 'ppcp--is-open': isOpen, } ); diff --git a/modules/ppcp-settings/resources/js/hooks/useAccordionState.js b/modules/ppcp-settings/resources/js/hooks/useToggleState.js similarity index 56% rename from modules/ppcp-settings/resources/js/hooks/useAccordionState.js rename to modules/ppcp-settings/resources/js/hooks/useToggleState.js index f54018262..bc1ad0e98 100644 --- a/modules/ppcp-settings/resources/js/hooks/useAccordionState.js +++ b/modules/ppcp-settings/resources/js/hooks/useToggleState.js @@ -11,7 +11,16 @@ const determineInitialState = ( id, initiallyOpen ) => { return checkIfCurrentTab( id ); }; -export function useAccordionState( { id = '', initiallyOpen = null } ) { +/** + * Allows managing a toggle-able component, such as an accordion or a modal dialog. + * + * @param {Object} props + * @param {string} props.id - Optional, if provided, the toggle can be opened via the URL. + * @param {null|boolean} props.initiallyOpen - Optional. If provided, it defines the initial open state. + * If omitted, the initial open state is determined by using the "id" logic (inspecting the URL). + * @return {{isOpen: unknown, toggleOpen: (function(*): boolean)}} Hook object. + */ +export function useToggleState( { id = '', initiallyOpen = null } ) { const [ isOpen, setIsOpen ] = useState( determineInitialState( id, initiallyOpen ) );