bways-report 0.1.3 → 0.1.5
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/esm2022/lib/core/models/report-grid.model.mjs +1 -1
- package/esm2022/lib/core/services/index.mjs +2 -1
- package/esm2022/lib/core/services/report-storage.service.mjs +63 -0
- package/esm2022/lib/core/tokens/index.mjs +2 -1
- package/esm2022/lib/core/tokens/storage.token.mjs +128 -0
- package/esm2022/lib/data-access/adapters/local-storage-persistence.adapter.mjs +16 -44
- package/esm2022/lib/features/designer/components/component-palette/component-palette.component.mjs +5 -352
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +6 -1011
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +66 -683
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +3 -789
- package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +14 -480
- package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +88 -25
- package/esm2022/lib/features/designer/designer.component.mjs +194 -65
- package/esm2022/lib/features/designer/services/designer-state.service.mjs +9 -2
- package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +2 -2
- package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +11 -3
- package/esm2022/lib/features/runtime/report-execution.service.mjs +1 -9
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +223 -24
- package/esm2022/lib/features/runtime/report-runtime.component.mjs +11 -3
- package/esm2022/lib/features/runtime/rpt-report.component.mjs +11 -3
- package/esm2022/lib/primitives/components/checkbox/rpt-checkbox.component.mjs +3 -3
- package/esm2022/lib/primitives/components/date/rpt-date.component.mjs +3 -3
- package/esm2022/lib/primitives/components/date-range/rpt-date-range.component.mjs +3 -3
- package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +4 -422
- package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +23 -1
- package/esm2022/lib/primitives/components/input/rpt-input.component.mjs +3 -3
- package/esm2022/lib/primitives/components/kpi-card/rpt-kpi-card.component.mjs +3 -3
- package/esm2022/lib/primitives/components/number/rpt-number.component.mjs +3 -3
- package/fesm2022/bways-report.mjs +2094 -5139
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/core/models/report-grid.model.d.ts +23 -1
- package/lib/core/services/index.d.ts +1 -0
- package/lib/core/services/report-storage.service.d.ts +26 -0
- package/lib/core/tokens/index.d.ts +2 -0
- package/lib/core/tokens/storage.token.d.ts +48 -0
- package/lib/data-access/adapters/local-storage-persistence.adapter.d.ts +1 -0
- package/lib/features/designer/components/component-palette/component-palette.component.d.ts +2 -1
- package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +9 -0
- package/lib/features/designer/components/property-editor/property-editor.component.d.ts +4 -1
- package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +5 -1
- package/lib/features/designer/designer.component.d.ts +6 -0
- package/lib/features/runtime/dynamic-renderer.component.d.ts +4 -1
- package/lib/features/runtime/report-grid-bridge.component.d.ts +47 -4
- package/lib/features/runtime/report-runtime.component.d.ts +4 -1
- package/lib/features/runtime/rpt-report.component.d.ts +4 -1
- package/package.json +9 -1
|
@@ -77,6 +77,10 @@ export interface GridColumnDefinition {
|
|
|
77
77
|
order?: number;
|
|
78
78
|
/** Aggregate function to display in a footer row. */
|
|
79
79
|
aggregate?: 'sum' | 'avg' | 'count' | 'min' | 'max' | 'none';
|
|
80
|
+
/** Whether to render a selection checkbox in this column's cells. */
|
|
81
|
+
checkboxSelection?: boolean;
|
|
82
|
+
/** Whether to render a select-all checkbox in this column's header. */
|
|
83
|
+
headerCheckboxSelection?: boolean;
|
|
80
84
|
/** Optional cell-specific click action (overrides grid-level rowClickAction for this column). */
|
|
81
85
|
action?: GridRowClickAction;
|
|
82
86
|
}
|
|
@@ -90,8 +94,14 @@ export interface GridOptionsDefinition {
|
|
|
90
94
|
pagination?: boolean;
|
|
91
95
|
/** Whether row selection is enabled. */
|
|
92
96
|
selectable?: boolean;
|
|
93
|
-
/** Selection mode when selectable is true. */
|
|
97
|
+
/** Selection mode when selectable is true. Defaults to 'multiple'. */
|
|
94
98
|
selectionMode?: 'single' | 'multiple';
|
|
99
|
+
/** Selection mode alias (compatible with UltraGrid and AG Grid rowSelection). */
|
|
100
|
+
rowSelection?: 'single' | 'multiple';
|
|
101
|
+
/** Whether to render selection checkboxes on rows. Defaults to true when selectable is true. */
|
|
102
|
+
checkboxSelection?: boolean;
|
|
103
|
+
/** Whether to render a select-all checkbox in the header. Defaults to true when multi-row checkbox selection is active. */
|
|
104
|
+
headerCheckboxSelection?: boolean;
|
|
95
105
|
/** Whether to show row numbers. */
|
|
96
106
|
showRowNumbers?: boolean;
|
|
97
107
|
/** Whether to allow column reordering. */
|
|
@@ -112,6 +122,18 @@ export interface GridOptionsDefinition {
|
|
|
112
122
|
reportState?: Record<string, unknown>;
|
|
113
123
|
/** View presets / saved custom grid views. */
|
|
114
124
|
presets?: unknown[];
|
|
125
|
+
/**
|
|
126
|
+
* Whether the grid side panel (tool panels for columns, filters, highlights, export, analytics, AI chat) is enabled.
|
|
127
|
+
* Standard BWays-grid / UltraGrid feature. Defaults to `true`.
|
|
128
|
+
*/
|
|
129
|
+
sideBar?: boolean | {
|
|
130
|
+
visible?: boolean;
|
|
131
|
+
panel?: ('columns' | 'filters' | 'highlights' | 'export' | 'analytics' | 'chat')[];
|
|
132
|
+
};
|
|
133
|
+
/** Whether the real-time global search bar is enabled. Defaults to `true`. */
|
|
134
|
+
globalSearch?: boolean;
|
|
135
|
+
/** Whether the bottom status bar is enabled. Defaults to `true`. */
|
|
136
|
+
statusBar?: boolean;
|
|
115
137
|
/** Declarative row-click action for master-detail drill-downs. */
|
|
116
138
|
rowClickAction?: GridRowClickAction;
|
|
117
139
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { DynamicFormBuilder } from './dynamic-form-builder.service';
|
|
2
2
|
export { ReportSessionContextService } from './report-session-context.service';
|
|
3
3
|
export type { SessionParamMatch, DerivedParametersResult, } from './report-session-context.service';
|
|
4
|
+
export { ReportStorageService } from './report-storage.service';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ReportStorage } from '../tokens/storage.token';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Angular injectable service wrapping report storage operations.
|
|
5
|
+
* Provides type-safe JSON serialization/deserialization and environment-agnostic access.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ReportStorageService implements ReportStorage {
|
|
8
|
+
private readonly storage;
|
|
9
|
+
getItem(key: string): string | null;
|
|
10
|
+
setItem(key: string, value: string): void;
|
|
11
|
+
removeItem(key: string): void;
|
|
12
|
+
clear(): void;
|
|
13
|
+
key(index: number): string | null;
|
|
14
|
+
get length(): number;
|
|
15
|
+
/**
|
|
16
|
+
* Safely retrieves and parses a JSON value from storage.
|
|
17
|
+
* Returns fallback if key is missing or parsing fails.
|
|
18
|
+
*/
|
|
19
|
+
getJSON<T>(key: string, fallback: T): T;
|
|
20
|
+
/**
|
|
21
|
+
* Safely serializes and stores a JSON value in storage.
|
|
22
|
+
*/
|
|
23
|
+
setJSON<T>(key: string, value: T): void;
|
|
24
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ReportStorageService, never>;
|
|
25
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ReportStorageService>;
|
|
26
|
+
}
|
|
@@ -2,3 +2,5 @@ export { REPORTING_CONFIG, GRID_COMPONENT, CHART_COMPONENT, } from './reporting-
|
|
|
2
2
|
export type { ReportingConfig, } from './reporting-config.token';
|
|
3
3
|
export { REPORT_SESSION_CONTEXT, REPORT_SESSION_PROVIDER, SessionContextProvider, } from './session-context.token';
|
|
4
4
|
export type { SessionParamPrimitive, SessionContextMap, SessionContextProviderFn, SessionContextSource, } from './session-context.token';
|
|
5
|
+
export { REPORT_STORAGE, BrowserReportStorage, MemoryReportStorage, } from './storage.token';
|
|
6
|
+
export type { ReportStorage, } from './storage.token';
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Storage contract for reading and writing report configurations,
|
|
4
|
+
* presets, and layout states across environments (Browser, SSR, sandboxed iframes).
|
|
5
|
+
*/
|
|
6
|
+
export interface ReportStorage {
|
|
7
|
+
getItem(key: string): string | null;
|
|
8
|
+
setItem(key: string, value: string): void;
|
|
9
|
+
removeItem(key: string): void;
|
|
10
|
+
clear(): void;
|
|
11
|
+
key?(index: number): string | null;
|
|
12
|
+
readonly length?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* In-memory fallback implementation of ReportStorage.
|
|
16
|
+
* Safe for SSR, unit tests, and sandboxed iframes where localStorage access is denied.
|
|
17
|
+
*/
|
|
18
|
+
export declare class MemoryReportStorage implements ReportStorage {
|
|
19
|
+
private readonly store;
|
|
20
|
+
getItem(key: string): string | null;
|
|
21
|
+
setItem(key: string, value: string): void;
|
|
22
|
+
removeItem(key: string): void;
|
|
23
|
+
clear(): void;
|
|
24
|
+
key(index: number): string | null;
|
|
25
|
+
get length(): number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Browser localStorage-backed implementation of ReportStorage
|
|
29
|
+
* with transparent in-memory fallback on DOMException or SSR.
|
|
30
|
+
*/
|
|
31
|
+
export declare class BrowserReportStorage implements ReportStorage {
|
|
32
|
+
private readonly memory;
|
|
33
|
+
private readonly isSupported;
|
|
34
|
+
constructor();
|
|
35
|
+
private checkStorageSupport;
|
|
36
|
+
getItem(key: string): string | null;
|
|
37
|
+
setItem(key: string, value: string): void;
|
|
38
|
+
removeItem(key: string): void;
|
|
39
|
+
clear(): void;
|
|
40
|
+
key(index: number): string | null;
|
|
41
|
+
get length(): number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Injection token for the report storage engine.
|
|
45
|
+
* Defaults to `BrowserReportStorage`, which transparently falls back to
|
|
46
|
+
* `MemoryReportStorage` when browser localStorage is unavailable or restricted.
|
|
47
|
+
*/
|
|
48
|
+
export declare const REPORT_STORAGE: InjectionToken<ReportStorage>;
|
|
@@ -4,6 +4,7 @@ import { ReportDefinition, ReportSummary } from '../../core/models/report-defini
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class LocalStorageReportPersistenceAdapter extends ReportPersistenceAdapter {
|
|
6
6
|
private readonly templateService;
|
|
7
|
+
private readonly storage;
|
|
7
8
|
constructor();
|
|
8
9
|
private seedDefaultBlueprintsIfEmpty;
|
|
9
10
|
private getIndex;
|
|
@@ -3,6 +3,7 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export declare class ComponentPaletteComponent {
|
|
4
4
|
private readonly registry;
|
|
5
5
|
private readonly designerState;
|
|
6
|
+
readonly collapseRequested: import("@angular/core").OutputEmitterRef<void>;
|
|
6
7
|
readonly searchQuery: import("@angular/core").WritableSignal<string>;
|
|
7
8
|
/** Layout view mode: 'grid' (2-column side-by-side grid) or 'list' (compact row list). Defaults to 'grid'. */
|
|
8
9
|
readonly layoutMode: import("@angular/core").WritableSignal<"grid" | "list">;
|
|
@@ -27,7 +28,7 @@ export declare class ComponentPaletteComponent {
|
|
|
27
28
|
onItemDoubleClick(type: string): void;
|
|
28
29
|
onAddClick(event: MouseEvent, type: string): void;
|
|
29
30
|
static ɵfac: i0.ɵɵFactoryDeclaration<ComponentPaletteComponent, never>;
|
|
30
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ComponentPaletteComponent, "rpt-component-palette", never, {}, {}, never, never, true, never>;
|
|
31
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ComponentPaletteComponent, "rpt-component-palette", never, {}, { "collapseRequested": "collapseRequested"; }, never, never, true, never>;
|
|
31
32
|
}
|
|
32
33
|
/** Dictionary of synonyms for component types and UI concepts */
|
|
33
34
|
export declare const COMPONENT_SYNONYMS: Record<string, string[]>;
|
package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts
CHANGED
|
@@ -51,6 +51,15 @@ export declare class PropertyEditorDatasourceComponent implements OnInit {
|
|
|
51
51
|
ngOnInit(): void;
|
|
52
52
|
loadEntities(): void;
|
|
53
53
|
loadEntityDetails(entityName: string, type: DropdownSourceType): void;
|
|
54
|
+
/**
|
|
55
|
+
* Non-destructive linking: binds parameters to session or already-existing canvas fields.
|
|
56
|
+
* Never mutates or adds new components to the canvas.
|
|
57
|
+
*/
|
|
58
|
+
autoLinkExistingParameters(paramsList?: ProcedureParameterMetadata[]): void;
|
|
59
|
+
/**
|
|
60
|
+
* Explicit user-initiated action: links existing fields, and creates missing filter inputs on canvas.
|
|
61
|
+
* Restores selection to the current dropdown component so the user stays in this property editor.
|
|
62
|
+
*/
|
|
54
63
|
autoWireAllParameters(paramsList?: ProcedureParameterMetadata[]): void;
|
|
55
64
|
setSourceType(type: DropdownSourceType): void;
|
|
56
65
|
onEntitySelected(entityName: string): void;
|
|
@@ -17,12 +17,15 @@ export declare class PropertyEditorComponent {
|
|
|
17
17
|
readonly definition: import("@angular/core").WritableSignal<import("bways-report").ReportDefinition>;
|
|
18
18
|
readonly activeTab: import("@angular/core").WritableSignal<DesignerActiveTab>;
|
|
19
19
|
readonly selectedComponent: import("@angular/core").Signal<ReportComponentDefinition | null>;
|
|
20
|
+
readonly collapseRequested: import("@angular/core").OutputEmitterRef<void>;
|
|
20
21
|
readonly maxColumns: import("@angular/core").Signal<number>;
|
|
21
22
|
readonly allComponents: import("@angular/core").Signal<ReportComponentDefinition[]>;
|
|
22
23
|
readonly propertySchema: import("@angular/core").Signal<PropertyDefinition[]>;
|
|
23
24
|
setTab(tab: DesignerActiveTab): void;
|
|
24
25
|
updateCompDataSource(id: string, dataSource: ComponentDataSourceDefinition): void;
|
|
25
26
|
deselect(): void;
|
|
27
|
+
duplicateComponent(id: string): void;
|
|
28
|
+
deleteComponent(id: string): void;
|
|
26
29
|
updateComp(field: string, value: unknown): void;
|
|
27
30
|
updateProp(id: string, key: string, value: unknown): void;
|
|
28
31
|
updateLayout(key: keyof ComponentLayoutDefinition, value: unknown): void;
|
|
@@ -47,5 +50,5 @@ export declare class PropertyEditorComponent {
|
|
|
47
50
|
getLayoutBadge(comp: ReportComponentDefinition): string;
|
|
48
51
|
getValidationBadge(comp: ReportComponentDefinition): string;
|
|
49
52
|
static ɵfac: i0.ɵɵFactoryDeclaration<PropertyEditorComponent, never>;
|
|
50
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PropertyEditorComponent, "rpt-property-editor", never, {}, {}, never, never, true, never>;
|
|
53
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PropertyEditorComponent, "rpt-property-editor", never, {}, { "collapseRequested": "collapseRequested"; }, never, never, true, never>;
|
|
51
54
|
}
|
|
@@ -11,6 +11,10 @@ export declare class DesignerToolbarComponent {
|
|
|
11
11
|
readonly canRedo: import("@angular/core").Signal<boolean>;
|
|
12
12
|
readonly isTemplatesModalOpen: import("@angular/core").WritableSignal<boolean>;
|
|
13
13
|
readonly availableBlueprints: ReportBlueprint[];
|
|
14
|
+
readonly isLeftPanelCollapsed: import("@angular/core").InputSignal<boolean>;
|
|
15
|
+
readonly isRightPanelCollapsed: import("@angular/core").InputSignal<boolean>;
|
|
16
|
+
readonly toggleLeftPanel: import("@angular/core").OutputEmitterRef<void>;
|
|
17
|
+
readonly toggleRightPanel: import("@angular/core").OutputEmitterRef<void>;
|
|
14
18
|
readonly saveRequested: import("@angular/core").OutputEmitterRef<void>;
|
|
15
19
|
setMode(mode: DesignerViewMode): void;
|
|
16
20
|
undo(): void;
|
|
@@ -23,5 +27,5 @@ export declare class DesignerToolbarComponent {
|
|
|
23
27
|
selectGridSettings(): void;
|
|
24
28
|
exportJson(): void;
|
|
25
29
|
static ɵfac: i0.ɵɵFactoryDeclaration<DesignerToolbarComponent, never>;
|
|
26
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DesignerToolbarComponent, "rpt-designer-toolbar", never, {}, { "saveRequested": "saveRequested"; }, never, never, true, never>;
|
|
30
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DesignerToolbarComponent, "rpt-designer-toolbar", never, { "isLeftPanelCollapsed": { "alias": "isLeftPanelCollapsed"; "required": false; "isSignal": true; }; "isRightPanelCollapsed": { "alias": "isRightPanelCollapsed"; "required": false; "isSignal": true; }; }, { "toggleLeftPanel": "toggleLeftPanel"; "toggleRightPanel": "toggleRightPanel"; "saveRequested": "saveRequested"; }, never, never, true, never>;
|
|
27
31
|
}
|
|
@@ -24,9 +24,15 @@ export declare class DesignerComponent implements OnInit {
|
|
|
24
24
|
readonly isRightPanelCollapsed: import("@angular/core").WritableSignal<boolean>;
|
|
25
25
|
toggleLeftPanel(): void;
|
|
26
26
|
toggleRightPanel(): void;
|
|
27
|
+
openLeftPanelOnly(): void;
|
|
28
|
+
openRightPanelOnly(): void;
|
|
29
|
+
closeAllPanels(): void;
|
|
30
|
+
onResize(): void;
|
|
31
|
+
onKeyDown(event: KeyboardEvent): void;
|
|
27
32
|
readonly formattedJson: import("@angular/core").Signal<string>;
|
|
28
33
|
private loadedReportId;
|
|
29
34
|
private loadedReportDef;
|
|
35
|
+
private lastEmittedDef;
|
|
30
36
|
constructor();
|
|
31
37
|
ngOnInit(): void;
|
|
32
38
|
onSave(): void;
|
|
@@ -39,6 +39,8 @@ export declare class DynamicRendererComponent {
|
|
|
39
39
|
}>;
|
|
40
40
|
readonly gridStateChanged: import("@angular/core").OutputEmitterRef<any>;
|
|
41
41
|
readonly columnDefsChanged: import("@angular/core").OutputEmitterRef<any>;
|
|
42
|
+
readonly selectionChange: import("@angular/core").OutputEmitterRef<any[]>;
|
|
43
|
+
readonly selectionChanged: import("@angular/core").OutputEmitterRef<any[]>;
|
|
42
44
|
readonly rowActionTriggered: import("@angular/core").OutputEmitterRef<{
|
|
43
45
|
action: GridRowClickAction;
|
|
44
46
|
row: Record<string, unknown>;
|
|
@@ -62,6 +64,7 @@ export declare class DynamicRendererComponent {
|
|
|
62
64
|
column?: GridColumnDefinition;
|
|
63
65
|
event?: MouseEvent;
|
|
64
66
|
}): void;
|
|
67
|
+
onGridSelectionChange(rows: any[]): void;
|
|
65
68
|
static ɵfac: i0.ɵɵFactoryDeclaration<DynamicRendererComponent, never>;
|
|
66
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DynamicRendererComponent, "rpt-dynamic-renderer", never, { "definition": { "alias": "definition"; "required": true; "isSignal": true; }; "initialValues": { "alias": "initialValues"; "required": false; "isSignal": true; }; "resultData": { "alias": "resultData"; "required": false; "isSignal": true; }; }, { "executeRequested": "executeRequested"; "resetRequested": "resetRequested"; "exportRequested": "exportRequested"; "printRequested": "printRequested"; "customActionTriggered": "customActionTriggered"; "gridStateChanged": "gridStateChanged"; "columnDefsChanged": "columnDefsChanged"; "rowActionTriggered": "rowActionTriggered"; }, never, never, true, never>;
|
|
69
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DynamicRendererComponent, "rpt-dynamic-renderer", never, { "definition": { "alias": "definition"; "required": true; "isSignal": true; }; "initialValues": { "alias": "initialValues"; "required": false; "isSignal": true; }; "resultData": { "alias": "resultData"; "required": false; "isSignal": true; }; }, { "executeRequested": "executeRequested"; "resetRequested": "resetRequested"; "exportRequested": "exportRequested"; "printRequested": "printRequested"; "customActionTriggered": "customActionTriggered"; "gridStateChanged": "gridStateChanged"; "columnDefsChanged": "columnDefsChanged"; "selectionChange": "selectionChange"; "selectionChanged": "selectionChanged"; "rowActionTriggered": "rowActionTriggered"; }, never, never, true, never>;
|
|
67
70
|
}
|
|
@@ -14,15 +14,17 @@ export declare class RptGridOutletDirective implements OnDestroy {
|
|
|
14
14
|
column?: any;
|
|
15
15
|
event?: any;
|
|
16
16
|
}>;
|
|
17
|
+
readonly selectionChange: import("@angular/core").OutputEmitterRef<any[]>;
|
|
17
18
|
constructor();
|
|
18
19
|
private recreateComponent;
|
|
19
20
|
private clear;
|
|
20
21
|
ngOnDestroy(): void;
|
|
21
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<RptGridOutletDirective, never>;
|
|
22
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<RptGridOutletDirective, "[rptGridOutlet]", never, { "componentType": { "alias": "rptGridOutlet"; "required": false; "isSignal": true; }; "inputs": { "alias": "inputs"; "required": false; "isSignal": true; }; }, { "gridStateChange": "gridStateChange"; "columnDefsChange": "columnDefsChange"; "rowClick": "rowClick"; }, never, never, true, never>;
|
|
23
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RptGridOutletDirective, "[rptGridOutlet]", never, { "componentType": { "alias": "rptGridOutlet"; "required": false; "isSignal": true; }; "inputs": { "alias": "inputs"; "required": false; "isSignal": true; }; }, { "gridStateChange": "gridStateChange"; "columnDefsChange": "columnDefsChange"; "rowClick": "rowClick"; "selectionChange": "selectionChange"; }, never, never, true, never>;
|
|
23
24
|
}
|
|
24
25
|
export declare class ReportGridBridgeComponent {
|
|
25
26
|
private readonly injectedGrid;
|
|
27
|
+
private readonly storage;
|
|
26
28
|
constructor();
|
|
27
29
|
readonly gridDefinition: import("@angular/core").InputSignal<ReportGridDefinition>;
|
|
28
30
|
readonly data: import("@angular/core").InputSignal<unknown[]>;
|
|
@@ -33,8 +35,14 @@ export declare class ReportGridBridgeComponent {
|
|
|
33
35
|
column?: GridColumnDefinition;
|
|
34
36
|
event?: MouseEvent;
|
|
35
37
|
}>;
|
|
38
|
+
readonly selectionChange: import("@angular/core").OutputEmitterRef<any[]>;
|
|
36
39
|
readonly customGridComponent: import("@angular/core").Signal<Type<unknown> | null>;
|
|
40
|
+
readonly selectedRows: import("@angular/core").WritableSignal<any[]>;
|
|
37
41
|
readonly hasRowClickAction: import("@angular/core").Signal<boolean>;
|
|
42
|
+
readonly isCheckboxSelectionEnabled: import("@angular/core").Signal<boolean>;
|
|
43
|
+
readonly effectiveRowSelection: import("@angular/core").Signal<"single" | "multiple">;
|
|
44
|
+
readonly isHeaderCheckboxSelectionEnabled: import("@angular/core").Signal<boolean>;
|
|
45
|
+
readonly isSelectionEnabled: import("@angular/core").Signal<boolean>;
|
|
38
46
|
readonly sortColumn: import("@angular/core").WritableSignal<string | null>;
|
|
39
47
|
readonly sortDirection: import("@angular/core").WritableSignal<"desc" | "asc">;
|
|
40
48
|
readonly currentPage: import("@angular/core").WritableSignal<number>;
|
|
@@ -46,6 +54,8 @@ export declare class ReportGridBridgeComponent {
|
|
|
46
54
|
hide: boolean;
|
|
47
55
|
width: number | undefined;
|
|
48
56
|
aggFunc: "sum" | "avg" | "count" | "min" | "max" | undefined;
|
|
57
|
+
checkboxSelection: boolean | undefined;
|
|
58
|
+
headerCheckboxSelection: boolean | undefined;
|
|
49
59
|
field: string;
|
|
50
60
|
label: string;
|
|
51
61
|
dataType?: "string" | "number" | "date" | "boolean" | "currency";
|
|
@@ -62,11 +72,14 @@ export declare class ReportGridBridgeComponent {
|
|
|
62
72
|
readonly gridInstanceKey: import("@angular/core").Signal<string>;
|
|
63
73
|
readonly gridStateKey: import("@angular/core").Signal<string>;
|
|
64
74
|
readonly gridConfig: import("@angular/core").Signal<{
|
|
75
|
+
rowSelection: "single" | "multiple";
|
|
76
|
+
selectionMode: "single" | "multiple";
|
|
77
|
+
checkboxSelection: boolean;
|
|
78
|
+
headerCheckboxSelection: boolean;
|
|
65
79
|
stateKey: string;
|
|
66
80
|
pageSize?: number;
|
|
67
81
|
pagination?: boolean;
|
|
68
82
|
selectable?: boolean;
|
|
69
|
-
selectionMode?: "single" | "multiple";
|
|
70
83
|
showRowNumbers?: boolean;
|
|
71
84
|
allowColumnReorder?: boolean;
|
|
72
85
|
allowExport?: boolean;
|
|
@@ -77,6 +90,12 @@ export declare class ReportGridBridgeComponent {
|
|
|
77
90
|
sortModel?: unknown[];
|
|
78
91
|
reportState?: Record<string, unknown>;
|
|
79
92
|
presets?: unknown[];
|
|
93
|
+
sideBar: boolean | {
|
|
94
|
+
visible?: boolean;
|
|
95
|
+
panel?: ("columns" | "filters" | "highlights" | "export" | "analytics" | "chat")[];
|
|
96
|
+
};
|
|
97
|
+
globalSearch: boolean;
|
|
98
|
+
statusBar: boolean;
|
|
80
99
|
rowClickAction?: import("../../core/models/report-grid.model").GridRowClickAction;
|
|
81
100
|
}>;
|
|
82
101
|
readonly gridReportState: import("@angular/core").Signal<{
|
|
@@ -88,6 +107,8 @@ export declare class ReportGridBridgeComponent {
|
|
|
88
107
|
hide: boolean;
|
|
89
108
|
width: number | undefined;
|
|
90
109
|
aggFunc: "sum" | "avg" | "count" | "min" | "max" | undefined;
|
|
110
|
+
checkboxSelection: boolean | undefined;
|
|
111
|
+
headerCheckboxSelection: boolean | undefined;
|
|
91
112
|
field: string;
|
|
92
113
|
label: string;
|
|
93
114
|
dataType?: "string" | "number" | "date" | "boolean" | "currency";
|
|
@@ -114,6 +135,8 @@ export declare class ReportGridBridgeComponent {
|
|
|
114
135
|
hide: boolean;
|
|
115
136
|
width: number | undefined;
|
|
116
137
|
aggFunc: "sum" | "avg" | "count" | "min" | "max" | undefined;
|
|
138
|
+
checkboxSelection: boolean | undefined;
|
|
139
|
+
headerCheckboxSelection: boolean | undefined;
|
|
117
140
|
field: string;
|
|
118
141
|
label: string;
|
|
119
142
|
dataType?: "string" | "number" | "date" | "boolean" | "currency";
|
|
@@ -134,6 +157,8 @@ export declare class ReportGridBridgeComponent {
|
|
|
134
157
|
hide: boolean;
|
|
135
158
|
width: number | undefined;
|
|
136
159
|
aggFunc: "sum" | "avg" | "count" | "min" | "max" | undefined;
|
|
160
|
+
checkboxSelection: boolean | undefined;
|
|
161
|
+
headerCheckboxSelection: boolean | undefined;
|
|
137
162
|
field: string;
|
|
138
163
|
label: string;
|
|
139
164
|
dataType?: "string" | "number" | "date" | "boolean" | "currency";
|
|
@@ -149,11 +174,14 @@ export declare class ReportGridBridgeComponent {
|
|
|
149
174
|
}[];
|
|
150
175
|
rowData: unknown[];
|
|
151
176
|
config: {
|
|
177
|
+
rowSelection: "single" | "multiple";
|
|
178
|
+
selectionMode: "single" | "multiple";
|
|
179
|
+
checkboxSelection: boolean;
|
|
180
|
+
headerCheckboxSelection: boolean;
|
|
152
181
|
stateKey: string;
|
|
153
182
|
pageSize?: number;
|
|
154
183
|
pagination?: boolean;
|
|
155
184
|
selectable?: boolean;
|
|
156
|
-
selectionMode?: "single" | "multiple";
|
|
157
185
|
showRowNumbers?: boolean;
|
|
158
186
|
allowColumnReorder?: boolean;
|
|
159
187
|
allowExport?: boolean;
|
|
@@ -164,6 +192,12 @@ export declare class ReportGridBridgeComponent {
|
|
|
164
192
|
sortModel?: unknown[];
|
|
165
193
|
reportState?: Record<string, unknown>;
|
|
166
194
|
presets?: unknown[];
|
|
195
|
+
sideBar: boolean | {
|
|
196
|
+
visible?: boolean;
|
|
197
|
+
panel?: ("columns" | "filters" | "highlights" | "export" | "analytics" | "chat")[];
|
|
198
|
+
};
|
|
199
|
+
globalSearch: boolean;
|
|
200
|
+
statusBar: boolean;
|
|
167
201
|
rowClickAction?: import("../../core/models/report-grid.model").GridRowClickAction;
|
|
168
202
|
};
|
|
169
203
|
reportState: {
|
|
@@ -175,6 +209,8 @@ export declare class ReportGridBridgeComponent {
|
|
|
175
209
|
hide: boolean;
|
|
176
210
|
width: number | undefined;
|
|
177
211
|
aggFunc: "sum" | "avg" | "count" | "min" | "max" | undefined;
|
|
212
|
+
checkboxSelection: boolean | undefined;
|
|
213
|
+
headerCheckboxSelection: boolean | undefined;
|
|
178
214
|
field: string;
|
|
179
215
|
label: string;
|
|
180
216
|
dataType?: "string" | "number" | "date" | "boolean" | "currency";
|
|
@@ -195,6 +231,7 @@ export declare class ReportGridBridgeComponent {
|
|
|
195
231
|
};
|
|
196
232
|
pagination: boolean;
|
|
197
233
|
pageSize: number;
|
|
234
|
+
rowSelection: "single" | "multiple";
|
|
198
235
|
}>;
|
|
199
236
|
readonly showRowNumbers: import("@angular/core").Signal<boolean>;
|
|
200
237
|
readonly isPaginationEnabled: import("@angular/core").Signal<boolean>;
|
|
@@ -210,8 +247,14 @@ export declare class ReportGridBridgeComponent {
|
|
|
210
247
|
nextPage(): void;
|
|
211
248
|
formatValue(value: unknown, col: GridColumnDefinition): string;
|
|
212
249
|
computeAggregate(col: GridColumnDefinition): string;
|
|
250
|
+
onSelectionChange(selected: any): void;
|
|
251
|
+
isRowSelected(row: Record<string, unknown>): boolean;
|
|
252
|
+
isAllSelected(): boolean;
|
|
253
|
+
isPartiallySelected(): boolean;
|
|
254
|
+
toggleSelectAll(event: Event): void;
|
|
255
|
+
toggleRowSelection(row: Record<string, unknown>, event: Event): void;
|
|
213
256
|
onRowClick(row: Record<string, unknown>, event: MouseEvent): void;
|
|
214
257
|
onCellClick(row: Record<string, unknown>, col: GridColumnDefinition, event: MouseEvent): void;
|
|
215
258
|
static ɵfac: i0.ɵɵFactoryDeclaration<ReportGridBridgeComponent, never>;
|
|
216
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ReportGridBridgeComponent, "rpt-grid-bridge", never, { "gridDefinition": { "alias": "gridDefinition"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; }, { "gridStateChange": "gridStateChange"; "columnDefsChange": "columnDefsChange"; "rowClick": "rowClick"; }, never, never, true, never>;
|
|
259
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ReportGridBridgeComponent, "rpt-grid-bridge", never, { "gridDefinition": { "alias": "gridDefinition"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; }, { "gridStateChange": "gridStateChange"; "columnDefsChange": "columnDefsChange"; "rowClick": "rowClick"; "selectionChange": "selectionChange"; }, never, never, true, never>;
|
|
217
260
|
}
|
|
@@ -33,6 +33,8 @@ export declare class ReportRuntimeComponent {
|
|
|
33
33
|
}>;
|
|
34
34
|
readonly gridStateChange: import("@angular/core").OutputEmitterRef<any>;
|
|
35
35
|
readonly columnDefsChange: import("@angular/core").OutputEmitterRef<any>;
|
|
36
|
+
readonly selectionChange: import("@angular/core").OutputEmitterRef<any[]>;
|
|
37
|
+
readonly selectionChanged: import("@angular/core").OutputEmitterRef<any[]>;
|
|
36
38
|
readonly rowActionTriggered: import("@angular/core").OutputEmitterRef<{
|
|
37
39
|
action: GridRowClickAction;
|
|
38
40
|
row: Record<string, unknown>;
|
|
@@ -88,6 +90,7 @@ export declare class ReportRuntimeComponent {
|
|
|
88
90
|
component: ReportComponentDefinition;
|
|
89
91
|
parameters: Record<string, unknown>;
|
|
90
92
|
}): void;
|
|
93
|
+
onSelectionChange(rows: any[]): void;
|
|
91
94
|
onRowActionTriggered(event: {
|
|
92
95
|
action: GridRowClickAction;
|
|
93
96
|
row: Record<string, unknown>;
|
|
@@ -104,5 +107,5 @@ export declare class ReportRuntimeComponent {
|
|
|
104
107
|
retryDrawer(): void;
|
|
105
108
|
retry(): void;
|
|
106
109
|
static ɵfac: i0.ɵɵFactoryDeclaration<ReportRuntimeComponent, never>;
|
|
107
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ReportRuntimeComponent, "rpt-report-runtime, rpt-runtime", never, { "reportId": { "alias": "reportId"; "required": false; "isSignal": true; }; "definition": { "alias": "report"; "required": false; "isSignal": true; }; }, { "resetRequested": "resetRequested"; "exportRequested": "exportRequested"; "printRequested": "printRequested"; "customActionTriggered": "customActionTriggered"; "gridStateChange": "gridStateChange"; "columnDefsChange": "columnDefsChange"; "rowActionTriggered": "rowActionTriggered"; "drilldownRequested": "drilldownRequested"; }, never, never, true, never>;
|
|
110
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ReportRuntimeComponent, "rpt-report-runtime, rpt-runtime", never, { "reportId": { "alias": "reportId"; "required": false; "isSignal": true; }; "definition": { "alias": "report"; "required": false; "isSignal": true; }; }, { "resetRequested": "resetRequested"; "exportRequested": "exportRequested"; "printRequested": "printRequested"; "customActionTriggered": "customActionTriggered"; "gridStateChange": "gridStateChange"; "columnDefsChange": "columnDefsChange"; "selectionChange": "selectionChange"; "selectionChanged": "selectionChanged"; "rowActionTriggered": "rowActionTriggered"; "drilldownRequested": "drilldownRequested"; }, never, never, true, never>;
|
|
108
111
|
}
|
|
@@ -25,6 +25,8 @@ export declare class RptReportComponent {
|
|
|
25
25
|
}>;
|
|
26
26
|
readonly dataLoaded: import("@angular/core").OutputEmitterRef<unknown[]>;
|
|
27
27
|
readonly gridStateChange: import("@angular/core").OutputEmitterRef<any>;
|
|
28
|
+
readonly selectionChange: import("@angular/core").OutputEmitterRef<any[]>;
|
|
29
|
+
readonly selectionChanged: import("@angular/core").OutputEmitterRef<any[]>;
|
|
28
30
|
readonly presetSaved: import("@angular/core").OutputEmitterRef<{
|
|
29
31
|
name: string;
|
|
30
32
|
preset: ReportViewPreset;
|
|
@@ -49,6 +51,7 @@ export declare class RptReportComponent {
|
|
|
49
51
|
parameters: Record<string, unknown>;
|
|
50
52
|
}): void;
|
|
51
53
|
onGridStateChanged(state: any): void;
|
|
54
|
+
onSelectionChange(rows: any[]): void;
|
|
52
55
|
onSelectPreset(presetId: string): void;
|
|
53
56
|
confirmSavePreset(): void;
|
|
54
57
|
exportExcel(): void;
|
|
@@ -62,5 +65,5 @@ export declare class RptReportComponent {
|
|
|
62
65
|
onExportCsv(): void;
|
|
63
66
|
onPrintReport(): void;
|
|
64
67
|
static ɵfac: i0.ɵɵFactoryDeclaration<RptReportComponent, never>;
|
|
65
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RptReportComponent, "rpt-report, rpt-view", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "report": { "alias": "report"; "required": false; "isSignal": true; }; "parameters": { "alias": "parameters"; "required": false; "isSignal": true; }; "showExport": { "alias": "showExport"; "required": false; "isSignal": true; }; "enablePresets": { "alias": "enablePresets"; "required": false; "isSignal": true; }; "autoExecute": { "alias": "autoExecute"; "required": false; "isSignal": true; }; }, { "rowClick": "rowClick"; "dataLoaded": "dataLoaded"; "gridStateChange": "gridStateChange"; "presetSaved": "presetSaved"; "presetChange": "presetChange"; "exportRequested": "exportRequested"; "printRequested": "printRequested"; }, never, never, true, never>;
|
|
68
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RptReportComponent, "rpt-report, rpt-view", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "report": { "alias": "report"; "required": false; "isSignal": true; }; "parameters": { "alias": "parameters"; "required": false; "isSignal": true; }; "showExport": { "alias": "showExport"; "required": false; "isSignal": true; }; "enablePresets": { "alias": "enablePresets"; "required": false; "isSignal": true; }; "autoExecute": { "alias": "autoExecute"; "required": false; "isSignal": true; }; }, { "rowClick": "rowClick"; "dataLoaded": "dataLoaded"; "gridStateChange": "gridStateChange"; "selectionChange": "selectionChange"; "selectionChanged": "selectionChanged"; "presetSaved": "presetSaved"; "presetChange": "presetChange"; "exportRequested": "exportRequested"; "printRequested": "printRequested"; }, never, never, true, never>;
|
|
66
69
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bways-report",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Enterprise-grade, metadata-driven reporting engine and visual page builder for Angular 18+ ERP applications.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -15,6 +15,14 @@
|
|
|
15
15
|
],
|
|
16
16
|
"author": "CCPL / BWays Team",
|
|
17
17
|
"license": "SEE LICENSE IN LICENSE",
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "git+https://github.com/ccplProject/BWays-CustomeReport.git"
|
|
21
|
+
},
|
|
22
|
+
"homepage": "https://github.com/ccplProject/BWays-CustomeReport#readme",
|
|
23
|
+
"bugs": {
|
|
24
|
+
"url": "https://github.com/ccplProject/BWays-CustomeReport/issues"
|
|
25
|
+
},
|
|
18
26
|
"peerDependencies": {
|
|
19
27
|
"@angular/common": ">=18.0.0",
|
|
20
28
|
"@angular/core": ">=18.0.0",
|