From 2a9766fc76e4d2221a3a99f3b130707e5b941fc6 Mon Sep 17 00:00:00 2001
From: Philipp Stracker
Date: Mon, 9 Dec 2024 14:43:27 +0100
Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Reuse=20the=20generic=20Ac?=
=?UTF-8?q?cordion=20for=20settings?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../css/components/screens/_settings.scss | 29 +-------
.../screens/settings/_block-accordion.scss | 38 ++++++++++
.../SettingsBlocks/AccordionSettingsBlock.js | 69 +++++++------------
3 files changed, 63 insertions(+), 73 deletions(-)
create mode 100644 modules/ppcp-settings/resources/css/components/screens/settings/_block-accordion.scss
diff --git a/modules/ppcp-settings/resources/css/components/screens/_settings.scss b/modules/ppcp-settings/resources/css/components/screens/_settings.scss
index 8cf4fe593..b98a5f7e1 100644
--- a/modules/ppcp-settings/resources/css/components/screens/_settings.scss
+++ b/modules/ppcp-settings/resources/css/components/screens/_settings.scss
@@ -1,3 +1,5 @@
+@import "./settings/block-accordion";
+
// Container and Tab Settings
.ppcp-r-tabs.settings,
.ppcp-r-container--settings {
@@ -275,7 +277,6 @@
align-items: center;
}
- &.ppcp-r-settings-block__accordion,
&.ppcp-r-settings-block__feature {
.ppcp-r-settings-block__title {
@include font(13, 20, 600);
@@ -283,11 +284,6 @@
text-transform: none;
}
- .ppcp-r-settings-block--accordion__title {
- @include font(14, 20, 600);
- }
-
- .ppcp-r-settings-block--accordion__description,
.ppcp-r-settings-block__feature__description {
color: $color-gray-700;
@include font(13, 20, 400);
@@ -524,27 +520,6 @@
}
}
-.ppcp-r-settings-block__accordion {
- .ppcp-r-settings-block--accordion__header {
- gap: 4px;
- }
-
- &.ppcp-r-settings-block--content-visible .ppcp-r-settings-block--accordion__header {
- margin-bottom: 24px;
- }
-
- &.ppcp-r-settings-block {
- gap: 0;
- .ppcp-r-settings-block:not(:last-child) {
- &:not(.ppcp-r__radio-content-additional .ppcp-r-settings-block) {
- padding-bottom: 32px;
- margin-bottom: 32px;
- border-bottom: 1px solid $color-divider;
- }
- }
- }
-}
-
.ppcp-r-settings-block--toggle-content {
.ppcp-r-settings-block__content {
margin-top: 32px;
diff --git a/modules/ppcp-settings/resources/css/components/screens/settings/_block-accordion.scss b/modules/ppcp-settings/resources/css/components/screens/settings/_block-accordion.scss
new file mode 100644
index 000000000..c77a3eb91
--- /dev/null
+++ b/modules/ppcp-settings/resources/css/components/screens/settings/_block-accordion.scss
@@ -0,0 +1,38 @@
+.ppcp-r-settings-block__accordion {
+ > .ppcp-r-accordion {
+ width: 100%;
+
+ .ppcp-r-accordion__toggler {
+ width: 100%;
+ margin: 0;
+ text-align: unset;
+ }
+ }
+
+ &.ppcp-r-settings-block {
+ gap: 0;
+
+ .ppcp-r-settings-block__title {
+ @include font(13, 20, 600);
+ color: $color-text-text;
+ text-transform: none;
+ }
+
+ .ppcp-r-settings-block--accordion__title {
+ @include font(14, 20, 600);
+ }
+
+ .ppcp-r-settings-block--accordion__description {
+ color: $color-gray-700;
+ @include font(13, 20, 400);
+ }
+
+ .ppcp-r-settings-block:not(:last-child) {
+ &:not(.ppcp-r__radio-content-additional .ppcp-r-settings-block) {
+ padding-bottom: 32px;
+ margin-bottom: 32px;
+ border-bottom: 1px solid $color-divider;
+ }
+ }
+ }
+}
diff --git a/modules/ppcp-settings/resources/js/Components/ReusableComponents/SettingsBlocks/AccordionSettingsBlock.js b/modules/ppcp-settings/resources/js/Components/ReusableComponents/SettingsBlocks/AccordionSettingsBlock.js
index a39585ca9..8a953c805 100644
--- a/modules/ppcp-settings/resources/js/Components/ReusableComponents/SettingsBlocks/AccordionSettingsBlock.js
+++ b/modules/ppcp-settings/resources/js/Components/ReusableComponents/SettingsBlocks/AccordionSettingsBlock.js
@@ -1,5 +1,4 @@
-import { useState } from '@wordpress/element';
-import data from '../../../utils/data';
+import Accordion from '../AccordionSection';
import SettingsBlock from './SettingsBlock';
import {
Header,
@@ -9,48 +8,26 @@ import {
TitleWrapper,
} from './SettingsBlockElements';
-const AccordionSettingsBlock = ( { title, description, ...props } ) => {
- const [ isVisible, setIsVisible ] = useState( false );
+const SettingsAccordion = ( { title, description, children, ...props } ) => (
+ (
+
+ { children }
+
+ ),
+ ] }
+ />
+);
- return (
- (
- <>
-
-
-
- { title }
-
-
-
- setIsVisible( ! isVisible )
- }
- >
- { data().getImage(
- 'icon-arrow-down.svg'
- ) }
-
-
-
-
- { description }
-
-
- { isVisible && props.children && (
- <>{ props.children }>
- ) }
- >
- ),
- ] }
- />
- );
-};
-
-export default AccordionSettingsBlock;
+export default SettingsAccordion;