Add some toasts

This commit is contained in:
david 2024-11-12 23:55:00 +01:00
parent 84fc1d2d93
commit 934deddec4
10 changed files with 50 additions and 5 deletions

View file

@ -28,4 +28,8 @@ module ApplicationHelper
def current_page_displayed(page)
@current_page&.id == page.id ? "open" : nil
end
def turbo_stream_toast(content, alert)
turbo_stream.append("toasts", partial: "layouts/toast", locals: { content:, alert: })
end
end

View file

@ -43,5 +43,8 @@ application.register("sortable", SortableController)
import ThemeSwitcherController from "./theme_switcher_controller"
application.register("theme-switcher", ThemeSwitcherController)
import ToastController from "./toast_controller"
application.register("toast", ToastController)
import UnsavedChangesController from "./unsaved_changes_controller"
application.register("unsaved-changes", UnsavedChangesController)

View file

@ -0,0 +1,10 @@
import { Controller } from "@hotwired/stimulus"
import * as bootstrap from "bootstrap"
// Connects to data-controller="toast"
export default class extends Controller {
connect() {
const toastBootstrap = bootstrap.Toast.getOrCreateInstance(this.element)
toastBootstrap.show()
}
}

View file

@ -1,3 +1,6 @@
= turbo_stream.update "new_element_frame", partial: "pages/new_element_button", locals: { page: @element.page }
= turbo_stream.append "element_list", @element
= turbo_stream.append dom_id(@element.page, :page_nav_elements), partial: "elements/page_nav_row", locals: { element: @element, current_page: true }
= turbo_stream_toast("Element hinzugefügt", false)

View file

@ -3,3 +3,6 @@
- @element.page.elements.reject { _1 == @element }.each do |e|
= turbo_stream.update dom_id(e, :title), "#{e.page.position}.#{e.position} #{e.title}"
= turbo_stream.replace dom_id(e, :page_nav_row), partial: "elements/page_nav_row", locals: { element: e, current_page: true }
= turbo_stream_toast("Element wurde gelöscht", false)

View file

@ -6,3 +6,6 @@
- element.success_criteria.each do |sc|
= turbo_stream.update dom_id(sc, :position), "#{sc.page.position}.#{sc.element.position}.#{sc.position}"
= turbo_stream.replace dom_id(element, :frame), element
= turbo_stream_toast("Element gespeichert", false)

View file

@ -0,0 +1,8 @@
.toast class="#{alert ? "text-bg-danger" : ""}" role="alert" aria-live="assertive" aria-atomic="true" data={ controller: "toast" }
.toast-header
/img src="..." class="rounded me-2" alt="...">
/strong.me-auto = heading
.small.me-auto = l(Time.current.to_time)
button.btn-close type="button" data-bs-dismiss="toast" aria-label="Schliessen"
.toast-body
= content

View file

@ -16,5 +16,12 @@ html data-bs-theme="#{cookies[:"modeTheme"] || "light"}" data-controller="set-th
main.col.ps-md-2.pt-2
#main-content[data-controller="rich-text-link-targets"]
= yield
.toast-container.position-fixed.bottom-0.start-0.p-3 id="toasts"
- if flash.alert
= render partial: "layouts/toast", locals: { content: flash.alert, alert: true }
- if flash.notice
= render partial: "layouts/toast", locals: { content: flash.notice, alert: false }
/footer.container-fluid.mt-auto.border-top
= Rails.configuration.build_version && "Version: #{Rails.configuration.build_version}"

View file

@ -5,3 +5,5 @@
= turbo_stream.replace dom_id(element, :page_nav_row), partial: "elements/page_nav_row", locals: { element: element, current_page: element.page == @page}
- element.success_criteria.each do |sc|
= turbo_stream.update dom_id(sc, :position), "#{sc.page.position}.#{sc.element.position}.#{sc.position}"
= turbo_stream_toast("Pfad gespeichert", false)

View file

@ -3,3 +3,5 @@
- @success_criterion.element.success_criteria.each do |sc|
= turbo_stream.update(dom_id(sc, :position), sc.number)
= turbo_stream_toast("Erfolgskriterium gespeichert: #{t("activerecord.attributes.success_criterion.results/#{@success_criterion.result}")}", false)