diff --git a/src/App.tsx b/src/App.tsx index a168e8e..522a1ba 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -114,7 +114,6 @@ export default function App() { element={ } /> diff --git a/src/components/AccountDefaultSetting.tsx b/src/components/AccountDefaultSetting.tsx index 4a177de..d7e4bab 100644 --- a/src/components/AccountDefaultSetting.tsx +++ b/src/components/AccountDefaultSetting.tsx @@ -4,16 +4,24 @@ import { Link } from "react-router-dom"; interface Props { settingField: string; settingValue: string; + settingsChangedHook: object; } -function handleSettingFieldChange(eventData, setFunction) { +function handleSettingFieldChange(eventData, setFunction, settingsChangedHook, initialValue) { setFunction(eventData.target.value); + if (eventData.target.value === initialValue) { + settingsChangedHook.setsettingsChanged(false); + } else { + settingsChangedHook.setsettingsChanged(true); + } } export default function AccountDefaultSetting({ settingField, settingValue, + settingsChangedHook, }: Props) { + const initialValue = settingValue; const [fieldValue, setFieldValue] = React.useState(settingValue); return ( <> @@ -23,7 +31,7 @@ export default function AccountDefaultSetting({ key={settingField + "Body"} value={fieldValue} onChange={(eventData) => - handleSettingFieldChange(eventData, setFieldValue) + handleSettingFieldChange(eventData, setFieldValue, settingsChangedHook, initialValue) } > diff --git a/src/index.css b/src/index.css index 3941b40..e9b6ca6 100644 --- a/src/index.css +++ b/src/index.css @@ -161,8 +161,16 @@ a { text-align: left; } +.currentSettingBox { + display: flex; + flex-direction: column; +} + .currentSetting { + max-height: 100%; + max-width: 100%; padding-left: var(--tiling-box-padding); + flex-grow: 1; } .blogEntryGrid { diff --git a/src/pages/Settings.tsx b/src/pages/Settings.tsx index 896342c..aadb8f8 100644 --- a/src/pages/Settings.tsx +++ b/src/pages/Settings.tsx @@ -10,10 +10,10 @@ interface Props { authTokenStorageHandler: object; } -function renderCurrentSetting(setting: string) { +function renderCurrentSetting(setting: string, settingsChangedHook: object) { switch (setting) { case "Account": - return ; + return ; case "Security": return ; default: @@ -24,11 +24,16 @@ function renderCurrentSetting(setting: string) { export default function Home({ authTokenStorageHandler }: Props) { const settings = ["Account", "Security"]; const [currentSetting, setCurrentSetting] = React.useState(settings[0]); - /* Make object to pass by reference */ + const [settingsChanged, setsettingsChanged] = React.useState(false); + /* Make objects to pass by reference */ const currentSettingHook = { currentSetting, setCurrentSetting, }; + const settingsChangedHook = { + settingsChanged, + setsettingsChanged, + }; if (!authTokenStorageHandler.authTokenValue) { return ; @@ -52,9 +57,12 @@ export default function Home({ authTokenStorageHandler }: Props) {
-
- {renderCurrentSetting(currentSetting)} -
+
+
+ {renderCurrentSetting(currentSetting, settingsChangedHook)} +
+ {settingsChangedHook.settingsChanged ? ( ) : null } +
diff --git a/src/pages/settings/Account.tsx b/src/pages/settings/Account.tsx index e877333..cf67551 100644 --- a/src/pages/settings/Account.tsx +++ b/src/pages/settings/Account.tsx @@ -2,7 +2,11 @@ import * as React from "react"; import { authTokenStorageHandlerInit } from "../../components/storageHandler.ts"; import AccountDefaultSetting from "../../components/AccountDefaultSetting.tsx"; -function RenderSettingField(settingField: str, settingValue: str) { +interface Props { + settingsChangedHook: object; +} + +function RenderSettingField(settingField: str, settingValue: str, settingsChangedHook: object) { switch (settingField) { default: return ( @@ -10,12 +14,13 @@ function RenderSettingField(settingField: str, settingValue: str) { key={settingField + "Main"} settingField={settingField} settingValue={settingValue} + settingsChangedHook={settingsChangedHook} > ); } } -export default function AccountSetting() { +export default function AccountSetting({ settingsChangedHook }: Props) { const [accountSettings, setAccountSettings] = React.useState({}); const authTokenStorageHandler = authTokenStorageHandlerInit(); @@ -44,7 +49,7 @@ export default function AccountSetting() {

Account


{Object.entries(accountSettings).map((item, key) => - RenderSettingField(item[0], item[1]), + RenderSettingField(item[0], item[1], settingsChangedHook), )} );