@@ -35,6 +35,17 @@ type CreateSiteForm = {
3535 user : string ;
3636} ;
3737
38+ function extractNameFromDomain ( domain : string ) : string {
39+ if ( ! domain ) return '' ;
40+ let name = domain . replace ( / ^ h t t p s ? : \/ \/ / , '' ) ;
41+ name = name . replace ( / ^ w w w \. / , '' ) ;
42+ const parts = name . split ( '.' ) ;
43+ if ( parts . length > 0 && parts [ 0 ] ) {
44+ return parts [ 0 ] . toLowerCase ( ) . replace ( / [ ^ a - z 0 - 9 ] / g, '' ) ;
45+ }
46+ return '' ;
47+ }
48+
3849export default function CreateSite ( {
3950 server,
4051 defaultOpen,
@@ -48,6 +59,7 @@ export default function CreateSite({
4859} ) {
4960 const page = usePage < SharedData > ( ) ;
5061 const [ open , setOpen ] = useState ( defaultOpen || false ) ;
62+ const [ userManuallyEdited , setUserManuallyEdited ] = useState ( false ) ;
5163
5264 useEffect ( ( ) => {
5365 if ( defaultOpen !== undefined ) {
@@ -64,7 +76,7 @@ export default function CreateSite({
6476
6577 const form = useForm < CreateSiteForm > ( {
6678 server : server ?. id . toString ( ) || '' ,
67- type : 'php ' ,
79+ type : 'laravel ' ,
6880 domain : '' ,
6981 aliases : [ ] ,
7082 php_version : '' ,
@@ -260,7 +272,14 @@ export default function CreateSite({
260272 id = "domain"
261273 type = "text"
262274 value = { form . data . domain }
263- onChange = { ( e ) => form . setData ( 'domain' , e . target . value ) }
275+ onChange = { ( e ) => {
276+ const newDomain = e . target . value ;
277+ form . setData ( 'domain' , newDomain ) ;
278+ if ( ! userManuallyEdited ) {
279+ const extractedName = extractNameFromDomain ( newDomain ) ;
280+ form . setData ( 'user' , extractedName ) ;
281+ }
282+ } }
264283 placeholder = "vitodeploy.com"
265284 />
266285 < InputError message = { form . errors . domain } />
@@ -292,7 +311,7 @@ export default function CreateSite({
292311 < Tooltip >
293312 < TooltipTrigger asChild >
294313 < DialogTrigger asChild >
295- < button type = "button" className = "text-muted-foreground hover:text-foreground" >
314+ < button type = "button" tabIndex = { - 1 } className = "text-muted-foreground hover:text-foreground" >
296315 < HelpCircle className = "h-4 w-4" />
297316 </ button >
298317 </ DialogTrigger >
@@ -316,7 +335,10 @@ export default function CreateSite({
316335 id = "user"
317336 type = "text"
318337 value = { form . data . user }
319- onChange = { ( e ) => form . setData ( 'user' , e . target . value ) }
338+ onChange = { ( e ) => {
339+ setUserManuallyEdited ( true ) ;
340+ form . setData ( 'user' , e . target . value ) ;
341+ } }
320342 placeholder = "e.g. mysite"
321343 />
322344 < p className = "text-muted-foreground text-xs" > The isolated user for the site. Must be unique on the server.</ p >
0 commit comments