submit.blade.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. @unless($scriptOnly ?? false)
  2. <div class="row">
  3. <div class="@if(!($right ?? null)) offset-md-{{ $offset ?? 4 }} col-md-{{ (isset($offset)) ? 12 - $offset : 8 }} @endif buttons d-flex flex-wrap gap-1">
  4. <button type="submit" class="btn btn-sm mb-1 btn-primary text-white" @disabled($disabled ?? false)>{{ $name ?? 'Сохранить' }}</button>
  5. @if(isset($delete) && !($deleteDisabled ?? false))
  6. <a href="#" class="btn btn-sm mb-1 btn-danger delete">{{ $delete['title'] ?? 'Удалить' }}</a>
  7. @endif
  8. <a href="{!! $backurl ?? ($back_url ?? url()->previous()) !!}" class="btn btn-sm mb-1 btn-outline-secondary">Назад</a>
  9. </div>
  10. </div>
  11. @push('scripts')
  12. <script type="module">
  13. $('a.delete').on('click', function (e){
  14. e.preventDefault();
  15. customConfirm('{{ $delete['question'] ?? 'Удалить запись?' }}', function () {
  16. $('#{{ $delete['form_id'] ?? 'destroy_form'}}').submit();
  17. }, 'Подтверждение удаления');
  18. });
  19. </script>
  20. @endpush
  21. @endunless
  22. @once
  23. @push('scripts')
  24. <script type="module">
  25. const submitLockDuration = 3000;
  26. document.addEventListener('submit', function (event) {
  27. const form = event.target;
  28. if (!(form instanceof HTMLFormElement)) {
  29. return;
  30. }
  31. if (form.dataset.submitLocked === '1') {
  32. event.preventDefault();
  33. event.stopImmediatePropagation();
  34. return;
  35. }
  36. form.dataset.submitLocked = '1';
  37. const submitButtons = Array.from(document.querySelectorAll('button[type="submit"], input[type="submit"]'))
  38. .filter((button) => button.form === form);
  39. submitButtons.forEach((button) => {
  40. if (!button.disabled) {
  41. button.dataset.submitLockDisabled = '1';
  42. button.disabled = true;
  43. }
  44. });
  45. setTimeout(function () {
  46. delete form.dataset.submitLocked;
  47. submitButtons.forEach((button) => {
  48. if (button.dataset.submitLockDisabled === '1') {
  49. button.disabled = false;
  50. delete button.dataset.submitLockDisabled;
  51. }
  52. });
  53. }, submitLockDuration);
  54. }, true);
  55. </script>
  56. @endpush
  57. @endonce