From 2e517b9f3b83c5f194ab61b6ff3fdb23af28ca7b Mon Sep 17 00:00:00 2001 From: Rishabh Date: Fri, 19 May 2023 18:46:16 +0530 Subject: [PATCH] Wired read/write for publication language setting refs https://github.com/TryGhost/Team/issues/3151 - wires real setting data read/write for publication language --- .../settings/general/PublicationLanguage.tsx | 70 +++++++++++++------ 1 file changed, 50 insertions(+), 20 deletions(-) diff --git a/ghost/admin-x-settings/src/components/settings/general/PublicationLanguage.tsx b/ghost/admin-x-settings/src/components/settings/general/PublicationLanguage.tsx index 239e795e86..cd3e15cb36 100644 --- a/ghost/admin-x-settings/src/components/settings/general/PublicationLanguage.tsx +++ b/ghost/admin-x-settings/src/components/settings/general/PublicationLanguage.tsx @@ -1,20 +1,41 @@ -import ButtonGroup from '../../../admin-x-ds/global/ButtonGroup'; -import React, {useContext} from 'react'; -import SettingGroup from '../../../admin-x-ds/settings/SettingGroup'; +import React, {useContext, useEffect, useRef, useState} from 'react'; +import SettingGroup, {TSettingGroupStates} from '../../../admin-x-ds/settings/SettingGroup'; import SettingGroupContent from '../../../admin-x-ds/settings/SettingGroupContent'; -import SettingGroupHeader from '../../../admin-x-ds/settings/SettingGroupHeader'; +import TextField from '../../../admin-x-ds/global/TextField'; import {SettingsContext} from '../../SettingsProvider'; import {getSettingValue} from '../../../utils/helpers'; const PublicationLanguage: React.FC = () => { - const {settings} = useContext(SettingsContext) || {}; - const publicationLanguage = getSettingValue(settings, 'locale'); - const buttons = [ - { - label: 'Edit', - color: 'green' + const [currentState, setCurrentState] = useState('view'); + const {settings, saveSettings} = useContext(SettingsContext) || {}; + const savedPublicationLanguage = getSettingValue(settings, 'locale'); + const [publicationLanguage, setPublicationLanguage] = useState(savedPublicationLanguage); + const languageRef = useRef(null); + + useEffect(() => { + if (currentState !== 'view' && languageRef.current) { + languageRef.current.focus(); } - ]; + }, [currentState]); + + const handleStateChange = (newState: TSettingGroupStates) => { + setCurrentState(newState); + }; + + const handleSave = () => { + saveSettings?.([ + { + key: 'locale', + value: publicationLanguage + } + ]); + setCurrentState('view'); + }; + + const handleLanguageChange = (e: React.ChangeEvent) => { + setCurrentState('unsaved'); + setPublicationLanguage(e.target.value); + }; const viewValues = [ { @@ -24,18 +45,27 @@ const PublicationLanguage: React.FC = () => { } ]; - const custonHeader = ( - - - + const inputFields = ( + + + ); return ( - - + + {currentState === 'view' ? : inputFields } ); };