@design.estate/dees-catalog 3.51.2 → 3.52.0

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-catalog",
3
- "version": "3.51.2",
3
+ "version": "3.52.0",
4
4
  "private": false,
5
5
  "description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
6
6
  "main": "dist_ts_web/index.js",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '3.51.2',
6
+ version: '3.52.0',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  }
@@ -37,6 +37,9 @@ export class DeesChartArea extends DeesElement {
37
37
  @state()
38
38
  accessor seriesStats: Array<{ name: string; latest: number; min: number; max: number; avg: number; color: string }> = [];
39
39
 
40
+ @state()
41
+ accessor isFullPage: boolean = false;
42
+
40
43
  @property()
41
44
  accessor label: string = 'Untitled Chart';
42
45
 
@@ -577,6 +580,29 @@ export class DeesChartArea extends DeesElement {
577
580
  await this.resizeChart();
578
581
  }
579
582
 
583
+ public toggleFullPage() {
584
+ this.isFullPage = !this.isFullPage;
585
+ if (this.isFullPage) {
586
+ this.style.position = 'fixed';
587
+ this.style.inset = '0';
588
+ this.style.zIndex = '10000';
589
+ this.style.height = '100vh';
590
+ this.style.padding = '0';
591
+ document.body.style.overflow = 'hidden';
592
+ } else {
593
+ this.style.position = '';
594
+ this.style.inset = '';
595
+ this.style.zIndex = '';
596
+ this.style.height = '';
597
+ this.style.padding = '';
598
+ document.body.style.overflow = '';
599
+ }
600
+ // Give LC a tick to resize
601
+ requestAnimationFrame(() => {
602
+ this.chart?.timeScale().fitContent();
603
+ });
604
+ }
605
+
580
606
  private startAutoScroll() {
581
607
  if (this.autoScrollTimer) return;
582
608
  this.autoScrollTimer = window.setInterval(() => {
@@ -13,9 +13,40 @@ export const chartAreaStyles = [
13
13
  dees-tile {
14
14
  height: 100%;
15
15
  }
16
+ .chartHeader {
17
+ display: flex;
18
+ align-items: center;
19
+ height: 32px;
20
+ padding: 0 8px 0 16px;
21
+ }
22
+ .chartLabel {
23
+ flex: 1;
24
+ font-size: 14px;
25
+ font-weight: 500;
26
+ letter-spacing: -0.01em;
27
+ color: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 63.9%)')};
28
+ }
29
+ .expandBtn {
30
+ display: flex;
31
+ align-items: center;
32
+ justify-content: center;
33
+ width: 28px;
34
+ height: 28px;
35
+ border: none;
36
+ border-radius: 4px;
37
+ background: transparent;
38
+ cursor: pointer;
39
+ color: ${cssManager.bdTheme('hsl(0 0% 55%)', 'hsl(0 0% 45%)')};
40
+ transition: all 0.15s ease;
41
+ padding: 0;
42
+ }
43
+ .expandBtn:hover {
44
+ background: ${cssManager.bdTheme('hsl(0 0% 93%)', 'hsl(0 0% 12%)')};
45
+ color: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 90%)')};
46
+ }
16
47
  .chartContainer {
17
48
  position: absolute;
18
- inset: 0;
49
+ inset: 0 0 4px 0;
19
50
  }
20
51
  .statsBar {
21
52
  height: 32px;
@@ -1,9 +1,16 @@
1
1
  import { html, type TemplateResult } from '@design.estate/dees-element';
2
2
  import type { DeesChartArea } from './component.js';
3
+ import '../../00group-utility/dees-icon/dees-icon.js';
3
4
 
4
5
  export const renderChartArea = (component: DeesChartArea): TemplateResult => {
5
6
  return html`
6
- <dees-tile .heading=${component.label}>
7
+ <dees-tile>
8
+ <div slot="header" class="chartHeader">
9
+ <span class="chartLabel">${component.label}</span>
10
+ <button class="expandBtn" @click=${() => component.toggleFullPage()} title="${component.isFullPage ? 'Exit full page' : 'Full page'}">
11
+ <dees-icon .icon=${component.isFullPage ? 'lucide:Minimize2' : 'lucide:Maximize2'} .iconSize=${14}></dees-icon>
12
+ </button>
13
+ </div>
7
14
  <div class="chartContainer"></div>
8
15
  ${component.seriesStats.length > 0 ? html`
9
16
  <div slot="footer" class="statsBar">