packages feed

ihp-ide-1.5.0: IHP/IDE/SchemaDesigner/View/EnumValues/Edit.hs

module IHP.IDE.SchemaDesigner.View.EnumValues.Edit where

import IHP.ViewPrelude
import IHP.Postgres.Types
import IHP.IDE.ToolServer.Types
import IHP.IDE.SchemaDesigner.View.Layout

data EditEnumValueView = EditEnumValueView
    { statements :: [Statement]
    , enumName :: Text
    , valueId :: Int
    , value :: Text
    }

instance View EditEnumValueView where
    html EditEnumValueView { .. } = [hsx|
        <div class="row g-0 bg-white" id="schema-designer-viewer">
            {renderObjectSelector (zip [0..] statements) (Just enumName)}
            {renderEnumSelector enumName (zip [0..] values)}
        </div>
        {migrationStatus}
        {renderModal modal}
    |]
        where
            enum = findStatementByName enumName statements
            values = maybe [] (.values) enum
            
            modalContent = [hsx|
                <form method="POST" action={UpdateEnumValueAction}>
                    <input type="hidden" name="enumName" value={enumName}/>
                    <input type="hidden" name="valueId" value={tshow valueId}/>

                    <div class="mb-3 row">
                        <label class="col-sm-2 col-form-label">Name:</label>
                        <div class="col-sm-10">
                            <input name="enumValueName" type="text" class="form-control" autofocus="autofocus" value={value}/>
                        </div>
                    </div>

                    <div class="text-end">
                        <button type="submit" class="btn btn-primary">Edit Enum Value</button>
                    </div>
                </form>
            |]
            modalFooter = mempty 
            modalCloseUrl = pathTo ShowEnumAction { enumName }
            modalTitle = "Edit Enum Value"
            modal = Modal { modalContent, modalFooter, modalCloseUrl, modalTitle }