diff --git a/esoui/libraries/zo_templates/editboxsizetemplates.lua b/esoui/libraries/zo_templates/editboxsizetemplates.lua
new file mode 100644
index 0000000..161c5c1
--- /dev/null
+++ b/esoui/libraries/zo_templates/editboxsizetemplates.lua
@@ -0,0 +1,84 @@
+local EditContainerSizerManager = ZO_Object:Subclass()
+
+function EditContainerSizerManager:New()
+ local obj = ZO_Object.New(self)
+ obj:Initialize()
+ return obj
+end
+
+function EditContainerSizerManager:Initialize()
+ self.sizers = {}
+ EVENT_MANAGER:RegisterForEvent("EditContainerSizerManager", EVENT_ALL_GUI_SCREENS_RESIZED, function() self:OnAllGuiScreensResized() end)
+end
+
+function EditContainerSizerManager:Add(sizer)
+ table.insert(self.sizers, sizer)
+end
+
+function EditContainerSizerManager:OnAllGuiScreensResized()
+ for _, sizer in ipairs(self.sizers) do
+ sizer:OnAllGuiScreensResized()
+ end
+end
+
+local EDIT_CONTAINER_SIZER_MANAGER = EditContainerSizerManager:New()
+
+--This class is responsible for resizing the edit box backdrops. These backdrops require space for the text, additional padding
+--(buffer top and buffer bottom), and for the IME underlining (IME_UNDERLINE_THICKNESS_PIXELS) if applicable.
+
+ZO_EditContainerSizer = ZO_Object:Subclass()
+
+function ZO_EditContainerSizer:New(...)
+ local obj = ZO_Object.New(self)
+ obj:Initialize(...)
+ return obj
+end
+
+function ZO_EditContainerSizer:Initialize(bufferTop, bufferBottom)
+ self.backdrops = {}
+ self.bufferTop = bufferTop
+ self.bufferBottom = bufferBottom
+ EDIT_CONTAINER_SIZER_MANAGER:Add(self)
+end
+
+function ZO_EditContainerSizer:Add(backdrop)
+ table.insert(self.backdrops, backdrop)
+ self:RefreshSize(backdrop)
+end
+
+function ZO_EditContainerSizer.GetHeight(backdrop, bufferTop, bufferBottom)
+ local editBox
+ local name = backdrop:GetName()
+ for i = 1, backdrop:GetNumChildren() do
+ local child = backdrop:GetChild(i)
+ if child:GetType() == CT_EDITBOX then
+ editBox = child
+ break
+ end
+ end
+
+ if editBox then
+ local textHeight = editBox:GetFontHeight()
+ local IMEUnderlineThicknessUIUnits = 0
+ if DoesCurrentLanguageRequireIME() then
+ IMEUnderlineThicknessUIUnits = IME_UNDERLINE_THICKNESS_PIXELS / GetUIGlobalScale()
+ end
+ return textHeight + bufferTop + bufferBottom + IMEUnderlineThicknessUIUnits
+ else
+ return 0
+ end
+end
+
+function ZO_EditContainerSizer:RefreshSize(backdrop)
+ backdrop:SetHeight(ZO_EditContainerSizer.GetHeight(backdrop, self.bufferTop, self.bufferBottom))
+end
+
+function ZO_EditContainerSizer.ForceRefreshSize(backdrop, bufferTop, bufferBottom)
+ backdrop:SetHeight(ZO_EditContainerSizer.GetHeight(backdrop, bufferTop, bufferBottom))
+end
+
+function ZO_EditContainerSizer:OnAllGuiScreensResized()
+ for _, backdrop in ipairs(self.backdrops) do
+ backdrop:SetHeight(ZO_EditContainerSizer.GetHeight(backdrop, self.bufferTop, self.bufferBottom))
+ end
+end