Files
xFrameworkTest/src/app/config/page.config.ts
T

762 lines
21 KiB
TypeScript

import {
XIconNames,
XTabNavigatorItem,
XNavigatorListItem,
toTabNavigatiorItem,
toNavigatiorListItem,
} from 'x-framework-components';
import { toArray, XPage } from 'x-framework-core';
import { AppResourceIDs } from './app.localization.config';
//
//#region Route Config ...
export enum BaseRoutes {
Default = '',
Unknown = '**',
}
export enum HomeRoutes {
Default = 'home',
Home = 'home',
Introduction = 'introduction',
}
export enum CoreRoutes {
Default = 'core',
Core = 'core',
Introduction = 'introduction',
}
export enum ServicesRoutes {
Default = 'services',
Services = 'services',
Introduction = 'introduction',
UserDevice = 'user_device',
}
export enum ComponentsRoutes {
Ide = 'ide',
Fab = 'fab',
Map = 'map',
Card = 'card',
Icon = 'icon',
Form = 'form',
Grid = 'grid',
List = 'list',
Tree = 'tree',
Tabs = 'tabs',
Page = 'page',
Chart = 'chart',
Table = 'table',
Slider = 'slider',
Counter = 'counter',
Stepper = 'stepper',
MarkDown = 'markdown',
Default = 'components',
Components = 'components',
ColorPicker = 'color-picker',
Introduction = 'introduction',
TabNavigator = 'tab-navigator',
FileComponents = 'file-components',
ModelPresenter = 'model-presenter',
ExpandableList = 'expandable-list',
DescriptionList = 'description-list',
ExpandablePanel = 'expandable-panel',
SmallComponents = 'small-components',
}
export enum TabsRoutes {
Default = 'tabs',
Tabs = 'tabs',
TabPage1 = 'tab-page-1',
TabPage2 = 'tab-page-2',
TabPage3 = 'tab-page-3',
}
export enum ThemesRoutes {
Default = 'themes',
Themes = 'themes',
ThemeManager = 'manager',
}
export enum AppRoutes {
Default = BaseRoutes.Default,
Home = HomeRoutes.Default,
Core = CoreRoutes.Default,
Services = ServicesRoutes.Default,
Components = ComponentsRoutes.Default,
TabsNav = TabsRoutes.Default,
Themes = ThemesRoutes.Default,
Unknown = BaseRoutes.Unknown,
}
//#endregion
//
//#region Page Configs ...
export enum PageName {
//
// Home ...
Home = AppRoutes.Home,
HomeIntoduction = HomeRoutes.Introduction,
//
// Core ...
Core = AppRoutes.Core,
CoreIntoduction = CoreRoutes.Introduction,
//
// Services ...
Services = AppRoutes.Services,
ServicesIntoduction = ServicesRoutes.Introduction,
UserDevice = ServicesRoutes.UserDevice,
//
// Components ...
Components = AppRoutes.Components,
ComponentsIntoduction = ComponentsRoutes.Introduction,
SmallComponents = ComponentsRoutes.SmallComponents,
Chart = ComponentsRoutes.Chart,
Card = ComponentsRoutes.Card,
Ide = ComponentsRoutes.Ide,
Icon = ComponentsRoutes.Icon,
Counter = ComponentsRoutes.Counter,
ColorPicker = ComponentsRoutes.ColorPicker,
Fab = ComponentsRoutes.Fab,
FileComponents = ComponentsRoutes.FileComponents,
Form = ComponentsRoutes.Form,
Grid = ComponentsRoutes.Grid,
List = ComponentsRoutes.List,
Map = ComponentsRoutes.Map,
MarkDown = ComponentsRoutes.MarkDown,
Tree = ComponentsRoutes.Tree,
DescriptionList = ComponentsRoutes.DescriptionList,
ExpandableList = ComponentsRoutes.ExpandableList,
ExpandablePanel = ComponentsRoutes.ExpandablePanel,
ModelPresenter = ComponentsRoutes.ModelPresenter,
Slider = ComponentsRoutes.Slider,
Stepper = ComponentsRoutes.Stepper,
Tabs = ComponentsRoutes.Tabs,
Table = ComponentsRoutes.Table,
Page = ComponentsRoutes.Page,
TabNavigator = ComponentsRoutes.TabNavigator,
//
// Tabs Navigation ...
TabsNav = AppRoutes.TabsNav,
TabPage1 = TabsRoutes.TabPage1,
TabPage2 = TabsRoutes.TabPage2,
TabPage3 = TabsRoutes.TabPage3,
//
// Themes ...
Themes = AppRoutes.Themes,
ThemeManager = ThemesRoutes.ThemeManager,
}
export type PageNames = keyof typeof PageName;
export type PageNameIdentifier = PageName | PageNames | string;
export type PageIndexType = {
[key in PageNames]?: XPage;
};
export const PageIndex: PageIndexType = {
//
Home: {
icon: XIconNames.home,
id: `${PageName.Home}`,
name: `${PageName.Home}`,
title: AppResourceIDs.home,
baseRoute: `${AppRoutes.Home}`,
route: ['/', `${AppRoutes.Home}`],
description: AppResourceIDs.home_description,
childs: [
//
// Intoduction ...
{
icon: XIconNames.guide,
id: `${PageName.HomeIntoduction}`,
name: `${PageName.HomeIntoduction}`,
title: AppResourceIDs.home_introduction,
baseRoute: `${HomeRoutes.Introduction}`,
description: AppResourceIDs.home_introduction_description,
route: ['/', `${AppRoutes.Home}`, `${HomeRoutes.Introduction}`],
},
],
},
//
Core: {
icon: XIconNames.event,
id: `${PageName.Core}`,
name: `${PageName.Core}`,
title: AppResourceIDs.core,
baseRoute: `${AppRoutes.Core}`,
route: ['/', `${AppRoutes.Core}`],
description: AppResourceIDs.core_description,
childs: [
//
// Intoduction ...
{
icon: XIconNames.guide,
id: `${PageName.CoreIntoduction}`,
name: `${PageName.CoreIntoduction}`,
title: AppResourceIDs.core_introduction,
baseRoute: `${CoreRoutes.Introduction}`,
description: AppResourceIDs.core_introduction_description,
route: ['/', `${AppRoutes.Core}`, `${CoreRoutes.Introduction}`],
},
],
},
//
Services: {
icon: XIconNames.job,
id: `${PageName.Services}`,
name: `${PageName.Services}`,
title: AppResourceIDs.services,
baseRoute: `${AppRoutes.Services}`,
route: ['/', `${AppRoutes.Services}`],
description: AppResourceIDs.services_description,
childs: [
//
// Intoduction ...
{
icon: XIconNames.guide,
id: `${PageName.ServicesIntoduction}`,
name: `${PageName.ServicesIntoduction}`,
title: AppResourceIDs.services_introduction,
baseRoute: `${ServicesRoutes.Introduction}`,
description: AppResourceIDs.services_introduction_description,
route: ['/', `${AppRoutes.Services}`, `${ServicesRoutes.Introduction}`],
},
//
// UserDevice ...
{
icon: XIconNames.guide,
id: `${PageName.UserDevice}`,
name: `${PageName.UserDevice}`,
title: AppResourceIDs.user_device,
baseRoute: `${ServicesRoutes.UserDevice}`,
description: AppResourceIDs.user_device_description,
route: ['/', `${AppRoutes.Services}`, `${ServicesRoutes.UserDevice}`],
},
],
},
//
Components: {
icon: XIconNames.explorer,
id: `${PageName.Components}`,
name: `${PageName.Components}`,
title: AppResourceIDs.components,
baseRoute: `${AppRoutes.Components}`,
route: ['/', `${AppRoutes.Components}`],
description: AppResourceIDs.components_description,
childs: [
//
// Intoduction ...
{
icon: XIconNames.guide,
id: `${PageName.ComponentsIntoduction}`,
name: `${PageName.ComponentsIntoduction}`,
title: AppResourceIDs.components_introduction,
baseRoute: `${ComponentsRoutes.Introduction}`,
description: AppResourceIDs.components_introduction_description,
route: [
'/',
`${AppRoutes.Components}`,
`${ComponentsRoutes.Introduction}`,
],
},
//
// SmallComponents ...
{
icon: XIconNames.list,
id: `${PageName.SmallComponents}`,
name: `${PageName.SmallComponents}`,
title: AppResourceIDs.small_components,
baseRoute: `${ComponentsRoutes.SmallComponents}`,
description: AppResourceIDs.small_components_description,
route: [
'/',
`${AppRoutes.Components}`,
`${ComponentsRoutes.SmallComponents}`,
],
},
//
// Card ...
{
icon: XIconNames.list,
id: `${PageName.Card}`,
name: `${PageName.Card}`,
title: AppResourceIDs.card,
baseRoute: `${ComponentsRoutes.Card}`,
description: AppResourceIDs.card_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.Card}`],
},
//
// Icon ...
{
icon: XIconNames.list,
id: `${PageName.Icon}`,
name: `${PageName.Icon}`,
title: AppResourceIDs.icon,
baseRoute: `${ComponentsRoutes.Icon}`,
description: AppResourceIDs.icon_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.Icon}`],
},
//
// Chart ...
{
icon: XIconNames.stats_chart,
id: `${PageName.Chart}`,
name: `${PageName.Chart}`,
title: AppResourceIDs.chart,
baseRoute: `${ComponentsRoutes.Chart}`,
description: AppResourceIDs.cart_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.Chart}`],
},
//
// Ide ...
{
icon: XIconNames.edit,
id: `${PageName.Ide}`,
name: `${PageName.Ide}`,
title: AppResourceIDs.ide,
baseRoute: `${ComponentsRoutes.Ide}`,
description: AppResourceIDs.ide_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.Ide}`],
},
//
// Counter ...
{
icon: XIconNames.list,
id: `${PageName.Counter}`,
name: `${PageName.Counter}`,
title: AppResourceIDs.counter,
baseRoute: `${ComponentsRoutes.Counter}`,
description: AppResourceIDs.counter_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.Counter}`],
},
//
// ColorPicker ...
{
icon: XIconNames.list,
id: `${PageName.ColorPicker}`,
name: `${PageName.ColorPicker}`,
title: AppResourceIDs.color_picker,
baseRoute: `${ComponentsRoutes.ColorPicker}`,
description: AppResourceIDs.color_picker_description,
route: [
'/',
`${AppRoutes.Components}`,
`${ComponentsRoutes.ColorPicker}`,
],
},
//
// Fab ...
{
id: `${PageName.Fab}`,
icon: XIconNames.list,
name: `${PageName.Fab}`,
title: AppResourceIDs.fab,
baseRoute: `${ComponentsRoutes.Fab}`,
description: AppResourceIDs.fab_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.Fab}`],
},
//
// FileComponents ...
{
icon: XIconNames.list,
id: `${PageName.FileComponents}`,
name: `${PageName.FileComponents}`,
title: AppResourceIDs.file_components,
baseRoute: `${ComponentsRoutes.FileComponents}`,
description: AppResourceIDs.file_components_description,
route: [
'/',
`${AppRoutes.Components}`,
`${ComponentsRoutes.FileComponents}`,
],
},
//
// Form ...
{
icon: XIconNames.list,
id: `${PageName.Form}`,
name: `${PageName.Form}`,
title: AppResourceIDs.form,
baseRoute: `${ComponentsRoutes.Form}`,
description: AppResourceIDs.form_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.Form}`],
},
//
// Grid ...
{
icon: XIconNames.list,
id: `${PageName.Grid}`,
name: `${PageName.Grid}`,
title: AppResourceIDs.grid,
baseRoute: `${ComponentsRoutes.Grid}`,
description: AppResourceIDs.grid_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.Grid}`],
},
//
// List ...
{
icon: XIconNames.list,
id: `${PageName.List}`,
name: `${PageName.List}`,
title: AppResourceIDs.list,
baseRoute: `${ComponentsRoutes.List}`,
description: AppResourceIDs.list_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.List}`],
},
//
// Map ...
{
icon: XIconNames.list,
id: `${PageName.Map}`,
name: `${PageName.Map}`,
title: AppResourceIDs.map,
baseRoute: `${ComponentsRoutes.Map}`,
description: AppResourceIDs.map_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.Map}`],
},
//
// MarkDown ...
{
icon: XIconNames.list,
id: `${PageName.MarkDown}`,
name: `${PageName.MarkDown}`,
title: AppResourceIDs.markdown,
baseRoute: `${ComponentsRoutes.MarkDown}`,
description: AppResourceIDs.markdown_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.MarkDown}`],
},
//
// Tree ...
// TODO: Complete this ...
{
icon: XIconNames.ul,
id: `${PageName.Tree}`,
name: `${PageName.Tree}`,
title: AppResourceIDs.tree,
baseRoute: `${ComponentsRoutes.Tree}`,
description: AppResourceIDs.tree_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.Tree}`],
},
//
// DescriptionList ...
{
icon: XIconNames.list,
id: `${PageName.DescriptionList}`,
name: `${PageName.DescriptionList}`,
title: AppResourceIDs.description_list,
baseRoute: `${ComponentsRoutes.DescriptionList}`,
description: AppResourceIDs.description_list_description,
route: [
'/',
`${AppRoutes.Components}`,
`${ComponentsRoutes.DescriptionList}`,
],
},
//
// ExpandableList ...
{
icon: XIconNames.list,
id: `${PageName.ExpandableList}`,
name: `${PageName.ExpandableList}`,
title: AppResourceIDs.expandable_list,
baseRoute: `${ComponentsRoutes.ExpandableList}`,
description: AppResourceIDs.expandable_list_description,
route: [
'/',
`${AppRoutes.Components}`,
`${ComponentsRoutes.ExpandableList}`,
],
},
//
// ExpandablePanel ...
{
icon: XIconNames.list,
id: `${PageName.ExpandablePanel}`,
name: `${PageName.ExpandablePanel}`,
title: AppResourceIDs.expandable_panel,
baseRoute: `${ComponentsRoutes.ExpandablePanel}`,
description: AppResourceIDs.expandable_panel_description,
route: [
'/',
`${AppRoutes.Components}`,
`${ComponentsRoutes.ExpandablePanel}`,
],
},
//
// ModelPresenter ...
{
icon: XIconNames.list,
id: `${PageName.ModelPresenter}`,
name: `${PageName.ModelPresenter}`,
title: AppResourceIDs.model_presenter,
baseRoute: `${ComponentsRoutes.ModelPresenter}`,
description: AppResourceIDs.model_presenter_description,
route: [
'/',
`${AppRoutes.Components}`,
`${ComponentsRoutes.ModelPresenter}`,
],
},
//
// Slider ...
{
icon: XIconNames.list,
id: `${PageName.Slider}`,
name: `${PageName.Slider}`,
title: AppResourceIDs.slider,
baseRoute: `${ComponentsRoutes.Slider}`,
description: AppResourceIDs.slider_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.Slider}`],
},
//
// Stepper ...
{
icon: XIconNames.list,
id: `${PageName.Stepper}`,
name: `${PageName.Stepper}`,
title: AppResourceIDs.stepper,
baseRoute: `${ComponentsRoutes.Stepper}`,
description: AppResourceIDs.stepper_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.Stepper}`],
},
//
// Tabs ...
{
icon: XIconNames.list,
id: `${PageName.Tabs}`,
name: `${PageName.Tabs}`,
title: AppResourceIDs.tabs,
baseRoute: `${ComponentsRoutes.Tabs}`,
description: AppResourceIDs.tabs_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.Tabs}`],
},
//
// Table ...
{
icon: XIconNames.list,
id: `${PageName.Table}`,
name: `${PageName.Table}`,
title: AppResourceIDs.table,
baseRoute: `${ComponentsRoutes.Table}`,
description: AppResourceIDs.tabs_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.Table}`],
},
//
// Page ...
{
icon: XIconNames.list,
id: `${PageName.Page}`,
name: `${PageName.Page}`,
title: AppResourceIDs.page,
baseRoute: `${ComponentsRoutes.Page}`,
description: AppResourceIDs.page_description,
route: ['/', `${AppRoutes.Components}`, `${ComponentsRoutes.Page}`],
},
//
// TabNavigator ...
{
icon: XIconNames.list,
id: `${PageName.TabNavigator}`,
name: `${PageName.TabNavigator}`,
title: AppResourceIDs.tab_navigator,
baseRoute: `${ComponentsRoutes.TabNavigator}`,
description: AppResourceIDs.tab_navigator_description,
route: [
'/',
`${AppRoutes.Components}`,
`${ComponentsRoutes.TabNavigator}`,
],
},
],
},
//
TabsNav: {
icon: XIconNames.list,
id: `${PageName.TabsNav}`,
name: `${PageName.TabsNav}`,
title: AppResourceIDs.tab_navigator,
baseRoute: `${AppRoutes.TabsNav}`,
route: ['/', `${AppRoutes.TabsNav}`],
description: AppResourceIDs.tab_navigator_description,
childs: [
//
// TabPage 1 ...
{
icon: XIconNames.list,
id: `${PageName.TabPage1}`,
name: `${PageName.TabPage1}`,
title: AppResourceIDs.tab_page_1,
baseRoute: `${TabsRoutes.TabPage1}`,
description: AppResourceIDs.tab_navigator_description,
route: ['/', `${AppRoutes.TabsNav}`, `${TabsRoutes.TabPage1}`],
},
//
// TabPage 2 ...
{
icon: XIconNames.list,
id: `${PageName.TabPage2}`,
name: `${PageName.TabPage2}`,
title: AppResourceIDs.tab_page_2,
baseRoute: `${TabsRoutes.TabPage2}`,
description: AppResourceIDs.tab_navigator_description,
route: ['/', `${AppRoutes.TabsNav}`, `${TabsRoutes.TabPage2}`],
},
//
// TabPage 3 ...
{
icon: XIconNames.list,
id: `${PageName.TabPage3}`,
name: `${PageName.TabPage3}`,
title: AppResourceIDs.tab_page_3,
baseRoute: `${TabsRoutes.TabPage3}`,
description: AppResourceIDs.tab_navigator_description,
route: ['/', `${AppRoutes.TabsNav}`, `${TabsRoutes.TabPage3}`],
},
],
},
//
Themes: {
icon: XIconNames.color_palette,
id: `${PageName.Themes}`,
name: `${PageName.Themes}`,
title: AppResourceIDs.themes,
baseRoute: `${AppRoutes.Themes}`,
route: ['/', `${AppRoutes.Themes}`],
description: AppResourceIDs.themes_description,
childs: [
//
// ThemeManager ...
{
icon: XIconNames.color_palette,
id: `${PageName.ThemeManager}`,
name: `${PageName.ThemeManager}`,
title: AppResourceIDs.theme_manager,
baseRoute: `${ThemesRoutes.ThemeManager}`,
description: AppResourceIDs.theme_manager_description,
route: ['/', `${AppRoutes.Themes}`, `${ThemesRoutes.ThemeManager}`],
},
],
},
};
//
// a Const of Available Pages ...
const homeChilds = toArray(PageIndex.Home.childs);
const coreChilds = toArray(PageIndex.Core.childs);
const tabChilds = toArray(PageIndex.TabsNav.childs);
const themeChilds = toArray(PageIndex.Themes.childs);
const serviceChilds = toArray(PageIndex.Services.childs);
const componentChilds = toArray(PageIndex.Components.childs);
export const Pages: any = {
//
Home: PageIndex.Home,
HomeIntroduction: homeChilds[0],
//
Core: PageIndex.Core,
CoreIntroduction: coreChilds[0],
//
Services: PageIndex.Services,
ServicesIntroduction: serviceChilds[0],
//
Components: PageIndex.Components,
ComponentsIntroduction: componentChilds[0],
SmallComponents: componentChilds[1],
Card: componentChilds[2],
Icon: componentChilds[3],
Chart: componentChilds[4],
Ide: componentChilds[5],
Counter: componentChilds[6],
ColorPicker: componentChilds[7],
Fab: componentChilds[8],
FileComponents: componentChilds[9],
Form: componentChilds[10],
Grid: componentChilds[11],
List: componentChilds[12],
Map: componentChilds[13],
MarkDown: componentChilds[14],
Tree: componentChilds[15],
DescriptionList: componentChilds[16],
ExpandableList: componentChilds[17],
ExpandablePanel: componentChilds[18],
ModelPresenter: componentChilds[19],
Slider: componentChilds[20],
Stepper: componentChilds[21],
Tabs: componentChilds[22],
Table: componentChilds[23],
Page: componentChilds[24],
TabNavigator: componentChilds[25],
//
TabsNav: PageIndex.TabsNav,
TabPage1: tabChilds[0],
TabPage2: tabChilds[1],
TabPage3: tabChilds[2],
//
Themes: PageIndex.Themes,
ThemeManager: themeChilds[0],
};
//
// Admin Navigator Pages ...
export const NavPageItems: XNavigatorListItem[] = [
//
//#region Home ...
{
...toNavigatiorListItem(PageIndex.Home),
},
//#endregion
//
//#region Core ...
{
...toNavigatiorListItem(PageIndex.Core),
},
//#endregion
//
//#region Services ...
{
...toNavigatiorListItem(PageIndex.Services),
},
//#endregion
//
//#region Components ...
{
...toNavigatiorListItem(PageIndex.Components),
},
//#endregion
];
//
// Tabs Navigators Pages ...
export const TabNavsItems: XTabNavigatorItem[] = [
{
...toTabNavigatiorItem(Pages.TabPage1),
},
{
...toTabNavigatiorItem(Pages.TabPage2),
},
{
...toTabNavigatiorItem(Pages.TabPage3),
},
];
//#endregion