feature - 3 - Fix mobile layout for schedule
This commit is contained in:
parent
2ed9dfbdaa
commit
faed07395e
3 changed files with 109 additions and 38 deletions
|
|
@ -32,7 +32,8 @@ class="px-4 py-2 bg-gray-700 text-accent-blue rounded hover:bg-gray-600 transiti
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Calendar Grid -->
|
<!-- Calendar Grid - Desktop -->
|
||||||
|
<div class="hidden md:block">
|
||||||
<div class="grid grid-cols-7 gap-2 mb-4">
|
<div class="grid grid-cols-7 gap-2 mb-4">
|
||||||
<!-- Days of week headers -->
|
<!-- Days of week headers -->
|
||||||
@foreach(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] as $day)
|
@foreach(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] as $day)
|
||||||
|
|
@ -95,6 +96,71 @@ class="block w-full text-left px-3 py-1 text-xs hover:bg-gray-600 text-danger">
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Calendar List - Mobile -->
|
||||||
|
<div class="md:hidden space-y-2">
|
||||||
|
@foreach($calendarDays as $dayData)
|
||||||
|
@if($dayData['day'])
|
||||||
|
<div class="border rounded-lg p-3
|
||||||
|
{{ $dayData['isToday'] ? 'border-2 border-accent-blue bg-gray-600' : 'border-gray-600 bg-gray-500' }}">
|
||||||
|
|
||||||
|
<!-- Day header -->
|
||||||
|
<div class="flex items-center justify-between mb-2">
|
||||||
|
<div class="font-bold {{ $dayData['isToday'] ? 'text-accent-blue' : 'text-gray-100' }}">
|
||||||
|
{{ $dayData['date']->format('D, M j') }}
|
||||||
|
@if($dayData['isToday'])
|
||||||
|
<span class="text-xs ml-2">(Today)</span>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Scheduled dishes -->
|
||||||
|
@if($dayData['scheduledDishes']->isNotEmpty())
|
||||||
|
<div class="space-y-2">
|
||||||
|
@foreach($dayData['scheduledDishes'] as $scheduled)
|
||||||
|
<div class="bg-primary rounded p-2 text-sm text-white flex items-center justify-between">
|
||||||
|
<div class="flex items-center">
|
||||||
|
<div class="w-6 h-6 bg-white text-primary rounded-full flex items-center justify-center text-sm font-bold mr-2">
|
||||||
|
{{ strtoupper(substr($scheduled->user->name, 0, 1)) }}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class="font-medium">{{ $scheduled->userDish?->dish?->name ?? 'Skipped' }}</div>
|
||||||
|
<div class="text-xs opacity-75">{{ $scheduled->user->name }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Action buttons -->
|
||||||
|
<div class="flex space-x-2" x-data="{ showActions: false }">
|
||||||
|
<button @click="showActions = !showActions"
|
||||||
|
class="text-white hover:text-gray-300 p-1">
|
||||||
|
⋮
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div x-show="showActions"
|
||||||
|
@click.away="showActions = false"
|
||||||
|
x-cloak
|
||||||
|
class="absolute right-4 bg-gray-700 border border-secondary rounded shadow-lg z-10">
|
||||||
|
<button wire:click="regenerateForUserDate('{{ $dayData['date']->format('Y-m-d') }}', {{ $scheduled->user->id }})"
|
||||||
|
class="block w-full text-left px-4 py-2 text-sm hover:bg-gray-600 text-accent-blue">
|
||||||
|
Regenerate
|
||||||
|
</button>
|
||||||
|
<button wire:click="skipDay('{{ $dayData['date']->format('Y-m-d') }}', {{ $scheduled->user->id }})"
|
||||||
|
class="block w-full text-left px-4 py-2 text-sm hover:bg-gray-600 text-danger">
|
||||||
|
Skip
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
@else
|
||||||
|
<div class="text-gray-400 text-sm">No dishes scheduled</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- Regenerate Modal -->
|
<!-- Regenerate Modal -->
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
<div class="bg-gray-700 border-2 border-secondary rounded-lg p-6 mb-6">
|
<div class="bg-gray-700 border-2 border-secondary rounded-lg p-6 mb-6" x-data="{ open: window.innerWidth >= 768 }">
|
||||||
<h3 class="text-lg font-bold text-accent-blue mb-4">Generate Schedule</h3>
|
<button @click="open = !open" class="w-full flex justify-between items-center md:cursor-default">
|
||||||
|
<h3 class="text-lg font-bold text-accent-blue">Generate Schedule</h3>
|
||||||
|
<span class="md:hidden text-accent-blue" x-text="open ? '−' : '+'"></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div x-show="open" x-collapse class="mt-4 md:!block" x-cloak>
|
||||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-4">
|
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-4">
|
||||||
<!-- Month Selection -->
|
<!-- Month Selection -->
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -87,7 +91,7 @@ class="px-4 py-2 bg-primary text-white rounded hover:bg-secondary transition-col
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button wire:click="clearMonth"
|
<button wire:click="clearMonth"
|
||||||
class="px-4 py-2 bg-danger text-white rounded hover:bg-red-700 transition-colors duration-200">
|
class="px-4 py-2 border-2 border-danger text-danger rounded hover:bg-danger hover:text-white transition-colors duration-200">
|
||||||
Clear Month
|
Clear Month
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -102,4 +106,5 @@ class="px-4 py-2 bg-danger text-white rounded hover:bg-red-700 transition-colors
|
||||||
Generating schedule...
|
Generating schedule...
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<x-layouts.app>
|
<x-layouts.app>
|
||||||
<div class="px-4 sm:px-6 lg:px-8">
|
<div class="px-4 sm:px-6 lg:px-8 pb-12">
|
||||||
<div class="max-w-7xl mx-auto">
|
<div class="max-w-7xl mx-auto">
|
||||||
<livewire:schedule.schedule-calendar />
|
<livewire:schedule.schedule-calendar />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue