Compare commits

..

2 Commits

Author SHA1 Message Date
7148b12066 1.1.1
Some checks failed
Default (tags) / security (push) Failing after 25s
Default (tags) / test (push) Failing after 15s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2025-07-07 08:48:35 +00:00
309d708830 add fullscreen mode 2025-07-07 08:48:09 +00:00
5 changed files with 59 additions and 8 deletions

View File

@@ -1,6 +1,6 @@
{ {
"name": "@design.estate/dees-wcctools", "name": "@design.estate/dees-wcctools",
"version": "1.1.0", "version": "1.1.1",
"private": false, "private": false,
"description": "A set of web component tools for creating element catalogues, enabling the structured development and documentation of custom elements and pages.", "description": "A set of web component tools for creating element catalogues, enabling the structured development and documentation of custom elements and pages.",
"exports": { "exports": {

View File

@@ -29,6 +29,9 @@ export class WccDashboard extends DeesElement {
@property() @property()
public selectedTheme: TTheme = 'dark'; public selectedTheme: TTheme = 'dark';
@property()
public isFullscreen: boolean = false;
@property() @property()
public pages: { [key: string]: () => TemplateResult } = {}; public pages: { [key: string]: () => TemplateResult } = {};
@@ -76,6 +79,7 @@ export class WccDashboard extends DeesElement {
<wcc-sidebar <wcc-sidebar
.dashboardRef=${this} .dashboardRef=${this}
.selectedItem=${this.selectedItem} .selectedItem=${this.selectedItem}
.isFullscreen=${this.isFullscreen}
@selectedType=${(eventArg) => { @selectedType=${(eventArg) => {
this.selectedType = eventArg.detail; this.selectedType = eventArg.detail;
}} }}
@@ -92,6 +96,7 @@ export class WccDashboard extends DeesElement {
.selectedItem=${this.selectedItem} .selectedItem=${this.selectedItem}
.selectedViewport=${this.selectedViewport} .selectedViewport=${this.selectedViewport}
.selectedTheme=${this.selectedTheme} .selectedTheme=${this.selectedTheme}
.isFullscreen=${this.isFullscreen}
@selectedViewport=${(eventArg) => { @selectedViewport=${(eventArg) => {
this.selectedViewport = eventArg.detail; this.selectedViewport = eventArg.detail;
this.scheduleUpdate(); this.scheduleUpdate();
@@ -106,8 +111,11 @@ export class WccDashboard extends DeesElement {
frame.requestUpdate(); frame.requestUpdate();
} }
}} }}
@toggleFullscreen=${() => {
this.toggleFullscreen();
}}
></wcc-properties> ></wcc-properties>
<wcc-frame id="wccFrame" viewport=${this.selectedViewport}> <wcc-frame id="wccFrame" viewport=${this.selectedViewport} .isFullscreen=${this.isFullscreen}>
</wcc-frame> </wcc-frame>
`; `;
} }
@@ -122,9 +130,20 @@ export class WccDashboard extends DeesElement {
} }
} }
public toggleFullscreen() {
this.isFullscreen = !this.isFullscreen;
}
public async firstUpdated() { public async firstUpdated() {
this.domtools = await plugins.deesDomtools.DomTools.setupDomTools(); this.domtools = await plugins.deesDomtools.DomTools.setupDomTools();
// Add ESC key handler for fullscreen mode
document.addEventListener('keydown', (event) => {
if (event.key === 'Escape' && this.isFullscreen) {
this.isFullscreen = false;
}
});
// Set up scroll listeners after DOM is ready // Set up scroll listeners after DOM is ready
setTimeout(() => { setTimeout(() => {
this.setupScrollListeners(); this.setupScrollListeners();

View File

@@ -16,6 +16,9 @@ export class WccFrame extends DeesElement {
@property({ type: Boolean }) @property({ type: Boolean })
public advancedEditorOpen: boolean = false; public advancedEditorOpen: boolean = false;
@property({ type: Boolean })
public isFullscreen: boolean = false;
public static styles = [ public static styles = [
css` css`
:host { :host {
@@ -43,9 +46,19 @@ export class WccFrame extends DeesElement {
return html` return html`
<style> <style>
:host { :host {
bottom: ${this.advancedEditorOpen ? '400px' : '100px'}; ${this.isFullscreen ? `
transition: bottom 0.3s ease; border: none !important;
${(() => { left: 0px !important;
right: 0px !important;
top: 0px !important;
bottom: 0px !important;
` : `
bottom: ${this.advancedEditorOpen ? '400px' : '100px'};
border: 10px solid #ffaeaf;
left: 200px;
`}
transition: all 0.3s ease;
${this.isFullscreen ? 'padding: 0px;' : (() => {
switch (this.viewport) { switch (this.viewport) {
case 'desktop': case 'desktop':
return ` return `
@@ -74,7 +87,7 @@ export class WccFrame extends DeesElement {
} }
.viewport { .viewport {
${this.viewport !== 'desktop' ${!this.isFullscreen && this.viewport !== 'desktop'
? html` border-right: 1px dotted #444; border-left: 1px dotted #444; ` ? html` border-right: 1px dotted #444; border-left: 1px dotted #444; `
: html`` : html``
} }

View File

@@ -31,6 +31,9 @@ export class WccProperties extends DeesElement {
@property() @property()
public warning: string = null; public warning: string = null;
@property()
public isFullscreen: boolean = false;
@state() @state()
propertyContent: TemplateResult[] = []; propertyContent: TemplateResult[] = [];
@@ -80,6 +83,7 @@ export class WccProperties extends DeesElement {
overflow: hidden; overflow: hidden;
background: var(--background); background: var(--background);
color: var(--foreground); color: var(--foreground);
display: ${this.isFullscreen ? 'none' : 'block'};
} }
.grid { .grid {
display: grid; display: grid;
@@ -644,7 +648,11 @@ export class WccProperties extends DeesElement {
</div> </div>
</div> </div>
</div> </div>
<div class="docs">Docs</div> <div class="docs" @click=${() => this.toggleFullscreen()}>
<i class="material-symbols-outlined" style="font-size: 20px;">
${this.isFullscreen ? 'fullscreen_exit' : 'fullscreen'}
</i>
</div>
</div> </div>
${this.warning ? html`<div class="warning">${this.warning}</div>` : null} ${this.warning ? html`<div class="warning">${this.warning}</div>` : null}
</div> </div>
@@ -977,4 +985,12 @@ export class WccProperties extends DeesElement {
}) })
); );
} }
private toggleFullscreen() {
this.dispatchEvent(
new CustomEvent('toggleFullscreen', {
bubbles: true
})
);
}
} }

View File

@@ -15,6 +15,9 @@ export class WccSidebar extends DeesElement {
@property() @property()
public dashboardRef: WccDashboard; public dashboardRef: WccDashboard;
@property()
public isFullscreen: boolean = false;
public render(): TemplateResult { public render(): TemplateResult {
return html` return html`
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" rel="stylesheet" /> <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" rel="stylesheet" />
@@ -36,7 +39,7 @@ export class WccSidebar extends DeesElement {
--ring: #3b82f6; --ring: #3b82f6;
--radius: 4px; --radius: 4px;
display: block; display: ${this.isFullscreen ? 'none' : 'block'};
border-right: 1px solid rgba(255, 255, 255, 0.08); border-right: 1px solid rgba(255, 255, 255, 0.08);
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
font-size: 14px; font-size: 14px;