Add domain history clear confirmation
This commit is contained in:
@@ -5,6 +5,7 @@ mod download_labels;
|
||||
mod download_settings;
|
||||
mod downloads;
|
||||
mod general;
|
||||
mod history;
|
||||
mod plugin_catalog;
|
||||
mod plugin_details;
|
||||
mod plugins;
|
||||
@@ -23,7 +24,7 @@ mod task_manager;
|
||||
|
||||
use ely_browser_core::BrowserSnapshot;
|
||||
use ely_design_system::{colors, spacing};
|
||||
use ely_domain::{ArchiveSource, ArchivedTab, BrowserTab, HistoryEntry};
|
||||
use ely_domain::{ArchiveSource, ArchivedTab, BrowserTab};
|
||||
use gpui::{
|
||||
AnyElement, Context, InteractiveElement, IntoElement, ParentElement, SharedString,
|
||||
StatefulInteractiveElement, Styled, div, px, rgb,
|
||||
@@ -73,136 +74,6 @@ impl ElyShell {
|
||||
}
|
||||
}
|
||||
|
||||
fn render_history_page(
|
||||
&mut self,
|
||||
snapshot: &BrowserSnapshot,
|
||||
cx: &mut Context<Self>,
|
||||
) -> AnyElement {
|
||||
render_canvas_surface(
|
||||
div()
|
||||
.size_full()
|
||||
.p_8()
|
||||
.flex()
|
||||
.flex_col()
|
||||
.gap_5()
|
||||
.child(
|
||||
div()
|
||||
.flex()
|
||||
.items_end()
|
||||
.justify_between()
|
||||
.child(
|
||||
div()
|
||||
.flex()
|
||||
.flex_col()
|
||||
.gap_2()
|
||||
.child(
|
||||
div()
|
||||
.text_size(px(26.0))
|
||||
.text_color(rgb(colors::INK))
|
||||
.child("History"),
|
||||
)
|
||||
.child(div().text_sm().text_color(rgb(colors::MUTED)).child(
|
||||
format!(
|
||||
"{} / {}",
|
||||
snapshot.active_profile_name, snapshot.active_space_name
|
||||
),
|
||||
)),
|
||||
)
|
||||
.child(
|
||||
div()
|
||||
.text_xs()
|
||||
.text_color(rgb(colors::MUTED))
|
||||
.child(format!("{} entries", snapshot.history_entries.len())),
|
||||
),
|
||||
)
|
||||
.child(self.render_history_list(snapshot, cx)),
|
||||
)
|
||||
}
|
||||
|
||||
fn render_history_list(
|
||||
&mut self,
|
||||
snapshot: &BrowserSnapshot,
|
||||
cx: &mut Context<Self>,
|
||||
) -> AnyElement {
|
||||
if snapshot.history_entries.is_empty() {
|
||||
return div()
|
||||
.flex_1()
|
||||
.border_t_1()
|
||||
.border_color(rgb(colors::HAIRLINE))
|
||||
.pt_5()
|
||||
.text_sm()
|
||||
.text_color(rgb(colors::MUTED))
|
||||
.child("History is empty for this Space and Profile.")
|
||||
.into_any_element();
|
||||
}
|
||||
|
||||
div()
|
||||
.flex_1()
|
||||
.flex()
|
||||
.flex_col()
|
||||
.overflow_y_scrollbar()
|
||||
.border_t_1()
|
||||
.border_color(rgb(colors::HAIRLINE))
|
||||
.children(
|
||||
snapshot
|
||||
.history_entries
|
||||
.iter()
|
||||
.rev()
|
||||
.enumerate()
|
||||
.map(|(index, entry)| self.render_history_row(index, entry, cx)),
|
||||
)
|
||||
.into_any_element()
|
||||
}
|
||||
|
||||
fn render_history_row(
|
||||
&mut self,
|
||||
index: usize,
|
||||
entry: &HistoryEntry,
|
||||
cx: &mut Context<Self>,
|
||||
) -> AnyElement {
|
||||
let url = entry.url().clone();
|
||||
|
||||
div()
|
||||
.id(SharedString::from(format!("history-{index}")))
|
||||
.py_3()
|
||||
.border_b_1()
|
||||
.border_color(rgb(colors::HAIRLINE))
|
||||
.flex()
|
||||
.items_center()
|
||||
.justify_between()
|
||||
.gap_4()
|
||||
.cursor_pointer()
|
||||
.hover(|style| style.bg(rgb(colors::CANVAS_SOFT)))
|
||||
.active(|style| style.opacity(0.82))
|
||||
.on_click(cx.listener(move |shell, _, window, cx| {
|
||||
shell.open_url(url.clone(), window, cx);
|
||||
}))
|
||||
.child(
|
||||
div()
|
||||
.min_w_0()
|
||||
.flex()
|
||||
.flex_col()
|
||||
.gap_1()
|
||||
.child(
|
||||
div()
|
||||
.text_sm()
|
||||
.font_semibold()
|
||||
.truncate()
|
||||
.text_color(rgb(colors::INK))
|
||||
.child(entry.title().to_string()),
|
||||
)
|
||||
.child(
|
||||
div()
|
||||
.text_xs()
|
||||
.truncate()
|
||||
.text_color(rgb(colors::MUTED))
|
||||
.child(entry.url().display_url()),
|
||||
),
|
||||
)
|
||||
.child(div().text_color(rgb(colors::MUTED_SOFT)).child(IconName::ExternalLink))
|
||||
.into_any_element()
|
||||
}
|
||||
|
||||
fn render_archive_page(
|
||||
&mut self,
|
||||
snapshot: &BrowserSnapshot,
|
||||
|
||||
Reference in New Issue
Block a user