diff --git a/frontend/src/pages/dashboard/[id].tsx b/frontend/src/pages/dashboard/[id].tsx index 6b0ce53ae..c7f15ca70 100644 --- a/frontend/src/pages/dashboard/[id].tsx +++ b/frontend/src/pages/dashboard/[id].tsx @@ -1,5 +1,5 @@ /* eslint-disable no-nested-ternary */ -import { Fragment, useCallback, useEffect, useState } from 'react'; +import { UIEvent, useCallback, useEffect, useRef, useState } from 'react'; import Head from 'next/head'; import Image from 'next/image'; import { useRouter } from 'next/router'; @@ -135,7 +135,14 @@ export default function Dashboard() { name: '', slug: '' }); + const [atSecretAreaTop, setAtSecretsAreaTop] = useState(true); + const secretsTop = useRef(null); + const onSecretsAreaScroll = (event: UIEvent) => { + if (event.currentTarget.scrollTop !== 0) { + setAtSecretsAreaTop(false); + } + }; // #TODO: fix save message for changing reroutes // const beforeRouteHandler = (url) => { // const warningText = @@ -256,7 +263,6 @@ export default function Dashboard() { const addRow = () => { setIsNew(false); setData([ - ...data!, { id: guidGenerator(), idOverride: guidGenerator(), @@ -265,8 +271,12 @@ export default function Dashboard() { value: '', valueOverride: undefined, comment: '' - } + }, + ...data! ]); + if (!atSecretAreaTop) { + secretsTop.current?.scrollIntoView({ behavior: 'smooth' }); + } }; const deleteRow = ({ ids, secretName }: { ids: string[]; secretName: string }) => { @@ -283,22 +293,22 @@ export default function Dashboard() { }; const modifyValue = (value: string, pos: number) => { - setData((oldData) => oldData?.map((e, index) => (index === pos ? { ...e, value } : e))); + setData((oldData) => oldData?.map((e) => (e.pos === pos ? { ...e, value } : e))); setButtonReady(true); }; const modifyValueOverride = (valueOverride: string | undefined, pos: number) => { - setData((oldData) => oldData?.map((e, index) => (index === pos ? { ...e, valueOverride } : e))); + setData((oldData) => oldData?.map((e) => (e.pos === pos ? { ...e, valueOverride } : e))); setButtonReady(true); }; const modifyKey = (key: string, pos: number) => { - setData((oldData) => oldData?.map((e, index) => (index === pos ? { ...e, key } : e))); + setData((oldData) => oldData?.map((e) => (e.pos === pos ? { ...e, key } : e))); setButtonReady(true); }; const modifyComment = (comment: string, pos: number) => { - setData((oldData) => oldData?.map((e, index) => (index === pos ? { ...e, comment } : e))); + setData((oldData) => oldData?.map((e) => (e.pos === pos ? { ...e, comment } : e))); setButtonReady(true); }; @@ -736,7 +746,11 @@ export default function Dashboard() { ) : data?.length !== 0 ? (
-
+
+
{!snapshotData && data