From 2df40ac3481d5d8bf8e7e635b00f88d143bc9b7a Mon Sep 17 00:00:00 2001 From: Franklin Date: Tue, 4 Apr 2023 11:14:16 -0400 Subject: [PATCH] Perfected Navbar --- assets/images/logo-color.png | Bin 0 -> 35750 bytes assets/images/logo-white.png | Bin 0 -> 11805 bytes css/body.css | 2 +- css/navbar.css | 142 +++++++++++++++++++++++++++-------- css/project_card.css | 9 +-- css/search.css | 69 ++++++++++++++++- index.html | 2 +- src/components/nav_bar.rs | 100 ++++++++++++++++++------ src/constants/mod.rs | 4 +- src/pages/search.rs | 56 ++++++++++---- src/routes/main_router.rs | 7 +- 11 files changed, 304 insertions(+), 87 deletions(-) create mode 100644 assets/images/logo-color.png create mode 100644 assets/images/logo-white.png diff --git a/assets/images/logo-color.png b/assets/images/logo-color.png new file mode 100644 index 0000000000000000000000000000000000000000..fcc911cd3540e0beb81246a10c672b84ea3062a7 GIT binary patch literal 35750 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 a3{w&S(mO&n3AoeTcit*#C{`(0h5Qe9#Dqiu literal 0 HcmV?d00001 diff --git a/css/body.css b/css/body.css index e139c68..c3ec7de 100644 --- a/css/body.css +++ b/css/body.css @@ -8,6 +8,6 @@ body { flex-direction: column; justify-content: center; align-items: stretch; - background-color: rgb(0, 0, 0, 0.02); + background-color: rgb(243, 243, 243); } diff --git a/css/navbar.css b/css/navbar.css index d3f40a7..33a7036 100644 --- a/css/navbar.css +++ b/css/navbar.css @@ -1,6 +1,6 @@ /* Mobile View */ .navbar-background { - border-top: 3px solid #04B2D9; + /*border-top: 3px solid #04B2D9;*/ position: fixed; z-index: 1; width: 100%; @@ -9,8 +9,9 @@ justify-content: end; align-items: center; align-items: stretch; - background-color: #252631; + background-color: #02114A; min-height: 74px; + border-radius: 0px 0px 16px 16px; } .navbar-container { @@ -26,14 +27,52 @@ font-size: 20pt; color: white; display: flex; + flex-direction: column; justify-content: center; - align-items: center; + align-items: flex-end; + padding: 0px; + gap: 4px; margin-top: 5px; + max-height: 35px; min-width: 30px; padding: 15px; } +.navbar-hamburger-bar-1 { + transition-duration: 0.4s; + width: 16px; + height: 3px; + background: #FFFFFF; + border-radius: 8888px; +} +.navbar-hamburger-bars { + transition-duration: 0.4s; + width: 27px; + height: 3px; + background: #FFFFFF; + border-radius: 8888px; +} + +.navbar-hamburger-x-1 { + transition-duration: 0.2s; + position: absolute; + width: 27px; + height: 3px; + background: #FFFFFF; + border-radius: 8888px; + transform: rotate(-43.4deg); +} +.navbar-hamburger-x-2 { + transition-duration: 0.2s; + position: absolute; + width: 27px; + height: 3px; + background: #FFFFFF; + border-radius: 8888px; + transform: rotate(43.4deg); +} + .navbar-hamburger:hover { background-color: #ffffff14; font-size: 22pt; @@ -52,21 +91,32 @@ } .navbar-open { + margin-top: 20px; + margin-right: -50px; display: flex; flex-direction: column; justify-content: flex-start; - margin-top: 10px; + align-items: end; } .navbar-item { color: white; font-size: 12pt; padding-top: 10px; - padding-left: 5px; + padding-left: 10px; + padding-right: 10px; padding-bottom: 10px; - font-family: Source Sans Pro; + font-family: Space Grotesk; +} +.navbar-item-selected { + color: white; + font-size: 12pt; + padding-top: 10px; + padding-left: 10px; + padding-right: 10px; + padding-bottom: 10px; + font-family: Space Grotesk; } - .navbar-item:hover { background-color: #ffffff14; font-size: 13pt; @@ -89,25 +139,29 @@ cursor: pointer; } -.navbar-title { - color: white; - font-size: 16pt; - font-weight: 100; - font-family: 'Gill Sans'; -} - .navbar-image { - max-width: 50px; - max-height: 50px; + width: 60px; + height: 50px; + object-fit: cover; + margin-top: -10px; } /* Desktop view */ -@media only screen and (min-width: 850px) { +@media only screen and (min-width: 750px) { + + .navbar-background { + background-color: rgb(243, 243, 243); + border-radius: 0px; + border-bottom: solid 0.5px #d8d8d8; + min-height: 60px; + } + .navbar-container { display: flex; flex-direction: row; - justify-content: flex-start; - align-items: stretch; + justify-content: space-between; + align-items: center; + padding: 0px; } .navbar { @@ -120,9 +174,10 @@ .navbar-closed { display: flex; flex-direction: row; - justify-content: flex-end; + justify-content: center; flex-grow: 1; margin-top: 0px; + gap: 5%; } .navbar-open { @@ -134,31 +189,52 @@ } .navbar-item { - color: white; + color: #000000; font-size: 12pt; padding-left: 20px; padding-right: 20px; padding-top: 10px; padding-bottom: 10px; font-family: Source Sans Pro; + font-weight: 200; + } + .navbar-item-selected { + color: #02114A; + font-size: 12pt; + padding-left: 20px; + padding-right: 20px; + padding-top: 10px; + padding-bottom: 10px; + font-family: Source Sans Pro; + font-weight: bold; } .navbar-item:hover { - background-color: #ffffff14; - font-size: 13pt; - font-weight: bold; - border-radius: 3px; - transition-duration: 0.3s; + background-color: rgb(0, 0, 0, 0); + font-size: 12pt; + font-weight: normal; + border-radius: 0px; + transition-duration: 0.0s; cursor: pointer; } - - .navbar-title { + .navbar-item-contact-us { + font-size: 14px; + font-family: Space Grotesk; + color: white; - font-size: 23pt; - font-family: Sacramento; - } + background-color: #02114A; + display: flex; + flex-direction: column; + justify-content: center; - .navbar-hamburger { - display: none; + padding: 0px; + margin-top: 10px; + margin-right: 30px; + + max-height: 35px; + min-width: 30px; + padding: 2px 10px; + border-radius: 5px; + cursor: pointer; } } diff --git a/css/project_card.css b/css/project_card.css index 5132a45..9da27ad 100644 --- a/css/project_card.css +++ b/css/project_card.css @@ -4,7 +4,8 @@ background-color: white; height: 495px; width: 390px; - min-width: 80%; + max-width: 400px; + max-height: 505px; border-radius: 6px; display: flex; @@ -17,12 +18,6 @@ gap: 6px; } -@media only screen and (max-width: 400px) { - .project-listing-card { - width: 90%; - } -} - .project-listing-card:hover { cursor: pointer; /*border: 3px solid #04B2D9;*/ diff --git a/css/search.css b/css/search.css index 780623a..de81730 100644 --- a/css/search.css +++ b/css/search.css @@ -13,7 +13,6 @@ flex-direction: column; gap: 25px; justify-content: stretch; - flex-wrap: wrap; align-items: stretch; width: 100%; } @@ -49,6 +48,39 @@ font-size: 16px; } +.project-search-filter-select { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + + width: 100%; + + font-size: 13px; + font-weight: 400; + font-family: Space Grotesk; + text-align: center; + + border: 1px solid #02114A; + + cursor: pointer; +} +.project-search-filter-select-item { + padding: 15px 10px; + width: 100%; + height: 100%; + border-right: 1px solid #02114A; +} + +.project-search-filter-select-item-selected { + color: white; + + padding: 15px 10px; + width: 100%; + height: 100%; + border-right: 1px solid #02114A; + background-color: #02114A; +} .project-search-divider { width: 100%; @@ -85,4 +117,39 @@ align-items: center; margin-bottom: 50px; gap: 30px; +} + +@media only screen and (min-width: 750px) { + .project-search-filters-container { + flex-direction: row; + flex-flow: row wrap; + justify-content: center; + align-items: center; + } + .project-search-filter-container { + max-width: 450px; + min-width: 400px; + } + .project-search-button { + min-width: 400px; + margin-top: 30px; + } + .project-search-filter-select { + width: 100%; + + font-size: 15px; + font-weight: 400; + font-family: Space Grotesk; + text-align: center; + + border: 1px solid #02114A; + + cursor: pointer; + } + .project-search-results-container { + flex-direction: row; + flex-flow: row wrap; + justify-content: center; + align-items: center; + } } \ No newline at end of file diff --git a/index.html b/index.html index e693fed..9a021c8 100644 --- a/index.html +++ b/index.html @@ -17,7 +17,7 @@ - + diff --git a/src/components/nav_bar.rs b/src/components/nav_bar.rs index 9a1fe39..a073008 100644 --- a/src/components/nav_bar.rs +++ b/src/components/nav_bar.rs @@ -1,18 +1,19 @@ -use jl_types::domain::project_state::ProjectState; +use stdweb::web::{IEventTarget, event::ResizeEvent}; use yew::prelude::*; -use yew_router::prelude::use_navigator; +use yew_router::prelude::{use_navigator, use_route}; -use crate::{routes::main_router::{Route}, constants::{NAVBAR_TITLE, NAVBAR_COL_LANDING, NAVBAR_COL_PROYECTOS_ACABADOS, NAVBAR_COL_CONTACTO, NAVBAR_COL_PROYECTOS_EN_CONSTRUCCION}}; +use crate::{routes::main_router::{Route}, constants::{NAVBAR_COL_LANDING, NAVBAR_COL_CONTACTO, NAVBAR_COL_PROYECTOS}}; //use yew_router::prelude::use_navigator; + #[function_component(NavigationBar)] pub fn navigation_bar() -> Html { + let current_route: Option = use_route(); let navigator = use_navigator().unwrap(); let cloned_navigator_1 = navigator.clone(); let cloned_navigator_2 = navigator.clone(); let cloned_navigator_3 = navigator.clone(); - let cloned_navigator_4 = navigator.clone(); let cloned_navigator_5 = navigator.clone(); let navbar_toggle = use_state(|| true); @@ -20,39 +21,92 @@ pub fn navigation_bar() -> Html { let navbar_toggle = navbar_toggle.clone(); Callback::from(move |_| navbar_toggle.set(!*navbar_toggle)) }; - + let window_device_handle = use_state_eq(|| if stdweb::web::window().inner_width() > 750 { + WindowDevice::Desktop + } else { + WindowDevice::Mobile + }); + let window_device_handle_cloned = window_device_handle.clone(); + stdweb::web::window().add_event_listener(move |_: ResizeEvent| { + let current_width = stdweb::web::window().inner_width(); + if current_width >= 750 { + window_device_handle_cloned.set(WindowDevice::Desktop) + } else { + window_device_handle_cloned.set(WindowDevice::Mobile) + } + }); + + html! {
- -
- {NAVBAR_TITLE} -
+
-
+
{NAVBAR_COL_LANDING}
-
- {NAVBAR_COL_PROYECTOS_EN_CONSTRUCCION} -
- -
- {NAVBAR_COL_PROYECTOS_ACABADOS} -
- -
- {NAVBAR_COL_CONTACTO} +
+ {NAVBAR_COL_PROYECTOS}
+ { + if (*window_device_handle) == WindowDevice::Mobile { + html! { +
+ {NAVBAR_COL_CONTACTO} +
+ } + } else { html! {} } + }
-
- -
+ { + if (*window_device_handle) == WindowDevice::Mobile { + html! { +
+ { + if *navbar_toggle { + html! { + <> +
+
+
+ + } + } else { + html! { + <> +
+
+ + } + } + } +
+ } + } else { + html! { +
+ {"Contáctanos"} +
+ } + } + } +
} +} + +#[derive(PartialEq, Eq, PartialOrd, Ord)] +enum WindowDevice { + Desktop, + Mobile } \ No newline at end of file diff --git a/src/constants/mod.rs b/src/constants/mod.rs index 406754a..e0eceba 100644 --- a/src/constants/mod.rs +++ b/src/constants/mod.rs @@ -1,7 +1,5 @@ -pub const NAVBAR_TITLE: &str = "Proyectos en Construcción"; pub const NAVBAR_COL_LANDING: &str = "Inicio"; -pub const NAVBAR_COL_PROYECTOS_ACABADOS: &str = "Listos para entrega"; -pub const NAVBAR_COL_PROYECTOS_EN_CONSTRUCCION: &str = "En construcción"; +pub const NAVBAR_COL_PROYECTOS: &str = "Proyectos"; pub const NAVBAR_COL_CONTACTO: &str = "Contacto"; pub const PRIMARY_COLOR: &str = "#41BDD9"; diff --git a/src/pages/search.rs b/src/pages/search.rs index 22a445c..0813b2f 100644 --- a/src/pages/search.rs +++ b/src/pages/search.rs @@ -8,18 +8,16 @@ use crate::{components::{nav_bar::NavigationBar, project_card::ProjectCard, foot #[function_component(SearchPage)] -pub fn search_page(props: &SearchPageProperties) -> Html { +pub fn search_page() -> Html { // let force_update_trigger = use_force_update(); let cities_handle = use_state(|| Vec::from([OptionWrapper::new(None)])); let districts_handle = use_state(|| Vec::from([OptionWrapper::new(None)])); let search_results_handle: UseStateHandle> = use_state(|| Vec::new()); let page_counter: UseStateHandle = use_state(|| 1); let finished_loading = use_state(|| false); + let project_state_filter_handle = use_state_eq(|| ProjectState::InConstruction); - let mut filters = Vec::new(); - if props.project_state.eq(&ProjectState::Finished) { - filters.push(Filter::Finished); - } + let filters = Vec::new(); // All code to execute on first render and never again use_state(|| { @@ -130,7 +128,6 @@ pub fn search_page(props: &SearchPageProperties) -> Html { class_css: Some("project-search-filter-item".into()) }); - //TODO: District dropdown should only show districts in city, otherwise show nothing or disabled let project_district_drop_down = comp_with::>>(DropDownProps { initial: OptionWrapper::new(None), options: (*districts_handle).clone(), @@ -151,12 +148,11 @@ pub fn search_page(props: &SearchPageProperties) -> Html { let project_condition_filter = project_condition_filter.clone(); let project_city_filter = project_city_filter.clone(); let project_district_filter = project_district_filter.clone(); - - let props = props.clone(); + let project_state_filter = project_state_filter_handle.clone(); Callback::from(move |_| { let mut filters = Vec::new(); - if props.project_state.eq(&ProjectState::Finished) { + if (*project_state_filter).eq(&ProjectState::Finished) { filters.push(Filter::Finished); } match &(*project_type_filter).option { @@ -188,12 +184,49 @@ pub fn search_page(props: &SearchPageProperties) -> Html { info!("done"); }); })}; + + let inconstruction_state_select_onclick = { + let project_state_filter = project_state_filter_handle.clone(); + Callback::from(move |_| { + project_state_filter.set(ProjectState::InConstruction) + }) + }; + + let finished_state_select_onclick = { + let project_state_filter = project_state_filter_handle.clone(); + Callback::from(move |_| { + project_state_filter.set(ProjectState::Finished) + }) + }; html!{ <>
// Filters +
+
+ {"Estado del Proyecto"} +
+
+ +
+ {"En construcción"} +
+
+ {"Terminado"} +
+
+
+
{"Tipo de Proyecto"} @@ -264,8 +297,3 @@ pub fn search_page(props: &SearchPageProperties) -> Html { } } - -#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Properties)] -pub struct SearchPageProperties { - pub project_state: ProjectState, -} diff --git a/src/routes/main_router.rs b/src/routes/main_router.rs index 8c4d032..0dcff53 100644 --- a/src/routes/main_router.rs +++ b/src/routes/main_router.rs @@ -1,4 +1,3 @@ -use jl_types::domain::project_state::ProjectState; use yew_router::prelude::*; use yew::prelude::*; @@ -10,8 +9,8 @@ use crate::{pages::{landing::LandingPage, search::{SearchPage}, details::Details pub enum Route { #[at("/")] LandingPage, - #[at("/search/:project_state")] - Search { project_state: ProjectState }, + #[at("/search")] + Search, #[at("/details/:project_id")] Details { project_id: Uuid }, #[at("/contact")] @@ -25,7 +24,7 @@ pub enum Route { pub fn switch(routes: Route) -> Html { match routes { Route::LandingPage => html! { }, - Route::Search { project_state } => html! { }, + Route::Search => html! { }, Route::Details { project_id } => html! { }, Route::NotFound => html! { }, Route::Contact => html! { }