41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
import { Controller } from '@hotwired/stimulus';
|
|
|
|
/**
|
|
* Show warning before deleting record
|
|
* [template: {entity}/index.html.twig]
|
|
*/
|
|
export default class extends Controller {
|
|
static targets = ['modal', 'path', 'name', 'message'];
|
|
|
|
/**
|
|
* @todo Refactor with actions for modal
|
|
* @param {object} event
|
|
*/
|
|
warn(event) {
|
|
event.preventDefault();
|
|
const id = event.currentTarget.getAttribute('data-url').match(/\d+$/)[0];
|
|
const modal = this.modalTarget;
|
|
const name = this.nameTargets.find(a => a.href.includes(id)).textContent;
|
|
|
|
const message = `The record '<strong>${name.trim()}</strong>' will be permanently deleted. Proceed?`;
|
|
|
|
modal.classList.add('is-active');
|
|
this.messageTarget.innerHTML = message;
|
|
modal.querySelector('.delete').addEventListener('click', () => {
|
|
modal.classList.remove('is-active');
|
|
});
|
|
modal.querySelector('.modal-background').addEventListener('click', () => {
|
|
modal.classList.remove('is-active');
|
|
});
|
|
modal.querySelector('#cancel').addEventListener('click', () => {
|
|
modal.classList.remove('is-active');
|
|
});
|
|
|
|
}
|
|
// Proceed with deletion...
|
|
delete() {
|
|
const delPath = this.pathTarget.getAttribute('data-url');
|
|
location.href = delPath;
|
|
}
|
|
}
|