Group e-mails by first character in the group creation/edition form

This commit is contained in:
Antoine Le Gonidec 2024-07-20 18:36:58 +02:00
parent a7010dad53
commit 53cb37897a
Signed by: vv221
GPG key ID: 636B78F91CEB80D8
2 changed files with 36 additions and 21 deletions

View file

@ -53,6 +53,12 @@ class CustomersGroupsController extends Controller {
->pluck('emails') ->pluck('emails')
->flatten() ->flatten()
->sortBy('email'); ->sortBy('email');
// Group Emails by their first character.
// This is used to display them in collapsible groups.
$emails = $emails->mapToGroups(function ($email) {
$first_character = substr($email->email, $offset = 0, $length = 1);
return [ $first_character => $email ];
});
return view('mmfcustomersgroups::groups/edit', [ return view('mmfcustomersgroups::groups/edit', [
'mailboxes' => $mailboxes, 'mailboxes' => $mailboxes,

View file

@ -84,7 +84,14 @@
</label> </label>
<div class="col-sm-6"> <div class="col-sm-6">
<div class="multi-container"> <div class="multi-container">
@foreach ( $emails as $email ) @foreach ( $emails as $first_character => $emails_group )
<details>
<summary
style="display: list-item; counter-increment: list-item 0; list-style: disclosure-closed inside; cursor: pointer;"
>
{{ $first_character }}
</summary>
@foreach ( $emails_group as $email )
<div class="control-group"> <div class="control-group">
<div class="controls"> <div class="controls">
<label <label
@ -106,6 +113,8 @@
</div> </div>
</div> </div>
@endforeach @endforeach
</details>
@endforeach
</div> </div>
{{-- @include('partials/field_error', ['field'=>'emails.*']) --}} {{-- @include('partials/field_error', ['field'=>'emails.*']) --}}
</div> </div>