@@ -3,9 +3,9 @@ use common::{
33 enums:: { Drivers , Project } ,
44 projects:: postgresql:: Postgresql ,
55} ;
6- use leptos:: { html :: * , * } ;
6+ use leptos:: * ;
77use tauri_sys:: tauri:: invoke;
8- use thaw:: { Modal , ModalFooter , ModalProps } ;
8+ use thaw:: { Modal , ModalFooter } ;
99
1010use crate :: {
1111 invoke:: { Invoke , InvokeInsertProjectArgs } ,
@@ -36,88 +36,172 @@ pub fn component(show: RwSignal<bool>) -> impl IntoView {
3636 }
3737 } ) ;
3838
39- Modal ( ModalProps {
40- show,
41- title : MaybeSignal :: Static ( String :: from ( "Add new project" ) ) ,
42- children : Children :: to_children ( move || {
43- Fragment :: new ( vec ! [ div( )
44- . classes( "flex flex-col gap-2" )
45- . child(
46- input( )
47- . classes( "border-1 border-neutral-200 p-1 rounded-md" )
48- . prop( "type" , "text" )
49- . prop( "placeholder" , "project" )
50- . prop( "value" , project)
51- . on( ev:: input, move |e| set_project( event_target_value( & e) ) ) ,
52- )
53- . child(
54- input( )
55- . classes( "border-1 border-neutral-200 p-1 rounded-md" )
56- . prop( "type" , "text" )
57- . prop( "value" , db_user)
58- . prop( "placeholder" , "username" )
59- . on( ev:: input, move |e| set_db_user( event_target_value( & e) ) ) ,
60- )
61- . child(
62- input( )
63- . classes( "border-1 border-neutral-200 p-1 rounded-md" )
64- . prop( "type" , "password" )
65- . prop( "value" , db_password)
66- . prop( "placeholder" , "password" )
67- . on( ev:: input, move |e| set_db_password( event_target_value( & e) ) ) ,
68- )
69- . child(
70- input( )
71- . classes( "border-1 border-neutral-200 p-1 rounded-md" )
72- . prop( "type" , "text" )
73- . prop( "value" , db_host)
74- . prop( "placeholder" , "host" )
75- . on( ev:: input, move |e| set_db_host( event_target_value( & e) ) ) ,
76- )
77- . child(
78- input( )
79- . classes( "border-1 border-neutral-200 p-1 rounded-md" )
80- . prop( "type" , "text" )
81- . prop( "value" , db_port)
82- . prop( "placeholder" , "port" )
83- . on( ev:: input, move |e| set_db_port( event_target_value( & e) ) ) ,
84- )
85- . into_view( ) ] )
86- } ) ,
87- modal_footer : Some ( ModalFooter {
88- children : ChildrenFn :: to_children ( move || {
89- Fragment :: new ( vec ! [ div( )
90- . classes( "flex gap-2 justify-end" )
91- . child(
92- button( )
93- . classes( "px-4 py-2 border-1 border-neutral-200 hover:bg-neutral-200 rounded-md" )
94- . child( "Add" )
95- . prop( "disabled" , move || {
96- project( ) . is_empty( )
97- || db_user( ) . is_empty( )
98- || db_password( ) . is_empty( )
99- || db_host( ) . is_empty( )
100- || db_port( ) . is_empty( )
101- } )
102- . on( ev:: click, move |_| {
103- let project_details = match driver( ) {
104- Drivers :: POSTGRESQL => Project :: POSTGRESQL ( Postgresql {
105- name: project( ) ,
106- driver: PostgresqlDriver :: new( db_user( ) , db_password( ) , db_host( ) , db_port( ) ) ,
107- ..Postgresql :: default ( )
108- } ) ,
109- } ;
110- save_project. dispatch( project_details) ;
111- } ) ,
112- )
113- . child(
114- button( )
115- . classes( "px-4 py-2 border-1 border-neutral-200 hover:bg-neutral-200 rounded-md" )
116- . child( "Cancel" )
117- . on( ev:: click, move |_| show. set( false ) ) ,
118- )
119- . into_view( ) ] )
120- } ) ,
121- } ) ,
122- } )
39+ view ! {
40+ <Modal show=show title="Add new project" >
41+ <div class="flex flex-col gap-2" >
42+ <input
43+ class="border-1 border-neutral-200 p-1 rounded-md"
44+ type ="text"
45+ placeholder="project"
46+ value=project
47+ on: input=move |e| set_project( event_target_value( & e) )
48+ />
49+
50+ <input
51+ class="border-1 border-neutral-200 p-1 rounded-md"
52+ type ="text"
53+ value=db_user
54+ placeholder="username"
55+ on: input=move |e| set_db_user( event_target_value( & e) )
56+ />
57+
58+ <input
59+ class="border-1 border-neutral-200 p-1 rounded-md"
60+ type ="password"
61+ value=db_password
62+ placeholder="password"
63+ on: input=move |e| set_db_password( event_target_value( & e) )
64+ />
65+
66+ <input
67+ class="border-1 border-neutral-200 p-1 rounded-md"
68+ type ="text"
69+ value=db_host
70+ placeholder="host"
71+ on: input=move |e| set_db_host( event_target_value( & e) )
72+ />
73+
74+ <input
75+ class="border-1 border-neutral-200 p-1 rounded-md"
76+ type ="text"
77+ value=db_port
78+ placeholder="port"
79+ on: input=move |e| set_db_port( event_target_value( & e) )
80+ />
81+
82+ </div>
83+ // <ModalFooter>
84+ // <div class="flex gap-2 justify-end">
85+ // <button
86+ // class="px-4 py-2 border-1 border-neutral-200 hover:bg-neutral-200 rounded-md"
87+ // disabled=move || {
88+ // project.is_empty() || db_user.is_empty() || db_password.is_empty()
89+ // || db_host.is_empty() || db_port.is_empty()
90+ // }
91+ // on:click=move |_| {
92+ // let project_details = match driver() {
93+ // Drivers::POSTGRESQL => {
94+ // Project::POSTGRESQL(Postgresql {
95+ // name: project(),
96+ // driver: PostgresqlDriver::new(
97+ // db_user(),
98+ // db_password(),
99+ // db_host(),
100+ // db_port(),
101+ // ),
102+ // ..Postgresql::default()
103+ // })
104+ // }
105+ // };
106+ // save_project.dispatch(project_details);
107+ // }
108+ // >
109+
110+ // Add
111+ // </button>
112+ // <button
113+ // class="px-4 py-2 border-1 border-neutral-200 hover:bg-neutral-200 rounded-md"
114+ // on:click=move |_| show.set(false)
115+ // >
116+ // Cancel
117+ // </button>
118+ // </div>
119+ // </ModalFooter>
120+ </Modal >
121+ }
122+ // Modal(ModalProps {
123+ // show,
124+ // title: MaybeSignal::Static(String::from("Add new project")),
125+ // children: Children::to_children(move || {
126+ // Fragment::new(vec![div()
127+ // .classes("flex flex-col gap-2")
128+ // .child(
129+ // input()
130+ // .classes("border-1 border-neutral-200 p-1 rounded-md")
131+ // .prop("type", "text")
132+ // .prop("placeholder", "project")
133+ // .prop("value", project)
134+ // .on(ev::input, move |e| set_project(event_target_value(&e))),
135+ // )
136+ // .child(
137+ // input()
138+ // .classes("border-1 border-neutral-200 p-1 rounded-md")
139+ // .prop("type", "text")
140+ // .prop("value", db_user)
141+ // .prop("placeholder", "username")
142+ // .on(ev::input, move |e| set_db_user(event_target_value(&e))),
143+ // )
144+ // .child(
145+ // input()
146+ // .classes("border-1 border-neutral-200 p-1 rounded-md")
147+ // .prop("type", "password")
148+ // .prop("value", db_password)
149+ // .prop("placeholder", "password")
150+ // .on(ev::input, move |e| set_db_password(event_target_value(&e))),
151+ // )
152+ // .child(
153+ // input()
154+ // .classes("border-1 border-neutral-200 p-1 rounded-md")
155+ // .prop("type", "text")
156+ // .prop("value", db_host)
157+ // .prop("placeholder", "host")
158+ // .on(ev::input, move |e| set_db_host(event_target_value(&e))),
159+ // )
160+ // .child(
161+ // input()
162+ // .classes("border-1 border-neutral-200 p-1 rounded-md")
163+ // .prop("type", "text")
164+ // .prop("value", db_port)
165+ // .prop("placeholder", "port")
166+ // .on(ev::input, move |e| set_db_port(event_target_value(&e))),
167+ // )
168+ // .into_view()])
169+ // }),
170+ // modal_footer: Some(ModalFooter {
171+ // children: ChildrenFn::to_children(move || {
172+ // Fragment::new(vec![div()
173+ // .classes("flex gap-2 justify-end")
174+ // .child(
175+ // button()
176+ // .classes("px-4 py-2 border-1 border-neutral-200 hover:bg-neutral-200 rounded-md")
177+ // .child("Add")
178+ // .prop("disabled", move || {
179+ // project().is_empty()
180+ // || db_user().is_empty()
181+ // || db_password().is_empty()
182+ // || db_host().is_empty()
183+ // || db_port().is_empty()
184+ // })
185+ // .on(ev::click, move |_| {
186+ // let project_details = match driver() {
187+ // Drivers::POSTGRESQL => Project::POSTGRESQL(Postgresql {
188+ // name: project(),
189+ // driver: PostgresqlDriver::new(db_user(), db_password(), db_host(), db_port()),
190+ // ..Postgresql::default()
191+ // }),
192+ // };
193+ // save_project.dispatch(project_details);
194+ // }),
195+ // )
196+ // .child(
197+ // button()
198+ // .classes("px-4 py-2 border-1 border-neutral-200 hover:bg-neutral-200 rounded-md")
199+ // .child("Cancel")
200+ // .on(ev::click, move |_| show.set(false)),
201+ // )
202+ // .into_view()])
203+ // }),
204+ // }),
205+ // })
123206}
207+
0 commit comments