import { html, CSSResultArray, TemplateResult } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import { styles } from './nile-side-bar-expand.css';
import NileElement from '../internal/nile-element';
/**
* Nile side-bar-expand component.
*
* @tag nile-side-bar-expand
*
*/
@customElement('nile-side-bar-expand')
export class NileSideBarExpand extends NileElement {
@property({ type: Boolean, reflect: true })
collapsed: boolean = false;
@property({type: String, reflect:true, attribute:true}) expandTooltipText: string = 'Expand Sidebar';
@property({type: String, reflect:true, attribute:true}) collapseTooltipText: string = 'Collapse Sidebar';
public static get styles(): CSSResultArray {
return [styles];
}
connectedCallback() {
super.connectedCallback();
// Sync with parent sidebar if it exists
const sidebar = this.closest('nile-side-bar');
if (sidebar) {
this.collapsed = sidebar.hasAttribute('collapsed');
}
}
private toggleSidebar() {
const sidebar = this.closest('nile-side-bar') as
| (HTMLElement & { toggle?: (force?: boolean) => void })
| null;
if (!sidebar) return;
if (typeof sidebar.toggle === 'function') {
sidebar.toggle();
} else {
sidebar.toggleAttribute('collapsed', !sidebar.hasAttribute('collapsed'));
}
this.collapsed = sidebar.hasAttribute('collapsed');
}
public render(): TemplateResult {
return html`
`;
}
}
export default NileSideBarExpand;
declare global {
interface HTMLElementTagNameMap {
'nile-side-bar-expand': NileSideBarExpand;
}
}