@design.estate/dees-wcctools 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@design.estate/dees-wcctools",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "private": false,
5
5
  "description": "A set of web component tools for creating element catalogues, enabling the structured development and documentation of custom elements and pages.",
6
6
  "exports": {
@@ -29,6 +29,9 @@ export class WccDashboard extends DeesElement {
29
29
  @property()
30
30
  public selectedTheme: TTheme = 'dark';
31
31
 
32
+ @property()
33
+ public isFullscreen: boolean = false;
34
+
32
35
  @property()
33
36
  public pages: { [key: string]: () => TemplateResult } = {};
34
37
 
@@ -76,6 +79,7 @@ export class WccDashboard extends DeesElement {
76
79
  <wcc-sidebar
77
80
  .dashboardRef=${this}
78
81
  .selectedItem=${this.selectedItem}
82
+ .isFullscreen=${this.isFullscreen}
79
83
  @selectedType=${(eventArg) => {
80
84
  this.selectedType = eventArg.detail;
81
85
  }}
@@ -92,6 +96,7 @@ export class WccDashboard extends DeesElement {
92
96
  .selectedItem=${this.selectedItem}
93
97
  .selectedViewport=${this.selectedViewport}
94
98
  .selectedTheme=${this.selectedTheme}
99
+ .isFullscreen=${this.isFullscreen}
95
100
  @selectedViewport=${(eventArg) => {
96
101
  this.selectedViewport = eventArg.detail;
97
102
  this.scheduleUpdate();
@@ -106,8 +111,11 @@ export class WccDashboard extends DeesElement {
106
111
  frame.requestUpdate();
107
112
  }
108
113
  }}
114
+ @toggleFullscreen=${() => {
115
+ this.toggleFullscreen();
116
+ }}
109
117
  ></wcc-properties>
110
- <wcc-frame id="wccFrame" viewport=${this.selectedViewport}>
118
+ <wcc-frame id="wccFrame" viewport=${this.selectedViewport} .isFullscreen=${this.isFullscreen}>
111
119
  </wcc-frame>
112
120
  `;
113
121
  }
@@ -122,9 +130,20 @@ export class WccDashboard extends DeesElement {
122
130
  }
123
131
  }
124
132
 
133
+ public toggleFullscreen() {
134
+ this.isFullscreen = !this.isFullscreen;
135
+ }
136
+
125
137
  public async firstUpdated() {
126
138
  this.domtools = await plugins.deesDomtools.DomTools.setupDomTools();
127
139
 
140
+ // Add ESC key handler for fullscreen mode
141
+ document.addEventListener('keydown', (event) => {
142
+ if (event.key === 'Escape' && this.isFullscreen) {
143
+ this.isFullscreen = false;
144
+ }
145
+ });
146
+
128
147
  // Set up scroll listeners after DOM is ready
129
148
  setTimeout(() => {
130
149
  this.setupScrollListeners();
@@ -16,6 +16,9 @@ export class WccFrame extends DeesElement {
16
16
  @property({ type: Boolean })
17
17
  public advancedEditorOpen: boolean = false;
18
18
 
19
+ @property({ type: Boolean })
20
+ public isFullscreen: boolean = false;
21
+
19
22
  public static styles = [
20
23
  css`
21
24
  :host {
@@ -43,9 +46,19 @@ export class WccFrame extends DeesElement {
43
46
  return html`
44
47
  <style>
45
48
  :host {
46
- bottom: ${this.advancedEditorOpen ? '400px' : '100px'};
47
- transition: bottom 0.3s ease;
48
- ${(() => {
49
+ ${this.isFullscreen ? `
50
+ border: none !important;
51
+ left: 0px !important;
52
+ right: 0px !important;
53
+ top: 0px !important;
54
+ bottom: 0px !important;
55
+ ` : `
56
+ bottom: ${this.advancedEditorOpen ? '400px' : '100px'};
57
+ border: 10px solid #ffaeaf;
58
+ left: 200px;
59
+ `}
60
+ transition: all 0.3s ease;
61
+ ${this.isFullscreen ? 'padding: 0px;' : (() => {
49
62
  switch (this.viewport) {
50
63
  case 'desktop':
51
64
  return `
@@ -74,7 +87,7 @@ export class WccFrame extends DeesElement {
74
87
  }
75
88
 
76
89
  .viewport {
77
- ${this.viewport !== 'desktop'
90
+ ${!this.isFullscreen && this.viewport !== 'desktop'
78
91
  ? html` border-right: 1px dotted #444; border-left: 1px dotted #444; `
79
92
  : html``
80
93
  }
@@ -31,6 +31,9 @@ export class WccProperties extends DeesElement {
31
31
  @property()
32
32
  public warning: string = null;
33
33
 
34
+ @property()
35
+ public isFullscreen: boolean = false;
36
+
34
37
  @state()
35
38
  propertyContent: TemplateResult[] = [];
36
39
 
@@ -80,6 +83,7 @@ export class WccProperties extends DeesElement {
80
83
  overflow: hidden;
81
84
  background: var(--background);
82
85
  color: var(--foreground);
86
+ display: ${this.isFullscreen ? 'none' : 'block'};
83
87
  }
84
88
  .grid {
85
89
  display: grid;
@@ -644,7 +648,11 @@ export class WccProperties extends DeesElement {
644
648
  </div>
645
649
  </div>
646
650
  </div>
647
- <div class="docs">Docs</div>
651
+ <div class="docs" @click=${() => this.toggleFullscreen()}>
652
+ <i class="material-symbols-outlined" style="font-size: 20px;">
653
+ ${this.isFullscreen ? 'fullscreen_exit' : 'fullscreen'}
654
+ </i>
655
+ </div>
648
656
  </div>
649
657
  ${this.warning ? html`<div class="warning">${this.warning}</div>` : null}
650
658
  </div>
@@ -977,4 +985,12 @@ export class WccProperties extends DeesElement {
977
985
  })
978
986
  );
979
987
  }
988
+
989
+ private toggleFullscreen() {
990
+ this.dispatchEvent(
991
+ new CustomEvent('toggleFullscreen', {
992
+ bubbles: true
993
+ })
994
+ );
995
+ }
980
996
  }
@@ -15,6 +15,9 @@ export class WccSidebar extends DeesElement {
15
15
  @property()
16
16
  public dashboardRef: WccDashboard;
17
17
 
18
+ @property()
19
+ public isFullscreen: boolean = false;
20
+
18
21
  public render(): TemplateResult {
19
22
  return html`
20
23
  <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 {
36
39
  --ring: #3b82f6;
37
40
  --radius: 4px;
38
41
 
39
- display: block;
42
+ display: ${this.isFullscreen ? 'none' : 'block'};
40
43
  border-right: 1px solid rgba(255, 255, 255, 0.08);
41
44
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
42
45
  font-size: 14px;