2025-10-27 10:18:25 +00:00
< div x - data = " {
raw : true ,
showNormalTextarea : false ,
editorHeight : 400 ,
calculateEditorHeight () {
// Get viewport height
const viewportHeight = window . innerHeight ;
// Modal max height is calc(100vh - 2rem) = viewport - 32px
const modalMaxHeight = viewportHeight - 32 ;
// Account for: modal header (~80px) + info text (~60px) + checkboxes (~80px) + buttons (~80px) + padding (~48px)
const fixedElementsHeight = 348 ;
// Calculate available height for editor
const availableHeight = modalMaxHeight - fixedElementsHeight ;
// Set minimum height of 300px and maximum of available space
this . editorHeight = Math . max ( 300 , Math . min ( availableHeight , viewportHeight - 200 ));
2025-10-23 17:18:50 +00:00
}
2025-10-27 10:18:25 +00:00
} " x-init= " calculateEditorHeight (); window . addEventListener ( 'resize' , () => calculateEditorHeight ()) " >
2024-03-21 11:44:32 +00:00
< div class = " pb-4 " > Volume names are updated upon save . The service UUID will be added as a prefix to all volumes , to
prevent
name collision . < br > To see the actual volume names , check the Deployable Compose file , or go to Storage
menu .</ div >
2024-07-17 12:52:40 +00:00
2025-10-27 10:18:25 +00:00
< div class = " compose-editor-container " x - bind : style = " `--editor-height: ${ editorHeight } px` " >
2025-10-23 17:18:50 +00:00
< div x - cloak x - show = " raw " class = " font-mono " >
< div x - cloak x - show = " showNormalTextarea " >
2025-10-27 10:18:25 +00:00
< x - forms . textarea x - bind : style = " `height: ${ editorHeight } px` " id = " dockerComposeRaw " >
2025-10-23 17:18:50 +00:00
</ x - forms . textarea >
</ div >
< div x - cloak x - show = " !showNormalTextarea " >
< x - forms . textarea allowTab useMonacoEditor monacoEditorLanguage = " yaml " id = " dockerComposeRaw " >
</ x - forms . textarea >
</ div >
2025-02-22 12:04:46 +00:00
</ div >
2025-10-23 17:18:50 +00:00
< div x - cloak x - show = " raw === false " class = " font-mono " >
2025-10-27 10:18:25 +00:00
< x - forms . textarea x - bind : style = " `height: ${ editorHeight } px` " readonly id = " dockerCompose " >
2025-02-22 12:04:46 +00:00
</ x - forms . textarea >
</ div >
2024-03-21 11:44:32 +00:00
</ div >
2025-02-22 12:04:46 +00:00
< div class = " pt-2 flex gap-2 " >
2025-02-27 10:29:04 +00:00
< div class = " flex flex-col gap-2 " >
< x - forms . checkbox label = " Escape special characters in labels? "
helper = " By default, $ (and other chars) is escaped. So if you write $ in the labels, it will be saved as $ $ .<br><br>If you want to use env variables inside the labels, turn this off. "
2025-10-13 13:38:59 +00:00
id = " isContainerLabelEscapeEnabled " instantSave ></ x - forms . checkbox >
2025-02-27 10:29:04 +00:00
< x - forms . checkbox label = " Show Normal Textarea " x - model = " showNormalTextarea " ></ x - forms . checkbox >
2025-02-22 12:04:46 +00:00
</ div >
2025-02-27 10:29:04 +00:00
2024-07-17 12:52:40 +00:00
</ div >
2025-02-27 10:29:04 +00:00
< div class = " flex w-full gap-2 pt-4 " >
< div x - cloak x - show = " raw " >
< x - forms . button class = " w-64 " @ click . prevent = " raw = !raw " > Show Deployable Compose </ x - forms . button >
</ div >
< div x - cloak x - show = " raw === false " >
< x - forms . button class = " w-64 " @ click . prevent = " raw = !raw " > Show Source
Compose </ x - forms . button >
2024-03-21 11:44:32 +00:00
</ div >
2024-04-16 08:44:23 +00:00
< div class = " flex-1 " ></ div >
2025-02-27 11:18:03 +00:00
@ if ( blank ( $service -> service_type ))
< x - forms . button class = " w-28 " wire : click . prevent = 'validateCompose' >
Validate
</ x - forms . button >
@ endif
2025-02-27 10:29:04 +00:00
< x - forms . button class = " w-28 " wire : click . prevent = 'saveEditedCompose' >
2024-03-21 11:44:32 +00:00
Save
</ x - forms . button >
</ div >
2025-10-23 17:18:50 +00:00
</ div >