ComponentList Tab 기능 추가

This commit is contained in:
logonkhi
2025-09-26 12:01:35 +09:00
parent 1aa64487d0
commit 52f60f3fc4
22 changed files with 94761 additions and 324418 deletions

View File

@@ -73,7 +73,7 @@ namespace UVC.UI.Tab
[SerializeField] private TabContentConfig[] tabConfigs = new TabContentConfig[0];
[Tooltip("활성화 탭 버튼을 클릭 시 해당 탭 비활성화 할지 여부")]
[SerializeField] private bool closableTab = false;
[SerializeField] private bool togglableTab = false;
// 탭 모델
private TabModel? _tabModel;
@@ -89,7 +89,7 @@ namespace UVC.UI.Tab
private void Awake()
{
_tabModel = new TabModel(closableTab);
_tabModel = new TabModel(togglableTab);
if (initializeOnStart)
{
Initialize();
@@ -153,7 +153,7 @@ namespace UVC.UI.Tab
// TabView에 설정 전달하여 초기화
List<TabContentConfig> allConfigs = GetAllTabConfigs();
tabView.InitializeTabs(_tabModel.Tabs, allConfigs, OnTabButtonSelected, closableTab);
tabView.InitializeTabs(_tabModel.Tabs, allConfigs, OnTabButtonSelected, togglableTab);
// 모델 이벤트 구독
_tabModel.OnTabChanged += HandleTabChanged;

View File

@@ -40,11 +40,11 @@ namespace UVC.UI.Tab
public event Action<int, object?>? OnTabChanged;
//활성화 탭 버튼을 클릭 시 해당 탭 비활성화 할지 여부
private bool closableTab = false;
private bool togglableTab = false;
public TabModel(bool closableTab = false)
public TabModel(bool togglableTab = false)
{
this.closableTab = closableTab;
this.togglableTab = togglableTab;
}
/// <summary>
@@ -56,7 +56,7 @@ namespace UVC.UI.Tab
_tabs.Add(tab);
// 첫 번째 추가된 탭을 기본 활성화 탭으로 설정
if (_activeTabIndex == -1 && _tabs.Count == 1 && !closableTab)
if (_activeTabIndex == -1 && _tabs.Count == 1 && !togglableTab)
{
_activeTabIndex = 0;
}
@@ -79,7 +79,7 @@ namespace UVC.UI.Tab
// 같은 탭을 다시 선택한 경우 무시
if (_activeTabIndex == tabIndex)
{
if (!closableTab)
if (!togglableTab)
{
return;
}

View File

@@ -51,7 +51,7 @@ namespace UVC.UI.Tab
//활성화 탭 버튼을 클릭 시 해당 탭 비활성화 할지 여부
private bool closableTab = false;
private bool togglableTab = false;
/// <summary>
/// 탭 시스템을 초기화합니다.
@@ -59,9 +59,10 @@ namespace UVC.UI.Tab
/// <param name="tabs">탭 데이터 목록</param>
/// <param name="configs">탭 설정 목록 (TabController에서 전달)</param>
/// <param name="onTabSelected">탭 선택 시 호출될 콜백</param>
public void InitializeTabs(IReadOnlyList<TabData> tabs, List<TabContentConfig> configs, Action<int> onTabSelected, bool closableTab = false)
/// <param name="togglableTab">전체를 비활성화 할 수 있는지</param>
public void InitializeTabs(IReadOnlyList<TabData> tabs, List<TabContentConfig> configs, Action<int> onTabSelected, bool togglableTab = false)
{
this.closableTab = closableTab;
this.togglableTab = togglableTab;
// 기존 탭 정리
ClearTabs();
@@ -223,7 +224,7 @@ namespace UVC.UI.Tab
/// <param name="updateData">업데이트할 데이터 (선택적)</param>
public async UniTask UpdateActiveTab(int tabIndex, int prevTabIndex, TabData? tabData, object? updateData = null)
{
if ((tabIndex < 0 && !closableTab) || tabIndex >= _tabConfigs.Count) return;
if ((tabIndex < 0 && !togglableTab) || tabIndex >= _tabConfigs.Count) return;
if (tabIndex > -1 && tabData != null)
{
var config = _tabConfigs[tabIndex];