66 lines
2.6 KiB
PHP

<div class="space-y-4">
<div class="flex justify-between items-center">
<h2 class="text-xl font-bold">{{ __('roles.list') }}</h2>
<x-button primary label="{{__('roles.CreateNewRole')}}" wire:click="openCreateModal" />
</div>
<div class="flex items-center gap-2">
<x-input wire:model.debounce.300ms="search" placeholder="搜尋角色名稱..." class="w-64" />
</div>
<x-table divider="thin" has_shadow="true" celled="true">
<x-slot name="header">
<th class="cursor-pointer" wire:click="sortBy('id')">{{__('roles.no')}}</th>
<th class="cursor-pointer" wire:click="sortBy('name')">{{__('roles.name')}}</th>
<th>{{__('roles.action')}}</th>
</x-slot>
@forelse ($roles as $role)
<tr>
<td>{{ $role->id }}</td>
<td>{{ $role->name }}</td>
<td class="space-x-2">
@can('role-edit')
<x-button flat label="{{ __('roles.edit') }}" color="yellow" icon="pencil-square" wire:click="openEditModal({{ $role->id }})" />
@endcan
@can('role-delete')
<x-button flat label="{{ __('roles.delete') }}" color="red" icon="trash" wire:click="delete({{ $role->id }})" />
@endcan
</td>
</tr>
@empty
<tr>
<td colspan="3">{{ __('No roles found.') }}</td>
</tr>
@endforelse
</x-table>
<div class="mt-4">
{!! $roles->links('pagination::tailwind') !!}
</div>
@if ($showCreateModal)
<x-modal-card title="{{ $editingRoleId ? '編輯角色' : '新增角色' }}" blur wire:model.defer="showCreateModal">
<div class="space-y-4">
<x-input label="角色名稱" wire:model.defer="name" />
<x-select
label="權限"
wire:model.defer="selectedPermissions"
placeholder="選擇權限"
multiselect
option-label="label"
option-value="value"
:options="$permissions->map(fn($p) => ['value' => $p->id, 'label' => $p->name])->toArray()"
/>
</div>
<x-slot name="footer">
<div class="flex justify-center gap-2">
<x-button primary label="{{__('roles.cancel')}}" x-on:click="$dispatch('close')" />
<x-button primary label="{{__('roles.submit')}}" wire:click="save" />
</div>
</x-slot>
</x-modal-card>
@endif
</div>