phaser3-rex-plugins
Version:
278 lines (252 loc) • 6.77 kB
TypeScript
// import * as Phaser from 'phaser';
import Sizer from '../sizer/Sizer';
import Buttons from '../buttons/Buttons';
import FixWidthButtons from '../fixwidthbuttons/FixWidthButtons';
import Pages from '../pages/Pages';
export default TabPages;
declare namespace TabPages {
/**
* Position values for the tabs area.
*/
type TabsPositionType = 'top' | 'bottom' | 'left' | 'right';
/**
* Configuration options for creating a TabPages container.
*/
interface IConfig extends Sizer.IConfig {
/**
* Background game object.
*/
background?: Phaser.GameObjects.GameObject,
/**
* Position of the tabs area.
*/
tabPosition?: TabsPositionType,
/**
* Alias of tabPosition.
*/
tabsPosition?: TabsPositionType,
/**
* Wrap tabs when they exceed the available space.
*/
wrapTabs?: boolean,
/**
* Tabs configuration.
*/
tabs?: Buttons.IConfig | FixWidthButtons.IConfig,
/**
* Pages configuration.
*/
pages?: Pages.IConfig,
/**
* Expand options.
*/
expand?: {
/**
* Expand the tabs area.
*/
tabs?: boolean
},
/**
* Alignment options.
*/
align?: {
/**
* Tabs alignment.
*/
tabs?: 'top' | 'bottom' | 'left' | 'right' | 'center'
}
}
/**
* Configuration for adding a page with tab and content.
*/
interface IAddPageConfig {
/**
* The page key.
*/
key?: string,
/**
* The tab game object.
*/
tab: Phaser.GameObjects.GameObject,
/**
* The page game object.
*/
page: Phaser.GameObjects.GameObject
}
}
/**
* A tabbed pages container that manages tabs and pages.
*/
declare class TabPages extends Sizer {
/**
* Create a TabPages container.
*
* @param scene - The Phaser.Scene that owns this TabPages container.
* @param config - Configuration options for the TabPages container.
*/
constructor(
scene: Phaser.Scene,
config?: TabPages.IConfig
);
/**
* Get the page key by index.
*
* @param index - The page index.
* @returns The page key.
*/
getPageKey(index: number): string;
/**
* Get the page index by key.
*
* @param key - The page key.
* @returns The page index.
*/
getPageIndex(key: string): number;
/**
* Add a page with explicit key, tab, and page objects.
*
* @param key - The page key.
* @param tabGameObject - The tab game object.
* @param pageGameObject - The page game object.
* @returns This TabPages instance.
*/
addPage(
key: string,
tabGameObject: Phaser.GameObjects.GameObject,
pageGameObject: Phaser.GameObjects.GameObject
): this;
/**
* Add a page using a configuration object.
*
* @param config - Page configuration.
* @returns This TabPages instance.
*/
addPage(config: TabPages.IAddPageConfig): this;
/**
* Remove a page by key.
*
* @param key - The page key.
* @param destroyChild - Whether to destroy child game objects.
* @returns This TabPages instance.
*/
removePage(
key: string,
destroyChild?: boolean
): this;
/**
* Remove all pages.
*
* @param destroyChild - Whether to destroy child game objects.
* @returns This TabPages instance.
*/
removeAllPages(destroyChild?: boolean): this;
/**
* Swap to the page with the given key.
*
* @param key - The page key to activate.
* @param fadeInDuration - Fade-in duration in milliseconds.
* @returns This TabPages instance.
*/
swapPage(
key: string,
fadeInDuration?: number
): this;
/**
* Swap to the first page.
*
* @param fadeInDuration - Fade-in duration in milliseconds.
* @returns This TabPages instance.
*/
swapFirstPage(fadeInDuration?: number): this;
/**
* Swap to the last page.
*
* @param fadeInDuration - Fade-in duration in milliseconds.
* @returns This TabPages instance.
*/
swapLastPage(fadeInDuration?: number): this;
/**
* Key of the current page.
*/
currentKey: string;
/**
* Key of the previous page.
*/
readonly previousKey: string;
/**
* All page keys in this container.
*/
keys: string[];
/**
* Get a page by key.
*
* @param key - The page key.
* @returns The page game object.
*/
getPage(key: string): Phaser.GameObjects.GameObject;
/**
* Current page game object.
*/
readonly currentPage: Phaser.GameObjects.GameObject;
/**
* Previous page game object.
*/
readonly previousPage: Phaser.GameObjects.GameObject;
/**
* Set the tabs position.
*
* @param position - The tabs position.
* @returns This TabPages instance.
*/
setTabPosition(position: TabPages.TabsPositionType): this;
/**
* Current tabs position.
*/
readonly tabsPosition: TabPages.TabsPositionType;
/**
* Set padding for tabs by key.
*
* @param key - The padding key.
* @param value - The padding value.
* @returns This TabPages instance.
*/
setTabsPadding(
key: string,
value?: number
): this;
/**
* Set padding for all tabs.
*
* @param padding - Padding value or object.
* @returns This TabPages instance.
*/
setTabsPadding(
padding: number | {
/**
* Left padding.
*/
left?: number,
/**
* Right padding.
*/
right?: number,
/**
* Top padding.
*/
top?: number,
/**
* Bottom padding.
*/
bottom?: number
},
): this;
/**
* Get padding for tabs.
*
* @param key - The padding key.
* @returns The padding value or object.
*/
getTabsPadding(
key?: string
): number | { left: number, right: number, top: number, bottom: number };
}