Archived
refactor: extract render methods for workspace panel templates
Break the dense one-liner workspace-panel and expand-button templates into multi-line formatted render methods for readability and safer future edits.
This commit is contained in:
@@ -511,13 +511,37 @@ export class PiWebApp extends LitElement {
|
|||||||
const panelContext = workspace === undefined ? undefined : this.createWorkspacePanelContext(workspace);
|
const panelContext = workspace === undefined ? undefined : this.createWorkspacePanelContext(workspace);
|
||||||
const workspaceLabelItems = workspace === undefined ? [] : this.plugins.getWorkspaceLabelItems(this.state, workspace);
|
const workspaceLabelItems = workspace === undefined ? [] : this.plugins.getWorkspaceLabelItems(this.state, workspace);
|
||||||
const emptyState = workspace === undefined ? this.workspacePanelEmptyState() : undefined;
|
const emptyState = workspace === undefined ? this.workspacePanelEmptyState() : undefined;
|
||||||
return html`<workspace-panel .workspace=${workspace} .panelContext=${panelContext} .emptyState=${emptyState} .tool=${this.state.workspaceTool} .panels=${this.visibleWorkspacePanels()} .workspaceLabelItems=${workspaceLabelItems} .onSelectTool=${(tool: QualifiedContributionId) => { this.openWorkspaceTool(tool); }} .onToggleCollapse=${() => { this.toggleWorkspacePanelCollapse(); }}></workspace-panel>`;
|
return html`
|
||||||
|
<workspace-panel
|
||||||
|
.workspace=${workspace}
|
||||||
|
.panelContext=${panelContext}
|
||||||
|
.emptyState=${emptyState}
|
||||||
|
.tool=${this.state.workspaceTool}
|
||||||
|
.panels=${this.visibleWorkspacePanels()}
|
||||||
|
.workspaceLabelItems=${workspaceLabelItems}
|
||||||
|
.onSelectTool=${(tool: QualifiedContributionId) => { this.openWorkspaceTool(tool); }}
|
||||||
|
.onToggleCollapse=${() => { this.toggleWorkspacePanelCollapse(); }}
|
||||||
|
></workspace-panel>
|
||||||
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
private toggleWorkspacePanelCollapse(): void {
|
private toggleWorkspacePanelCollapse(): void {
|
||||||
this.setState({ workspacePanelCollapsed: !this.state.workspacePanelCollapsed });
|
this.setState({ workspacePanelCollapsed: !this.state.workspacePanelCollapsed });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private renderExpandWorkspacePanelButton() {
|
||||||
|
return html`
|
||||||
|
<div class="expand-panel-strip">
|
||||||
|
<button
|
||||||
|
class="expand-workspace-panel-button"
|
||||||
|
title="Toggle Panel"
|
||||||
|
aria-label="Toggle Panel"
|
||||||
|
@click=${() => { this.toggleWorkspacePanelCollapse(); }}
|
||||||
|
><svg class="expand-icon" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M15 18l-6-6 6-6"/></svg></button>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
private renderNavigationPanel(autoSwitchToChat: boolean) {
|
private renderNavigationPanel(autoSwitchToChat: boolean) {
|
||||||
const openChatAfter = (action: () => Promise<void>) => this.withChatScrollTransition(async () => {
|
const openChatAfter = (action: () => Promise<void>) => this.withChatScrollTransition(async () => {
|
||||||
await action();
|
await action();
|
||||||
@@ -1200,7 +1224,7 @@ export class PiWebApp extends LitElement {
|
|||||||
<aside>${this.isMobileNavigationLayout ? null : this.renderNavigationPanel(false)}</aside>
|
<aside>${this.isMobileNavigationLayout ? null : this.renderNavigationPanel(false)}</aside>
|
||||||
<main class=${state.mainView === "chat" ? "chat-view" : state.mainView === "navigation" ? "navigation-view" : "workspace-view"}>
|
<main class=${state.mainView === "chat" ? "chat-view" : state.mainView === "navigation" ? "navigation-view" : "workspace-view"}>
|
||||||
${this.renderContextBar()}
|
${this.renderContextBar()}
|
||||||
${state.workspacePanelCollapsed ? html`<div class="expand-panel-strip"><button class="expand-workspace-panel-button" title="Toggle Panel" aria-label="Toggle Panel" @click=${() => { this.toggleWorkspacePanelCollapse(); }}><svg class="expand-icon" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M15 18l-6-6 6-6"/></svg></button></div>` : null}
|
${state.workspacePanelCollapsed ? this.renderExpandWorkspacePanelButton() : null}
|
||||||
<div class=${this.mobileTabsFrameClass()}>
|
<div class=${this.mobileTabsFrameClass()}>
|
||||||
<div class="mobile-tabs" @scroll=${this.onMobileTabsScroll}>
|
<div class="mobile-tabs" @scroll=${this.onMobileTabsScroll}>
|
||||||
<button class=${state.mainView === "navigation" ? "mobile-navigation-tab selected" : "mobile-navigation-tab"} @click=${() => { this.selectMainView("navigation"); }}>Sessions</button>
|
<button class=${state.mainView === "navigation" ? "mobile-navigation-tab selected" : "mobile-navigation-tab"} @click=${() => { this.selectMainView("navigation"); }}>Sessions</button>
|
||||||
|
|||||||
Reference in New Issue
Block a user