FIXED - Make adding a portfolio project simpler and actually saveable

- Fix critical bug: TabsContent unmounted inactive panels, so the project
  form only submitted the active tab's fields and could never save; add an
  opt-in forceMount that keeps panels mounted (hidden) and use it on all
  four project-form tabs
- Make Sections and Assets optional: a project saves with just Basics and
  Localized Content; new projects start with no sections/assets, and the
  last one can now be removed
- Update wizard progress so empty sections/assets steps count as complete
- Update save hint copy and step labels to reflect the optional steps
- Correct .claude/launch.json dev port to 3014
- Update portfolio-form-progress tests for the optional-steps behaviour
This commit is contained in:
moh
2026-09-20 01:56:50 +02:00
parent a13e33edcd
commit d78450fc47
5 changed files with 56 additions and 25 deletions
+7 -1
View File
@@ -98,22 +98,28 @@ function TabsTrigger({
type TabsContentProps = React.HTMLAttributes<HTMLDivElement> & {
value: string;
// Keep the panel mounted while inactive (hidden via `hidden`) so its form
// fields still submit. Use for tabbed forms that share one submit button.
forceMount?: boolean;
};
function TabsContent({
className,
value,
children,
forceMount = false,
...props
}: TabsContentProps) {
const { value: activeValue } = useTabsContext();
const isActive = activeValue === value;
if (activeValue !== value) {
if (!isActive && !forceMount) {
return null;
}
return (
<div
hidden={!isActive}
className={cn(
"mt-6 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-0",
className,