@@ -66,174 +66,167 @@ export default function UserForm({ auth, user, roles }: UserFormProps) {
6666 }
6767 >
6868 < Head title = { isEditMode ? 'Edit User' : 'Create User' } />
69+ < div className = "space-y-6" >
70+ < form onSubmit = { handleSubmit } className = "space-y-6" >
71+ < div className = "grid grid-cols-1 md:grid-cols-2 gap-6" >
72+ < div className = "space-y-4" >
73+ < div >
74+ < Label htmlFor = "first_name" > First Name</ Label >
75+ < Input
76+ id = "first_name"
77+ type = "text"
78+ value = { data . first_name }
79+ onChange = { ( e ) => setData ( 'first_name' , e . target . value ) }
80+ className = "mt-1 block w-full"
81+ required
82+ />
83+ { errors . first_name && (
84+ < p className = "text-sm text-red-600 mt-1" >
85+ { errors . first_name }
86+ </ p >
87+ ) }
88+ </ div >
6989
70- < div className = "w-full sm:px-6 lg:px-8" >
71- < div className = "space-y-6" >
72- < form onSubmit = { handleSubmit } className = "space-y-6" >
73- < div className = "grid grid-cols-1 md:grid-cols-2 gap-6" >
74- < div className = "space-y-4" >
75- < div >
76- < Label htmlFor = "first_name" > First Name</ Label >
77- < Input
78- id = "first_name"
79- type = "text"
80- value = { data . first_name }
81- onChange = { ( e ) => setData ( 'first_name' , e . target . value ) }
82- className = "mt-1 block w-full"
83- required
84- />
85- { errors . first_name && (
86- < p className = "text-sm text-red-600 mt-1" >
87- { errors . first_name }
88- </ p >
89- ) }
90- </ div >
91-
92- < div >
93- < Label htmlFor = "last_name" > Last Name</ Label >
94- < Input
95- id = "last_name"
96- type = "text"
97- value = { data . last_name }
98- onChange = { ( e ) => setData ( 'last_name' , e . target . value ) }
99- className = "mt-1 block w-full"
100- required
101- />
102- { errors . last_name && (
103- < p className = "text-sm text-red-600 mt-1" >
104- { errors . last_name }
105- </ p >
106- ) }
107- </ div >
108-
109- < div >
110- < Label htmlFor = "email" > Email</ Label >
111- < Input
112- id = "email"
113- type = "email"
114- value = { data . email }
115- onChange = { ( e ) => setData ( 'email' , e . target . value ) }
116- className = "mt-1 block w-full"
117- required
118- />
119- { errors . email && (
120- < p className = "text-sm text-red-600 mt-1" > { errors . email } </ p >
121- ) }
122- </ div >
90+ < div >
91+ < Label htmlFor = "last_name" > Last Name</ Label >
92+ < Input
93+ id = "last_name"
94+ type = "text"
95+ value = { data . last_name }
96+ onChange = { ( e ) => setData ( 'last_name' , e . target . value ) }
97+ className = "mt-1 block w-full"
98+ required
99+ />
100+ { errors . last_name && (
101+ < p className = "text-sm text-red-600 mt-1" >
102+ { errors . last_name }
103+ </ p >
104+ ) }
105+ </ div >
123106
124- < div >
125- < Label htmlFor = "phone_number" > Phone Number</ Label >
126- < Input
127- id = "phone_number"
128- type = "text"
129- value = { data . phone_number }
130- onChange = { ( e ) => setData ( 'phone_number' , e . target . value ) }
131- className = "mt-1 block w-full"
132- />
133- { errors . phone_number && (
134- < p className = "text-sm text-red-600 mt-1" >
135- { errors . phone_number }
136- </ p >
137- ) }
138- </ div >
107+ < div >
108+ < Label htmlFor = "email" > Email</ Label >
109+ < Input
110+ id = "email"
111+ type = "email"
112+ value = { data . email }
113+ onChange = { ( e ) => setData ( 'email' , e . target . value ) }
114+ className = "mt-1 block w-full"
115+ required
116+ />
117+ { errors . email && (
118+ < p className = "text-sm text-red-600 mt-1" > { errors . email } </ p >
119+ ) }
120+ </ div >
139121
140- < div className = "flex items-center space-x-2" >
141- < Checkbox
142- id = "active"
143- checked = { data . active }
144- onCheckedChange = { ( checked ) =>
145- setData ( 'active' , checked as boolean )
146- }
147- />
148- < Label htmlFor = "active" > Active</ Label >
149- </ div >
122+ < div >
123+ < Label htmlFor = "phone_number" > Phone Number</ Label >
124+ < Input
125+ id = "phone_number"
126+ type = "text"
127+ value = { data . phone_number }
128+ onChange = { ( e ) => setData ( 'phone_number' , e . target . value ) }
129+ className = "mt-1 block w-full"
130+ />
131+ { errors . phone_number && (
132+ < p className = "text-sm text-red-600 mt-1" >
133+ { errors . phone_number }
134+ </ p >
135+ ) }
150136 </ div >
151137
152- < div className = "space-y-4" >
153- < div >
154- < Label > Roles</ Label >
155- < div className = "mt-2 space-y-2 p-4 border rounded-md" >
156- { roles . map ( ( role ) => (
157- < div key = { role } className = "flex items-center space-x-2" >
158- < Checkbox
159- id = { `role-${ role } ` }
160- checked = { data . roles . includes ( role ) }
161- onCheckedChange = { ( checked ) => {
162- if ( checked ) {
163- setData ( 'roles' , [ ...data . roles , role ] )
164- } else {
165- setData (
166- 'roles' ,
167- data . roles . filter ( ( r ) => r !== role ) ,
168- )
169- }
170- } }
171- />
172- < Label htmlFor = { `role-${ role } ` } className = "font-normal" >
173- { role . charAt ( 0 ) . toUpperCase ( ) + role . slice ( 1 ) }
174- </ Label >
175- </ div >
176- ) ) }
177- </ div >
178- { errors . roles && (
179- < p className = "text-sm text-red-600 mt-1" > { errors . roles } </ p >
180- ) }
181- </ div >
138+ < div className = "flex items-center space-x-2" >
139+ < Checkbox
140+ id = "active"
141+ checked = { data . active }
142+ onCheckedChange = { ( checked ) =>
143+ setData ( 'active' , checked as boolean )
144+ }
145+ />
146+ < Label htmlFor = "active" > Active</ Label >
147+ </ div >
148+ </ div >
182149
183- < div >
184- < Label htmlFor = "password" > Password</ Label >
185- < Input
186- id = "password"
187- type = "password"
188- value = { data . password }
189- onChange = { ( e ) => setData ( 'password' , e . target . value ) }
190- className = "mt-1 block w-full"
191- required = { ! isEditMode }
192- />
193- { errors . password && (
194- < p className = "text-sm text-red-600 mt-1" >
195- { errors . password }
196- </ p >
197- ) }
198- { isEditMode && (
199- < p className = "text-xs text-gray-500 mt-1" >
200- Leave blank to keep the current password
201- </ p >
202- ) }
150+ < div className = "space-y-4" >
151+ < div >
152+ < Label > Roles</ Label >
153+ < div className = "mt-2 space-y-2 p-4 border rounded-md" >
154+ { roles . map ( ( role ) => (
155+ < div key = { role } className = "flex items-center space-x-2" >
156+ < Checkbox
157+ id = { `role-${ role } ` }
158+ checked = { data . roles . includes ( role ) }
159+ onCheckedChange = { ( checked ) => {
160+ if ( checked ) {
161+ setData ( 'roles' , [ ...data . roles , role ] )
162+ } else {
163+ setData (
164+ 'roles' ,
165+ data . roles . filter ( ( r ) => r !== role ) ,
166+ )
167+ }
168+ } }
169+ />
170+ < Label htmlFor = { `role-${ role } ` } className = "font-normal" >
171+ { role . charAt ( 0 ) . toUpperCase ( ) + role . slice ( 1 ) }
172+ </ Label >
173+ </ div >
174+ ) ) }
203175 </ div >
176+ { errors . roles && (
177+ < p className = "text-sm text-red-600 mt-1" > { errors . roles } </ p >
178+ ) }
179+ </ div >
204180
205- < div >
206- < Label htmlFor = "password_confirmation" >
207- Confirm Password
208- </ Label >
209- < Input
210- id = "password_confirmation"
211- type = "password"
212- value = { data . password_confirmation }
213- onChange = { ( e ) =>
214- setData ( 'password_confirmation' , e . target . value )
215- }
216- className = "mt-1 block w-full"
217- required = { ! isEditMode }
218- />
219- </ div >
181+ < div >
182+ < Label htmlFor = "password" > Password</ Label >
183+ < Input
184+ id = "password"
185+ type = "password"
186+ value = { data . password }
187+ onChange = { ( e ) => setData ( 'password' , e . target . value ) }
188+ className = "mt-1 block w-full"
189+ required = { ! isEditMode }
190+ />
191+ { errors . password && (
192+ < p className = "text-sm text-red-600 mt-1" > { errors . password } </ p >
193+ ) }
194+ { isEditMode && (
195+ < p className = "text-xs text-gray-500 mt-1" >
196+ Leave blank to keep the current password
197+ </ p >
198+ ) }
220199 </ div >
221- </ div >
222200
223- < div className = "flex justify-end space-x-4" >
224- < Button
225- type = "button"
226- variant = "outline"
227- onClick = { ( ) => router . visit ( route ( 'users.list' ) ) }
228- >
229- Cancel
230- </ Button >
231- < Button type = "submit" disabled = { processing } >
232- { isEditMode ? 'Update User' : 'Create User' }
233- </ Button >
201+ < div >
202+ < Label htmlFor = "password_confirmation" > Confirm Password</ Label >
203+ < Input
204+ id = "password_confirmation"
205+ type = "password"
206+ value = { data . password_confirmation }
207+ onChange = { ( e ) =>
208+ setData ( 'password_confirmation' , e . target . value )
209+ }
210+ className = "mt-1 block w-full"
211+ required = { ! isEditMode }
212+ />
213+ </ div >
234214 </ div >
235- </ form >
236- </ div >
215+ </ div >
216+
217+ < div className = "flex justify-end space-x-4" >
218+ < Button
219+ type = "button"
220+ variant = "outline"
221+ onClick = { ( ) => router . visit ( route ( 'users.list' ) ) }
222+ >
223+ Cancel
224+ </ Button >
225+ < Button type = "submit" disabled = { processing } >
226+ { isEditMode ? 'Update User' : 'Create User' }
227+ </ Button >
228+ </ div >
229+ </ form >
237230 </ div >
238231 </ AuthenticatedLayout >
239232 )
0 commit comments