diff --git a/esoui/libraries/zo_templates/editboxtemplates.lua b/esoui/libraries/zo_templates/editboxtemplates.lua
new file mode 100644
index 0000000..a59bfa8
--- /dev/null
+++ b/esoui/libraries/zo_templates/editboxtemplates.lua
@@ -0,0 +1,45 @@
+function ZO_DefaultEdit_SetEnabled(editBox, enabled)
+    if(enabled) then
+        editBox:SetHandler("OnMouseDown", ZO_DefaultEdit_OnMouseDown)
+        editBox:SetColor(DEFAULT_EDIT_BOX_ENABLED_COLOR:UnpackRGBA())
+    else
+        editBox:LoseFocus()
+        editBox:SetColor(DEFAULT_EDIT_BOX_DISABLED_COLOR:UnpackRGBA())
+        editBox:SetHandler("OnMouseDown", nil)
+    end
+end
+
+do
+    local function UpdateVisibility(self)
+        local label = GetControl(self, "Text")
+        if(self.defaultTextEnabled) then
+            if(self:GetText() == "" and not self:IsComposingIMEText()) then
+                label:SetHidden(false)
+            else
+                label:SetHidden(true)
+            end
+        else
+            label:SetHidden(true)
+        end
+    end
+
+    function ZO_EditDefaultText_Initialize(self, defaultText)
+        local label = GetControl(self, "Text")
+        label:SetText(defaultText)
+        self.defaultTextEnabled = true
+        UpdateVisibility(self)
+    end
+
+    function ZO_EditDefaultText_Disable(self)
+        self.defaultTextEnabled = false
+        UpdateVisibility(self)
+    end
+
+    function ZO_EditDefaultText_OnTextChanged(self)
+        UpdateVisibility(self)
+    end
+
+    function ZO_EditDefaultText_OnIMECompositionChanged(self)
+        UpdateVisibility(self)
+    end
+end