Skip to content

Commit 729d41d

Browse files
laxsjoPoizon7
authored andcommitted
feat: Add delete button to group view; Make delete buttons red
Previously the delete button was only available in the group edit view. Also made the group and slide delete buttons red and pretty. ✨
1 parent 28a9bdc commit 729d41d

3 files changed

Lines changed: 35 additions & 12 deletions

File tree

crates/frontend/src/components/content.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@ use leptos::prelude::*;
44
use leptos_icons::Icon;
55
use web_sys::File;
66

7-
use crate::{api, components::{dialog::Dialog, error::ErrorList}, context::SlideGroupOptionsContext};
7+
use crate::{
8+
api,
9+
components::{dialog::Dialog, error::ErrorList},
10+
context::SlideGroupOptionsContext,
11+
};
812

913
#[component]
1014
pub fn ContentItem(

crates/frontend/src/components/slide.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,11 @@ fn AddSlideButton(#[prop(into)] group_id: Signal<i32>, max_position: Signal<i32>
8787
}
8888

8989
#[component]
90-
fn SlideRow(#[prop(into)] slide: Signal<SlideDto>, slide_group: Signal<SlideGroupDto>, editeble: bool) -> impl IntoView {
90+
fn SlideRow(
91+
#[prop(into)] slide: Signal<SlideDto>,
92+
slide_group: Signal<SlideGroupDto>,
93+
editeble: bool,
94+
) -> impl IntoView {
9195
let screens = use_context::<ScreenContext>()
9296
.expect("expected screen context")
9397
.screens;
@@ -126,8 +130,8 @@ fn SlideRow(#[prop(into)] slide: Signal<SlideDto>, slide_group: Signal<SlideGrou
126130
view! {
127131
<Show when=move || !slide_group.get().archive_date.is_some() && editeble>
128132
<div class="flex flex-row justify-center md:justify-start">
129-
<button class="btn my-3" on:click=move |_| is_delete_dialog_open.set(true)>
130-
Delete
133+
<button class="btn btn-soft btn-choose btn-error my-3" on:click=move |_| is_delete_dialog_open.set(true)>
134+
Delete Slide
131135
</button>
132136
</div>
133137
</Show>
@@ -162,7 +166,7 @@ pub fn DeleteDialog(#[prop()] slide_id: i32, open: RwSignal<bool>) -> impl IntoV
162166
<p>Are you sure you want to delete these slides</p>
163167
</div>
164168
<div class="mt-6 flex gap-3">
165-
<button class="btn" on:click=move |_| {delete_action.dispatch(());}>
169+
<button class="btn btn-error" on:click=move |_| {delete_action.dispatch(());}>
166170
Delete
167171
</button>
168172
<button class="btn" type="button" on:click=move |_| open.set(false)>

crates/frontend/src/components/slide_group_options.rs

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
use chrono::Utc;
22
use common::dtos::{CreateSlideGroupDto, SlideGroupDto};
33
use icondata as i;
4-
use leptos::prelude::*;
4+
use leptos::{leptos_dom::logging::console_log, prelude::*};
55
use leptos_icons::Icon;
66

77
use crate::{
88
api,
9-
components::{dialog::Dialog, alert::Alert, error::ErrorList, slide::SlideList},
9+
components::{alert::Alert, dialog::Dialog, error::ErrorList, slide::SlideList},
1010
context::SlideGroupOptionsContext,
1111
utils::{
1212
bool::fmt_if,
@@ -238,8 +238,8 @@ fn SlideGroupEditOptions(
238238
<button class="btn" type="button" on:click=move |_| set_editing_options.set(false)>
239239
Cancel
240240
</button>
241-
<button class="btn" type="button" on:click=move |_| is_delete_dialog_open.set(true)>
242-
Delete
241+
<button class="btn btn-soft btn-error" type="button" on:click=move |_| is_delete_dialog_open.set(true)>
242+
Delete Group
243243
</button>
244244
</div>
245245
</fieldset>
@@ -255,10 +255,17 @@ fn SlideGroupViewOptions(
255255
slide_group: Signal<SlideGroupDto>,
256256
set_editing_options: WriteSignal<bool>,
257257
) -> impl IntoView {
258+
let is_delete_dialog_open = RwSignal::new(false);
259+
258260
view! {
259261
<div>
260262
{move || {
261263
view! {
264+
<DeleteDialog
265+
slide_group_id=slide_group.get().id
266+
open=is_delete_dialog_open
267+
set_editing_options=set_editing_options
268+
/>
262269
<Show when=move || !slide_group.read().archive_date.is_some()>
263270
<button on:click=move |_| set_editing_options.set(true) class="btn">Edit</button>
264271

@@ -272,6 +279,8 @@ fn SlideGroupViewOptions(
272279
}
273280
.into_any()
274281
}}
282+
283+
<button on:click=move |_| is_delete_dialog_open.set(true) class="btn btn-soft btn-error">Delete Group</button>
275284
</Show>
276285
}.into_any()
277286
}}
@@ -333,9 +342,15 @@ fn SlideGroupViewOptions(
333342
}
334343

335344
#[component]
336-
pub fn DeleteDialog(#[prop()] slide_group_id: i32, open: RwSignal<bool>, set_editing_options: WriteSignal<bool>) -> impl IntoView {
345+
pub fn DeleteDialog(
346+
#[prop()] slide_group_id: i32,
347+
open: RwSignal<bool>,
348+
set_editing_options: WriteSignal<bool>,
349+
) -> impl IntoView {
337350
let delete_action =
338-
Action::new_local(move |_: &()| async move { api::archive_slide_group(slide_group_id).await });
351+
Action::new_local(
352+
move |_: &()| async move { api::archive_slide_group(slide_group_id).await },
353+
);
339354

340355
let Some(page_context) = use_context::<SlideGroupOptionsContext>() else {
341356
// if context is not available, then hide button
@@ -358,7 +373,7 @@ pub fn DeleteDialog(#[prop()] slide_group_id: i32, open: RwSignal<bool>, set_edi
358373
<p>Are you sure you want to delete this slide group</p>
359374
</div>
360375
<div class="mt-6 flex gap-3">
361-
<button class="btn" on:click=move |_| {delete_action.dispatch(());}>
376+
<button class="btn btn-error" on:click=move |_| {delete_action.dispatch(());}>
362377
Delete
363378
</button>
364379
<button class="btn" type="button" on:click=move |_| open.set(false)>

0 commit comments

Comments
 (0)