Browse Source

boolean args

main
pvincent 2 weeks ago
parent
commit
1dcc773293
  1. 19
      app/javascript/initializers/forms.js
  2. 12
      app/views/edge/index.html.erb

19
app/javascript/initializers/forms.js

@ -1,10 +1,17 @@
// the confirm action opens front-dialog
/** the confirm action opens the 'front-dialog' by default, customize if needed! */
Turbo.config.forms.confirm_dialog_id = 'front-dialog'
Turbo.config.forms.confirm_dialog_content_selector = '[data-dialog-content]'
/** content might be either a String or a Boolean */
Turbo.config.forms.confirm = (content) => {
const dialog = document.getElementById('front-dialog')
const dialogContent = dialog.querySelector('[data-dialog-content]')
dialogContent.innerHTML = content
if (content.toString() == 'false') return new Promise((resolve) => { resolve(true) })
if (content.toString() == 'true') content = ''
const dialog = document.getElementById(Turbo.config.forms.confirm_dialog_id)
dialog.querySelector(Turbo.config.forms.confirm_dialog_content_selector).innerHTML = content
dialog.showModal()
return new Promise((resolve) => {
dialog.addEventListener(
'close',
@ -13,7 +20,11 @@ Turbo.config.forms.confirm = (content) => {
})
}
/** dialogId might be either a String or a Boolean */
Turbo.config.forms.showModal = (dialogId) => {
if (dialogId.toString() == 'false') return
if (dialogId.toString() == 'true') dialogId = Turbo.config.forms.confirm_dialog_id
const dialog = document.getElementById(dialogId)
if (dialog) dialog.showModal()
else console.warn(`dialog id=<${dialogId}> not found!`)

12
app/views/edge/index.html.erb

@ -2,17 +2,23 @@
<ul class="m-2 flex gap-2">
<li>
<%= button_to 'Show Modal',false, class: "btn btn-primary", data: { turbo_show_modal: 'remote-dialog'} %>
<%= button_to 'Show Modal Default',false, class: "btn btn-primary", data: { turbo_show_modal: true } %>
</li>
<li>
<%= button_to 'Show Modal Front',false, class: "btn btn-primary", data: { turbo_show_modal: 'front-dialog'} %>
</li>
<li>
<form method="dialog">
<%= content_tag :button, 'Show Modal2', class: "btn btn-primary", onclick: "Turbo.config.forms.showModal('remote-dialog')" %>
<%= content_tag :button, 'Show Modal Remote', class: "btn btn-primary", onclick: "Turbo.config.forms.showModal('remote-dialog')" %>
<%= content_tag :button, 'Show Modal Remote2', class: "btn btn-primary", onclick: "Turbo.config.forms.showModal(false)" %>
</form>
</li>
<li>
<%= button_to 'Delete', @meeting, method: :delete, class: "btn btn-error", data: { turbo_confirm: 'cette action est irréversible, merci de confirmer'} %>
<%= button_to 'Delete1', @meeting, method: :delete, class: "btn btn-error", data: { turbo_confirm: 'cette action est irréversible, merci de confirmer'} %>
<%= button_to 'Delete2', @meeting, method: :delete, class: "btn btn-error", data: { turbo_confirm: false} %>
</li>
</ul>

Loading…
Cancel
Save