diff --git a/app/Filament/Admin/Resources/Pages/Schemas/PageForm.php b/app/Filament/Admin/Resources/Pages/Schemas/PageForm.php index 53a5fa2..f1e227c 100644 --- a/app/Filament/Admin/Resources/Pages/Schemas/PageForm.php +++ b/app/Filament/Admin/Resources/Pages/Schemas/PageForm.php @@ -542,36 +542,26 @@ class PageForm ->options(HeaderTemplate::where('is_active', true)->pluck('title', 'id')) ->searchable() ->live() - ->afterStateUpdated(function (Set $set, Get $get, $state, $record) { - $template = HeaderTemplate::find($state); - if ($template && $template->default_data) { - // If page doesn't have header_data or it's empty, load defaults - $currentData = $record ? ($record->header_data ?? []) : ($get('header_data') ?? []); - if (empty($currentData)) { - $set('header_data', $template->default_data); - } - } else { - // If no template selected or no defaults, clear data - if (!$record || empty($record->header_data)) { - $set('header_data', []); - } - } - }) ->columnSpanFull(), Group::make() ->schema(function (Get $get, $record): array { - $template = HeaderTemplate::find($get('header_template_id')); + $templateId = $get('header_template_id'); + if (!$templateId) { + return []; + } + + $template = HeaderTemplate::find($templateId); if (!$template) { return []; } - // Get page's header_data or template's default_data - $pageData = $record ? ($record->header_data ?? []) : ($get('header_data') ?? []); + // Get existing page data, or use template defaults + $existingData = $record?->header_data ?? []; $templateDefaults = $template->default_data ?? []; - // Merge: page data overrides template defaults - $mergedData = array_merge($templateDefaults, $pageData); + // Merge: existing data takes priority over defaults + $mergedData = array_merge($templateDefaults, $existingData); return TemplateService::generateDynamicFields( $template, @@ -598,31 +588,26 @@ class PageForm ->searchable() ->live() ->required() - ->afterStateUpdated(function (Set $set, Get $get, $state, $record) { - $template = SectionTemplate::find($state); - if ($template && $template->default_data) { - // If section doesn't have section_data or it's empty, load defaults - $currentData = $get('section_data') ?? []; - if (empty($currentData)) { - $set('section_data', $template->default_data); - } - } - }) ->columnSpanFull(), Group::make() - ->schema(function (Get $get): array { - $template = SectionTemplate::find($get('section_template_id')); + ->schema(function (Get $get, $state): array { + $templateId = $get('section_template_id'); + if (!$templateId) { + return []; + } + + $template = SectionTemplate::find($templateId); if (!$template) { return []; } - // Get section's data or template's default_data - $sectionData = $get('section_data') ?? []; + // Get existing section data, or use template defaults + $existingData = $get('section_data') ?? []; $templateDefaults = $template->default_data ?? []; - // Merge: section data overrides template defaults - $mergedData = array_merge($templateDefaults, $sectionData); + // Only use defaults if no existing data + $mergedData = !empty($existingData) ? $existingData : $templateDefaults; return TemplateService::generateDynamicFields( $template, @@ -654,36 +639,26 @@ class PageForm ->options(FooterTemplate::where('is_active', true)->pluck('title', 'id')) ->searchable() ->live() - ->afterStateUpdated(function (Set $set, Get $get, $state, $record) { - $template = FooterTemplate::find($state); - if ($template && $template->default_data) { - // If page doesn't have footer_data or it's empty, load defaults - $currentData = $record ? ($record->footer_data ?? []) : ($get('footer_data') ?? []); - if (empty($currentData)) { - $set('footer_data', $template->default_data); - } - } else { - // If no template selected or no defaults, clear data - if (!$record || empty($record->footer_data)) { - $set('footer_data', []); - } - } - }) ->columnSpanFull(), Group::make() ->schema(function (Get $get, $record): array { - $template = FooterTemplate::find($get('footer_template_id')); + $templateId = $get('footer_template_id'); + if (!$templateId) { + return []; + } + + $template = FooterTemplate::find($templateId); if (!$template) { return []; } - // Get page's footer_data or template's default_data - $pageData = $record ? ($record->footer_data ?? []) : ($get('footer_data') ?? []); + // Get existing page data, or use template defaults + $existingData = $record?->footer_data ?? []; $templateDefaults = $template->default_data ?? []; - // Merge: page data overrides template defaults - $mergedData = array_merge($templateDefaults, $pageData); + // Merge: existing data takes priority over defaults + $mergedData = array_merge($templateDefaults, $existingData); return TemplateService::generateDynamicFields( $template,