controls/script-create-modal.ps1

function New-UDScriptModal {

    Show-UDModal -Width "75%"  -Content {

        New-UDPageHeader -Text ("Create a New Script")
        New-UDParagraph -Text " " #Spacer
        New-UDTabContainer -Tabs {
                
            New-UDTab -Text 'General' -Content {
                New-UDParagraph -Text "General Script Settings"
                New-UDCard -Content {
                    New-UDTextbox -Id "NewScriptModalTextBoxName" -Label "Name" -Type text
                    New-UDTextbox -Id "NewScriptModalTextBoxDescription" -Label "Description" -Type text 
                    New-UDTextbox -Id "NewScriptModalTextBoxManualTime" -Type text -Label "Manual Time" -Placeholder 0
                }
            }

             
            New-UDTab -Text 'Script' -Content {
                New-UDElement -Tag 'div' -Attributes @{
                    style = @{
                        height = "620px"
                    }
                } -Content {
                    New-UDParagraph -Text "Script Content"
                    New-UDCodeEditor -Id 'NewScriptEditor' -Language 'powershell' -Code '#Enter Script Here!' -Theme 'vs-dark' -Autosize
                }
            }

                
            New-UDTab -Text "Execution Options" -Content {
                New-UDParagraph -Text "Execution Options"
                New-UDCard -Content {
                    $PowerShellVersions = Get-UAPowerShellVersion
                    
                    New-UDSelect -Id "NewScriptModalSelectPowerShellVersion" -Label "Required PowerShell Version" -Option {
                        New-UDSelectOption -Name "Default" -Value "Any"
                        $PowerShellVersions | ForEach-Object {
                            New-UDSelectOption -Name $_.Version -Value $_.Version
                        }
                    } -OnChange {
                            
                    }

                    $DisableManualInvokeCheckBox = (New-UDCheckbox -Id "NewScriptModalCheckboxDisableManualInvocation" -Label 'Disable Manual Invocation')
                    New-UDTooltip -Content {$DisableManualInvokeCheckBox} -TooltipContent {"Can the script be manually executed outside a schedule?"}

                }
            }

            New-UDTab -Text 'Finalize' -Content {
                New-UDParagraph -Text "Script Finalization"
                New-UDCard -Content {
                    New-UDTextbox -Id "NewScriptModalTextBoxCommitMessage" -Label "Commit Message" -Type text
                    New-UDTooltip -TooltipContent { "Navigate to the new Script's page after creation" } -Content { 
                        New-UDCheckbox -Id "NewScriptModalCheckBoxGotoScript" -Label "Open Script"
                    }
                }
                    
                New-UDElement -Tag div -Attributes @{
                    style = @{
                        textAlign = "right"
                    }
                } -Content {
                    New-UDButton -Text "Create Script" -Icon folder_plus -OnClick {
                        
                        # Get Input Data
                        $Name = ((Get-UDElement -Id 'NewScriptModalTextBoxName').Attributes["value"])
                        $Description = ((Get-UDElement -Id 'NewScriptModalTextBoxDescription').Attributes["value"])
                        $CommitMessage = ((Get-UDElement -Id 'NewScriptModalTextBoxCommitMessage').Attributes["value"])
                        $ManualTime = ((Get-UDElement -Id 'NewScriptModalTextBoxManualTime').Attributes["value"])
                        $OpenScript = ((Get-UDElement -Id 'NewScriptModalCheckBoxGotoScript').Attributes["checked"])
                        #$ArgumentOverrides = ((Get-UDElement -Id 'NewScriptModalTextBoxArgumentOverrides').Attributes["value"])
                        $RequiredPowerShellVersion = ((Get-UDElement -Id 'NewScriptModalSelectPowerShellVersion').Attributes["value"])
                        $ScriptBlock = [ScriptBlock]::Create((Get-UDElement -Id 'NewScriptEditor').Attributes["code"])
                        $DisableManualInvoke = ((Get-UDElement -Id 'NewScriptModalCheckboxDisableManualInvocation').Attributes["checked"])
                        
                        # Null Checks
                        if (!$ManualTime -or $ManualTime -eq "" -or $ManualTime -eq "null") { $ManualTime = 0 }
                        if (!$ArgumentOverrides -or $ArgumentOverrides -eq "" -or $ArgumentOverrides -eq "null") { $ArgumentOverrides = "" }
                        if ($null -eq $ScriptBlock -or $ScriptBlock -eq "" -or $ScriptBlock -eq " " -or $ScriptBlock -eq "null"){$ScriptBlock = [ScriptBlock]::Create("#Start Script")}

                        $ScriptSwitches = @{}
                        if($DisableManualInvoke -eq $true){$ScriptSwitches.add("-DisableManualInvocation", $True)}

                        if($RequiredPowerShellVersion -eq "Any")
                        {
                            $RequiredPowerShellVersion = $null
                        }
                        
                        # Create Script
                        $NewUAScript = New-UAScript -Name $Name -ScriptBlock $ScriptBlock -ManualTime $ManualTime -Description $Description -Notes $CommitMessage -RequiredPowerShellVersion $RequiredPowerShellVersion @ScriptSwitches
                        
                        # Grid Sync
                        Sync-UDElement -Id "ScriptsGrid" -Broadcast
                        Sync-UDElement -Id "ScriptPageHeader" -Broadcast
                        Sync-UDElement -Id "ScriptPageTagDiv" -Broadcast
                        Sync-UDElement -Id "TagGrid" -Broadcast
                        if ($OpenScript -eq $true) {
                            Invoke-UDRedirect -Url "/script/$($NewUAScript.Id)"
                        }
                        else {
                            Hide-UDModal
                        }
                    }
                }
            }

        }
    }
}