151 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| @php
 | |
|     $count_buttons = 1;
 | |
|     $more_actions = [];
 | |
| @endphp
 | |
| 
 | |
| <div
 | |
|     data-mobile-actions
 | |
|     class="absolute w-6 h-6 flex items-center justify-center ltr:right-0 rtl:left-0 -top-3 py-0.5 px-1 bg-white border rounded-full cursor-pointer hover:bg-gray-100"
 | |
| >
 | |
|     <span class="material-icons-outlined text-lg">
 | |
|         more_horiz
 | |
|     </span>
 | |
| </div>
 | |
| 
 | |
| <div
 | |
|     data-mobile-actions-modal
 | |
|     class="modal w-full h-full fixed flex top-0 left-0 right-0 justify-center items-center flex-wrap overflow-y-auto overflow-hidden z-50 opacity-0 invisible modal-background transition-opacity"
 | |
| >
 | |
|     <div class="w-full my-10 m-auto flex flex-col px-2 sm:px-0 max-w-md">
 | |
|         <div class="p-2 bg-body rounded-lg">
 | |
|             @foreach ($actions as $action)
 | |
|                 @if ($count_buttons > 3 && $loop->count > 4)
 | |
|                     @break
 | |
|                 @endif
 | |
| 
 | |
|                 @if (isset($action['type']) && $action['type'] == 'divider')
 | |
|                     @continue
 | |
|                 @endif
 | |
| 
 | |
|                 @if (
 | |
|                     empty($action['permission'])
 | |
|                     || (! empty($action['permission']) && user()->can($action['permission']))
 | |
|                 )
 | |
|                     @php
 | |
|                         $type = ! empty($action['type']) ? $action['type'] : 'link';
 | |
|                     @endphp
 | |
| 
 | |
|                     @switch($type)
 | |
|                         @case('button')
 | |
|                             <button type="button" class="w-full flex items-center text-purple px-2 h-9 leading-9" {!! $action['attributes'] ?? null !!}>
 | |
|                                 <div class="w-full h-full flex items-center rounded-md px-2 text-sm hover:bg-lilac-100">
 | |
|                                     <span class="material-icons-outlined text-purple text-lg ltr:mr-2 rtl:ml-2 pointer-events-none">
 | |
|                                         {{ $action['icon'] }}
 | |
|                                     </span>
 | |
| 
 | |
|                                     {{ $action['title'] }}
 | |
|                                 </div>
 | |
|                             </button>
 | |
|                             @break
 | |
| 
 | |
|                         @case('delete')
 | |
|                             @php
 | |
|                                 $title = $action['title'] ?? null;
 | |
|                                 $modelId = ! empty($action['model-id']) ? $action['model-id'] : 'id';
 | |
|                                 $modelName = ! empty($action['model-name']) ? $action['model-name'] : 'name';
 | |
|                             @endphp
 | |
| 
 | |
|                             <x-delete-button :model="$action['model']" :route="$action['route']" :text="$title" :model-id="$modelId" :model-name="$modelName" />
 | |
|                             @break
 | |
| 
 | |
|                         @default
 | |
|                             <a href="{{ $action['url'] }}" class="w-full flex items-center text-purple px-2 h-9 leading-9" {!! $action['attributes'] ?? null !!}>
 | |
|                                 <div class="w-full h-full flex items-center rounded-md px-2 text-sm hover:bg-lilac-100">
 | |
|                                     <span class="material-icons-outlined text-purple text-lg ltr:mr-2 rtl:ml-2 pointer-events-none">
 | |
|                                         {{ $action['icon'] }}
 | |
|                                     </span>
 | |
| 
 | |
|                                     {{ $action['title'] }}
 | |
|                                 </div>
 | |
|                             </a>
 | |
|                     @endswitch
 | |
| 
 | |
|                     @php
 | |
|                         array_shift($actions);
 | |
| 
 | |
|                         $count_buttons++;
 | |
|                     @endphp
 | |
|                 @endif
 | |
|             @endforeach
 | |
| 
 | |
|             @foreach ($actions as $action)
 | |
|                 @if (
 | |
|                     empty($action['permission'])
 | |
|                     || (! empty($action['permission']) && user()->can($action['permission']))
 | |
|                 )
 | |
|                     @php $more_actions[] = $action; @endphp
 | |
|                 @endif
 | |
|             @endforeach
 | |
| 
 | |
|             @if ($more_actions)
 | |
|                 @php $divider = false; @endphp
 | |
| 
 | |
|                 @foreach ($more_actions as $action)
 | |
|                     @php
 | |
|                         $type = ! empty($action['type']) ? $action['type'] : 'link';
 | |
|                     @endphp
 | |
| 
 | |
|                     @switch($type)
 | |
|                         @case('button')
 | |
|                             @php $divider = false; @endphp
 | |
| 
 | |
|                             <button type="button" class="w-full flex items-center text-purple px-2 h-9 leading-9" {!! $action['attributes'] ?? null !!}>
 | |
|                                 <div class="w-full h-full flex items-center rounded-md px-2 text-sm hover:bg-lilac-100">
 | |
|                                     <span class="material-icons-outlined text-purple text-lg ltr:mr-2 rtl:ml-2 pointer-events-none">
 | |
|                                         {{ $action['icon'] }}
 | |
|                                     </span>
 | |
| 
 | |
|                                     {{ $action['title'] }}
 | |
|                                 </div>
 | |
|                             </button>
 | |
|                             @break
 | |
| 
 | |
|                         @case('delete')
 | |
|                             @php $divider = false; @endphp
 | |
| 
 | |
|                             @php
 | |
|                                 $title = $action['title'] ?? null;
 | |
|                                 $modelId = ! empty($action['model-id']) ? $action['model-id'] : 'id';
 | |
|                                 $modelName = ! empty($action['model-name']) ? $action['model-name'] : 'name';
 | |
|                             @endphp
 | |
|                             <x-delete-link :model="$action['model']" :route="$action['route']" :text="$title" :model-id="$modelId" :model-name="$modelName" />
 | |
|                             @break
 | |
| 
 | |
|                         @case('divider')
 | |
|                             @if (! $divider)
 | |
|                                 @php $divider = true; @endphp
 | |
|                                 <div class="py-2 px-2">
 | |
|                                     <div class="w-full border-t border-gray-200"></div>
 | |
|                                 </div>
 | |
|                             @endif
 | |
|                             @break
 | |
| 
 | |
|                         @default
 | |
|                             @php $divider = false; @endphp
 | |
| 
 | |
|                             <a href="{{ $action['url'] }}" class="w-full flex items-center text-purple px-2 h-9 leading-9" {!! $action['attributes'] ?? null !!}>
 | |
|                                 <div class="w-full h-full flex items-center rounded-md px-2 text-sm hover:bg-lilac-100">
 | |
|                                     <span class="material-icons-outlined text-purple text-lg ltr:mr-2 rtl:ml-2 pointer-events-none">
 | |
|                                         {{ $action['icon'] }}
 | |
|                                     </span>
 | |
| 
 | |
|                                     {{ $action['title'] }}
 | |
|                                 </div>
 | |
|                             </a>
 | |
|                     @endswitch
 | |
|                 @endforeach
 | |
|             @endif
 | |
|         </div>
 | |
|     </div>
 | |
| </div>
 |