feat: speedbump before deleting downloads
This commit is contained in:
2
assets/bootstrap.js
vendored
2
assets/bootstrap.js
vendored
@@ -1,6 +1,8 @@
|
||||
import { startStimulusApp } from '@symfony/stimulus-bundle';
|
||||
import Popover from '@stimulus-components/popover'
|
||||
import Dialog from '@stimulus-components/dialog'
|
||||
|
||||
const app = startStimulusApp();
|
||||
// register any custom, 3rd party controllers here
|
||||
app.register('popover', Popover);
|
||||
app.register('dialog', Dialog);
|
||||
|
||||
@@ -11,3 +11,40 @@
|
||||
font-size: var(--text-xl);
|
||||
}
|
||||
}
|
||||
|
||||
/* Prevent scrolling while dialog is open */
|
||||
body:has(dialog[data-dialog-target="dialog"][open]) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Customize the dialog backdrop */
|
||||
dialog {
|
||||
box-shadow: 0 0 0 100vw rgb(0 0 0 / 0.5);
|
||||
}
|
||||
|
||||
@keyframes fade-in {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fade-out {
|
||||
0% {
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Add animations */
|
||||
dialog[data-dialog-target="dialog"][open] {
|
||||
animation: fade-in 200ms forwards;
|
||||
}
|
||||
|
||||
dialog[data-dialog-target="dialog"][closing] {
|
||||
animation: fade-out 200ms forwards;
|
||||
}
|
||||
|
||||
@@ -31,4 +31,7 @@ return [
|
||||
'@stimulus-components/popover' => [
|
||||
'version' => '7.0.0',
|
||||
],
|
||||
'@stimulus-components/dialog' => [
|
||||
'version' => '1.0.1',
|
||||
],
|
||||
];
|
||||
|
||||
10
src/Twig/Components/Modal.php
Normal file
10
src/Twig/Components/Modal.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Twig\Components;
|
||||
|
||||
use Symfony\UX\TwigComponent\Attribute\AsTwigComponent;
|
||||
|
||||
#[AsTwigComponent]
|
||||
final class Modal
|
||||
{
|
||||
}
|
||||
@@ -33,12 +33,10 @@
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="px-6 py-4 flex flex-row align-middle justify-center">
|
||||
<button {{ stimulus_action('download_list', 'deleteDownload', 'click', {id: download.id}) }}>
|
||||
<twig:ux:icon
|
||||
name="ic:twotone-cancel" width="18px"
|
||||
class="rounded-full align-middle text-red-600"
|
||||
title="Remove {{ download.title }} from your Download list. This will not delete the file."
|
||||
/>
|
||||
</button>
|
||||
{% set cancel_button = component('ux:icon', {name: 'ic:twotone-cancel', width: '18px', class: 'rounded-full align-middle text-red-600' }) %}
|
||||
<twig:Modal heading="But wait!" button_text="{{ cancel_button }}" submit_action="{{ stimulus_action('download_list', 'deleteDownload', 'click', {id: download.id}) }}" show_cancel show_submit>
|
||||
Are you sure you want to delete <span class="font-bold">{{ download.filename }}</span>?
|
||||
</twig:Modal>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
26
templates/components/Modal.html.twig
Normal file
26
templates/components/Modal.html.twig
Normal file
@@ -0,0 +1,26 @@
|
||||
<div{{ attributes }} data-controller="dialog" data-action="click->dialog#backdropClose">
|
||||
<dialog data-dialog-target="dialog" class="py-3 px-4 w-[30rem] rounded-md">
|
||||
<h2 class="mb-4 text-2xl font-bold">{{ heading }}</h2>
|
||||
|
||||
<div class="mb-4">
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
|
||||
{% if show_cancel is defined or show_submit is defined %}
|
||||
<div class="flex justify-end">
|
||||
{% if show_cancel is defined %}
|
||||
<button type="button" data-action="dialog#close" class="px-1 py-1 rounded-md self-end w-16" autofocus>
|
||||
{{ cancel_text|default('Cancel') }}
|
||||
</button>
|
||||
{% endif %}
|
||||
{% if show_submit is defined %}
|
||||
<button type="button" {{ submit_action|raw }} class="px-1 py-1 rounded-md bg-orange-500 self-end text-white w-16 ml-2" autofocus>
|
||||
{{ submit_text|default('Submit') }}
|
||||
</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</dialog>
|
||||
|
||||
<button type="button" data-action="dialog#open">{{ button_text|raw }}</button>
|
||||
</div>
|
||||
Reference in New Issue
Block a user