feat: with updated stuff #2
1
.gitignore
vendored
1
.gitignore
vendored
@ -12,3 +12,4 @@ test-results/
|
|||||||
end2end/playwright-report/
|
end2end/playwright-report/
|
||||||
playwright/.cache/
|
playwright/.cache/
|
||||||
.cuddle/
|
.cuddle/
|
||||||
|
.helix/
|
||||||
|
892
Cargo.lock
generated
892
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,7 @@ use leptos_router::*;
|
|||||||
|
|
||||||
use crate::common::layout::DashboardLayout;
|
use crate::common::layout::DashboardLayout;
|
||||||
use crate::routes::dash::home::DashHomePage;
|
use crate::routes::dash::home::DashHomePage;
|
||||||
use crate::routes::features_view::FeaturesView;
|
use crate::routes::features_view::features_view;
|
||||||
use crate::routes::home::HomePage;
|
use crate::routes::home::HomePage;
|
||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
@ -45,7 +45,7 @@ pub fn App(cx: Scope) -> impl IntoView {
|
|||||||
<Route
|
<Route
|
||||||
path="/features"
|
path="/features"
|
||||||
view=|cx| {
|
view=|cx| {
|
||||||
view! { cx, <FeaturesView/> }
|
features_view(cx)
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</Routes>
|
</Routes>
|
||||||
|
@ -7,7 +7,7 @@ use crate::features::navbar_projects::NavbarProjects;
|
|||||||
#[component]
|
#[component]
|
||||||
pub fn DashNav(cx: Scope) -> impl IntoView {
|
pub fn DashNav(cx: Scope) -> impl IntoView {
|
||||||
view! { cx,
|
view! { cx,
|
||||||
<nav class="min-w-[200px] p-4 space-y-4 h-screen sticky top-0 select-none bg-gray-800">
|
<nav class="min-w-[200px] p-4 space-y-4 h-screen max-h-screen sticky top-0 select-none bg-gray-800 overflow-auto">
|
||||||
<div>
|
<div>
|
||||||
<a href="/dash/home" class="text-xl">
|
<a href="/dash/home" class="text-xl">
|
||||||
"como"
|
"como"
|
||||||
|
@ -3,7 +3,7 @@ use cfg_if::cfg_if;
|
|||||||
cfg_if! { if #[cfg(feature = "ssr")] {
|
cfg_if! { if #[cfg(feature = "ssr")] {
|
||||||
use axum::{
|
use axum::{
|
||||||
body::{boxed, Body, BoxBody},
|
body::{boxed, Body, BoxBody},
|
||||||
extract::Extension,
|
extract::State,
|
||||||
response::IntoResponse,
|
response::IntoResponse,
|
||||||
http::{Request, Response, StatusCode, Uri},
|
http::{Request, Response, StatusCode, Uri},
|
||||||
};
|
};
|
||||||
@ -14,8 +14,7 @@ cfg_if! { if #[cfg(feature = "ssr")] {
|
|||||||
use leptos::{LeptosOptions, Errors, view};
|
use leptos::{LeptosOptions, Errors, view};
|
||||||
use crate::app::{App, AppProps};
|
use crate::app::{App, AppProps};
|
||||||
|
|
||||||
pub async fn file_and_error_handler(uri: Uri, Extension(options): Extension<Arc<LeptosOptions>>, req: Request<Body>) -> AxumResponse {
|
pub async fn file_and_error_handler(uri: Uri, State(options): State<LeptosOptions>, req: Request<Body>) -> AxumResponse {
|
||||||
let options = &*options;
|
|
||||||
let root = options.site_root.clone();
|
let root = options.site_root.clone();
|
||||||
let res = get_static_file(uri.clone(), &root).await.unwrap();
|
let res = get_static_file(uri.clone(), &root).await.unwrap();
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ pub fn CommandLineModal(cx: Scope) -> impl IntoView {
|
|||||||
if !hidden.get() {
|
if !hidden.get() {
|
||||||
view! { cx, <CommandLineModalView/> }
|
view! { cx, <CommandLineModalView/> }
|
||||||
} else {
|
} else {
|
||||||
view! { cx, }
|
view! { cx, <div></div> }.into_view(cx)
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
}
|
}
|
||||||
@ -39,7 +39,7 @@ pub fn CommandLine(cx: Scope, children: Children) -> impl IntoView {
|
|||||||
if event.ctrl_key() {
|
if event.ctrl_key() {
|
||||||
match event.code().as_str() {
|
match event.code().as_str() {
|
||||||
"KeyK" => {
|
"KeyK" => {
|
||||||
set_hidden(!hidden.get());
|
//set_hidden(!hidden.get());
|
||||||
log!("toggle command")
|
log!("toggle command")
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
|
@ -30,7 +30,6 @@ pub fn NavbarProjectsView(
|
|||||||
) -> impl IntoView {
|
) -> impl IntoView {
|
||||||
let projects_view = move || {
|
let projects_view = move || {
|
||||||
projects.with(cx, |projects| {
|
projects.with(cx, |projects| {
|
||||||
|
|
||||||
if projects.is_empty() {
|
if projects.is_empty() {
|
||||||
return vec![view! { cx, <div class="project-item">"No projects"</div> }.into_any()];
|
return vec![view! { cx, <div class="project-item">"No projects"</div> }.into_any()];
|
||||||
}
|
}
|
||||||
@ -40,9 +39,6 @@ pub fn NavbarProjectsView(
|
|||||||
.map(|project| {
|
.map(|project| {
|
||||||
view! { cx,
|
view! { cx,
|
||||||
<a href=format!("/dash/project/{}", & project.id) class="project-item">
|
<a href=format!("/dash/project/{}", & project.id) class="project-item">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="project-item-name hover:dark:bg-blue-700 rounded-md p-0.5 px-2">
|
<div class="project-item-name hover:dark:bg-blue-700 rounded-md p-0.5 px-2">
|
||||||
{&project.name}
|
{&project.name}
|
||||||
</div>
|
</div>
|
||||||
|
@ -24,9 +24,9 @@ async fn main() {
|
|||||||
|
|
||||||
let app = Router::new()
|
let app = Router::new()
|
||||||
.route("/api/*fn_name", post(leptos_axum::handle_server_fns))
|
.route("/api/*fn_name", post(leptos_axum::handle_server_fns))
|
||||||
.leptos_routes(leptos_options.clone(), routes, |cx| view! { cx, <App/> })
|
.leptos_routes(&leptos_options.clone(), routes, |cx| view! { cx, <App/> })
|
||||||
.fallback(file_and_error_handler)
|
.fallback(file_and_error_handler)
|
||||||
.layer(Extension(Arc::new(leptos_options)));
|
.with_state(leptos_options);
|
||||||
|
|
||||||
// run our app with hyper
|
// run our app with hyper
|
||||||
// `axum::Server` is a re-export of `hyper::Server`
|
// `axum::Server` is a re-export of `hyper::Server`
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
use leptos::*;
|
use leptos::{ev, html::*, *};
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
use crate::features::navbar_projects::gen::queries::get_projects_list_view::GetProjectsListViewGetProjects;
|
use crate::features::navbar_projects::gen::queries::get_projects_list_view::GetProjectsListViewGetProjects;
|
||||||
use crate::features::navbar_projects::NavbarProjectsView;
|
use crate::features::navbar_projects::{
|
||||||
|
NavbarProjects, NavbarProjectsProps, NavbarProjectsView, NavbarProjectsViewProps,
|
||||||
|
};
|
||||||
|
|
||||||
#[component]
|
pub fn features_view(cx: Scope) -> impl IntoView {
|
||||||
pub fn FeaturesView(cx: Scope) -> impl IntoView {
|
|
||||||
let projects = create_local_resource(
|
let projects = create_local_resource(
|
||||||
cx,
|
cx,
|
||||||
|| (),
|
|| (),
|
||||||
@ -26,19 +27,22 @@ pub fn FeaturesView(cx: Scope) -> impl IntoView {
|
|||||||
let emptyProjects: Resource<(), Vec<GetProjectsListViewGetProjects>> =
|
let emptyProjects: Resource<(), Vec<GetProjectsListViewGetProjects>> =
|
||||||
create_local_resource(cx, || (), |_| async { Vec::new() });
|
create_local_resource(cx, || (), |_| async { Vec::new() });
|
||||||
|
|
||||||
view! { cx,
|
return div(cx).child(
|
||||||
<div>
|
div(cx)
|
||||||
<div class="space-y-5 p-2">
|
.classes("space-y-5 p-2")
|
||||||
<h1>"NavbarProjects"</h1>
|
.child(h1(cx).child("NavbarProjects"))
|
||||||
<h2>"Projects"</h2>
|
.child(h2(cx).child("Projects"))
|
||||||
<div class="feature-case">
|
.child(
|
||||||
<NavbarProjectsView projects=projects/>
|
div(cx)
|
||||||
</div>
|
.classes("feature-case")
|
||||||
<h2>"no projects"</h2>
|
.child(NavbarProjectsView(cx, NavbarProjectsViewProps { projects })),
|
||||||
<div class="feature-case">
|
)
|
||||||
<NavbarProjectsView projects=emptyProjects/>
|
.child(h2(cx).child("no projects"))
|
||||||
</div>
|
.child(div(cx).classes("feature-case").child(NavbarProjectsView(
|
||||||
</div>
|
cx,
|
||||||
</div>
|
NavbarProjectsViewProps {
|
||||||
}
|
projects: emptyProjects,
|
||||||
|
},
|
||||||
|
))),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com
|
! tailwindcss v3.3.3 | MIT License | https://tailwindcss.com
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -191,6 +191,10 @@ select,
|
|||||||
textarea {
|
textarea {
|
||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
/* 1 */
|
/* 1 */
|
||||||
|
font-feature-settings: inherit;
|
||||||
|
/* 1 */
|
||||||
|
font-variation-settings: inherit;
|
||||||
|
/* 1 */
|
||||||
font-size: 100%;
|
font-size: 100%;
|
||||||
/* 1 */
|
/* 1 */
|
||||||
font-weight: inherit;
|
font-weight: inherit;
|
||||||
@ -341,6 +345,14 @@ menu {
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Reset default styling for dialogs.
|
||||||
|
*/
|
||||||
|
|
||||||
|
dialog {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Prevent resizing textareas horizontally by default.
|
Prevent resizing textareas horizontally by default.
|
||||||
*/
|
*/
|
||||||
@ -558,6 +570,10 @@ video {
|
|||||||
height: 100vh;
|
height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.max-h-screen {
|
||||||
|
max-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
.min-w-\[200px\] {
|
.min-w-\[200px\] {
|
||||||
min-width: 200px;
|
min-width: 200px;
|
||||||
}
|
}
|
||||||
@ -618,6 +634,10 @@ video {
|
|||||||
margin-bottom: calc(1.25rem * var(--tw-space-y-reverse));
|
margin-bottom: calc(1.25rem * var(--tw-space-y-reverse));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.overflow-auto {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
.rounded-md {
|
.rounded-md {
|
||||||
border-radius: 0.375rem;
|
border-radius: 0.375rem;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user