start components

This commit is contained in:
paul sealock 2024-05-29 15:41:08 +12:00
parent 410904fc5b
commit cbe8bfae63
6 changed files with 61 additions and 5 deletions

View File

@ -0,0 +1,17 @@
/**
* External dependencies
*/
import { CheckboxControl } from '@wordpress/components';
export const SettingsCheckbox = ( { setting } ) => {
return (
<div>
<h3>{ setting.title }</h3>
<CheckboxControl
label={ setting.desc }
onChange={ () => console.log( 'change' ) }
selected={ true }
/>
</div>
);
};

View File

@ -0,0 +1 @@
export { SettingsCheckbox } from './checkbox';

View File

@ -0,0 +1,28 @@
/**
* Internal dependencies
*/
import { SettingsCheckbox } from './components';
export const Content = ( { data } ) => {
const { settings } = data;
return (
<div>
{ settings.map( ( setting ) => {
switch ( setting.type ) {
case 'title':
return null;
case 'checkbox':
return (
<SettingsCheckbox
setting={ setting }
key={ setting.id }
/>
);
default:
return null;
}
} ) }
</div>
);
};

View File

@ -1,17 +1,19 @@
/** /**
* External dependencies * External dependencies
*/ */
import { useState } from '@wordpress/element'; import { getQuery } from '@woocommerce/navigation';
/** /**
* Internal dependencies * Internal dependencies
*/ */
import { Tabs } from './tabs'; import { Tabs } from './tabs';
import { SectionNav } from './section-nav'; import { SectionNav } from './section-nav';
import { Content } from './content';
import './style.scss'; import './style.scss';
const Settings = ( { params } ) => { const Settings = ( { params } ) => {
const settingsData = window.wcSettings?.admin?.settingsPages; const settingsData = window.wcSettings?.admin?.settingsPages;
const { section } = getQuery();
if ( ! settingsData ) { if ( ! settingsData ) {
return <div>Error getting data</div>; return <div>Error getting data</div>;
@ -22,10 +24,17 @@ const Settings = ( { params } ) => {
<Tabs data={ settingsData } page={ params.page }> <Tabs data={ settingsData } page={ params.page }>
<div className="woocommerce-settings-layout"> <div className="woocommerce-settings-layout">
<div className="woocommerce-settings-section-nav"> <div className="woocommerce-settings-section-nav">
<SectionNav data={ settingsData[ params.page ] } /> <SectionNav
data={ settingsData[ params.page ] }
section={ section }
/>
</div> </div>
<div className="woocommerce-settings-content"> <div className="woocommerce-settings-content">
<p>Content here</p> <Content
data={
settingsData[ params.page ].sections[ section ]
}
/>
</div> </div>
</div> </div>
</Tabs> </Tabs>

View File

@ -9,10 +9,9 @@ import {
import { getNewPath, navigateTo, getQuery } from '@woocommerce/navigation'; import { getNewPath, navigateTo, getQuery } from '@woocommerce/navigation';
import classnames from 'classnames'; import classnames from 'classnames';
export const SectionNav = ( { data } ) => { export const SectionNav = ( { data, section } ) => {
const { sections } = data; const { sections } = data;
const sectionKeys = Object.keys( sections ); const sectionKeys = Object.keys( sections );
const { section } = getQuery();
if ( sectionKeys.length === 1 ) { if ( sectionKeys.length === 1 ) {
return null; return null;

View File

@ -54,6 +54,8 @@ class Settings {
return $settings; return $settings;
} }
// TODO: change so its only being added on Settings page, otherwise bail.
$setting_pages = \WC_Admin_Settings::get_settings_pages(); $setting_pages = \WC_Admin_Settings::get_settings_pages();
$pages = array(); $pages = array();
foreach ( $setting_pages as $setting_page ) { foreach ( $setting_pages as $setting_page ) {