fix(dees-appui): Extract demos for main and secondary app menus, adjust collapsed styles and toggle placement, bump devDependency
This commit is contained in:
@@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@design.estate/dees-catalog',
|
||||
version: '3.1.0',
|
||||
version: '3.1.1',
|
||||
description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
import { html } from '@design.estate/dees-element';
|
||||
|
||||
export const demoFunc = () => html`
|
||||
<style>
|
||||
.demo-mainmenu-container {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
background: #1a1a1a;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.demo-mainmenu-container .spacer {
|
||||
flex: 1;
|
||||
background: #0f0f0f;
|
||||
}
|
||||
</style>
|
||||
<div class="demo-mainmenu-container">
|
||||
<dees-appui-mainmenu
|
||||
.logoIcon=${'lucide:box'}
|
||||
.logoText=${'Acme App'}
|
||||
.menuGroups=${[
|
||||
{
|
||||
tabs: [
|
||||
{ key: 'Dashboard', iconName: 'lucide:home', action: () => console.log('Dashboard') },
|
||||
{ key: 'Inbox', iconName: 'lucide:inbox', action: () => console.log('Inbox') },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Workspace',
|
||||
tabs: [
|
||||
{ key: 'Projects', iconName: 'lucide:folder', action: () => console.log('Projects') },
|
||||
{ key: 'Tasks', iconName: 'lucide:checkSquare', action: () => console.log('Tasks') },
|
||||
{ key: 'Documents', iconName: 'lucide:fileText', action: () => console.log('Documents') },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Analytics',
|
||||
tabs: [
|
||||
{ key: 'Reports', iconName: 'lucide:barChart3', action: () => console.log('Reports') },
|
||||
{ key: 'Insights', iconName: 'lucide:lightbulb', action: () => console.log('Insights') },
|
||||
]
|
||||
}
|
||||
]}
|
||||
.bottomTabs=${[
|
||||
{ key: 'Settings', iconName: 'lucide:settings', action: () => console.log('Settings') },
|
||||
{ key: 'Help', iconName: 'lucide:helpCircle', action: () => console.log('Help') },
|
||||
]}
|
||||
></dees-appui-mainmenu>
|
||||
<div class="spacer"></div>
|
||||
</div>
|
||||
`;
|
||||
@@ -12,6 +12,7 @@ import {
|
||||
cssManager,
|
||||
} from '@design.estate/dees-element';
|
||||
import { DeesContextmenu } from '../../dees-contextmenu/dees-contextmenu.js';
|
||||
import { demoFunc } from './dees-appui-mainmenu.demo.js';
|
||||
|
||||
/**
|
||||
* the most left menu
|
||||
@@ -19,49 +20,7 @@ import { DeesContextmenu } from '../../dees-contextmenu/dees-contextmenu.js';
|
||||
*/
|
||||
@customElement('dees-appui-mainmenu')
|
||||
export class DeesAppuiMainmenu extends DeesElement {
|
||||
public static demo = () => html`
|
||||
<style>
|
||||
.demo-mainmenu-container {
|
||||
height: 500px;
|
||||
background: #1a1a1a;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
<div class="demo-mainmenu-container">
|
||||
<dees-appui-mainmenu
|
||||
.logoIcon=${'lucide:box'}
|
||||
.logoText=${'Acme App'}
|
||||
.menuGroups=${[
|
||||
{
|
||||
tabs: [
|
||||
{ key: 'Dashboard', iconName: 'lucide:home', action: () => console.log('Dashboard') },
|
||||
{ key: 'Inbox', iconName: 'lucide:inbox', action: () => console.log('Inbox') },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Workspace',
|
||||
tabs: [
|
||||
{ key: 'Projects', iconName: 'lucide:folder', action: () => console.log('Projects') },
|
||||
{ key: 'Tasks', iconName: 'lucide:checkSquare', action: () => console.log('Tasks') },
|
||||
{ key: 'Documents', iconName: 'lucide:fileText', action: () => console.log('Documents') },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Analytics',
|
||||
tabs: [
|
||||
{ key: 'Reports', iconName: 'lucide:barChart3', action: () => console.log('Reports') },
|
||||
{ key: 'Insights', iconName: 'lucide:lightbulb', action: () => console.log('Insights') },
|
||||
]
|
||||
}
|
||||
]}
|
||||
.bottomTabs=${[
|
||||
{ key: 'Settings', iconName: 'lucide:settings', action: () => console.log('Settings') },
|
||||
{ key: 'Help', iconName: 'lucide:helpCircle', action: () => console.log('Help') },
|
||||
]}
|
||||
></dees-appui-mainmenu>
|
||||
</div>
|
||||
`;
|
||||
public static demo = demoFunc;
|
||||
|
||||
// INSTANCE
|
||||
|
||||
@@ -188,13 +147,12 @@ export class DeesAppuiMainmenu extends DeesElement {
|
||||
|
||||
:host([collapsed]) .logoSection {
|
||||
justify-content: center;
|
||||
padding: 0 8px;
|
||||
padding: 0;
|
||||
gap: 0;
|
||||
}
|
||||
|
||||
:host([collapsed]) .logoSection .logoText {
|
||||
opacity: 0;
|
||||
width: 0;
|
||||
overflow: hidden;
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Middle Section (scrollable) */
|
||||
@@ -395,9 +353,6 @@ export class DeesAppuiMainmenu extends DeesElement {
|
||||
const allTabs = this.getAllTabs();
|
||||
|
||||
return html`
|
||||
<button class="collapse-toggle" @click="${() => this.toggleCollapse()}">
|
||||
<dees-icon .icon="${this.collapsed ? 'lucide:chevronRight' : 'lucide:chevronLeft'}"></dees-icon>
|
||||
</button>
|
||||
<div class="mainContainer" @contextmenu=${(eventArg: MouseEvent) => {
|
||||
DeesContextmenu.openContextMenuWithOptions(eventArg, [{
|
||||
name: 'app settings',
|
||||
@@ -422,6 +377,9 @@ export class DeesAppuiMainmenu extends DeesElement {
|
||||
</div>
|
||||
` : ''}
|
||||
</div>
|
||||
<button class="collapse-toggle" @click="${() => this.toggleCollapse()}">
|
||||
<dees-icon .icon="${this.collapsed ? 'lucide:chevronRight' : 'lucide:chevronLeft'}"></dees-icon>
|
||||
</button>
|
||||
`;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
import { html } from '@design.estate/dees-element';
|
||||
import type * as interfaces from '../../interfaces/index.js';
|
||||
|
||||
export const demoFunc = () => html`
|
||||
<style>
|
||||
.demo-secondarymenu-container {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
background: #1a1a1a;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.demo-secondarymenu-container .spacer {
|
||||
flex: 1;
|
||||
background: #0f0f0f;
|
||||
}
|
||||
</style>
|
||||
<div class="demo-secondarymenu-container">
|
||||
<dees-appui-secondarymenu
|
||||
.heading=${'Projects'}
|
||||
.groups=${[
|
||||
{
|
||||
name: 'Active',
|
||||
iconName: 'lucide:folder',
|
||||
items: [
|
||||
{ key: 'Frontend App', iconName: 'code', action: () => console.log('Frontend'), badge: 3, badgeVariant: 'warning' },
|
||||
{ key: 'API Server', iconName: 'server', action: () => console.log('API'), badge: 'new', badgeVariant: 'success' },
|
||||
{ key: 'Database', iconName: 'database', action: () => console.log('Database') },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Archived',
|
||||
iconName: 'lucide:archive',
|
||||
collapsed: true,
|
||||
items: [
|
||||
{ key: 'Legacy System', iconName: 'box', action: () => console.log('Legacy') },
|
||||
{ key: 'Old API', iconName: 'server', action: () => console.log('Old API') },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Settings',
|
||||
iconName: 'lucide:settings',
|
||||
items: [
|
||||
{ key: 'Configuration', iconName: 'sliders', action: () => console.log('Config') },
|
||||
{ key: 'Integrations', iconName: 'plug', action: () => console.log('Integrations'), badge: 5, badgeVariant: 'error' },
|
||||
]
|
||||
}
|
||||
] as interfaces.ISecondaryMenuGroup[]}
|
||||
@item-select=${(e: CustomEvent) => console.log('Selected:', e.detail)}
|
||||
></dees-appui-secondarymenu>
|
||||
<div class="spacer"></div>
|
||||
</div>
|
||||
`;
|
||||
@@ -14,6 +14,7 @@ import {
|
||||
css,
|
||||
cssManager,
|
||||
} from '@design.estate/dees-element';
|
||||
import { demoFunc } from './dees-appui-secondarymenu.demo.js';
|
||||
|
||||
/**
|
||||
* Secondary navigation menu for sub-navigation within MainMenu views
|
||||
@@ -21,51 +22,7 @@ import {
|
||||
*/
|
||||
@customElement('dees-appui-secondarymenu')
|
||||
export class DeesAppuiSecondarymenu extends DeesElement {
|
||||
public static demo = () => html`
|
||||
<style>
|
||||
.demo-container {
|
||||
height: 500px;
|
||||
display: flex;
|
||||
background: #1a1a1a;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
<div class="demo-container">
|
||||
<dees-appui-secondarymenu
|
||||
.heading=${'Projects'}
|
||||
.groups=${[
|
||||
{
|
||||
name: 'Active',
|
||||
iconName: 'lucide:folder',
|
||||
items: [
|
||||
{ key: 'Frontend App', iconName: 'code', action: () => console.log('Frontend'), badge: 3, badgeVariant: 'warning' },
|
||||
{ key: 'API Server', iconName: 'server', action: () => console.log('API'), badge: 'new', badgeVariant: 'success' },
|
||||
{ key: 'Database', iconName: 'database', action: () => console.log('Database') },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Archived',
|
||||
iconName: 'lucide:archive',
|
||||
collapsed: true,
|
||||
items: [
|
||||
{ key: 'Legacy System', iconName: 'box', action: () => console.log('Legacy') },
|
||||
{ key: 'Old API', iconName: 'server', action: () => console.log('Old API') },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Settings',
|
||||
iconName: 'lucide:settings',
|
||||
items: [
|
||||
{ key: 'Configuration', iconName: 'sliders', action: () => console.log('Config') },
|
||||
{ key: 'Integrations', iconName: 'plug', action: () => console.log('Integrations'), badge: 5, badgeVariant: 'error' },
|
||||
]
|
||||
}
|
||||
] as interfaces.ISecondaryMenuGroup[]}
|
||||
@item-select=${(e: CustomEvent) => console.log('Selected:', e.detail)}
|
||||
></dees-appui-secondarymenu>
|
||||
</div>
|
||||
`;
|
||||
public static demo = demoFunc;
|
||||
|
||||
// INSTANCE
|
||||
|
||||
@@ -486,9 +443,6 @@ export class DeesAppuiSecondarymenu extends DeesElement {
|
||||
|
||||
public render(): TemplateResult {
|
||||
return html`
|
||||
<button class="collapse-toggle" @click="${() => this.toggleCollapse()}">
|
||||
<dees-icon .icon="${this.collapsed ? 'lucide:chevronRight' : 'lucide:chevronLeft'}"></dees-icon>
|
||||
</button>
|
||||
<div class="maincontainer">
|
||||
<div class="header">
|
||||
<span class="heading">${this.heading}</span>
|
||||
@@ -499,6 +453,9 @@ export class DeesAppuiSecondarymenu extends DeesElement {
|
||||
: this.renderLegacyOptions()}
|
||||
</div>
|
||||
</div>
|
||||
<button class="collapse-toggle" @click="${() => this.toggleCollapse()}">
|
||||
<dees-icon .icon="${this.collapsed ? 'lucide:chevronRight' : 'lucide:chevronLeft'}"></dees-icon>
|
||||
</button>
|
||||
`;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user