cLib.DSearchBar

VGUI - Input Updated: Dec 10, 2025

cLib.DSearchBar

Search input with icon, debounce, and clear button.

Basic Usage

local search = vgui.Create("cLib.DSearchBar", parent)
search:SetSize(cLib.Scale(250), cLib.Scale(36))
search:Dock(TOP)

search.OnSearch = function(self, text)
    FilterResults(text)
end

Methods

MethodDescription
SetPlaceholder(string)Placeholder text
SetValue(string)Set search text
GetValue()Get search text
Clear()Clear search
Focus()Focus input
SetSearchDelay(number)Debounce delay (seconds)

Callbacks

CallbackDescription
OnSearch(text)Called after debounce
OnValueChanged(text)Called immediately
OnEnter(text)Called on Enter key
OnClear()Called when cleared

With Debounce

local search = vgui.Create("cLib.DSearchBar", parent)
search:SetPlaceholder("Search items...")
search:SetSearchDelay(0.3)  -- Wait 300ms after typing stops

search.OnSearch = function(self, text)
    -- Called 300ms after user stops typing
    -- Prevents excessive API calls/filtering
    FilterItemList(text)
end

Live Search Example

local items = GetAllItems()
local filteredItems = items

local search = vgui.Create("cLib.DSearchBar", parent)
search:SetPlaceholder("Search...")
search:Dock(TOP)
search:DockMargin(0, 0, 0, cLib.Scale(10))

local itemList = vgui.Create("cLib.DListView", parent)
itemList:Dock(FILL)
itemList:AddColumn("Name")
itemList:AddColumn("Price")

local function RefreshList()
    itemList:Clear()
    for _, item in ipairs(filteredItems) do
        itemList:AddLine(item.name, "$" .. item.price)
    end
end

search.OnSearch = function(self, query)
    query = query:lower()
    
    if query == "" then
        filteredItems = items
    else
        filteredItems = {}
        for _, item in ipairs(items) do
            if item.name:lower():find(query, 1, true) then
                table.insert(filteredItems, item)
            end
        end
    end
    
    RefreshList()
end

search.OnClear = function(self)
    filteredItems = items
    RefreshList()
end

RefreshList()

Styling

local search = vgui.Create("cLib.DSearchBar", parent)
search:SetBackgroundColor(Color(50, 50, 55))
search:SetFocusColor(cLib.GetColor("cLib.accent"))
search:SetIconColor(Color(150, 150, 150))
search:SetPlaceholderColor(Color(100, 100, 100))