211 lines
6.5 KiB
TypeScript
211 lines
6.5 KiB
TypeScript
|
|
import { html } from '@design.estate/dees-element';
|
||
|
|
import type { DeesAppuiBottombar } from './dees-appui-bottombar.js';
|
||
|
|
import '@design.estate/dees-wcctools/demotools';
|
||
|
|
|
||
|
|
export const demoFunc = () => {
|
||
|
|
return html`
|
||
|
|
<dees-demowrapper>
|
||
|
|
<style>
|
||
|
|
.demo-container {
|
||
|
|
display: flex;
|
||
|
|
flex-direction: column;
|
||
|
|
gap: 24px;
|
||
|
|
padding: 24px;
|
||
|
|
background: #1a1a1a;
|
||
|
|
}
|
||
|
|
|
||
|
|
.demo-section {
|
||
|
|
display: flex;
|
||
|
|
flex-direction: column;
|
||
|
|
gap: 8px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.demo-label {
|
||
|
|
font-size: 12px;
|
||
|
|
color: #737373;
|
||
|
|
font-family: 'Geist Sans', sans-serif;
|
||
|
|
}
|
||
|
|
|
||
|
|
.demo-bottombar-wrapper {
|
||
|
|
border: 1px solid hsl(0 0% 20%);
|
||
|
|
border-radius: 4px;
|
||
|
|
overflow: hidden;
|
||
|
|
}
|
||
|
|
</style>
|
||
|
|
<div class="demo-container">
|
||
|
|
<div class="demo-section">
|
||
|
|
<div class="demo-label">Bottom bar with status widgets and actions</div>
|
||
|
|
<div class="demo-bottombar-wrapper">
|
||
|
|
<dees-appui-bottombar
|
||
|
|
id="demo-bottombar"
|
||
|
|
></dees-appui-bottombar>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="demo-section">
|
||
|
|
<div class="demo-label">Controls</div>
|
||
|
|
<div style="display: flex; gap: 8px; flex-wrap: wrap;">
|
||
|
|
<button onclick="addSuccessWidget()">Add Success Widget</button>
|
||
|
|
<button onclick="addWarningWidget()">Add Warning Widget</button>
|
||
|
|
<button onclick="addErrorWidget()">Add Error Widget</button>
|
||
|
|
<button onclick="addLoadingWidget()">Add Loading Widget</button>
|
||
|
|
<button onclick="addRightWidget()">Add Right Widget</button>
|
||
|
|
<button onclick="addAction()">Add Action</button>
|
||
|
|
<button onclick="clearAll()">Clear All</button>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<script type="module">
|
||
|
|
const bottombar = document.getElementById('demo-bottombar');
|
||
|
|
|
||
|
|
// Wait for component to initialize
|
||
|
|
await bottombar.updateComplete;
|
||
|
|
|
||
|
|
// Add initial widgets
|
||
|
|
bottombar.addWidget({
|
||
|
|
id: 'status',
|
||
|
|
iconName: 'lucide:activity',
|
||
|
|
label: 'System Online',
|
||
|
|
status: 'success',
|
||
|
|
tooltip: 'All systems operational',
|
||
|
|
onClick: () => console.log('Status clicked'),
|
||
|
|
contextMenuItems: [
|
||
|
|
{ name: 'View Details', iconName: 'lucide:info', action: () => alert('System details') },
|
||
|
|
{ divider: true },
|
||
|
|
{ name: 'Refresh Status', iconName: 'lucide:refreshCw', action: () => alert('Refreshing...') },
|
||
|
|
],
|
||
|
|
});
|
||
|
|
|
||
|
|
bottombar.addWidget({
|
||
|
|
id: 'notifications',
|
||
|
|
iconName: 'lucide:bell',
|
||
|
|
label: '3 notifications',
|
||
|
|
status: 'warning',
|
||
|
|
tooltip: 'You have unread notifications',
|
||
|
|
onClick: () => console.log('Notifications clicked'),
|
||
|
|
});
|
||
|
|
|
||
|
|
bottombar.addWidget({
|
||
|
|
id: 'version',
|
||
|
|
iconName: 'lucide:gitBranch',
|
||
|
|
label: 'v1.2.3',
|
||
|
|
tooltip: 'Current version',
|
||
|
|
position: 'right',
|
||
|
|
onClick: () => console.log('Version clicked'),
|
||
|
|
});
|
||
|
|
|
||
|
|
// Add initial actions
|
||
|
|
bottombar.addAction({
|
||
|
|
id: 'settings',
|
||
|
|
iconName: 'lucide:settings',
|
||
|
|
tooltip: 'Settings',
|
||
|
|
position: 'right',
|
||
|
|
onClick: () => alert('Settings clicked'),
|
||
|
|
});
|
||
|
|
|
||
|
|
bottombar.addAction({
|
||
|
|
id: 'help',
|
||
|
|
iconName: 'lucide:helpCircle',
|
||
|
|
tooltip: 'Help',
|
||
|
|
position: 'right',
|
||
|
|
onClick: () => alert('Help clicked'),
|
||
|
|
});
|
||
|
|
|
||
|
|
// Demo control functions
|
||
|
|
let widgetCounter = 0;
|
||
|
|
let actionCounter = 0;
|
||
|
|
|
||
|
|
window.addSuccessWidget = () => {
|
||
|
|
widgetCounter++;
|
||
|
|
bottombar.addWidget({
|
||
|
|
id: 'success-' + widgetCounter,
|
||
|
|
iconName: 'lucide:checkCircle',
|
||
|
|
label: 'Success ' + widgetCounter,
|
||
|
|
status: 'success',
|
||
|
|
tooltip: 'Success widget',
|
||
|
|
onClick: () => bottombar.removeWidget('success-' + widgetCounter),
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
window.addWarningWidget = () => {
|
||
|
|
widgetCounter++;
|
||
|
|
bottombar.addWidget({
|
||
|
|
id: 'warning-' + widgetCounter,
|
||
|
|
iconName: 'lucide:alertTriangle',
|
||
|
|
label: 'Warning ' + widgetCounter,
|
||
|
|
status: 'warning',
|
||
|
|
tooltip: 'Warning widget',
|
||
|
|
onClick: () => bottombar.removeWidget('warning-' + widgetCounter),
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
window.addErrorWidget = () => {
|
||
|
|
widgetCounter++;
|
||
|
|
bottombar.addWidget({
|
||
|
|
id: 'error-' + widgetCounter,
|
||
|
|
iconName: 'lucide:xCircle',
|
||
|
|
label: 'Error ' + widgetCounter,
|
||
|
|
status: 'error',
|
||
|
|
tooltip: 'Error widget',
|
||
|
|
onClick: () => bottombar.removeWidget('error-' + widgetCounter),
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
window.addLoadingWidget = () => {
|
||
|
|
widgetCounter++;
|
||
|
|
const id = 'loading-' + widgetCounter;
|
||
|
|
bottombar.addWidget({
|
||
|
|
id: id,
|
||
|
|
iconName: 'lucide:loader2',
|
||
|
|
label: 'Loading...',
|
||
|
|
status: 'active',
|
||
|
|
loading: true,
|
||
|
|
tooltip: 'Loading in progress',
|
||
|
|
});
|
||
|
|
|
||
|
|
// Simulate completion after 3 seconds
|
||
|
|
setTimeout(() => {
|
||
|
|
bottombar.updateWidget(id, {
|
||
|
|
iconName: 'lucide:check',
|
||
|
|
label: 'Done!',
|
||
|
|
status: 'success',
|
||
|
|
loading: false,
|
||
|
|
});
|
||
|
|
}, 3000);
|
||
|
|
};
|
||
|
|
|
||
|
|
window.addRightWidget = () => {
|
||
|
|
widgetCounter++;
|
||
|
|
bottombar.addWidget({
|
||
|
|
id: 'right-' + widgetCounter,
|
||
|
|
iconName: 'lucide:info',
|
||
|
|
label: 'Right ' + widgetCounter,
|
||
|
|
position: 'right',
|
||
|
|
onClick: () => bottombar.removeWidget('right-' + widgetCounter),
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
window.addAction = () => {
|
||
|
|
actionCounter++;
|
||
|
|
bottombar.addAction({
|
||
|
|
id: 'action-' + actionCounter,
|
||
|
|
iconName: 'lucide:zap',
|
||
|
|
tooltip: 'Action ' + actionCounter,
|
||
|
|
onClick: () => {
|
||
|
|
alert('Action ' + actionCounter + ' clicked');
|
||
|
|
bottombar.removeAction('action-' + actionCounter);
|
||
|
|
},
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
window.clearAll = () => {
|
||
|
|
bottombar.clearWidgets();
|
||
|
|
bottombar.clearActions();
|
||
|
|
widgetCounter = 0;
|
||
|
|
actionCounter = 0;
|
||
|
|
};
|
||
|
|
</script>
|
||
|
|
</dees-demowrapper>
|
||
|
|
`;
|
||
|
|
};
|