@ogidor/dashboard 1.0.9 → 1.0.11
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/README.md +22 -0
- package/app/app.module.d.ts +1 -1
- package/app/dashboard.component.d.ts +15 -15
- package/esm2020/app/app.module.mjs +6 -2
- package/esm2020/app/dashboard.component.mjs +140 -121
- package/fesm2015/ogidor-dashboard.mjs +146 -121
- package/fesm2015/ogidor-dashboard.mjs.map +1 -1
- package/fesm2020/ogidor-dashboard.mjs +144 -121
- package/fesm2020/ogidor-dashboard.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -68,6 +68,28 @@ export class AppModule {}
|
|
|
68
68
|
|
|
69
69
|
### 2. Add the component to your template
|
|
70
70
|
|
|
71
|
+
`app-dashboard` fills whatever container you place it in — **you control the size**. Give its parent a defined height and the dashboard will fill it completely.
|
|
72
|
+
|
|
73
|
+
```html
|
|
74
|
+
<!-- Full-page example -->
|
|
75
|
+
<div style="width: 100vw; height: 100vh;">
|
|
76
|
+
<app-dashboard ...></app-dashboard>
|
|
77
|
+
</div>
|
|
78
|
+
|
|
79
|
+
<!-- Embedded in a layout example -->
|
|
80
|
+
<div class="dashboard-container">
|
|
81
|
+
<app-dashboard ...></app-dashboard>
|
|
82
|
+
</div>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
```css
|
|
86
|
+
/* your global stylesheet */
|
|
87
|
+
.dashboard-container {
|
|
88
|
+
width: 100%;
|
|
89
|
+
height: calc(100vh - 60px); /* e.g. subtract a top nav */
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
71
93
|
```html
|
|
72
94
|
<app-dashboard
|
|
73
95
|
(addWidgetRequested)="onAddWidget()"
|
package/app/app.module.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import * as i4 from "@angular/common";
|
|
|
6
6
|
import * as i5 from "@angular/platform-browser";
|
|
7
7
|
export declare class DashboardModule {
|
|
8
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<DashboardModule, never>;
|
|
9
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<DashboardModule, [typeof i1.DashboardComponent, typeof i2.WidgetRendererComponent, typeof i3.CustomGridComponent, typeof i3.GridCellDirective], [typeof i4.CommonModule], [typeof i1.DashboardComponent, typeof i2.WidgetRendererComponent, typeof i3.CustomGridComponent, typeof i3.GridCellDirective]>;
|
|
9
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<DashboardModule, [typeof i1.DashboardComponent, typeof i1.OverflowActivePipe, typeof i2.WidgetRendererComponent, typeof i3.CustomGridComponent, typeof i3.GridCellDirective], [typeof i4.CommonModule], [typeof i1.DashboardComponent, typeof i1.OverflowActivePipe, typeof i2.WidgetRendererComponent, typeof i3.CustomGridComponent, typeof i3.GridCellDirective]>;
|
|
10
10
|
static ɵinj: i0.ɵɵInjectorDeclaration<DashboardModule>;
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
@@ -1,38 +1,37 @@
|
|
|
1
|
-
import { OnInit, OnDestroy, OnChanges, SimpleChanges, EventEmitter, TemplateRef } from '@angular/core';
|
|
1
|
+
import { OnInit, OnDestroy, AfterViewInit, OnChanges, SimpleChanges, EventEmitter, TemplateRef, ElementRef, ChangeDetectorRef, NgZone, PipeTransform } from '@angular/core';
|
|
2
2
|
import { DashboardStateService } from './dashboard-state.service';
|
|
3
3
|
import { Page, Widget, DashboardTheme } from './models';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class
|
|
5
|
+
export declare class OverflowActivePipe implements PipeTransform {
|
|
6
|
+
transform(pages: Page[], activePageId: string): boolean;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<OverflowActivePipe, never>;
|
|
8
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<OverflowActivePipe, "overflowActive", false>;
|
|
9
|
+
}
|
|
10
|
+
export declare class DashboardComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {
|
|
6
11
|
stateService: DashboardStateService;
|
|
12
|
+
private cdr;
|
|
13
|
+
private zone;
|
|
7
14
|
initialLayout?: string;
|
|
8
15
|
theme?: DashboardTheme;
|
|
9
|
-
/**
|
|
10
|
-
* Emits when the user clicks "Add Widget".
|
|
11
|
-
* The consumer should open their own dialog and call `stateService.addWidget(...)`.
|
|
12
|
-
*/
|
|
13
16
|
addWidgetRequested: EventEmitter<void>;
|
|
14
|
-
/**
|
|
15
|
-
* Emits the Widget when the user clicks the edit (pen) icon on a card.
|
|
16
|
-
* The consumer should open their own edit UI and call `stateService.updateWidget(...)`.
|
|
17
|
-
*/
|
|
18
17
|
editWidgetRequested: EventEmitter<Widget>;
|
|
19
|
-
/**
|
|
20
|
-
* Optional: consumer can provide an `<ng-template widgetCell let-widget="widget">` child
|
|
21
|
-
* to render custom content inside every card body.
|
|
22
|
-
*/
|
|
23
18
|
cellTemplate?: TemplateRef<{
|
|
24
19
|
widget: Widget;
|
|
25
20
|
}>;
|
|
21
|
+
tabsContainerRef: ElementRef<HTMLDivElement>;
|
|
26
22
|
resolvedTheme: Required<DashboardTheme>;
|
|
27
23
|
wrapperStyles: Record<string, string>;
|
|
28
24
|
pages: Page[];
|
|
29
25
|
activePageId: string;
|
|
30
26
|
activePage?: Page;
|
|
31
27
|
isPoppedOut: boolean;
|
|
28
|
+
tabsOverflow: boolean;
|
|
32
29
|
private subs;
|
|
33
|
-
|
|
30
|
+
private resizeObserver?;
|
|
31
|
+
constructor(stateService: DashboardStateService, cdr: ChangeDetectorRef, zone: NgZone);
|
|
34
32
|
ngOnChanges(changes: SimpleChanges): void;
|
|
35
33
|
ngOnInit(): void;
|
|
34
|
+
ngAfterViewInit(): void;
|
|
36
35
|
ngOnDestroy(): void;
|
|
37
36
|
onItemChanged(widget: Widget): void;
|
|
38
37
|
onRemoveWidget(widgetId: string): void;
|
|
@@ -41,6 +40,7 @@ export declare class DashboardComponent implements OnInit, OnDestroy, OnChanges
|
|
|
41
40
|
onRemovePage(event: Event, id: string): void;
|
|
42
41
|
onPopOut(event: Event, pageId: string): void;
|
|
43
42
|
serializeLayout(): string;
|
|
43
|
+
private checkOverflow;
|
|
44
44
|
private applyTheme;
|
|
45
45
|
private updateActivePage;
|
|
46
46
|
static ɵfac: i0.ɵɵFactoryDeclaration<DashboardComponent, never>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
2
|
import { BrowserModule } from '@angular/platform-browser';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { DashboardComponent } from './dashboard.component';
|
|
4
|
+
import { DashboardComponent, OverflowActivePipe } from './dashboard.component';
|
|
5
5
|
import { WidgetRendererComponent } from './widget-renderer.component';
|
|
6
6
|
import { CustomGridComponent, GridCellDirective } from './custom-grid.component';
|
|
7
7
|
import { DashboardStateService } from './dashboard-state.service';
|
|
@@ -10,9 +10,11 @@ export class DashboardModule {
|
|
|
10
10
|
}
|
|
11
11
|
DashboardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DashboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
12
|
DashboardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: DashboardModule, declarations: [DashboardComponent,
|
|
13
|
+
OverflowActivePipe,
|
|
13
14
|
WidgetRendererComponent,
|
|
14
15
|
CustomGridComponent,
|
|
15
16
|
GridCellDirective], imports: [CommonModule], exports: [DashboardComponent,
|
|
17
|
+
OverflowActivePipe,
|
|
16
18
|
WidgetRendererComponent,
|
|
17
19
|
CustomGridComponent,
|
|
18
20
|
GridCellDirective] });
|
|
@@ -22,6 +24,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
22
24
|
args: [{
|
|
23
25
|
declarations: [
|
|
24
26
|
DashboardComponent,
|
|
27
|
+
OverflowActivePipe,
|
|
25
28
|
WidgetRendererComponent,
|
|
26
29
|
CustomGridComponent,
|
|
27
30
|
GridCellDirective,
|
|
@@ -32,6 +35,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
32
35
|
providers: [DashboardStateService],
|
|
33
36
|
exports: [
|
|
34
37
|
DashboardComponent,
|
|
38
|
+
OverflowActivePipe,
|
|
35
39
|
WidgetRendererComponent,
|
|
36
40
|
CustomGridComponent,
|
|
37
41
|
GridCellDirective,
|
|
@@ -54,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
54
58
|
bootstrap: [DashboardComponent],
|
|
55
59
|
}]
|
|
56
60
|
}] });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvYXBwLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBc0JsRSxNQUFNLE9BQU8sZUFBZTs7NkdBQWYsZUFBZTs4R0FBZixlQUFlLGlCQWxCeEIsa0JBQWtCO1FBQ2xCLGtCQUFrQjtRQUNsQix1QkFBdUI7UUFDdkIsbUJBQW1CO1FBQ25CLGlCQUFpQixhQUdqQixZQUFZLGFBSVosa0JBQWtCO1FBQ2xCLGtCQUFrQjtRQUNsQix1QkFBdUI7UUFDdkIsbUJBQW1CO1FBQ25CLGlCQUFpQjs4R0FHUixlQUFlLGFBVGYsQ0FBQyxxQkFBcUIsQ0FBQyxZQUZoQyxZQUFZOzRGQVdILGVBQWU7a0JBcEIzQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3dCQUN2QixtQkFBbUI7d0JBQ25CLGlCQUFpQjtxQkFDbEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7b0JBQ0QsU0FBUyxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ2xDLE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3dCQUN2QixtQkFBbUI7d0JBQ25CLGlCQUFpQjtxQkFDbEI7aUJBQ0Y7O0FBR0Q7OztHQUdHO0FBS0gsTUFBTSxPQUFPLFNBQVM7O3VHQUFULFNBQVM7d0dBQVQsU0FBUyxjQUZSLGtCQUFrQixhQURwQixhQUFhLEVBUFosZUFBZTt3R0FVZixTQUFTLFlBSFYsYUFBYSxFQUFFLGVBQWU7NEZBRzdCLFNBQVM7a0JBSnJCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQztvQkFDekMsU0FBUyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJyb3dzZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IERhc2hib2FyZENvbXBvbmVudCwgT3ZlcmZsb3dBY3RpdmVQaXBlIH0gZnJvbSAnLi9kYXNoYm9hcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFdpZGdldFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEN1c3RvbUdyaWRDb21wb25lbnQsIEdyaWRDZWxsRGlyZWN0aXZlIH0gZnJvbSAnLi9jdXN0b20tZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGFzaGJvYXJkU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9kYXNoYm9hcmQtc3RhdGUuc2VydmljZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIERhc2hib2FyZENvbXBvbmVudCxcbiAgICBPdmVyZmxvd0FjdGl2ZVBpcGUsXG4gICAgV2lkZ2V0UmVuZGVyZXJDb21wb25lbnQsXG4gICAgQ3VzdG9tR3JpZENvbXBvbmVudCxcbiAgICBHcmlkQ2VsbERpcmVjdGl2ZSxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbRGFzaGJvYXJkU3RhdGVTZXJ2aWNlXSxcbiAgZXhwb3J0czogW1xuICAgIERhc2hib2FyZENvbXBvbmVudCxcbiAgICBPdmVyZmxvd0FjdGl2ZVBpcGUsXG4gICAgV2lkZ2V0UmVuZGVyZXJDb21wb25lbnQsXG4gICAgQ3VzdG9tR3JpZENvbXBvbmVudCxcbiAgICBHcmlkQ2VsbERpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkTW9kdWxlIHt9XG5cbi8qKlxuICogUm9vdCBtb2R1bGUgZm9yIGxvY2FsIGRlbW8gLyB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuXG4gKiBMaWJyYXJ5IGNvbnN1bWVycyBpbXBvcnQgRGFzaGJvYXJkTW9kdWxlLCBub3QgQXBwTW9kdWxlLlxuICovXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQnJvd3Nlck1vZHVsZSwgRGFzaGJvYXJkTW9kdWxlXSxcbiAgYm9vdHN0cmFwOiBbRGFzaGJvYXJkQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4iXX0=
|