Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extract the confirm call in its own, overridable method in rails_ujs #32404

Merged
merged 1 commit into from Apr 2, 2018

Conversation

@mathieumahe
Copy link
Contributor

@mathieumahe mathieumahe commented Apr 1, 2018

Following the discussion in #32402 and the inactivity of #29965, I added the possibility to override the confirm call in rails_ujs. This feature can be useful to anyone who want to customize the confirm dialog for example.

The behaviour was possible with jquery_ujs but was missing from rails_ujs.

@rails-bot
Copy link

@rails-bot rails-bot commented Apr 1, 2018

Thanks for the pull request, and welcome! The Rails team is excited to review your changes, and you should hear from @sgrif (or someone else) soon.

If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.

This repository is being automatically checked for code quality issues using Code Climate. You can see results for this analysis in the PR status below. Newly introduced issues should be fixed before a Pull Request is considered ready to review.

Please see the contribution instructions for more information.

@guilleiguaran guilleiguaran merged commit 91f4e33 into rails:master Apr 2, 2018
2 checks passed
ycherniavskyi
Copy link
Contributor

ycherniavskyi commented on e9aa7ec Aug 14, 2018

@mathieumahe could you please explain in more details how exactly you propose to implement my_bootstrap_modal_confirm?
Because Window.confirm() method waits until a user makes a choice and only then returned. But how to implement the same behavior for my_bootstrap_modal_confirm is not fully clear.

mathieumahe
Copy link
Contributor

mathieumahe commented on e9aa7ec Aug 15, 2018

First a redefine in my code the Rails.confirm function. When it's called, I display a modal and return false immediately.
If the user click on the "OK" button of the modal, I keep an reference to my current Rails.confirm, redefine it as a function that always return true, simulate a click on the element that trigger the event, and redefine back the Rails.confirm.

A light version would be :

Rails.confirm = function(message, element) {
  let $element = $(element)
  let $dialog = ...

  $dialog
    .find(".modal-ok-button").click(function(event) {
      event.preventDefault()
      $dialog.modal("hide")

      let old = Rails.confirm

      Rails.confirm = function() { return true }
      $element.get(0).click();
      Rails.confirm = old;
    })
  )

  $dialog.modal("show").appendTo("body")
  return false;
}
ycherniavskyi
Copy link
Contributor

ycherniavskyi commented on e9aa7ec Aug 18, 2018

@mathieumahe thank you for explanation and clear example.

@orischwartz
Copy link

@orischwartz orischwartz commented Nov 6, 2018

Any reason why this commit (91f4e33) has not been pulled into https://github.com/rails/rails/tree/5-2-stable?

There's no risk of breaking any existing functionality and it's a useful enhancement for the rails-ujs npm package.

@brendon
Copy link
Contributor

@brendon brendon commented Aug 9, 2020

This would have been so good to get into Rails 5.2. Is there any chance of that happening now? Rails 6 wasn't out when this one was merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

7 participants