From d0c3bd80e6a2401de2848a1e8dbb1b6d832c09ec Mon Sep 17 00:00:00 2001 From: tobi Date: Tue, 6 May 2025 10:01:59 +0200 Subject: [bugfix] Fixes to tablist, fileinput, checkbox --- .../posts/interaction-policy-settings/index.tsx | 112 +++++++++++++++------ 1 file changed, 82 insertions(+), 30 deletions(-) (limited to 'web/source/settings/views/user/posts') diff --git a/web/source/settings/views/user/posts/interaction-policy-settings/index.tsx b/web/source/settings/views/user/posts/interaction-policy-settings/index.tsx index 143cf0865..3c4d51422 100644 --- a/web/source/settings/views/user/posts/interaction-policy-settings/index.tsx +++ b/web/source/settings/views/user/posts/interaction-policy-settings/index.tsx @@ -17,7 +17,7 @@ along with this program. If not, see . */ -import React, { useCallback, useMemo } from "react"; +import React, { forwardRef, useCallback, useMemo, useRef } from "react"; import { useDefaultInteractionPoliciesQuery, useResetDefaultInteractionPoliciesMutation, @@ -191,57 +191,109 @@ function InteractionPoliciesForm({ defaultPolicies }: InteractionPoliciesFormPro // A tablist of tab buttons, one for each visibility. function PolicyPanelsTablist({ selectedVis }: { selectedVis: TextFormInputHook}) { + const publicRef = useRef(null); + const unlistedRef = useRef(null); + const privateRef = useRef(null); + return (
); } interface TabProps { - thisVisibility: string; - label: string, - selectedVis: TextFormInputHook + label: string; + selectedVis: TextFormInputHook; + prevVis: string; + thisVis: string; + nextVis: string; + prevRef: React.RefObject; + thisRef: React.RefObject; + nextRef: React.RefObject; } // One tab in a tablist, corresponding to the given thisVisibility. -function Tab({ thisVisibility, label, selectedVis }: TabProps) { - const selected = useMemo(() => { - return selectedVis.value === thisVisibility; - }, [selectedVis, thisVisibility]); - - return ( - - ); -} +const Tab = forwardRef( + function Tab({ + label, + selectedVis, + prevVis, + thisVis, + nextVis, + prevRef, + thisRef, + nextRef, + }: TabProps) { + const selected = useMemo(() => { + return selectedVis.value === thisVis; + }, [selectedVis, thisVis]); + + return ( + + ); + } +); interface PolicyPanelProps { policyForm: PolicyForm; -- cgit v1.3