wip
This commit is contained in:
@@ -147,10 +147,15 @@ class VisaMasterPaymentOrderForm
|
|||||||
->columnSpanFull()
|
->columnSpanFull()
|
||||||
->columns(2)
|
->columns(2)
|
||||||
->schema([
|
->schema([
|
||||||
SpatieMediaLibraryFileUpload::make('sender_passport_local')
|
AdvancedFileUpload::make('sender_passport_local')
|
||||||
->collection('sender_passport_local')
|
->collection('sender_passport_local')
|
||||||
->label(__('Ugradyja degişli Türkmenistanyň raýatynyň (içki milli) pasportynyň asyl görnüşi we göçürmesi'))
|
->spatieMediaLibrary()
|
||||||
->required(),
|
->multiple(),
|
||||||
|
|
||||||
|
// SpatieMediaLibraryFileUpload::make('sender_passport_local')
|
||||||
|
// ->collection('sender_passport_local')
|
||||||
|
// ->label(__('Ugradyja degişli Türkmenistanyň raýatynyň (içki milli) pasportynyň asyl görnüşi we göçürmesi'))
|
||||||
|
// ->required(),
|
||||||
|
|
||||||
SpatieMediaLibraryFileUpload::make('sender_passport_international')
|
SpatieMediaLibraryFileUpload::make('sender_passport_international')
|
||||||
->collection('sender_passport_international')
|
->collection('sender_passport_international')
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ use App\Modules\Region\Repositories\RegionRepository;
|
|||||||
use App\Modules\TurkmenPassport\Repositories\TurkmenPassportRepository;
|
use App\Modules\TurkmenPassport\Repositories\TurkmenPassportRepository;
|
||||||
use App\Modules\VisaMasterPaymentOrder\Models\VisaMasterPaymentOrder;
|
use App\Modules\VisaMasterPaymentOrder\Models\VisaMasterPaymentOrder;
|
||||||
use Filament\Infolists\Components\IconEntry;
|
use Filament\Infolists\Components\IconEntry;
|
||||||
use Filament\Infolists\Components\SpatieMediaLibraryImageEntry;
|
use App\Filament\Infolists\Components\SpatieMediaLibraryFileEntry;
|
||||||
use Filament\Infolists\Components\TextEntry;
|
use Filament\Infolists\Components\TextEntry;
|
||||||
use Filament\Schemas\Components\Fieldset;
|
use Filament\Schemas\Components\Fieldset;
|
||||||
use Filament\Schemas\Components\Section;
|
use Filament\Schemas\Components\Section;
|
||||||
@@ -114,27 +114,27 @@ class VisaMasterPaymentOrderInfolist
|
|||||||
->columnSpanFull()
|
->columnSpanFull()
|
||||||
->columns(2)
|
->columns(2)
|
||||||
->schema([
|
->schema([
|
||||||
SpatieMediaLibraryImageEntry::make('sender_passport_local')
|
SpatieMediaLibraryFileEntry::make('sender_passport_local')
|
||||||
->collection('sender_passport_local')
|
->collection('sender_passport_local')
|
||||||
->label(__('Ugradyja degişli Türkmenistanyň raýatynyň (içki milli) pasportynyň asyl görnüşi we göçürmesi')),
|
->label(__('Ugradyja degişli Türkmenistanyň raýatynyň (içki milli) pasportynyň asyl görnüşi we göçürmesi')),
|
||||||
|
|
||||||
SpatieMediaLibraryImageEntry::make('sender_passport_international')
|
SpatieMediaLibraryFileEntry::make('sender_passport_international')
|
||||||
->collection('sender_passport_international')
|
->collection('sender_passport_international')
|
||||||
->label(__('Ugradyja degişli Türkmenistandan çykmak we Türkmenistana girmek üçin pasportynyň asyl görnüşi we göçürmesi')),
|
->label(__('Ugradyja degişli Türkmenistandan çykmak we Türkmenistana girmek üçin pasportynyň asyl görnüşi we göçürmesi')),
|
||||||
|
|
||||||
SpatieMediaLibraryImageEntry::make('sender_travel_stamp_on_passport')
|
SpatieMediaLibraryFileEntry::make('sender_travel_stamp_on_passport')
|
||||||
->collection('sender_travel_stamp_on_passport')
|
->collection('sender_travel_stamp_on_passport')
|
||||||
->label(__('Ugradyja degişli Türkmenistandan çykmak we Türkmenistana girmek üçin pasportyndaky daşary döwletine gidendigi we daşary döwlete barandygy baradaky (ştampyň) bellenen sahypasynyň göçürmesi')),
|
->label(__('Ugradyja degişli Türkmenistandan çykmak we Türkmenistana girmek üçin pasportyndaky daşary döwletine gidendigi we daşary döwlete barandygy baradaky (ştampyň) bellenen sahypasynyň göçürmesi')),
|
||||||
|
|
||||||
SpatieMediaLibraryImageEntry::make('sender_proof_of_kinship')
|
SpatieMediaLibraryFileEntry::make('sender_proof_of_kinship')
|
||||||
->collection('sender_proof_of_kinship')
|
->collection('sender_proof_of_kinship')
|
||||||
->label(__('Ugradyjynyň we kabul edijiniň (talybyň) özara garyndaşlyk derejesini tassyklaýjy resminamalarynyň göçürmesi')),
|
->label(__('Ugradyjynyň we kabul edijiniň (talybyň) özara garyndaşlyk derejesini tassyklaýjy resminamalarynyň göçürmesi')),
|
||||||
|
|
||||||
SpatieMediaLibraryImageEntry::make('sender_passport_local_old')
|
SpatieMediaLibraryFileEntry::make('sender_passport_local_old')
|
||||||
->collection('sender_passport_local_old')
|
->collection('sender_passport_local_old')
|
||||||
->label(__('Ugradyjy we kabul ediji (talyp) 2015-nji ýyldan soňra Türkmenistanyň raýatynyň pasportyny ikinji gezek alan bolsa, onda birinji gezek alan pasportynyň seriýasy baradaky maglumat')),
|
->label(__('Ugradyjy we kabul ediji (talyp) 2015-nji ýyldan soňra Türkmenistanyň raýatynyň pasportyny ikinji gezek alan bolsa, onda birinji gezek alan pasportynyň seriýasy baradaky maglumat')),
|
||||||
|
|
||||||
SpatieMediaLibraryImageEntry::make('sender_passport_local_old_replacement')
|
SpatieMediaLibraryFileEntry::make('sender_passport_local_old_replacement')
|
||||||
->collection('sender_passport_local_old_replacement')
|
->collection('sender_passport_local_old_replacement')
|
||||||
->label(__('Ugradyjy we kabul ediji (talyp) 2015-nji ýyldan soňra Türkmenistanyň raýatynyň pasportyny ikinji gezek alandan soňra birinji gezek alan pasportynyň seriýasy baradaky maglumaty bilmeýän ,bolsa onda polisiýanyň degişli edaralaryndan birinji alan pasportynyň seriýasy baradaky güwänamasy')),
|
->label(__('Ugradyjy we kabul ediji (talyp) 2015-nji ýyldan soňra Türkmenistanyň raýatynyň pasportyny ikinji gezek alandan soňra birinji gezek alan pasportynyň seriýasy baradaky maglumaty bilmeýän ,bolsa onda polisiýanyň degişli edaralaryndan birinji alan pasportynyň seriýasy baradaky güwänamasy')),
|
||||||
]),
|
]),
|
||||||
@@ -163,42 +163,42 @@ class VisaMasterPaymentOrderInfolist
|
|||||||
->columnSpanFull()
|
->columnSpanFull()
|
||||||
->columns(2)
|
->columns(2)
|
||||||
->schema([
|
->schema([
|
||||||
SpatieMediaLibraryImageEntry::make('receiver_requisite')
|
SpatieMediaLibraryFileEntry::make('receiver_requisite')
|
||||||
->collection('receiver_requisite')
|
->collection('receiver_requisite')
|
||||||
->label(__('Talyba degişli walýuta "VISA" kartyň rekwizitleri'))
|
->label(__('Talyba degişli walýuta "VISA" kartyň rekwizitleri'))
|
||||||
->columnSpan(1),
|
->columnSpan(1),
|
||||||
|
|
||||||
SpatieMediaLibraryImageEntry::make('receiver_document_stating_he_is_studying')
|
SpatieMediaLibraryFileEntry::make('receiver_document_stating_he_is_studying')
|
||||||
->collection('receiver_document_stating_he_is_studying')
|
->collection('receiver_document_stating_he_is_studying')
|
||||||
->label(__('Talybyň daşary ýurt döwletiniň ýokary okuw mekdebinde okaýandygy baradaky güwänamasy'))
|
->label(__('Talybyň daşary ýurt döwletiniň ýokary okuw mekdebinde okaýandygy baradaky güwänamasy'))
|
||||||
->columnSpan(1),
|
->columnSpan(1),
|
||||||
|
|
||||||
SpatieMediaLibraryImageEntry::make('receiver_ticket')
|
SpatieMediaLibraryFileEntry::make('receiver_ticket')
|
||||||
->collection('receiver_ticket')
|
->collection('receiver_ticket')
|
||||||
->label(__('Talybyň bilediniň göçürmesi'))
|
->label(__('Talybyň bilediniň göçürmesi'))
|
||||||
->columnSpan(1),
|
->columnSpan(1),
|
||||||
|
|
||||||
SpatieMediaLibraryImageEntry::make('receiver_passport_local')
|
SpatieMediaLibraryFileEntry::make('receiver_passport_local')
|
||||||
->collection('receiver_passport_local')
|
->collection('receiver_passport_local')
|
||||||
->label(__('Talyba degişli Türkmenistanyň raýatynyň (içki milli) pasportynyň asyl görnüşi we göçürmesi'))
|
->label(__('Talyba degişli Türkmenistanyň raýatynyň (içki milli) pasportynyň asyl görnüşi we göçürmesi'))
|
||||||
->columnSpan(1),
|
->columnSpan(1),
|
||||||
|
|
||||||
SpatieMediaLibraryImageEntry::make('receiver_passport_international')
|
SpatieMediaLibraryFileEntry::make('receiver_passport_international')
|
||||||
->collection('receiver_passport_international')
|
->collection('receiver_passport_international')
|
||||||
->label(__('Talybyň Türkmenistandan çykmak we Türkmenistana girmek üçin (zagran) pasportynyň göçürmesi'))
|
->label(__('Talybyň Türkmenistandan çykmak we Türkmenistana girmek üçin (zagran) pasportynyň göçürmesi'))
|
||||||
->columnSpan(1),
|
->columnSpan(1),
|
||||||
|
|
||||||
SpatieMediaLibraryImageEntry::make('receiver_visa')
|
SpatieMediaLibraryFileEntry::make('receiver_visa')
|
||||||
->collection('receiver_visa')
|
->collection('receiver_visa')
|
||||||
->label(__('Talybyň Türkmenistandan çykmak we Türkmenistana girmek üçin pasportyndaky daşary ýurtda galyp okap bilýändigi baradaky berlen möhleti hereket edýän rugsatnamasynyň (wizasynyň) bellenen sahypasynyň göçürmesi'))
|
->label(__('Talybyň Türkmenistandan çykmak we Türkmenistana girmek üçin pasportyndaky daşary ýurtda galyp okap bilýändigi baradaky berlen möhleti hereket edýän rugsatnamasynyň (wizasynyň) bellenen sahypasynyň göçürmesi'))
|
||||||
->columnSpan(1),
|
->columnSpan(1),
|
||||||
|
|
||||||
SpatieMediaLibraryImageEntry::make('receiver_travel_stamp_on_passport')
|
SpatieMediaLibraryFileEntry::make('receiver_travel_stamp_on_passport')
|
||||||
->collection('receiver_travel_stamp_on_passport')
|
->collection('receiver_travel_stamp_on_passport')
|
||||||
->label(__('Talybyň Türkmenistandan çykmak we Türkmenistana girmek üçin pasportyndaky Türkmenistandan çykandygy we daşary ýurt döwletine girendigi baradaky ştamplaryň (seneli ştampyň) bellenen sahypasynyň göçürmesi'))
|
->label(__('Talybyň Türkmenistandan çykmak we Türkmenistana girmek üçin pasportyndaky Türkmenistandan çykandygy we daşary ýurt döwletine girendigi baradaky ştamplaryň (seneli ştampyň) bellenen sahypasynyň göçürmesi'))
|
||||||
->columnSpan(1),
|
->columnSpan(1),
|
||||||
|
|
||||||
SpatieMediaLibraryImageEntry::make('receiver_document_stating_he_is_studying_2')
|
SpatieMediaLibraryFileEntry::make('receiver_document_stating_he_is_studying_2')
|
||||||
->collection('receiver_document_stating_he_is_studying_2')
|
->collection('receiver_document_stating_he_is_studying_2')
|
||||||
->label(__('Talybyň daşary ýurt döwletiniň ýokary okuw mekdebinde okaýandygy baradaky güwänamasyndaky maglumatyň doly takyk däl ýagdaýynda takyk däl maglumatyň sebäpleri baradaky daşary ýurt döwletiniň ýokary okuw mekdebinden haty'))
|
->label(__('Talybyň daşary ýurt döwletiniň ýokary okuw mekdebinde okaýandygy baradaky güwänamasyndaky maglumatyň doly takyk däl ýagdaýynda takyk däl maglumatyň sebäpleri baradaky daşary ýurt döwletiniň ýokary okuw mekdebinden haty'))
|
||||||
->columnSpan(1),
|
->columnSpan(1),
|
||||||
|
|||||||
@@ -0,0 +1,149 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Filament\Infolists\Components;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use Filament\Infolists\Components\Entry;
|
||||||
|
use Filament\Support\Concerns\HasMediaFilter;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Support\Arr;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
|
use Spatie\MediaLibrary\MediaCollections\Models\Collections\MediaCollection;
|
||||||
|
use Spatie\MediaLibrary\MediaCollections\Models\Media;
|
||||||
|
use Throwable;
|
||||||
|
|
||||||
|
class SpatieMediaLibraryFileEntry extends Entry
|
||||||
|
{
|
||||||
|
use HasMediaFilter;
|
||||||
|
|
||||||
|
protected string $view = 'filament.infolists.components.spatie-media-library-file-entry';
|
||||||
|
|
||||||
|
protected string | Closure | null $collection = null;
|
||||||
|
|
||||||
|
protected string | Closure | null $conversion = null;
|
||||||
|
|
||||||
|
protected string | Closure $visibility = 'private';
|
||||||
|
|
||||||
|
protected bool | Closure $isDownloadable = true;
|
||||||
|
|
||||||
|
protected bool | Closure $isPreviewable = true;
|
||||||
|
|
||||||
|
public function collection(string | Closure | null $collection): static
|
||||||
|
{
|
||||||
|
$this->collection = $collection;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function conversion(string | Closure | null $conversion): static
|
||||||
|
{
|
||||||
|
$this->conversion = $conversion;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function visibility(string | Closure $visibility): static
|
||||||
|
{
|
||||||
|
$this->visibility = $visibility;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function downloadable(bool | Closure $condition = true): static
|
||||||
|
{
|
||||||
|
$this->isDownloadable = $condition;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function previewable(bool | Closure $condition = true): static
|
||||||
|
{
|
||||||
|
$this->isPreviewable = $condition;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCollection(): ?string
|
||||||
|
{
|
||||||
|
return $this->evaluate($this->collection);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getConversion(): ?string
|
||||||
|
{
|
||||||
|
return $this->evaluate($this->conversion);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getVisibility(): string
|
||||||
|
{
|
||||||
|
return $this->evaluate($this->visibility);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isDownloadable(): bool
|
||||||
|
{
|
||||||
|
return (bool) $this->evaluate($this->isDownloadable);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isPreviewable(): bool
|
||||||
|
{
|
||||||
|
return (bool) $this->evaluate($this->isPreviewable);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMediaUrl(Media $media, ?string $conversion = null): string
|
||||||
|
{
|
||||||
|
if ($this->getVisibility() === 'private') {
|
||||||
|
try {
|
||||||
|
return $media->getTemporaryUrl(
|
||||||
|
now()->addMinutes(30)->endOfHour(),
|
||||||
|
$conversion ?? '',
|
||||||
|
);
|
||||||
|
} catch (Throwable $exception) {
|
||||||
|
// This driver does not support creating temporary URLs.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $media->getUrl($conversion ?? '');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMedia(): Collection
|
||||||
|
{
|
||||||
|
$record = $this->getRecord();
|
||||||
|
|
||||||
|
if (! $record) {
|
||||||
|
return collect([]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->hasStateRelationship($record)) {
|
||||||
|
$record = $this->getStateRelationshipResults($record);
|
||||||
|
}
|
||||||
|
|
||||||
|
$records = Arr::wrap($record);
|
||||||
|
|
||||||
|
$allMedia = collect([]);
|
||||||
|
|
||||||
|
$collection = $this->getCollection() ?? 'default';
|
||||||
|
|
||||||
|
foreach ($records as $record) {
|
||||||
|
/** @var Model $record */
|
||||||
|
$media = $record->getRelationValue('media');
|
||||||
|
|
||||||
|
if (! $media) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$filteredMedia = $media
|
||||||
|
->when(
|
||||||
|
is_string($collection),
|
||||||
|
fn (MediaCollection $mediaCollection) => $mediaCollection->filter(fn (Media $media): bool => $media->getAttributeValue('collection_name') === $collection),
|
||||||
|
)
|
||||||
|
->when(
|
||||||
|
$this->hasMediaFilter(),
|
||||||
|
fn (Collection $media) => $this->filterMedia($media)
|
||||||
|
)
|
||||||
|
->sortBy('order_column');
|
||||||
|
|
||||||
|
$allMedia = $allMedia->merge($filteredMedia);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $allMedia;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -22,6 +22,7 @@ use Illuminate\Routing\Middleware\SubstituteBindings;
|
|||||||
use Illuminate\Session\Middleware\StartSession;
|
use Illuminate\Session\Middleware\StartSession;
|
||||||
use Illuminate\View\Middleware\ShareErrorsFromSession;
|
use Illuminate\View\Middleware\ShareErrorsFromSession;
|
||||||
use Joaopaulolndev\FilamentEditProfile\FilamentEditProfilePlugin;
|
use Joaopaulolndev\FilamentEditProfile\FilamentEditProfilePlugin;
|
||||||
|
use RalphJSmit\Filament\Upload\FilamentUpload;
|
||||||
|
|
||||||
class WorkPanelProvider extends PanelProvider
|
class WorkPanelProvider extends PanelProvider
|
||||||
{
|
{
|
||||||
@@ -71,6 +72,8 @@ class WorkPanelProvider extends PanelProvider
|
|||||||
->customProfileComponents([
|
->customProfileComponents([
|
||||||
UserProfileFields::class,
|
UserProfileFields::class,
|
||||||
]),
|
]),
|
||||||
|
|
||||||
|
FilamentUpload::make(),
|
||||||
])
|
])
|
||||||
->authMiddleware([
|
->authMiddleware([
|
||||||
Authenticate::class,
|
Authenticate::class,
|
||||||
|
|||||||
@@ -0,0 +1,90 @@
|
|||||||
|
<x-filament-infolists::entry-wrapper :entry="$entry">
|
||||||
|
@php
|
||||||
|
$media = $getMedia();
|
||||||
|
$hasImagesOnly = $media->every(fn($m) => str_starts_with($m->mime_type, 'image/'));
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@if ($media->isEmpty())
|
||||||
|
<div class="flex items-center justify-center rounded-xl border border-dashed border-gray-200 bg-white/50 p-4 text-sm text-gray-500 dark:border-white/10 dark:bg-white/5 dark:text-gray-400">
|
||||||
|
{{ __('No files uploaded') }}
|
||||||
|
</div>
|
||||||
|
@elseif ($hasImagesOnly)
|
||||||
|
<div
|
||||||
|
@class([
|
||||||
|
'grid gap-4',
|
||||||
|
'grid-cols-[repeat(auto-fill,minmax(120px,1fr))]' => $media->count() > 1,
|
||||||
|
])
|
||||||
|
>
|
||||||
|
@foreach ($media as $medium)
|
||||||
|
<div class="relative group">
|
||||||
|
<img
|
||||||
|
src="{{ $entry->getMediaUrl($medium, $media->count() > 1 ? 'thumb' : null) }}"
|
||||||
|
class="w-full rounded-lg"
|
||||||
|
/>
|
||||||
|
<a
|
||||||
|
href="{{ $entry->getMediaUrl($medium) }}"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
class="absolute inset-0 flex items-center justify-center bg-black/50 opacity-0 group-hover:opacity-100 transition-opacity rounded-lg"
|
||||||
|
>
|
||||||
|
<x-filament::icon
|
||||||
|
icon="heroicon-m-eye"
|
||||||
|
class="h-8 w-8 text-white"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
@else
|
||||||
|
<div class="flex flex-col gap-3">
|
||||||
|
@foreach ($getMedia() as $media)
|
||||||
|
<div class="flex items-center gap-3 rounded-xl border border-gray-200 bg-white p-2 shadow-sm dark:border-white/10 dark:bg-white/5">
|
||||||
|
<div class="flex h-12 w-12 shrink-0 items-center justify-center rounded-lg bg-gray-100 dark:bg-white/10 overflow-hidden">
|
||||||
|
@if (str_starts_with($media->mime_type, 'image/'))
|
||||||
|
<img
|
||||||
|
src="{{ $media->hasGeneratedConversion('thumb') ? $entry->getMediaUrl($media, 'thumb') : $entry->getMediaUrl($media) }}"
|
||||||
|
alt="{{ $media->name }}"
|
||||||
|
class="h-full w-full object-cover"
|
||||||
|
/>
|
||||||
|
@else
|
||||||
|
<div class="flex h-full w-full items-center justify-center bg-white dark:bg-gray-800">
|
||||||
|
<x-filament::icon
|
||||||
|
icon="heroicon-o-document"
|
||||||
|
class="h-6 w-6 text-gray-500 dark:text-gray-400"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex-grow overflow-hidden">
|
||||||
|
<p class="truncate text-sm font-medium text-gray-950 dark:text-white" title="{{ $media->name }}">
|
||||||
|
{{ $media->name }}
|
||||||
|
</p>
|
||||||
|
<p class="text-xs text-gray-500 dark:text-gray-400">
|
||||||
|
{{ $media->human_readable_size }}
|
||||||
|
<span class="text-gray-300 dark:text-gray-600 px-1">•</span>
|
||||||
|
<span class="uppercase">{{ $media->extension }}</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex shrink-0 items-center gap-2 pr-2">
|
||||||
|
@if ($isPreviewable())
|
||||||
|
<a
|
||||||
|
href="{{ $entry->getMediaUrl($media) }}"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
class="flex items-center justify-center h-8 w-8 rounded-full hover:bg-gray-50 dark:hover:bg-white/10 text-gray-500 hover:text-primary-600 dark:text-gray-400 dark:hover:text-primary-500 transition-colors"
|
||||||
|
title="{{ __('View') }}"
|
||||||
|
>
|
||||||
|
<x-filament::icon
|
||||||
|
icon="heroicon-m-eye"
|
||||||
|
class="h-5 w-5"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</x-filament-infolists::entry-wrapper>
|
||||||
Reference in New Issue
Block a user