<%= if @live_action in [:new, :edit, :clone] do %> <.live_component module={Shift73kWeb.ModalComponent} id="modal" component={Shift73kWeb.ShiftTemplateLive.FormComponent} opts={[ id: @shift_template.id || :new, title: @page_title, action: @live_action, shift_template: @shift_template, current_user: @current_user ]} /> <% end %> <%= if @delete_shift_template do %> <.live_component module={Shift73kWeb.ModalComponent} id="modal" component={Shift73kWeb.ShiftTemplateLive.DeleteComponent} opts={[ id: @delete_shift_template.id, title: "Delete Shift Template", delete_shift_template: @delete_shift_template ]} /> <% end %> <div class="row justify-content-start justify-content-sm-center"> <div class="col-md-10 col-xl-10"> <div class="d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center"> <h2 class="mb-3 mb-sm-0"> <i class="bi bi-clock-history me-1"></i> My Shift Templates </h2> <%= live_patch to: Routes.shift_template_index_path(@socket, :new), class: "btn btn-primary" do %> <i class="bi bi-plus-circle-dotted me-1"></i> New Shift Template <% end %> </div> <div class="row"> <%= for template <- @shift_templates do %> <div class="col-12 col-lg-6"> <div class="card mt-4"> <h5 class="card-header d-flex justify-content-between align-items-center"> <span class="visually-hidden">Subject:</span> <i class="bi bi-tag me-1"></i> <div class="w-100"><%= template.subject %></div> <% fav_icon_data = if template.id == @current_user.fave_shift_template_id, do: {"bi-star-fill", "Unset as favorite", "unset-user-fave-shift-template"}, else: {"bi-star", "Set as favorite", "set-user-fave-shift-template"} %> <i class={"bi #{elem(fav_icon_data, 0)} text-primary align-self-start ms-2 cursor-pointer"} role="img" aria-hidden="false" aria-label={elem(fav_icon_data, 1)} phx-click={elem(fav_icon_data, 2)} phx-value-id={template.id}></i> </h5> <div class="card-body"> <table class="table table-borderless table-nonfluid table-sm"> <tbody> <tr> <th scope="row" class="text-end"> <i class="bi bi-hourglass text-muted"></i> <span class="visually-hidden">Hours:</span> </th> <td> <%= format_shift_time(template.time_start) %> — <%= format_shift_time(template.time_end) %> <span class="text-muted"> <span class="visually-hidden">Shift length:</span> (<%= format_shift_length(template) %>) </span> <span class="valid-feedback d-block text-muted mt-n1">TZ: <%= template.time_zone %></span> </td> </tr> <tr> <th scope="row" class="text-end"> <i class="bi bi-geo text-muted"></i> <span class="visually-hidden">Location:</span> </th> <td> <%= if template.location do %> <%= template.location %> <% else %> <span class="text-muted fst-italic">none</span> <% end %> </td> </tr> <tr> <th scope="row" class="text-end"> <i class="bi bi-justify-left text-muted"></i> <span class="visually-hidden">Description:</span> </th> <td> <%= if template.description do %> <%= text_to_html template.description %> <% else %> <span class="text-muted fst-italic">none</span> <% end %> </td> </tr> </tbody> </table> <%= if Roles.can?(@current_user, template, :edit) do %> <%= live_patch to: Routes.shift_template_index_path(@socket, :edit, template), class: "btn btn-primary btn-sm text-nowrap" do %> <i class="bi bi-pencil me-1"></i> Edit <% end %> <% end %> <%= if Roles.can?(@current_user, template, :clone) do %> <%= live_patch to: Routes.shift_template_index_path(@socket, :clone, template), class: "btn btn-outline-primary btn-sm text-nowrap" do %> <i class="bi bi-clipboard-plus me-1"></i> Clone <% end %> <% end %> <%= if Roles.can?(@current_user, template, :delete) do %> <button class="btn btn-outline-danger btn-sm text-nowrap" phx-click="delete-modal" phx-value-id={template.id}> <i class="bi bi-trash me-1"></i> Delete </button> <% end %> </div> </div> </div> <% end %> </div> </div> </div>