Перейти к основному содержимому

MantleTabs

Вкладки с переключением контента. Два стиля: modern (вкладки сверху) и classic (список слева).

Пример

local frame = vgui.Create('MantleFrame')
frame:SetSize(600, 500)
frame:Center()
frame:MakePopup()

local tabs = vgui.Create('MantleTabs', frame)
tabs:Dock(FILL)

local page1 = vgui.Create('Panel', tabs)
page1.Paint = function(_, w, h)
draw.RoundedBox(6, 0, 0, w, h, Color(210, 95, 95))
end
tabs:AddTab('Главная', page1)

local page2 = vgui.Create('Panel', tabs)
page2.Paint = function(_, w, h)
draw.RoundedBox(6, 0, 0, w, h, Color(95, 210, 95))
end
tabs:AddTab('Настройки', page2)

Переключение из кода

local frame = vgui.Create('MantleFrame')
frame:SetSize(600, 500)
frame:Center()
frame:MakePopup()

local tabs = vgui.Create('MantleTabs', frame)
tabs:Dock(FILL)

local page1 = vgui.Create('Panel', tabs)
page1.Paint = function(_, w, h)
draw.RoundedBox(6, 0, 0, w, h, Color(210, 95, 95))
end
tabs:AddTab('Главная', page1)

local page2 = vgui.Create('Panel', tabs)
page2.Paint = function(_, w, h)
draw.RoundedBox(6, 0, 0, w, h, Color(95, 210, 95))
end
tabs:AddTab('Настройки', page2)

-- Активировать вторую вкладку (нумерация с 1)
tabs:SetActiveTab(2)

Вкладки с иконкой

local frame = vgui.Create('MantleFrame')
frame:SetSize(600, 500)
frame:Center()
frame:MakePopup()

local tabs = vgui.Create('MantleTabs', frame)
tabs:Dock(FILL)

local page1 = vgui.Create('Panel', tabs)
page1.Paint = function(_, w, h)
draw.RoundedBox(6, 0, 0, w, h, Mantle.color.panel_alpha[1])
end
tabs:AddTab({ title = 'Профиль', icon = Material('icon16/user.png') }, page1)

local page2 = vgui.Create('Panel', tabs)
page2.Paint = function(_, w, h)
draw.RoundedBox(6, 0, 0, w, h, Mantle.color.panel_alpha[1])
end
tabs:AddTab({ title = 'Ошибки', icon = Material('icon16/error.png') }, page2)

Классический стиль

Список вкладок располагается слева.

local frame = vgui.Create('MantleFrame')
frame:SetSize(600, 500)
frame:Center()
frame:MakePopup()

local tabs = vgui.Create('MantleTabs', frame)
tabs:Dock(FILL)
tabs:SetTabStyle('classic')

local page1 = vgui.Create('DPanel', tabs)
page1.Paint = function(_, w, h)
draw.RoundedBox(6, 0, 0, w, h, Mantle.color.panel_alpha[2])
end
tabs:AddTab('Общее', page1)

local page2 = vgui.Create('DPanel', tabs)
page2.Paint = function(_, w, h)
draw.RoundedBox(6, 0, 0, w, h, Mantle.color.panel_alpha[3])
end
tabs:AddTab('Дополнительно', page2)

Вкладки со скроллом

Благодаря постепенной тени и размытию сверху создаётся плавный эффект перехода.

local frame = vgui.Create('MantleFrame')
frame:SetSize(600, 500)
frame:Center()
frame:MakePopup()

local tabs = vgui.Create('MantleTabs', frame)
tabs:Dock(FILL)

local function createElements(parent)
for k = 1, 50 do
local btn = vgui.Create('MantleBtn', parent)
btn:Dock(TOP)
btn:DockMargin(0, 0, 0, 6)
btn:SetTall(40)
end
end

local page1 = vgui.Create('MantleScrollPanel', tabs)
page1.Paint = function(_, w, h)
draw.RoundedBox(6, 0, 0, w, h, Mantle.color.panel_alpha[2])
end
createElements(page1)
tabs:AddTab({ title = 'Тест 1', icon = Material('icon16/bell.png') }, page1)

local page2 = vgui.Create('MantleScrollPanel', tabs)
page2.Paint = function(_, w, h)
draw.RoundedBox(6, 0, 0, w, h, Mantle.color.panel_alpha[2])
end
createElements(page2)
tabs:AddTab({ title = 'Тест 2', icon = Material('icon16/chart_bar.png') }, page2)

Страницы с элементами

local frame = vgui.Create('MantleFrame')
frame:SetSize(600, 500)
frame:Center()
frame:MakePopup()

local tabs = vgui.Create('MantleTabs', frame)
tabs:Dock(FILL)

local settings = vgui.Create('Panel', tabs)
local cb = vgui.Create('MantleCheckBox', settings)
cb:Dock(TOP)
cb:SetTxt('Прицел')

local slider = vgui.Create('MantleSlideBox', settings)
slider:Dock(TOP)
slider:SetRange(0, 100, 0)
slider:SetText('Громкость')

tabs:AddTab('Настройки', settings)

Методы

МетодОписание
:AddTab(string|table tab, pan panel)Добавить вкладку. tab может быть строкой или { title, icon, ... }
:SetActiveTab(int|string id, bool silent)Переключить вкладку. silent отключает анимацию
:SetTabStyle(string style)Стиль: modern или classic. По умолчанию modern
:SetTabHeight(int height)Высота области вкладок. По умолчанию 38
:SetIndicatorHeight(int height)Толщина полосы активной вкладки. По умолчанию 2