41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
@props([
 | 
						|
    'day',              // required
 | 
						|
    'events',
 | 
						|
    'calendars' => [],  // calendar palette keyed by id
 | 
						|
])
 | 
						|
 | 
						|
<li
 | 
						|
    data-day-number="{{ $day['label'] }}"
 | 
						|
    data-event-count="{{ count($day['events'] ?? []) }}"
 | 
						|
    @class([
 | 
						|
        'day',
 | 
						|
        'day--with-events' => !empty($day['events']),
 | 
						|
        'day--current'     =>  $day['in_month'],
 | 
						|
        'day--outside'     => !$day['in_month'],
 | 
						|
        'day--today'       =>  $day['is_today'],
 | 
						|
])>
 | 
						|
    @if(!empty($day['events']))
 | 
						|
        @foreach (array_keys($day['events']) as $eventId)
 | 
						|
            @php
 | 
						|
                /* pull the full event once */
 | 
						|
                $event = $events[$eventId];
 | 
						|
 | 
						|
                /* calendar color */
 | 
						|
                $bg = $calendars[$event['calendar_id']]['color'] ?? '#999';
 | 
						|
            @endphp
 | 
						|
    <a class="event{{ $event['visible'] ? '' : ' hidden' }}"
 | 
						|
       href="{{ route('calendar.events.show', [$event['calendar_slug'], $event['id']]) }}"
 | 
						|
       hx-get="{{ route('calendar.events.show', [$event['calendar_slug'], $event['id']]) }}"
 | 
						|
       hx-target="#modal"
 | 
						|
       hx-push-url="false"
 | 
						|
       hx-swap="innerHTML"
 | 
						|
       style="--event-color: {{ $bg }}"
 | 
						|
       data-calendar="{{ $event['calendar_slug'] }}">
 | 
						|
        <i class="indicator" aria-label="Calendar indicator"></i>
 | 
						|
        <span class="title">{{ $event['title'] }}</span>
 | 
						|
        <time>{{ $event['start_ui'] }}</time>
 | 
						|
    </a>
 | 
						|
        @endforeach
 | 
						|
    @endif
 | 
						|
</li>
 |