@frame-kit/ui-ng 0.0.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/COMPONENTS.md +683 -0
- package/DEVELOPMENT_GUIDE.md +1102 -0
- package/LICENSE +21 -0
- package/README.md +69 -0
- package/THEMING.md +130 -0
- package/core/headline/README.md +121 -0
- package/core/icon/README.md +173 -0
- package/core/image/README.md +210 -0
- package/core/link/README.md +297 -0
- package/core/separator/README.md +145 -0
- package/core/text/README.md +240 -0
- package/directives/infinite-scroll/README.md +102 -0
- package/directives/spotlight/README.md +154 -0
- package/directives/tooltip/README.md +147 -0
- package/docs/endpoint-link/README.md +142 -0
- package/docs/method-badge/README.md +154 -0
- package/fesm2022/frame-kit-ui-ng-core-headline.mjs +122 -0
- package/fesm2022/frame-kit-ui-ng-core-headline.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-core-icon.mjs +189 -0
- package/fesm2022/frame-kit-ui-ng-core-icon.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-core-image.mjs +123 -0
- package/fesm2022/frame-kit-ui-ng-core-image.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-core-link.mjs +369 -0
- package/fesm2022/frame-kit-ui-ng-core-link.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-core-separator.mjs +59 -0
- package/fesm2022/frame-kit-ui-ng-core-separator.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-core-text.mjs +204 -0
- package/fesm2022/frame-kit-ui-ng-core-text.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-directives-infinite-scroll.mjs +74 -0
- package/fesm2022/frame-kit-ui-ng-directives-infinite-scroll.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-directives-spotlight.mjs +76 -0
- package/fesm2022/frame-kit-ui-ng-directives-spotlight.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-directives-tooltip.mjs +425 -0
- package/fesm2022/frame-kit-ui-ng-directives-tooltip.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-docs-endpoint-link.mjs +63 -0
- package/fesm2022/frame-kit-ui-ng-docs-endpoint-link.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-docs-method-badge.mjs +43 -0
- package/fesm2022/frame-kit-ui-ng-docs-method-badge.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-forms.mjs +3632 -0
- package/fesm2022/frame-kit-ui-ng-forms.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-layouts-app-shell.mjs +239 -0
- package/fesm2022/frame-kit-ui-ng-layouts-app-shell.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-layouts-content-split.mjs +132 -0
- package/fesm2022/frame-kit-ui-ng-layouts-content-split.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-services-overlay-orchestrator.mjs +133 -0
- package/fesm2022/frame-kit-ui-ng-services-overlay-orchestrator.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-services-spotlight.mjs +60 -0
- package/fesm2022/frame-kit-ui-ng-services-spotlight.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-services-toast.mjs +166 -0
- package/fesm2022/frame-kit-ui-ng-services-toast.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-accordion.mjs +214 -0
- package/fesm2022/frame-kit-ui-ng-ui-accordion.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-alert.mjs +82 -0
- package/fesm2022/frame-kit-ui-ng-ui-alert.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-avatar-stack.mjs +76 -0
- package/fesm2022/frame-kit-ui-ng-ui-avatar-stack.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-avatar.mjs +81 -0
- package/fesm2022/frame-kit-ui-ng-ui-avatar.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-badge.mjs +81 -0
- package/fesm2022/frame-kit-ui-ng-ui-badge.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-breadcrumb.mjs +68 -0
- package/fesm2022/frame-kit-ui-ng-ui-breadcrumb.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-button.mjs +108 -0
- package/fesm2022/frame-kit-ui-ng-ui-button.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-callout.mjs +58 -0
- package/fesm2022/frame-kit-ui-ng-ui-callout.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-card.mjs +70 -0
- package/fesm2022/frame-kit-ui-ng-ui-card.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-copyable-field.mjs +113 -0
- package/fesm2022/frame-kit-ui-ng-ui-copyable-field.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-data-table.mjs +1288 -0
- package/fesm2022/frame-kit-ui-ng-ui-data-table.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-dialog.mjs +456 -0
- package/fesm2022/frame-kit-ui-ng-ui-dialog.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-drawer.mjs +398 -0
- package/fesm2022/frame-kit-ui-ng-ui-drawer.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-dropdown-menu.mjs +398 -0
- package/fesm2022/frame-kit-ui-ng-ui-dropdown-menu.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-editable-field.mjs +125 -0
- package/fesm2022/frame-kit-ui-ng-ui-editable-field.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-icon-badge.mjs +113 -0
- package/fesm2022/frame-kit-ui-ng-ui-icon-badge.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-icon-list.mjs +111 -0
- package/fesm2022/frame-kit-ui-ng-ui-icon-list.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-inline-edit.mjs +103 -0
- package/fesm2022/frame-kit-ui-ng-ui-inline-edit.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-list-editor.mjs +135 -0
- package/fesm2022/frame-kit-ui-ng-ui-list-editor.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-loader.mjs +81 -0
- package/fesm2022/frame-kit-ui-ng-ui-loader.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-menu-item.mjs +79 -0
- package/fesm2022/frame-kit-ui-ng-ui-menu-item.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-brand.mjs +40 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-brand.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-group.mjs +110 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-group.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-separator.mjs +91 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-separator.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-node-tree-breadcrumb.mjs +86 -0
- package/fesm2022/frame-kit-ui-ng-ui-node-tree-breadcrumb.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-node-tree.mjs +443 -0
- package/fesm2022/frame-kit-ui-ng-ui-node-tree.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-note.mjs +56 -0
- package/fesm2022/frame-kit-ui-ng-ui-note.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-numbered-list.mjs +105 -0
- package/fesm2022/frame-kit-ui-ng-ui-numbered-list.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-pagination.mjs +110 -0
- package/fesm2022/frame-kit-ui-ng-ui-pagination.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-progress-bar.mjs +129 -0
- package/fesm2022/frame-kit-ui-ng-ui-progress-bar.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-sidenav-link.mjs +42 -0
- package/fesm2022/frame-kit-ui-ng-ui-sidenav-link.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-tabs.mjs +894 -0
- package/fesm2022/frame-kit-ui-ng-ui-tabs.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-timeline.mjs +81 -0
- package/fesm2022/frame-kit-ui-ng-ui-timeline.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-toast.mjs +179 -0
- package/fesm2022/frame-kit-ui-ng-ui-toast.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-user-menu.mjs +143 -0
- package/fesm2022/frame-kit-ui-ng-ui-user-menu.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-wizard-dialog.mjs +191 -0
- package/fesm2022/frame-kit-ui-ng-ui-wizard-dialog.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng.mjs +58 -0
- package/fesm2022/frame-kit-ui-ng.mjs.map +1 -0
- package/layouts/app-shell/README.md +357 -0
- package/layouts/content-split/README.md +180 -0
- package/package.json +253 -0
- package/services/overlay-orchestrator/README.md +184 -0
- package/services/spotlight/README.md +61 -0
- package/services/toast/README.md +118 -0
- package/types/frame-kit-ui-ng-core-headline.d.ts +38 -0
- package/types/frame-kit-ui-ng-core-icon.d.ts +74 -0
- package/types/frame-kit-ui-ng-core-image.d.ts +93 -0
- package/types/frame-kit-ui-ng-core-link.d.ts +251 -0
- package/types/frame-kit-ui-ng-core-separator.d.ts +28 -0
- package/types/frame-kit-ui-ng-core-text.d.ts +186 -0
- package/types/frame-kit-ui-ng-directives-infinite-scroll.d.ts +42 -0
- package/types/frame-kit-ui-ng-directives-spotlight.d.ts +51 -0
- package/types/frame-kit-ui-ng-directives-tooltip.d.ts +70 -0
- package/types/frame-kit-ui-ng-docs-endpoint-link.d.ts +43 -0
- package/types/frame-kit-ui-ng-docs-method-badge.d.ts +30 -0
- package/types/frame-kit-ui-ng-forms.d.ts +1674 -0
- package/types/frame-kit-ui-ng-layouts-app-shell.d.ts +75 -0
- package/types/frame-kit-ui-ng-layouts-content-split.d.ts +43 -0
- package/types/frame-kit-ui-ng-services-overlay-orchestrator.d.ts +96 -0
- package/types/frame-kit-ui-ng-services-spotlight.d.ts +32 -0
- package/types/frame-kit-ui-ng-services-toast.d.ts +100 -0
- package/types/frame-kit-ui-ng-ui-accordion.d.ts +86 -0
- package/types/frame-kit-ui-ng-ui-alert.d.ts +34 -0
- package/types/frame-kit-ui-ng-ui-avatar-stack.d.ts +38 -0
- package/types/frame-kit-ui-ng-ui-avatar.d.ts +36 -0
- package/types/frame-kit-ui-ng-ui-badge.d.ts +33 -0
- package/types/frame-kit-ui-ng-ui-breadcrumb.d.ts +45 -0
- package/types/frame-kit-ui-ng-ui-button.d.ts +48 -0
- package/types/frame-kit-ui-ng-ui-callout.d.ts +26 -0
- package/types/frame-kit-ui-ng-ui-card.d.ts +30 -0
- package/types/frame-kit-ui-ng-ui-copyable-field.d.ts +62 -0
- package/types/frame-kit-ui-ng-ui-data-table.d.ts +482 -0
- package/types/frame-kit-ui-ng-ui-dialog.d.ts +166 -0
- package/types/frame-kit-ui-ng-ui-drawer.d.ts +130 -0
- package/types/frame-kit-ui-ng-ui-dropdown-menu.d.ts +77 -0
- package/types/frame-kit-ui-ng-ui-editable-field.d.ts +65 -0
- package/types/frame-kit-ui-ng-ui-icon-badge.d.ts +45 -0
- package/types/frame-kit-ui-ng-ui-icon-list.d.ts +67 -0
- package/types/frame-kit-ui-ng-ui-inline-edit.d.ts +44 -0
- package/types/frame-kit-ui-ng-ui-list-editor.d.ts +56 -0
- package/types/frame-kit-ui-ng-ui-loader.d.ts +32 -0
- package/types/frame-kit-ui-ng-ui-menu-item.d.ts +27 -0
- package/types/frame-kit-ui-ng-ui-nav-brand.d.ts +25 -0
- package/types/frame-kit-ui-ng-ui-nav-group.d.ts +60 -0
- package/types/frame-kit-ui-ng-ui-nav-separator.d.ts +33 -0
- package/types/frame-kit-ui-ng-ui-node-tree-breadcrumb.d.ts +35 -0
- package/types/frame-kit-ui-ng-ui-node-tree.d.ts +135 -0
- package/types/frame-kit-ui-ng-ui-note.d.ts +22 -0
- package/types/frame-kit-ui-ng-ui-numbered-list.d.ts +52 -0
- package/types/frame-kit-ui-ng-ui-pagination.d.ts +49 -0
- package/types/frame-kit-ui-ng-ui-progress-bar.d.ts +50 -0
- package/types/frame-kit-ui-ng-ui-sidenav-link.d.ts +24 -0
- package/types/frame-kit-ui-ng-ui-tabs.d.ts +266 -0
- package/types/frame-kit-ui-ng-ui-timeline.d.ts +42 -0
- package/types/frame-kit-ui-ng-ui-toast.d.ts +56 -0
- package/types/frame-kit-ui-ng-ui-user-menu.d.ts +87 -0
- package/types/frame-kit-ui-ng-ui-wizard-dialog.d.ts +116 -0
- package/types/frame-kit-ui-ng.d.ts +53 -0
- package/ui/accordion/README.md +261 -0
- package/ui/alert/README.md +211 -0
- package/ui/avatar/README.md +167 -0
- package/ui/avatar-stack/README.md +164 -0
- package/ui/badge/README.md +162 -0
- package/ui/breadcrumb/README.md +240 -0
- package/ui/button/README.md +184 -0
- package/ui/callout/README.md +159 -0
- package/ui/card/README.md +174 -0
- package/ui/copyable-field/README.md +235 -0
- package/ui/data-table/README.md +408 -0
- package/ui/dialog/README.md +222 -0
- package/ui/drawer/README.md +274 -0
- package/ui/dropdown-menu/README.md +336 -0
- package/ui/editable-field/README.md +171 -0
- package/ui/icon-badge/README.md +131 -0
- package/ui/icon-list/README.md +205 -0
- package/ui/inline-edit/README.md +135 -0
- package/ui/list-editor/README.md +162 -0
- package/ui/loader/README.md +160 -0
- package/ui/menu-item/README.md +204 -0
- package/ui/nav-brand/README.md +111 -0
- package/ui/nav-group/README.md +145 -0
- package/ui/nav-separator/README.md +44 -0
- package/ui/node-tree/README.md +278 -0
- package/ui/node-tree-breadcrumb/README.md +164 -0
- package/ui/note/README.md +146 -0
- package/ui/numbered-list/README.md +187 -0
- package/ui/pagination/README.md +174 -0
- package/ui/progress-bar/README.md +223 -0
- package/ui/sidenav-link/README.md +214 -0
- package/ui/tabs/README.md +204 -0
- package/ui/timeline/README.md +285 -0
- package/ui/toast/README.md +243 -0
- package/ui/user-menu/README.md +260 -0
- package/ui/wizard-dialog/README.md +283 -0
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { TemplateRef, OnInit, OnDestroy, computed, Signal, ElementRef } from '@angular/core';
|
|
3
|
+
import * as _frame_kit_ui_ng_ui_data_table from '@frame-kit/ui-ng/ui/data-table';
|
|
4
|
+
|
|
5
|
+
interface ColumnDef<T = unknown> {
|
|
6
|
+
id: string;
|
|
7
|
+
header: string;
|
|
8
|
+
accessor: keyof T | ((row: T) => unknown);
|
|
9
|
+
sortAccessor?: (row: T) => unknown;
|
|
10
|
+
width?: string;
|
|
11
|
+
minWidth?: string;
|
|
12
|
+
maxWidth?: string;
|
|
13
|
+
flex?: number;
|
|
14
|
+
sortable?: boolean;
|
|
15
|
+
align?: 'start' | 'center' | 'end';
|
|
16
|
+
truncate?: boolean;
|
|
17
|
+
visible?: boolean;
|
|
18
|
+
className?: string;
|
|
19
|
+
headerClassName?: string;
|
|
20
|
+
cellRenderer?: TemplateRef<{
|
|
21
|
+
$implicit: unknown;
|
|
22
|
+
row: T;
|
|
23
|
+
}>;
|
|
24
|
+
headerRenderer?: TemplateRef<{
|
|
25
|
+
$implicit: ColumnDef<T>;
|
|
26
|
+
}>;
|
|
27
|
+
priority?: number;
|
|
28
|
+
hideBelow?: 'sm' | 'md' | 'lg';
|
|
29
|
+
mobileLabel?: string;
|
|
30
|
+
resizable?: boolean;
|
|
31
|
+
pinnable?: boolean;
|
|
32
|
+
pinned?: 'start' | 'end' | null;
|
|
33
|
+
}
|
|
34
|
+
interface TableConfig<T = unknown> {
|
|
35
|
+
responsiveMode: 'auto' | 'scroll' | 'stack' | 'priority';
|
|
36
|
+
forceScroll: boolean;
|
|
37
|
+
stickyHeader: boolean;
|
|
38
|
+
showHeader: boolean;
|
|
39
|
+
rowExpansion: boolean;
|
|
40
|
+
emptyMessage: string;
|
|
41
|
+
trackBy: (index: number, row: T) => unknown;
|
|
42
|
+
rowStyleFn: ((row: T, index: number) => Record<string, string> | null) | null;
|
|
43
|
+
virtualization: boolean | 'auto';
|
|
44
|
+
virtualizationThreshold: number;
|
|
45
|
+
rowHeight: number;
|
|
46
|
+
overscan: number;
|
|
47
|
+
breakpoints: {
|
|
48
|
+
sm: string;
|
|
49
|
+
md: string;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
declare const DEFAULT_TABLE_CONFIG: TableConfig;
|
|
53
|
+
type SelectionDisabled<T = unknown> = boolean | ((row: T) => boolean);
|
|
54
|
+
type SelectionColumnPosition = 'start' | 'end';
|
|
55
|
+
type HeaderSelectionState = 'checked' | 'unchecked' | 'indeterminate';
|
|
56
|
+
type ExpansionColumnPosition = 'start' | 'end';
|
|
57
|
+
type SortDirection = 'asc' | 'desc' | null;
|
|
58
|
+
interface SortState {
|
|
59
|
+
columnId: string;
|
|
60
|
+
direction: SortDirection;
|
|
61
|
+
}
|
|
62
|
+
interface FilterState {
|
|
63
|
+
query: string;
|
|
64
|
+
columnFilters: Record<string, unknown>;
|
|
65
|
+
}
|
|
66
|
+
interface PageState {
|
|
67
|
+
page: number;
|
|
68
|
+
pageSize: number;
|
|
69
|
+
totalRows: number;
|
|
70
|
+
}
|
|
71
|
+
interface ColumnResizeEvent {
|
|
72
|
+
columnId: string;
|
|
73
|
+
width: number;
|
|
74
|
+
}
|
|
75
|
+
interface TableRowContext<T = unknown> {
|
|
76
|
+
row: T;
|
|
77
|
+
index: number;
|
|
78
|
+
selected: boolean;
|
|
79
|
+
expanded: boolean;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
declare class ColumnResizeDirective implements OnInit, OnDestroy {
|
|
83
|
+
readonly columnId: _angular_core.InputSignal<string>;
|
|
84
|
+
readonly enabled: _angular_core.InputSignal<boolean>;
|
|
85
|
+
readonly minWidth: _angular_core.InputSignal<number>;
|
|
86
|
+
readonly maxWidth: _angular_core.InputSignal<number | null>;
|
|
87
|
+
readonly columnResize: _angular_core.OutputEmitterRef<ColumnResizeEvent>;
|
|
88
|
+
private readonly el;
|
|
89
|
+
private readonly renderer;
|
|
90
|
+
private readonly ngZone;
|
|
91
|
+
private handle;
|
|
92
|
+
private startX;
|
|
93
|
+
private startWidth;
|
|
94
|
+
private dragging;
|
|
95
|
+
private moveListener;
|
|
96
|
+
private upListener;
|
|
97
|
+
ngOnInit(): void;
|
|
98
|
+
ngOnDestroy(): void;
|
|
99
|
+
private readonly onMouseDown;
|
|
100
|
+
private readonly onTouchStart;
|
|
101
|
+
private startDrag;
|
|
102
|
+
private onDrag;
|
|
103
|
+
private endDrag;
|
|
104
|
+
private cleanupListeners;
|
|
105
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColumnResizeDirective, never>;
|
|
106
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ColumnResizeDirective, "[fkColumnResize]", never, { "columnId": { "alias": "fkColumnResize"; "required": true; "isSignal": true; }; "enabled": { "alias": "enabled"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; }, { "columnResize": "columnResize"; }, never, never, true, never>;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
type Breakpoint = 'sm' | 'md' | 'lg';
|
|
110
|
+
type ActiveMode = 'table' | 'stack';
|
|
111
|
+
declare class ResponsiveStrategyService<T = unknown> {
|
|
112
|
+
private readonly breakpointObserver;
|
|
113
|
+
private readonly destroyRef;
|
|
114
|
+
readonly columns: _angular_core.WritableSignal<ColumnDef<T>[]>;
|
|
115
|
+
readonly config: _angular_core.WritableSignal<TableConfig<T> | null>;
|
|
116
|
+
readonly currentBreakpoint: _angular_core.WritableSignal<Breakpoint>;
|
|
117
|
+
readonly activeMode: ReturnType<typeof computed<ActiveMode>>;
|
|
118
|
+
readonly responsiveColumns: _angular_core.Signal<ColumnDef<T>[]>;
|
|
119
|
+
readonly hiddenColumns: _angular_core.Signal<ColumnDef<T>[]>;
|
|
120
|
+
private initialized;
|
|
121
|
+
init(breakpoints: {
|
|
122
|
+
sm: string;
|
|
123
|
+
md: string;
|
|
124
|
+
}): void;
|
|
125
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ResponsiveStrategyService<any>, never>;
|
|
126
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ResponsiveStrategyService<any>>;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
declare class TableEngineService<T = unknown> {
|
|
130
|
+
readonly rows: _angular_core.WritableSignal<T[]>;
|
|
131
|
+
readonly columns: _angular_core.WritableSignal<ColumnDef<T>[]>;
|
|
132
|
+
private readonly internalSortState;
|
|
133
|
+
private readonly internalFilterState;
|
|
134
|
+
private readonly internalPageState;
|
|
135
|
+
readonly controlledSortState: _angular_core.WritableSignal<SortState | null | undefined>;
|
|
136
|
+
readonly controlledFilterState: _angular_core.WritableSignal<FilterState | null | undefined>;
|
|
137
|
+
readonly controlledPageState: _angular_core.WritableSignal<PageState | null | undefined>;
|
|
138
|
+
readonly sortState: _angular_core.Signal<SortState | null>;
|
|
139
|
+
readonly filterState: _angular_core.Signal<FilterState>;
|
|
140
|
+
readonly pageState: _angular_core.Signal<PageState | null>;
|
|
141
|
+
readonly selectedKeys: _angular_core.WritableSignal<Set<unknown>>;
|
|
142
|
+
readonly expandedKeys: _angular_core.WritableSignal<Set<unknown>>;
|
|
143
|
+
readonly sortedRows: _angular_core.Signal<T[]>;
|
|
144
|
+
readonly filteredRows: _angular_core.Signal<T[]>;
|
|
145
|
+
readonly processedRows: _angular_core.Signal<T[]>;
|
|
146
|
+
readonly totalFilteredRows: _angular_core.Signal<number>;
|
|
147
|
+
toggleSort(columnId: string): SortState;
|
|
148
|
+
setFilter(query: string): FilterState;
|
|
149
|
+
setPage(page: number, pageSize?: number): PageState;
|
|
150
|
+
/**
|
|
151
|
+
* Replace the engine's internal selection state. Used by the host
|
|
152
|
+
* data-table when running in uncontrolled mode (controlled mode goes
|
|
153
|
+
* through the parent and never touches the engine here).
|
|
154
|
+
*/
|
|
155
|
+
setSelectedKeys(next: Set<unknown>): void;
|
|
156
|
+
/**
|
|
157
|
+
* Replace the engine's internal expansion state. Used by the host
|
|
158
|
+
* data-table when running in uncontrolled mode.
|
|
159
|
+
*/
|
|
160
|
+
setExpandedKeys(next: Set<unknown>): void;
|
|
161
|
+
/**
|
|
162
|
+
* Toggle a single key in a Set. Derives from `current` and returns a
|
|
163
|
+
* brand-new Set — never mutates the input.
|
|
164
|
+
*/
|
|
165
|
+
toggleSelection(key: unknown, current?: ReadonlySet<unknown>): Set<unknown>;
|
|
166
|
+
/**
|
|
167
|
+
* Page-local select-all. Toggles every key in `visibleKeys`:
|
|
168
|
+
* - if all visible keys are already selected → deselect them
|
|
169
|
+
* - otherwise → select them all (existing selections outside the visible
|
|
170
|
+
* range stay intact)
|
|
171
|
+
*
|
|
172
|
+
* `disabledKeys` is excluded from both the toggle target and the
|
|
173
|
+
* "all-selected" check, so a row marked `selectionDisabled` never
|
|
174
|
+
* blocks the header checkbox from going fully checked.
|
|
175
|
+
*/
|
|
176
|
+
toggleVisibleRows(visibleKeys: Iterable<unknown>, disabledKeys?: ReadonlySet<unknown>, current?: ReadonlySet<unknown>): Set<unknown>;
|
|
177
|
+
clearSelection(): Set<unknown>;
|
|
178
|
+
isSelected(key: unknown): boolean;
|
|
179
|
+
private resolveAccessor;
|
|
180
|
+
private compare;
|
|
181
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableEngineService<any>, never>;
|
|
182
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<TableEngineService<any>>;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
declare class VirtualizationEngineService {
|
|
186
|
+
readonly rowHeight: _angular_core.WritableSignal<number>;
|
|
187
|
+
readonly overscan: _angular_core.WritableSignal<number>;
|
|
188
|
+
readonly totalRows: _angular_core.WritableSignal<number>;
|
|
189
|
+
readonly viewportHeight: _angular_core.WritableSignal<number>;
|
|
190
|
+
readonly scrollTop: _angular_core.WritableSignal<number>;
|
|
191
|
+
readonly visibleRange: Signal<{
|
|
192
|
+
start: number;
|
|
193
|
+
end: number;
|
|
194
|
+
}>;
|
|
195
|
+
readonly totalHeight: Signal<number>;
|
|
196
|
+
readonly offsetY: Signal<number>;
|
|
197
|
+
readonly visibleCount: Signal<number>;
|
|
198
|
+
onScroll(scrollTop: number): void;
|
|
199
|
+
onViewportResize(height: number): void;
|
|
200
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<VirtualizationEngineService, never>;
|
|
201
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<VirtualizationEngineService>;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
declare class DataTableComponent<T = unknown> {
|
|
205
|
+
readonly className: _angular_core.InputSignal<string>;
|
|
206
|
+
readonly id: _angular_core.InputSignal<string | null>;
|
|
207
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
208
|
+
/** Column definitions that describe the table schema, headers, and cell rendering. */
|
|
209
|
+
readonly columns: _angular_core.InputSignal<ColumnDef<T>[]>;
|
|
210
|
+
/** Array of row data objects rendered by the table. */
|
|
211
|
+
readonly rows: _angular_core.InputSignal<T[]>;
|
|
212
|
+
/** Partial table configuration merged with the defaults. */
|
|
213
|
+
readonly config: _angular_core.InputSignal<Partial<TableConfig<T>>>;
|
|
214
|
+
/** When true, shows the loading overlay and suppresses the empty state. */
|
|
215
|
+
readonly loading: _angular_core.InputSignal<boolean>;
|
|
216
|
+
/** Controlled sort state; pass null to let the table manage sorting internally. */
|
|
217
|
+
readonly sortState: _angular_core.InputSignal<SortState | null>;
|
|
218
|
+
/** Controlled filter state; pass null to let the table manage filtering internally. */
|
|
219
|
+
readonly filterState: _angular_core.InputSignal<FilterState | null>;
|
|
220
|
+
/** Controlled page state; pass null to let the table manage pagination internally. */
|
|
221
|
+
readonly pageState: _angular_core.InputSignal<PageState | null>;
|
|
222
|
+
/** Opt-in to row selection; requires `getRowId` for controlled mode across pagination. */
|
|
223
|
+
readonly rowSelection: _angular_core.InputSignal<boolean>;
|
|
224
|
+
/** Controlled set of selected row keys; null lets the table manage selection internally. */
|
|
225
|
+
readonly selectedKeys: _angular_core.InputSignal<Set<unknown> | null>;
|
|
226
|
+
/** Function that returns a stable unique key for each row, required when `rowSelection` is true. */
|
|
227
|
+
readonly getRowId: _angular_core.InputSignal<((row: T) => unknown) | null>;
|
|
228
|
+
/** Predicate (or static boolean) that disables selection for matching rows. */
|
|
229
|
+
readonly selectionDisabled: _angular_core.InputSignal<SelectionDisabled<T>>;
|
|
230
|
+
/** Whether the checkbox column appears at the start or end of the table. */
|
|
231
|
+
readonly selectionColumnPosition: _angular_core.InputSignal<SelectionColumnPosition>;
|
|
232
|
+
/** Accessible label for each row's selection checkbox. */
|
|
233
|
+
readonly selectionLabel: _angular_core.InputSignal<string>;
|
|
234
|
+
/** Template rendered as the expansion detail row; presence enables the feature. */
|
|
235
|
+
readonly rowDetailTemplate: _angular_core.InputSignal<TemplateRef<{
|
|
236
|
+
$implicit: T;
|
|
237
|
+
row: T;
|
|
238
|
+
index: number;
|
|
239
|
+
}> | null>;
|
|
240
|
+
/** Whether the chevron column appears at the start or end of the table. */
|
|
241
|
+
readonly expansionColumnPosition: _angular_core.InputSignal<ExpansionColumnPosition>;
|
|
242
|
+
/** Controlled set of expanded row keys; null lets the engine manage state internally. */
|
|
243
|
+
readonly expandedKeys: _angular_core.InputSignal<Set<unknown> | null>;
|
|
244
|
+
/** Predicate that disables expansion for matching rows; default: every row is expandable. */
|
|
245
|
+
readonly expandableRow: _angular_core.InputSignal<((row: T) => boolean) | null>;
|
|
246
|
+
/** Accessible label for each row's expansion chevron. */
|
|
247
|
+
readonly expansionLabel: _angular_core.InputSignal<string>;
|
|
248
|
+
/** Fires when the user clicks a sortable column header, emitting the new sort state. */
|
|
249
|
+
readonly sortChange: _angular_core.OutputEmitterRef<SortState>;
|
|
250
|
+
/** Fires when a filter changes, emitting the updated filter state. */
|
|
251
|
+
readonly filterChange: _angular_core.OutputEmitterRef<FilterState>;
|
|
252
|
+
/** Fires when the user navigates to a different page or changes page size. */
|
|
253
|
+
readonly pageChange: _angular_core.OutputEmitterRef<PageState>;
|
|
254
|
+
/** Fires when the user clicks a table row, emitting the row context. */
|
|
255
|
+
readonly rowClick: _angular_core.OutputEmitterRef<TableRowContext<T>>;
|
|
256
|
+
/** Fires when the selection set changes, emitting the full new set of selected keys. */
|
|
257
|
+
readonly selectionChange: _angular_core.OutputEmitterRef<Set<unknown>>;
|
|
258
|
+
/** Fires when the expansion set changes, emitting the full new set of expanded keys. */
|
|
259
|
+
readonly expansionChange: _angular_core.OutputEmitterRef<Set<unknown>>;
|
|
260
|
+
/** Fires when the user finishes resizing a column, emitting the column id and new width. */
|
|
261
|
+
readonly columnResize: _angular_core.OutputEmitterRef<ColumnResizeEvent>;
|
|
262
|
+
protected readonly engine: TableEngineService<T>;
|
|
263
|
+
protected readonly virtEngine: VirtualizationEngineService;
|
|
264
|
+
protected readonly responsive: ResponsiveStrategyService<T>;
|
|
265
|
+
readonly virtualViewport: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
|
|
266
|
+
readonly mergedConfig: _angular_core.Signal<TableConfig<T>>;
|
|
267
|
+
readonly visibleColumns: _angular_core.Signal<ColumnDef<T>[]>;
|
|
268
|
+
readonly activeMode: _angular_core.Signal<_frame_kit_ui_ng_ui_data_table.ActiveMode>;
|
|
269
|
+
readonly useVirtualization: _angular_core.Signal<boolean>;
|
|
270
|
+
readonly virtualRows: _angular_core.Signal<T[]>;
|
|
271
|
+
readonly virtualStartIndex: _angular_core.Signal<number>;
|
|
272
|
+
readonly isEmpty: _angular_core.Signal<boolean>;
|
|
273
|
+
readonly classes: _angular_core.Signal<string>;
|
|
274
|
+
get hostClass(): string;
|
|
275
|
+
get hostId(): string | null;
|
|
276
|
+
private readonly ngZone;
|
|
277
|
+
/**
|
|
278
|
+
* Optional group coordinator picked up via DI when this table is
|
|
279
|
+
* wrapped in `<fk-data-table-group>`. Presence flips expansion to
|
|
280
|
+
* single-open mode; absence keeps multi-expand behavior (the
|
|
281
|
+
* default).
|
|
282
|
+
*/
|
|
283
|
+
private readonly groupCoordinator;
|
|
284
|
+
constructor();
|
|
285
|
+
/** Resolves the display value for a cell given its column definition and row data. */
|
|
286
|
+
getCellValue(column: ColumnDef<T>, row: T): unknown;
|
|
287
|
+
/** Returns the trackBy function from the merged config for use in `*ngFor`. */
|
|
288
|
+
getTrackBy(): (index: number, row: T) => unknown;
|
|
289
|
+
/**
|
|
290
|
+
* Source of truth for which keys are currently selected. Reads the
|
|
291
|
+
* controlled `selectedKeys` input when the parent supplied one;
|
|
292
|
+
* otherwise falls back to the engine's internal state (uncontrolled
|
|
293
|
+
* mode). Computed so changes flow through Angular's signal graph
|
|
294
|
+
* without effect-write timing surprises.
|
|
295
|
+
*/
|
|
296
|
+
private readonly effectiveSelectedKeys;
|
|
297
|
+
/**
|
|
298
|
+
* Public alias of `effectiveSelectedKeys` for the stack (mobile) child
|
|
299
|
+
* binding. The private field stays private to discourage callers from
|
|
300
|
+
* reaching past the API.
|
|
301
|
+
*/
|
|
302
|
+
readonly effectiveSelectedKeysForTemplate: _angular_core.Signal<Set<unknown>>;
|
|
303
|
+
/**
|
|
304
|
+
* Resolve a row's selection key. Uses the explicit `getRowId` input
|
|
305
|
+
* when provided; otherwise falls back to the row reference itself
|
|
306
|
+
* (which only works if rows are object-stable across renders — fine
|
|
307
|
+
* for uncontrolled-mode demos, broken across server-side pagination).
|
|
308
|
+
*/
|
|
309
|
+
/** Resolves a stable selection key for the given row using `getRowId` or falling back to the row reference. */
|
|
310
|
+
getSelectionKey(row: T): unknown;
|
|
311
|
+
/** Returns true if the given row is currently in the selected keys set. */
|
|
312
|
+
isRowSelected(row: T): boolean;
|
|
313
|
+
/** Returns true if selection is disabled for the given row per the `selectionDisabled` input. */
|
|
314
|
+
isRowSelectionDisabled(row: T): boolean;
|
|
315
|
+
/**
|
|
316
|
+
* Selection state of the header checkbox, derived from visible rows ∩
|
|
317
|
+
* `effectiveSelectedKeys`. Disabled rows are excluded — they can't
|
|
318
|
+
* contribute to the all-selected check.
|
|
319
|
+
*/
|
|
320
|
+
readonly headerSelectionState: _angular_core.Signal<HeaderSelectionState>;
|
|
321
|
+
/**
|
|
322
|
+
* Rows currently visible in the body (post-pagination) excluding any
|
|
323
|
+
* marked as selection-disabled. The header checkbox toggles only over
|
|
324
|
+
* this set.
|
|
325
|
+
*/
|
|
326
|
+
private readonly visibleSelectableRows;
|
|
327
|
+
onToggleRow(row: T, event: Event): void;
|
|
328
|
+
onToggleAllVisible(event: Event): void;
|
|
329
|
+
/**
|
|
330
|
+
* Source of truth for which row keys are currently expanded. Reads
|
|
331
|
+
* the controlled `expandedKeys` input when the parent supplied one,
|
|
332
|
+
* otherwise falls back to the engine's internal set.
|
|
333
|
+
*/
|
|
334
|
+
private readonly effectiveExpandedKeys;
|
|
335
|
+
/** True when `rowDetailTemplate` is set — the feature is opt-in. */
|
|
336
|
+
readonly hasExpansion: _angular_core.Signal<boolean>;
|
|
337
|
+
/**
|
|
338
|
+
* Whether the expand chevron column appears at the start. When the
|
|
339
|
+
* expansion feature is off this returns false so the column doesn't
|
|
340
|
+
* render. Selection takes priority when both are pinned to "start"
|
|
341
|
+
* (selection comes first, then expand).
|
|
342
|
+
*/
|
|
343
|
+
readonly hasExpansionStart: _angular_core.Signal<boolean>;
|
|
344
|
+
readonly hasExpansionEnd: _angular_core.Signal<boolean>;
|
|
345
|
+
/** Returns true if the given row is currently expanded. */
|
|
346
|
+
isRowExpanded(row: T): boolean;
|
|
347
|
+
/** Returns true unless an `expandableRow` predicate explicitly excludes the row. */
|
|
348
|
+
isRowExpandable(row: T): boolean;
|
|
349
|
+
/**
|
|
350
|
+
* Total columns rendered per row (data columns + selection col + expand col).
|
|
351
|
+
* Used as the colspan for the detail `<td>` so it spans the full row width.
|
|
352
|
+
*/
|
|
353
|
+
readonly totalColumnCount: _angular_core.Signal<number>;
|
|
354
|
+
/** Toggle a single row's expansion via chevron click or keyboard. */
|
|
355
|
+
onToggleExpand(row: T, event: Event): void;
|
|
356
|
+
/**
|
|
357
|
+
* Public hook used by the group coordinator to force-clear this
|
|
358
|
+
* table's expansion when a sibling table opens a row. Routes through
|
|
359
|
+
* the same commit path so controlled-mode parents still see the
|
|
360
|
+
* emission.
|
|
361
|
+
*/
|
|
362
|
+
clearExpansion(): void;
|
|
363
|
+
private commitExpansion;
|
|
364
|
+
onHeaderClick(column: ColumnDef<T>): void;
|
|
365
|
+
/** Returns an inline style object for the row if a `rowStyleFn` is configured, otherwise null. */
|
|
366
|
+
getRowStyle(row: T, index: number): Record<string, string> | null;
|
|
367
|
+
onRowClick(row: T, index: number): void;
|
|
368
|
+
onVirtualScroll(event: Event): void;
|
|
369
|
+
onViewportInit(el: HTMLElement): void;
|
|
370
|
+
getPinOffset(column: ColumnDef<T>): string | null;
|
|
371
|
+
onColumnResize(event: ColumnResizeEvent): void;
|
|
372
|
+
/** Returns the current sort direction for the given column id, or null if not sorted. */
|
|
373
|
+
getSortDirection(columnId: string): 'asc' | 'desc' | null;
|
|
374
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableComponent<any>, never>;
|
|
375
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTableComponent<any>, "fk-data-table", never, { "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "sortState": { "alias": "sortState"; "required": false; "isSignal": true; }; "filterState": { "alias": "filterState"; "required": false; "isSignal": true; }; "pageState": { "alias": "pageState"; "required": false; "isSignal": true; }; "rowSelection": { "alias": "rowSelection"; "required": false; "isSignal": true; }; "selectedKeys": { "alias": "selectedKeys"; "required": false; "isSignal": true; }; "getRowId": { "alias": "getRowId"; "required": false; "isSignal": true; }; "selectionDisabled": { "alias": "selectionDisabled"; "required": false; "isSignal": true; }; "selectionColumnPosition": { "alias": "selectionColumnPosition"; "required": false; "isSignal": true; }; "selectionLabel": { "alias": "selectionLabel"; "required": false; "isSignal": true; }; "rowDetailTemplate": { "alias": "rowDetailTemplate"; "required": false; "isSignal": true; }; "expansionColumnPosition": { "alias": "expansionColumnPosition"; "required": false; "isSignal": true; }; "expandedKeys": { "alias": "expandedKeys"; "required": false; "isSignal": true; }; "expandableRow": { "alias": "expandableRow"; "required": false; "isSignal": true; }; "expansionLabel": { "alias": "expansionLabel"; "required": false; "isSignal": true; }; }, { "sortChange": "sortChange"; "filterChange": "filterChange"; "pageChange": "pageChange"; "rowClick": "rowClick"; "selectionChange": "selectionChange"; "expansionChange": "expansionChange"; "columnResize": "columnResize"; }, never, never, true, never>;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Single-expand wrapper for `<fk-data-table>`. Mirror of
|
|
380
|
+
* `<fk-accordion-group>`: provides a coordinator scoped to itself, any
|
|
381
|
+
* descendant data-table picks it up via DI and routes every expansion
|
|
382
|
+
* toggle through it. The coordinator collapses the previously-active
|
|
383
|
+
* row when a new one expands so only one detail panel is open.
|
|
384
|
+
*
|
|
385
|
+
* Wrap a data-table when you want exclusive expansion:
|
|
386
|
+
*
|
|
387
|
+
* ```html
|
|
388
|
+
* <fk-data-table-group>
|
|
389
|
+
* <fk-data-table [rowDetailTemplate]="detail" ... />
|
|
390
|
+
* </fk-data-table-group>
|
|
391
|
+
* ```
|
|
392
|
+
*
|
|
393
|
+
* Omit the wrapper for multi-expand (the default).
|
|
394
|
+
*/
|
|
395
|
+
declare class DataTableGroupComponent {
|
|
396
|
+
readonly className: _angular_core.InputSignal<string>;
|
|
397
|
+
readonly classes: _angular_core.Signal<string>;
|
|
398
|
+
get hostClass(): string;
|
|
399
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableGroupComponent, never>;
|
|
400
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTableGroupComponent, "fk-data-table-group", never, { "className": { "alias": "className"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* Coordinator scoped to a single `<fk-data-table-group>`. Mirrors
|
|
405
|
+
* `AccordionGroupCoordinator` — when a wrapped data-table expands a
|
|
406
|
+
* row, the previously-active row is collapsed so only one detail
|
|
407
|
+
* panel is open at a time.
|
|
408
|
+
*
|
|
409
|
+
* The wrapped data-table picks this up via `inject({ optional: true })`
|
|
410
|
+
* and routes every expansion toggle through it. Absence of the
|
|
411
|
+
* coordinator means multi-expand behavior — that's the default.
|
|
412
|
+
*/
|
|
413
|
+
declare class DataTableGroupCoordinator {
|
|
414
|
+
private activeTable;
|
|
415
|
+
private activeKey;
|
|
416
|
+
/**
|
|
417
|
+
* Resolve an expansion request. Caller passes the new expanded
|
|
418
|
+
* state alongside the table + row key; coordinator returns the
|
|
419
|
+
* Set the caller should commit. For multi-table groups this also
|
|
420
|
+
* collapses any active row on a sibling table.
|
|
421
|
+
*/
|
|
422
|
+
resolveToggle(table: DataTableComponent<unknown>, key: unknown, nextExpanded: boolean, currentKeysOnThisTable: ReadonlySet<unknown>): {
|
|
423
|
+
keysForThisTable: Set<unknown>;
|
|
424
|
+
/** Optional: a sibling table the host should clear by calling its `clearExpansion`. */
|
|
425
|
+
siblingTableToClear: DataTableComponent<unknown> | null;
|
|
426
|
+
};
|
|
427
|
+
/**
|
|
428
|
+
* Called when a data-table inside the group disconnects. Clears the
|
|
429
|
+
* active pointer if it was tracking this table.
|
|
430
|
+
*/
|
|
431
|
+
unregister(table: DataTableComponent<unknown>): void;
|
|
432
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableGroupCoordinator, never>;
|
|
433
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<DataTableGroupCoordinator>;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
interface StackToggleRowEvent<T = unknown> {
|
|
437
|
+
row: T;
|
|
438
|
+
event: Event;
|
|
439
|
+
}
|
|
440
|
+
declare class DataTableStackComponent<T = unknown> {
|
|
441
|
+
/** Row data array rendered as stacked cards in mobile layout. */
|
|
442
|
+
readonly rows: _angular_core.InputSignal<T[]>;
|
|
443
|
+
/** Column definitions used to extract field labels and cell values. */
|
|
444
|
+
readonly columns: _angular_core.InputSignal<ColumnDef<T>[]>;
|
|
445
|
+
/** Merged table configuration passed down from the host data-table. */
|
|
446
|
+
readonly config: _angular_core.InputSignal<TableConfig<T> | null>;
|
|
447
|
+
/** TrackBy function used by the `@for` loop over rows. */
|
|
448
|
+
readonly trackByFn: _angular_core.InputSignal<(index: number, row: T) => unknown>;
|
|
449
|
+
/** Mirrors the host table's `rowSelection` input to show checkboxes on each card. */
|
|
450
|
+
readonly rowSelection: _angular_core.InputSignal<boolean>;
|
|
451
|
+
/** Currently selected row keys forwarded from the host table engine. */
|
|
452
|
+
readonly selectedKeys: _angular_core.InputSignal<Set<unknown>>;
|
|
453
|
+
/** Row identity resolver forwarded from the host table. */
|
|
454
|
+
readonly getRowId: _angular_core.InputSignal<((row: T) => unknown) | null>;
|
|
455
|
+
/** Predicate (or static boolean) that disables selection for matching rows. */
|
|
456
|
+
readonly selectionDisabled: _angular_core.InputSignal<SelectionDisabled<T>>;
|
|
457
|
+
/** Accessible label for each card's selection checkbox. */
|
|
458
|
+
readonly selectionLabel: _angular_core.InputSignal<string>;
|
|
459
|
+
/** Fires when the user clicks a card row, emitting the row context. */
|
|
460
|
+
readonly rowClick: _angular_core.OutputEmitterRef<TableRowContext<T>>;
|
|
461
|
+
/** Fires when the user toggles a card's selection checkbox, bubbling up to the host. */
|
|
462
|
+
readonly toggleRow: _angular_core.OutputEmitterRef<StackToggleRowEvent<T>>;
|
|
463
|
+
readonly expandedRows: _angular_core.WritableSignal<Set<number>>;
|
|
464
|
+
readonly visibleFieldCount = 3;
|
|
465
|
+
readonly primaryColumns: _angular_core.Signal<ColumnDef<T>[]>;
|
|
466
|
+
readonly secondaryColumns: _angular_core.Signal<ColumnDef<T>[]>;
|
|
467
|
+
readonly hasSecondary: _angular_core.Signal<boolean>;
|
|
468
|
+
getCellValue(column: ColumnDef<T>, row: T): unknown;
|
|
469
|
+
getLabel(column: ColumnDef<T>): string;
|
|
470
|
+
isExpanded(index: number): boolean;
|
|
471
|
+
toggleExpand(index: number): void;
|
|
472
|
+
onRowClick(row: T, index: number): void;
|
|
473
|
+
onToggleSelection(row: T, event: Event): void;
|
|
474
|
+
isRowSelected(row: T): boolean;
|
|
475
|
+
isRowSelectionDisabled(row: T): boolean;
|
|
476
|
+
private getSelectionKey;
|
|
477
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableStackComponent<any>, never>;
|
|
478
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTableStackComponent<any>, "fk-data-table-stack", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "trackByFn": { "alias": "trackByFn"; "required": false; "isSignal": true; }; "rowSelection": { "alias": "rowSelection"; "required": false; "isSignal": true; }; "selectedKeys": { "alias": "selectedKeys"; "required": false; "isSignal": true; }; "getRowId": { "alias": "getRowId"; "required": false; "isSignal": true; }; "selectionDisabled": { "alias": "selectionDisabled"; "required": false; "isSignal": true; }; "selectionLabel": { "alias": "selectionLabel"; "required": false; "isSignal": true; }; }, { "rowClick": "rowClick"; "toggleRow": "toggleRow"; }, never, never, true, never>;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
export { ColumnResizeDirective, DEFAULT_TABLE_CONFIG, DataTableComponent, DataTableGroupComponent, DataTableGroupCoordinator, DataTableStackComponent, ResponsiveStrategyService, TableEngineService, VirtualizationEngineService };
|
|
482
|
+
export type { ActiveMode, Breakpoint, ColumnDef, ColumnResizeEvent, ExpansionColumnPosition, FilterState, HeaderSelectionState, PageState, SelectionColumnPosition, SelectionDisabled, SortDirection, SortState, StackToggleRowEvent, TableConfig, TableRowContext };
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { Type, ComponentRef } from '@angular/core';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
|
|
5
|
+
type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'fullscreen';
|
|
6
|
+
type DialogPosition = 'center' | 'top';
|
|
7
|
+
type DialogAnimation = 'scale-fade' | 'fade' | 'slide-up' | 'slide-down' | 'none';
|
|
8
|
+
type CanCloseFn = () => boolean | Promise<boolean>;
|
|
9
|
+
|
|
10
|
+
declare class FkDialogHeaderDirective {
|
|
11
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkDialogHeaderDirective, never>;
|
|
12
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FkDialogHeaderDirective, "[fkDialogHeader]", never, {}, {}, never, never, true, never>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
declare class DialogComponent {
|
|
16
|
+
/** Controls whether the dialog is open. */
|
|
17
|
+
readonly open: _angular_core.InputSignal<boolean>;
|
|
18
|
+
/** When true, renders a backdrop overlay behind the dialog. */
|
|
19
|
+
readonly modal: _angular_core.InputSignal<boolean>;
|
|
20
|
+
/** When true, shows the close button in the dialog header. */
|
|
21
|
+
readonly closable: _angular_core.InputSignal<boolean>;
|
|
22
|
+
/** When true, pressing Escape closes the dialog. */
|
|
23
|
+
readonly closeOnEscape: _angular_core.InputSignal<boolean>;
|
|
24
|
+
/** When true, clicking the backdrop overlay closes the dialog. */
|
|
25
|
+
readonly closeOnBackdrop: _angular_core.InputSignal<boolean>;
|
|
26
|
+
/** Size variant that controls the dialog's max-width. */
|
|
27
|
+
readonly size: _angular_core.InputSignal<DialogSize>;
|
|
28
|
+
/** Where the dialog is anchored on screen. */
|
|
29
|
+
readonly position: _angular_core.InputSignal<DialogPosition>;
|
|
30
|
+
/** Optional title text rendered in the dialog header and used for `aria-labelledby`. */
|
|
31
|
+
readonly header: _angular_core.InputSignal<string | null>;
|
|
32
|
+
/** When true, focus returns to the previously focused element when the dialog closes. */
|
|
33
|
+
readonly restoreFocus: _angular_core.InputSignal<boolean>;
|
|
34
|
+
/** When true, CDK auto-focus is applied when the dialog opens. */
|
|
35
|
+
readonly autoFocus: _angular_core.InputSignal<boolean>;
|
|
36
|
+
/** Entry/exit animation applied to the dialog panel. */
|
|
37
|
+
readonly animation: _angular_core.InputSignal<DialogAnimation>;
|
|
38
|
+
/** When true, all close mechanisms (Escape, backdrop, button) are blocked. */
|
|
39
|
+
readonly preventClose: _angular_core.InputSignal<boolean>;
|
|
40
|
+
/** Async guard function called before closing; return false to cancel the close. */
|
|
41
|
+
readonly canClose: _angular_core.InputSignal<CanCloseFn | null>;
|
|
42
|
+
/** When true, the dialog expands to full-screen on mobile viewports. */
|
|
43
|
+
readonly fullscreenMobile: _angular_core.InputSignal<boolean>;
|
|
44
|
+
/** When true, the dialog body uses a flex column layout. */
|
|
45
|
+
readonly flexBody: _angular_core.InputSignal<boolean>;
|
|
46
|
+
readonly customHeader: _angular_core.Signal<FkDialogHeaderDirective | undefined>;
|
|
47
|
+
readonly className: _angular_core.InputSignal<string>;
|
|
48
|
+
readonly id: _angular_core.InputSignal<string | null>;
|
|
49
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
50
|
+
readonly ariaDescribedBy: _angular_core.InputSignal<string | null>;
|
|
51
|
+
/** Fires when the dialog's open state should change, emitting the new boolean. */
|
|
52
|
+
readonly openChange: _angular_core.OutputEmitterRef<boolean>;
|
|
53
|
+
/** Fires immediately before the dialog begins its open animation. */
|
|
54
|
+
readonly beforeOpen: _angular_core.OutputEmitterRef<void>;
|
|
55
|
+
/** Fires after the dialog is fully open and visible. */
|
|
56
|
+
readonly opened: _angular_core.OutputEmitterRef<void>;
|
|
57
|
+
/** Fires immediately before the dialog begins its close animation. */
|
|
58
|
+
readonly beforeClose: _angular_core.OutputEmitterRef<void>;
|
|
59
|
+
/** Fires after the dialog is fully closed. */
|
|
60
|
+
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
61
|
+
private readonly doc;
|
|
62
|
+
private readonly destroyRef;
|
|
63
|
+
readonly titleId: string;
|
|
64
|
+
private previouslyFocusedElement;
|
|
65
|
+
private bodyScrollLocked;
|
|
66
|
+
private closeGuardRunning;
|
|
67
|
+
/** Whether the dialog DOM is rendered (stays true during exit animation). */
|
|
68
|
+
readonly visible: _angular_core.WritableSignal<boolean>;
|
|
69
|
+
/** Whether the dialog is animating out. */
|
|
70
|
+
readonly animatingOut: _angular_core.WritableSignal<boolean>;
|
|
71
|
+
readonly classes: _angular_core.Signal<string>;
|
|
72
|
+
readonly ariaLabelledBy: _angular_core.Signal<string | null>;
|
|
73
|
+
constructor();
|
|
74
|
+
get hostClass(): string;
|
|
75
|
+
get hostId(): string | null;
|
|
76
|
+
onEscapeKey(): void;
|
|
77
|
+
/** Closes the dialog, running any `canClose` guard first; no-ops when `preventClose` is true. */
|
|
78
|
+
close(): Promise<void>;
|
|
79
|
+
onOverlayClick(): void;
|
|
80
|
+
/** Called when the overlay exit animation finishes. */
|
|
81
|
+
onExitAnimationDone(): void;
|
|
82
|
+
private onDialogOpen;
|
|
83
|
+
private onDialogClose;
|
|
84
|
+
private lockBodyScroll;
|
|
85
|
+
private unlockBodyScroll;
|
|
86
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogComponent, never>;
|
|
87
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogComponent, "fk-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "restoreFocus": { "alias": "restoreFocus"; "required": false; "isSignal": true; }; "autoFocus": { "alias": "autoFocus"; "required": false; "isSignal": true; }; "animation": { "alias": "animation"; "required": false; "isSignal": true; }; "preventClose": { "alias": "preventClose"; "required": false; "isSignal": true; }; "canClose": { "alias": "canClose"; "required": false; "isSignal": true; }; "fullscreenMobile": { "alias": "fullscreenMobile"; "required": false; "isSignal": true; }; "flexBody": { "alias": "flexBody"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; }, { "openChange": "openChange"; "beforeOpen": "beforeOpen"; "opened": "opened"; "beforeClose": "beforeClose"; "closed": "closed"; }, ["customHeader"], ["[fkDialogHeader]", "*", "[libDialogFooter]"], true, never>;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
interface DialogConfig<TData = unknown> {
|
|
91
|
+
modal?: boolean;
|
|
92
|
+
closable?: boolean;
|
|
93
|
+
closeOnEscape?: boolean;
|
|
94
|
+
closeOnBackdrop?: boolean;
|
|
95
|
+
size?: DialogSize;
|
|
96
|
+
position?: DialogPosition;
|
|
97
|
+
animation?: DialogAnimation;
|
|
98
|
+
header?: string | null;
|
|
99
|
+
restoreFocus?: boolean;
|
|
100
|
+
autoFocus?: boolean;
|
|
101
|
+
preventClose?: boolean;
|
|
102
|
+
canClose?: CanCloseFn;
|
|
103
|
+
fullscreenMobile?: boolean;
|
|
104
|
+
flexBody?: boolean;
|
|
105
|
+
className?: string;
|
|
106
|
+
ariaLabel?: string | null;
|
|
107
|
+
ariaDescribedBy?: string | null;
|
|
108
|
+
data?: TData;
|
|
109
|
+
}
|
|
110
|
+
declare const DEFAULT_DIALOG_CONFIG: DialogConfig;
|
|
111
|
+
|
|
112
|
+
declare class DialogRef<TResult = unknown, TData = unknown> {
|
|
113
|
+
private readonly beforeOpenSubject;
|
|
114
|
+
private readonly afterOpenedSubject;
|
|
115
|
+
private readonly beforeCloseSubject;
|
|
116
|
+
private readonly afterClosedSubject;
|
|
117
|
+
private closed;
|
|
118
|
+
private closeGuard;
|
|
119
|
+
readonly config: DialogConfig<TData>;
|
|
120
|
+
constructor(config?: DialogConfig<TData>);
|
|
121
|
+
get data(): TData | undefined;
|
|
122
|
+
setCanClose(guard: CanCloseFn | null): void;
|
|
123
|
+
close(result?: TResult): Promise<void>;
|
|
124
|
+
beforeOpen(): Observable<void>;
|
|
125
|
+
afterOpened(): Observable<void>;
|
|
126
|
+
beforeClose(): Observable<void>;
|
|
127
|
+
afterClosed(): Observable<TResult | undefined>;
|
|
128
|
+
/** @internal */
|
|
129
|
+
markBeforeOpen(): void;
|
|
130
|
+
/** @internal */
|
|
131
|
+
markOpened(): void;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
declare const DIALOG_DATA: unique symbol;
|
|
135
|
+
declare const DIALOG_REF: unique symbol;
|
|
136
|
+
interface DialogEntry {
|
|
137
|
+
ref: DialogRef;
|
|
138
|
+
hostRef: ComponentRef<DialogComponent>;
|
|
139
|
+
contentRef: ComponentRef<unknown>;
|
|
140
|
+
}
|
|
141
|
+
declare class DialogService {
|
|
142
|
+
private readonly appRef;
|
|
143
|
+
private readonly injector;
|
|
144
|
+
private readonly doc;
|
|
145
|
+
private readonly orchestrator;
|
|
146
|
+
private activeDialogs;
|
|
147
|
+
private overlayIds;
|
|
148
|
+
get openCount(): number;
|
|
149
|
+
open<TResult = unknown, TData = unknown>(content: Type<unknown>, config?: DialogConfig<TData>): DialogRef<TResult, TData>;
|
|
150
|
+
closeAll(): void;
|
|
151
|
+
/** Returns true if the given entry is the topmost (last) active dialog. */
|
|
152
|
+
isTopmost(entry: DialogEntry): boolean;
|
|
153
|
+
private applyZIndex;
|
|
154
|
+
private applyConfig;
|
|
155
|
+
private destroyDialog;
|
|
156
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogService, never>;
|
|
157
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<DialogService>;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
declare class FkDialogActionsDirective {
|
|
161
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkDialogActionsDirective, never>;
|
|
162
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FkDialogActionsDirective, "[fkDialogActions]", never, {}, {}, never, never, true, never>;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export { DEFAULT_DIALOG_CONFIG, DIALOG_DATA, DIALOG_REF, DialogComponent, DialogRef, DialogService, FkDialogActionsDirective, FkDialogHeaderDirective };
|
|
166
|
+
export type { CanCloseFn, DialogAnimation, DialogConfig, DialogPosition, DialogSize };
|