@mozaic-ds/angular 2.0.65 → 2.0.67
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/fesm2022/mozaic-ds-angular.mjs +16 -11781
- package/fesm2022/mozaic-ds-angular.mjs.map +1 -1
- package/package.json +1 -1
- package/types/mozaic-ds-angular.d.ts +3 -2347
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { TemplateRef, OnInit, ElementRef, InjectionToken, Type, AfterViewInit, OnDestroy, Renderer2, WritableSignal, Signal, AfterContentInit, QueryList, EventEmitter, ComponentRef
|
|
2
|
+
import { TemplateRef, OnInit, ElementRef, InjectionToken, Type, AfterViewInit, OnDestroy, Renderer2, WritableSignal, Signal, AfterContentInit, QueryList, EventEmitter, ComponentRef } from '@angular/core';
|
|
3
3
|
import { ControlValueAccessor } from '@angular/forms';
|
|
4
4
|
import { CheckCircle32, Uploading32, WarningCircle32 } from '@mozaic-ds/icons-angular';
|
|
5
5
|
import { RouterLink } from '@angular/router';
|
|
@@ -8,7 +8,6 @@ import * as rxjs from 'rxjs';
|
|
|
8
8
|
import { Observable } from 'rxjs';
|
|
9
9
|
import { CdkPortalOutlet } from '@angular/cdk/portal';
|
|
10
10
|
import * as _mozaic_ds_angular from '@mozaic-ds/angular';
|
|
11
|
-
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
12
11
|
import { ComponentHarness } from '@angular/cdk/testing';
|
|
13
12
|
|
|
14
13
|
type MozBreadcrumbAppearance = 'standard' | 'inverse';
|
|
@@ -2259,2349 +2258,6 @@ declare class MozNavigationIndicatorComponent {
|
|
|
2259
2258
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MozNavigationIndicatorComponent, "moz-navigation-indicator", never, { "steps": { "alias": "steps"; "required": true; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "action": { "alias": "action"; "required": false; "isSignal": true; }; "light": { "alias": "light"; "required": false; "isSignal": true; }; "hideAction": { "alias": "hideAction"; "required": false; "isSignal": true; }; "pauseLabel": { "alias": "pauseLabel"; "required": false; "isSignal": true; }; "resumeLabel": { "alias": "resumeLabel"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; "stepClick": "stepClick"; "actionClick": "actionClick"; }, never, never, true, never>;
|
|
2260
2259
|
}
|
|
2261
2260
|
|
|
2262
|
-
interface CellCoord {
|
|
2263
|
-
row: number;
|
|
2264
|
-
col: number;
|
|
2265
|
-
}
|
|
2266
|
-
interface CellRange {
|
|
2267
|
-
start: CellCoord;
|
|
2268
|
-
end: CellCoord;
|
|
2269
|
-
}
|
|
2270
|
-
interface CellEditState {
|
|
2271
|
-
editingCell: CellCoord | null;
|
|
2272
|
-
originalValue: unknown;
|
|
2273
|
-
draftValue: unknown;
|
|
2274
|
-
validationError: string | null;
|
|
2275
|
-
}
|
|
2276
|
-
interface CellEditEvent<T = unknown> {
|
|
2277
|
-
row: T;
|
|
2278
|
-
rowIndex: number;
|
|
2279
|
-
field: string;
|
|
2280
|
-
oldValue: unknown;
|
|
2281
|
-
newValue: unknown;
|
|
2282
|
-
}
|
|
2283
|
-
interface CellEditCancelEvent {
|
|
2284
|
-
rowIndex: number;
|
|
2285
|
-
field: string;
|
|
2286
|
-
originalValue: unknown;
|
|
2287
|
-
}
|
|
2288
|
-
interface BulkEditEvent {
|
|
2289
|
-
range: CellRange | null;
|
|
2290
|
-
cellCount: number;
|
|
2291
|
-
rowIds: unknown[];
|
|
2292
|
-
fields: string[];
|
|
2293
|
-
selectionMode?: 'rows' | 'cells';
|
|
2294
|
-
rowSelection?: unknown;
|
|
2295
|
-
}
|
|
2296
|
-
interface BulkCopyEvent {
|
|
2297
|
-
range: CellRange | null;
|
|
2298
|
-
data: string[][];
|
|
2299
|
-
rowIds: unknown[];
|
|
2300
|
-
fields: string[];
|
|
2301
|
-
selectionMode?: 'rows' | 'cells';
|
|
2302
|
-
rowSelection?: unknown;
|
|
2303
|
-
}
|
|
2304
|
-
/**
|
|
2305
|
-
* A single cell change produced by a bulk operation (paste, delete, …).
|
|
2306
|
-
* Values are already coerced to the column's expected type and have passed
|
|
2307
|
-
* `cellEditorValidator`; consumers can persist them as-is.
|
|
2308
|
-
*/
|
|
2309
|
-
interface BulkCellChange {
|
|
2310
|
-
rowIndex: number;
|
|
2311
|
-
rowId: unknown;
|
|
2312
|
-
field: string;
|
|
2313
|
-
oldValue: unknown;
|
|
2314
|
-
newValue: unknown;
|
|
2315
|
-
}
|
|
2316
|
-
interface BulkPasteEvent {
|
|
2317
|
-
range: CellRange | null;
|
|
2318
|
-
data: string[][];
|
|
2319
|
-
rowIds: unknown[];
|
|
2320
|
-
fields: string[];
|
|
2321
|
-
/**
|
|
2322
|
-
* Fully resolved per-cell changes applied by the grid (post-coercion,
|
|
2323
|
-
* post-validation). Use this to persist server-side — no need to replicate
|
|
2324
|
-
* the fill logic from `data` vs `range`.
|
|
2325
|
-
*/
|
|
2326
|
-
changes: BulkCellChange[];
|
|
2327
|
-
selectionMode?: 'rows' | 'cells';
|
|
2328
|
-
rowSelection?: unknown;
|
|
2329
|
-
}
|
|
2330
|
-
interface FillDownEvent {
|
|
2331
|
-
sourceCell: CellCoord;
|
|
2332
|
-
sourceValue: unknown;
|
|
2333
|
-
direction: 'vertical' | 'horizontal';
|
|
2334
|
-
/** Total cells actually written (excludes the anchor and non-editable columns). */
|
|
2335
|
-
affectedCellCount: number;
|
|
2336
|
-
field?: string;
|
|
2337
|
-
targetRange?: {
|
|
2338
|
-
startRow: number;
|
|
2339
|
-
endRow: number;
|
|
2340
|
-
};
|
|
2341
|
-
/** @deprecated Use `affectedCellCount` instead. */
|
|
2342
|
-
affectedRowCount?: number;
|
|
2343
|
-
/** Target columns written in the horizontal fill. Non-editable columns are filtered out. */
|
|
2344
|
-
targetFields?: string[];
|
|
2345
|
-
}
|
|
2346
|
-
interface CellError {
|
|
2347
|
-
message: string;
|
|
2348
|
-
}
|
|
2349
|
-
interface BulkDeleteEvent {
|
|
2350
|
-
range: CellRange | null;
|
|
2351
|
-
cellCount: number;
|
|
2352
|
-
rowIds: unknown[];
|
|
2353
|
-
fields: string[];
|
|
2354
|
-
/**
|
|
2355
|
-
* Fully resolved per-cell changes applied by the grid (post-coercion,
|
|
2356
|
-
* post-validation). Use this to persist server-side.
|
|
2357
|
-
*/
|
|
2358
|
-
changes: BulkCellChange[];
|
|
2359
|
-
selectionMode?: 'rows' | 'cells';
|
|
2360
|
-
rowSelection?: unknown;
|
|
2361
|
-
}
|
|
2362
|
-
|
|
2363
|
-
/**
|
|
2364
|
-
* Filter model — multi-condition filter builder with AND/OR combinators.
|
|
2365
|
-
*
|
|
2366
|
-
* Evaluation is left-associative (no operator precedence). Grouped / parenthesised
|
|
2367
|
-
* conditions (`(a AND b) OR c`) are out of scope for the MVP; see docs.
|
|
2368
|
-
*/
|
|
2369
|
-
|
|
2370
|
-
/** Controls where filter evaluation happens. */
|
|
2371
|
-
type FilterMode = 'client' | 'server';
|
|
2372
|
-
type FilterDataType = 'text' | 'number' | 'date' | 'set' | 'boolean' | 'custom';
|
|
2373
|
-
type TextOperator = 'contains' | 'notContains' | 'equals' | 'notEquals' | 'startsWith' | 'endsWith' | 'blank' | 'notBlank';
|
|
2374
|
-
type NumberOperator = 'equals' | 'notEquals' | 'gt' | 'gte' | 'lt' | 'lte' | 'between' | 'blank' | 'notBlank';
|
|
2375
|
-
type DateOperator = NumberOperator;
|
|
2376
|
-
type SetOperator = 'in' | 'notIn' | 'blank' | 'notBlank';
|
|
2377
|
-
type BooleanOperator = 'equals' | 'blank' | 'notBlank';
|
|
2378
|
-
type FilterOperator = TextOperator | NumberOperator | DateOperator | SetOperator | BooleanOperator;
|
|
2379
|
-
type FilterCombinator = 'and' | 'or';
|
|
2380
|
-
interface FilterValue {
|
|
2381
|
-
/** Primary value. Absent / ignored for `blank` / `notBlank`. */
|
|
2382
|
-
value?: unknown;
|
|
2383
|
-
/** Upper bound for `between`. */
|
|
2384
|
-
valueTo?: unknown;
|
|
2385
|
-
}
|
|
2386
|
-
interface FilterCondition {
|
|
2387
|
-
/** Stable identifier — used for trackBy and drag-drop reordering. */
|
|
2388
|
-
id: string;
|
|
2389
|
-
/** Ignored for the first condition. Rendered as "Where" in the UI. */
|
|
2390
|
-
combinator: FilterCombinator;
|
|
2391
|
-
field: string;
|
|
2392
|
-
operator: FilterOperator;
|
|
2393
|
-
value: FilterValue;
|
|
2394
|
-
}
|
|
2395
|
-
interface FilterModel {
|
|
2396
|
-
conditions: FilterCondition[];
|
|
2397
|
-
}
|
|
2398
|
-
type FilterChangeReason = 'add' | 'update' | 'remove' | 'reorder' | 'clear' | 'replace';
|
|
2399
|
-
/**
|
|
2400
|
-
* Payload emitted whenever the filter model changes. Replaces the legacy
|
|
2401
|
-
* `{ filters: ActiveFilter[] }` shape.
|
|
2402
|
-
*/
|
|
2403
|
-
interface FilterEvent {
|
|
2404
|
-
/** Full model after mutation. */
|
|
2405
|
-
model: FilterModel;
|
|
2406
|
-
/** Condition concerned by the mutation. null for `clear` / `replace`. */
|
|
2407
|
-
condition: FilterCondition | null;
|
|
2408
|
-
/** Mutation kind. */
|
|
2409
|
-
reason: FilterChangeReason;
|
|
2410
|
-
}
|
|
2411
|
-
/** Drawer data / result for the Filters drawer (toolbar). */
|
|
2412
|
-
interface FilterDrawerData {
|
|
2413
|
-
model: FilterModel;
|
|
2414
|
-
availableColumns: FilterColumnDescriptor[];
|
|
2415
|
-
applyMode: FilterApplyMode;
|
|
2416
|
-
}
|
|
2417
|
-
interface FilterDrawerResult {
|
|
2418
|
-
model: FilterModel;
|
|
2419
|
-
applied: boolean;
|
|
2420
|
-
}
|
|
2421
|
-
type FilterApplyMode = 'auto' | 'manual';
|
|
2422
|
-
/**
|
|
2423
|
-
* Base class for custom filter components. Extend this class and declare:
|
|
2424
|
-
* readonly condition = input.required<FilterCondition>();
|
|
2425
|
-
* readonly conditionChange = output<FilterValue>();
|
|
2426
|
-
*
|
|
2427
|
-
* The filter builder instantiates the component via ViewContainerRef and wires
|
|
2428
|
-
* the inputs/outputs automatically — the component has no dependency on the grid.
|
|
2429
|
-
*/
|
|
2430
|
-
declare abstract class MozGridCustomFilter {
|
|
2431
|
-
abstract readonly condition: InputSignal<FilterCondition>;
|
|
2432
|
-
abstract readonly conditionChange: OutputEmitterRef<FilterValue>;
|
|
2433
|
-
}
|
|
2434
|
-
/** Minimal column info the builder needs to render labels, operators and value editors. */
|
|
2435
|
-
interface FilterColumnDescriptor {
|
|
2436
|
-
field: string;
|
|
2437
|
-
headerName: string;
|
|
2438
|
-
filterType: FilterDataType;
|
|
2439
|
-
operators: FilterOperator[];
|
|
2440
|
-
options?: {
|
|
2441
|
-
value: unknown;
|
|
2442
|
-
label: string;
|
|
2443
|
-
}[];
|
|
2444
|
-
defaultOperator: FilterOperator;
|
|
2445
|
-
/** Custom component rendered in the builder for filterType === 'custom'. */
|
|
2446
|
-
filterComponent?: Type<MozGridCustomFilter>;
|
|
2447
|
-
/** Override for completion check. Defaults to value.value != null && !== ''. */
|
|
2448
|
-
filterIsComplete?: (value: FilterValue) => boolean;
|
|
2449
|
-
}
|
|
2450
|
-
/**
|
|
2451
|
-
* Default operator sets per data type. Consumers can restrict the set via
|
|
2452
|
-
* `ColumnDef.filterOperators`.
|
|
2453
|
-
*/
|
|
2454
|
-
declare const DEFAULT_OPERATORS: Record<FilterDataType, FilterOperator[]>;
|
|
2455
|
-
declare const DEFAULT_OPERATOR_PER_TYPE: Record<FilterDataType, FilterOperator>;
|
|
2456
|
-
/** Human-readable operator labels (used by `toLabel`). */
|
|
2457
|
-
declare const OPERATOR_LABELS: Record<FilterOperator, string>;
|
|
2458
|
-
/** Operators that do not require a user-entered value. */
|
|
2459
|
-
declare const VALUELESS_OPERATORS: ReadonlySet<FilterOperator>;
|
|
2460
|
-
/** Operators that need a secondary value (`between`). */
|
|
2461
|
-
declare const RANGE_OPERATORS: ReadonlySet<FilterOperator>;
|
|
2462
|
-
/** Small helper for generating condition ids without pulling in a uuid dep. */
|
|
2463
|
-
declare function generateConditionId(): string;
|
|
2464
|
-
/** True when a condition has enough information to participate in evaluation. */
|
|
2465
|
-
declare function isConditionComplete(condition: FilterCondition): boolean;
|
|
2466
|
-
|
|
2467
|
-
type SortDirection = 'asc' | 'desc' | null;
|
|
2468
|
-
type CellEditorType = 'text' | 'number' | 'textarea' | 'select' | 'checkbox' | 'date' | 'toggle' | 'custom';
|
|
2469
|
-
interface ColumnDef<T = unknown> {
|
|
2470
|
-
/** Unique column identifier */
|
|
2471
|
-
field: string;
|
|
2472
|
-
/** Display name in header */
|
|
2473
|
-
headerName?: string;
|
|
2474
|
-
/** Fixed width in px (e.g. '120px') */
|
|
2475
|
-
width?: string;
|
|
2476
|
-
/** Minimum width in px for resize */
|
|
2477
|
-
minWidth?: string;
|
|
2478
|
-
/** Maximum width in px for resize */
|
|
2479
|
-
maxWidth?: string;
|
|
2480
|
-
/** Flex grow factor (like CSS flex) */
|
|
2481
|
-
flex?: number;
|
|
2482
|
-
/** Whether column is sortable */
|
|
2483
|
-
sortable?: boolean;
|
|
2484
|
-
/** Custom sort comparator */
|
|
2485
|
-
sortComparator?: (a: T, b: T) => number;
|
|
2486
|
-
/** Whether column is resizable */
|
|
2487
|
-
resizable?: boolean;
|
|
2488
|
-
/** Whether column is reorderable */
|
|
2489
|
-
reorderable?: boolean;
|
|
2490
|
-
/** Whether column is groupable */
|
|
2491
|
-
groupable?: boolean;
|
|
2492
|
-
/** Whether column supports filtering */
|
|
2493
|
-
filterable?: boolean;
|
|
2494
|
-
/**
|
|
2495
|
-
* Filter data type. When omitted, it is derived from `cellEditor`:
|
|
2496
|
-
* `number → number`, `date → date`, `select → set`, anything else → `text`.
|
|
2497
|
-
*/
|
|
2498
|
-
filterType?: FilterDataType;
|
|
2499
|
-
/** Allowed operators — subset of the defaults for `filterType`. Optional. */
|
|
2500
|
-
filterOperators?: FilterOperator[];
|
|
2501
|
-
/** Default operator used when a condition is created for this column. */
|
|
2502
|
-
defaultFilterOperator?: FilterOperator;
|
|
2503
|
-
/** For `set` filters: the options shown in the value picker. */
|
|
2504
|
-
filterOptions?: {
|
|
2505
|
-
value: unknown;
|
|
2506
|
-
label: string;
|
|
2507
|
-
}[];
|
|
2508
|
-
/** Whether column is pinned/frozen ('start' | 'end' | null) */
|
|
2509
|
-
pinned?: 'start' | 'end' | null;
|
|
2510
|
-
/** Whether column is visible */
|
|
2511
|
-
visible?: boolean;
|
|
2512
|
-
/** Whether column can be hidden via header menu */
|
|
2513
|
-
hideable?: boolean;
|
|
2514
|
-
/** Whether column can be frozen via header menu */
|
|
2515
|
-
freezable?: boolean;
|
|
2516
|
-
/** Whether the column header search (filter input) is visible */
|
|
2517
|
-
searchVisible?: boolean;
|
|
2518
|
-
/** Disable the header menu entirely for this column */
|
|
2519
|
-
headerMenuDisabled?: boolean;
|
|
2520
|
-
/** Cell value accessor (alternative to field for nested data) */
|
|
2521
|
-
valueGetter?: (row: T) => unknown;
|
|
2522
|
-
/** Cell value formatter for display */
|
|
2523
|
-
valueFormatter?: (value: unknown, row: T) => string;
|
|
2524
|
-
/** CSS class for column cells */
|
|
2525
|
-
cellClass?: string | ((row: T) => string);
|
|
2526
|
-
/** CSS class for header cell */
|
|
2527
|
-
headerClass?: string;
|
|
2528
|
-
/** Whether this column supports inline editing (double-click to edit) */
|
|
2529
|
-
editable?: boolean;
|
|
2530
|
-
/** Editor type — determines which Mozaic component is rendered in edit mode */
|
|
2531
|
-
cellEditor?: CellEditorType;
|
|
2532
|
-
/** Options for select editors (MozSelectOption[]) */
|
|
2533
|
-
cellEditorOptions?: MozSelectOption[];
|
|
2534
|
-
/** Custom validation before commit */
|
|
2535
|
-
cellEditorValidator?: (value: unknown, row: T) => boolean | string;
|
|
2536
|
-
/** Custom cell template */
|
|
2537
|
-
cellTemplate?: TemplateRef<unknown>;
|
|
2538
|
-
/** Custom edit template */
|
|
2539
|
-
editTemplate?: TemplateRef<unknown>;
|
|
2540
|
-
/** Custom filter template rendered in the sub-header filter row */
|
|
2541
|
-
filterTemplate?: TemplateRef<unknown>;
|
|
2542
|
-
/**
|
|
2543
|
-
* Custom Angular component rendered as the value editor in the filter builder.
|
|
2544
|
-
* The component must extend `MozGridCustomFilter`.
|
|
2545
|
-
* Automatically sets filterType to 'custom'.
|
|
2546
|
-
*/
|
|
2547
|
-
filterComponent?: Type<MozGridCustomFilter>;
|
|
2548
|
-
/**
|
|
2549
|
-
* Client-side predicate used when filterMode="client" and filterType is 'custom'.
|
|
2550
|
-
* If absent, custom conditions are silently skipped in client mode.
|
|
2551
|
-
*/
|
|
2552
|
-
filterPredicate?: (row: T, value: FilterValue) => boolean;
|
|
2553
|
-
/**
|
|
2554
|
-
* Determines whether a custom filter condition is "complete" (has enough data
|
|
2555
|
-
* to participate in evaluation). Defaults to value.value != null && !== ''.
|
|
2556
|
-
*/
|
|
2557
|
-
filterIsComplete?: (value: FilterValue) => boolean;
|
|
2558
|
-
/** Validation function for cell values. Returns CellError or null. */
|
|
2559
|
-
cellValidator?: (value: unknown, row: T) => CellError | null;
|
|
2560
|
-
/**
|
|
2561
|
-
* Enables spreadsheet-style formulas for this column. Setting this to
|
|
2562
|
-
* `true` implies `editable: true` (users need to type the formula). When
|
|
2563
|
-
* the committed value starts with `=`, it is routed to the `FormulaEngine`
|
|
2564
|
-
* and the evaluated result is rendered in place of the raw formula text.
|
|
2565
|
-
*
|
|
2566
|
-
* Requires the grid-level `formulas` input to be `true` and the row to
|
|
2567
|
-
* expose a stable id via `rowIdField`.
|
|
2568
|
-
*/
|
|
2569
|
-
allowFormula?: boolean;
|
|
2570
|
-
}
|
|
2571
|
-
interface ColumnStateEntry {
|
|
2572
|
-
field: string;
|
|
2573
|
-
currentWidth: number;
|
|
2574
|
-
order: number;
|
|
2575
|
-
visible: boolean;
|
|
2576
|
-
sort: SortDirection;
|
|
2577
|
-
sortIndex: number | null;
|
|
2578
|
-
pinned: 'start' | 'end' | null;
|
|
2579
|
-
searchVisible: boolean;
|
|
2580
|
-
}
|
|
2581
|
-
interface ColumnResizeEvent {
|
|
2582
|
-
field: string;
|
|
2583
|
-
previousWidth: number;
|
|
2584
|
-
newWidth: number;
|
|
2585
|
-
}
|
|
2586
|
-
interface ColumnReorderEvent {
|
|
2587
|
-
field: string;
|
|
2588
|
-
previousIndex: number;
|
|
2589
|
-
newIndex: number;
|
|
2590
|
-
columns: string[];
|
|
2591
|
-
}
|
|
2592
|
-
interface ColumnFreezeEvent {
|
|
2593
|
-
field: string;
|
|
2594
|
-
side: 'start' | 'end' | null;
|
|
2595
|
-
frozenLeftColumns: string[];
|
|
2596
|
-
frozenRightColumns: string[];
|
|
2597
|
-
}
|
|
2598
|
-
interface ColumnVisibilityEvent {
|
|
2599
|
-
field: string;
|
|
2600
|
-
visible: boolean;
|
|
2601
|
-
visibleColumns: string[];
|
|
2602
|
-
}
|
|
2603
|
-
interface ColumnSearchToggleEvent {
|
|
2604
|
-
field: string;
|
|
2605
|
-
searchVisible: boolean;
|
|
2606
|
-
}
|
|
2607
|
-
type HeaderMenuActionId = 'sort-asc' | 'sort-desc' | 'filter-column' | 'group-column' | 'freeze-column-left' | 'freeze-column-right' | 'unfreeze-column' | 'hide-column' | 'toggle-column-search';
|
|
2608
|
-
interface HeaderMenuConfig {
|
|
2609
|
-
field: string;
|
|
2610
|
-
columnIndex: number;
|
|
2611
|
-
headerName: string;
|
|
2612
|
-
sortable: boolean;
|
|
2613
|
-
filterable: boolean;
|
|
2614
|
-
groupable: boolean;
|
|
2615
|
-
freezable: boolean;
|
|
2616
|
-
hideable: boolean;
|
|
2617
|
-
searchVisible: boolean;
|
|
2618
|
-
currentSort: SortDirection;
|
|
2619
|
-
}
|
|
2620
|
-
|
|
2621
|
-
interface SortDef {
|
|
2622
|
-
field: string;
|
|
2623
|
-
direction: SortDirection;
|
|
2624
|
-
priority: number;
|
|
2625
|
-
}
|
|
2626
|
-
interface SortEvent {
|
|
2627
|
-
sorts: SortDef[];
|
|
2628
|
-
}
|
|
2629
|
-
|
|
2630
|
-
type LoadingStrategy = 'pagination' | 'infinite-scroll';
|
|
2631
|
-
interface PaginationState {
|
|
2632
|
-
pageIndex: number;
|
|
2633
|
-
pageSize: number;
|
|
2634
|
-
totalItems: number;
|
|
2635
|
-
totalPages: number;
|
|
2636
|
-
}
|
|
2637
|
-
interface PageEvent {
|
|
2638
|
-
pageIndex: number;
|
|
2639
|
-
pageSize: number;
|
|
2640
|
-
previousPageIndex: number;
|
|
2641
|
-
previousPageSize: number;
|
|
2642
|
-
}
|
|
2643
|
-
interface LoadMoreEvent {
|
|
2644
|
-
offset: number;
|
|
2645
|
-
limit: number;
|
|
2646
|
-
}
|
|
2647
|
-
|
|
2648
|
-
/**
|
|
2649
|
-
* Lightweight display descriptor for the "FILTERED BY" tag bar. Derived from
|
|
2650
|
-
* the active filter model via `FilterEngine.toLabel()`; kept as a separate
|
|
2651
|
-
* shape so the tag bar template does not depend on the full `FilterCondition`.
|
|
2652
|
-
*/
|
|
2653
|
-
interface ActiveFilter {
|
|
2654
|
-
/** Condition id (not the column field — multiple conditions can target the same field). */
|
|
2655
|
-
id: string;
|
|
2656
|
-
field: string;
|
|
2657
|
-
label: string;
|
|
2658
|
-
removable: boolean;
|
|
2659
|
-
}
|
|
2660
|
-
interface GroupEvent {
|
|
2661
|
-
columns: string[];
|
|
2662
|
-
groups: GroupEntry[];
|
|
2663
|
-
}
|
|
2664
|
-
/**
|
|
2665
|
-
* Emitted when the toolbar export action is triggered while `exportMode` is
|
|
2666
|
-
* `'server'`. The grid does not produce a file itself — the consumer reacts to
|
|
2667
|
-
* this event (e.g. calls a back-end export endpoint) using the active view
|
|
2668
|
-
* descriptors below.
|
|
2669
|
-
*/
|
|
2670
|
-
interface GridExportEvent {
|
|
2671
|
-
format: 'csv';
|
|
2672
|
-
/** Active sort descriptors at export time. */
|
|
2673
|
-
sorts: SortDef[];
|
|
2674
|
-
/** Active filter model at export time. */
|
|
2675
|
-
filterModel: FilterModel;
|
|
2676
|
-
/** Fields of the currently visible columns, in display order. */
|
|
2677
|
-
columns: string[];
|
|
2678
|
-
}
|
|
2679
|
-
interface RowSelectionEvent<T = unknown> {
|
|
2680
|
-
selectedIds: unknown[];
|
|
2681
|
-
excludedIds: unknown[];
|
|
2682
|
-
selectedRows: T[];
|
|
2683
|
-
mode: SelectAllMode;
|
|
2684
|
-
count: number;
|
|
2685
|
-
}
|
|
2686
|
-
type SelectAllMode = 'none' | 'page' | 'all';
|
|
2687
|
-
interface CellSelectionEvent<T = unknown> {
|
|
2688
|
-
focusedCell: {
|
|
2689
|
-
row: number;
|
|
2690
|
-
col: number;
|
|
2691
|
-
} | null;
|
|
2692
|
-
selectedCell: {
|
|
2693
|
-
row: number;
|
|
2694
|
-
col: number;
|
|
2695
|
-
} | null;
|
|
2696
|
-
range: {
|
|
2697
|
-
start: {
|
|
2698
|
-
row: number;
|
|
2699
|
-
col: number;
|
|
2700
|
-
};
|
|
2701
|
-
end: {
|
|
2702
|
-
row: number;
|
|
2703
|
-
col: number;
|
|
2704
|
-
};
|
|
2705
|
-
} | null;
|
|
2706
|
-
selectedData: {
|
|
2707
|
-
row: T;
|
|
2708
|
-
column: string;
|
|
2709
|
-
value: unknown;
|
|
2710
|
-
}[];
|
|
2711
|
-
}
|
|
2712
|
-
interface GridEventMap<T = unknown> {
|
|
2713
|
-
pageChange: PageEvent;
|
|
2714
|
-
sortChange: SortEvent;
|
|
2715
|
-
filterChange: FilterEvent;
|
|
2716
|
-
groupChange: GroupEvent;
|
|
2717
|
-
columnResize: ColumnResizeEvent;
|
|
2718
|
-
columnReorder: ColumnReorderEvent;
|
|
2719
|
-
columnFreeze: ColumnFreezeEvent;
|
|
2720
|
-
columnVisibility: ColumnVisibilityEvent;
|
|
2721
|
-
columnSearchToggle: ColumnSearchToggleEvent;
|
|
2722
|
-
selectionChange: RowSelectionEvent<T>;
|
|
2723
|
-
cellSelectionChange: CellSelectionEvent<T>;
|
|
2724
|
-
rowClick: {
|
|
2725
|
-
row: T;
|
|
2726
|
-
index: number;
|
|
2727
|
-
event: MouseEvent;
|
|
2728
|
-
};
|
|
2729
|
-
rowExpand: {
|
|
2730
|
-
row: T;
|
|
2731
|
-
index: number;
|
|
2732
|
-
expanded: boolean;
|
|
2733
|
-
};
|
|
2734
|
-
cellEdit: CellEditEvent<T>;
|
|
2735
|
-
cellEditCancel: CellEditCancelEvent;
|
|
2736
|
-
}
|
|
2737
|
-
type GridEventType = keyof GridEventMap;
|
|
2738
|
-
type GridDensity = 'small' | 'default' | 'large';
|
|
2739
|
-
interface GridSettingsData {
|
|
2740
|
-
columns: {
|
|
2741
|
-
field: string;
|
|
2742
|
-
headerName: string;
|
|
2743
|
-
visible: boolean;
|
|
2744
|
-
}[];
|
|
2745
|
-
density: GridDensity;
|
|
2746
|
-
defaultColumns: {
|
|
2747
|
-
field: string;
|
|
2748
|
-
headerName: string;
|
|
2749
|
-
visible: boolean;
|
|
2750
|
-
}[];
|
|
2751
|
-
}
|
|
2752
|
-
interface GridSettingsResult {
|
|
2753
|
-
density: GridDensity;
|
|
2754
|
-
columns: {
|
|
2755
|
-
field: string;
|
|
2756
|
-
visible: boolean;
|
|
2757
|
-
order: number;
|
|
2758
|
-
}[];
|
|
2759
|
-
}
|
|
2760
|
-
interface GroupEntry {
|
|
2761
|
-
field: string;
|
|
2762
|
-
sortDirection: 'asc' | 'desc';
|
|
2763
|
-
}
|
|
2764
|
-
interface GroupDrawerData {
|
|
2765
|
-
groups: GroupEntry[];
|
|
2766
|
-
availableColumns: {
|
|
2767
|
-
field: string;
|
|
2768
|
-
headerName: string;
|
|
2769
|
-
}[];
|
|
2770
|
-
}
|
|
2771
|
-
interface GroupDrawerResult {
|
|
2772
|
-
groups: GroupEntry[];
|
|
2773
|
-
}
|
|
2774
|
-
|
|
2775
|
-
declare class GridStateManager<T = unknown> {
|
|
2776
|
-
readonly sourceData: _angular_core.WritableSignal<T[]>;
|
|
2777
|
-
readonly totalItems: _angular_core.WritableSignal<number>;
|
|
2778
|
-
readonly mode: _angular_core.WritableSignal<"client" | "server">;
|
|
2779
|
-
readonly filterMode: _angular_core.WritableSignal<FilterMode>;
|
|
2780
|
-
readonly loadingStrategy: _angular_core.WritableSignal<LoadingStrategy>;
|
|
2781
|
-
readonly columnDefs: _angular_core.WritableSignal<ColumnDef<T>[]>;
|
|
2782
|
-
readonly columnStates: _angular_core.WritableSignal<ColumnStateEntry[]>;
|
|
2783
|
-
readonly activeSorts: _angular_core.WritableSignal<SortDef[]>;
|
|
2784
|
-
readonly groupColumns: _angular_core.WritableSignal<GroupEntry[]>;
|
|
2785
|
-
readonly expandedGroups: _angular_core.WritableSignal<Set<string>>;
|
|
2786
|
-
/**
|
|
2787
|
-
* Unified filter state: single source of truth for the multi-condition
|
|
2788
|
-
* builder. The tag-bar displays a derived view via `FilterEngine.toLabel()`.
|
|
2789
|
-
*/
|
|
2790
|
-
readonly filterModel: _angular_core.WritableSignal<FilterModel>;
|
|
2791
|
-
/** `false` disables paging entirely — `paginatedData` returns the full
|
|
2792
|
-
* filtered set instead of slicing by `pageSize`. */
|
|
2793
|
-
readonly paginationEnabled: _angular_core.WritableSignal<boolean>;
|
|
2794
|
-
readonly pageIndex: _angular_core.WritableSignal<number>;
|
|
2795
|
-
readonly pageSize: _angular_core.WritableSignal<number>;
|
|
2796
|
-
readonly visibleRowCount: _angular_core.WritableSignal<number>;
|
|
2797
|
-
readonly scrollLeft: _angular_core.WritableSignal<number>;
|
|
2798
|
-
readonly scrollTop: _angular_core.WritableSignal<number>;
|
|
2799
|
-
readonly scrollViewportWidth: _angular_core.WritableSignal<number>;
|
|
2800
|
-
readonly scrollViewportHeight: _angular_core.WritableSignal<number>;
|
|
2801
|
-
readonly scrollContentTotalWidth: _angular_core.WritableSignal<number>;
|
|
2802
|
-
readonly horizontalVirtualScrollEnabled: _angular_core.WritableSignal<boolean>;
|
|
2803
|
-
readonly visibleColumnRange: _angular_core.WritableSignal<{
|
|
2804
|
-
start: number;
|
|
2805
|
-
end: number;
|
|
2806
|
-
}>;
|
|
2807
|
-
/** Range of display-row indices currently mounted in the DOM. */
|
|
2808
|
-
readonly visibleRowRange: _angular_core.WritableSignal<{
|
|
2809
|
-
start: number;
|
|
2810
|
-
end: number;
|
|
2811
|
-
}>;
|
|
2812
|
-
/** Pixel offset of the first rendered row from the top of the body content. */
|
|
2813
|
-
readonly topSpacerHeight: _angular_core.WritableSignal<number>;
|
|
2814
|
-
/** Pixel offset between the last rendered row and the bottom of the body content. */
|
|
2815
|
-
readonly bottomSpacerHeight: _angular_core.WritableSignal<number>;
|
|
2816
|
-
/** Total height of all display rows (data + group, includes expanded detail). */
|
|
2817
|
-
readonly totalRowsHeight: _angular_core.WritableSignal<number>;
|
|
2818
|
-
readonly isLoading: _angular_core.WritableSignal<boolean>;
|
|
2819
|
-
readonly rowHeight: _angular_core.WritableSignal<number>;
|
|
2820
|
-
readonly density: _angular_core.WritableSignal<GridDensity>;
|
|
2821
|
-
readonly selectedRowIds: _angular_core.WritableSignal<Set<unknown>>;
|
|
2822
|
-
readonly excludedRowIds: _angular_core.WritableSignal<Set<unknown>>;
|
|
2823
|
-
readonly selectAllMode: _angular_core.WritableSignal<"none" | "page" | "all">;
|
|
2824
|
-
readonly focusedCell: _angular_core.WritableSignal<CellCoord | null>;
|
|
2825
|
-
readonly selectedCell: _angular_core.WritableSignal<CellCoord | null>;
|
|
2826
|
-
readonly cellRange: _angular_core.WritableSignal<{
|
|
2827
|
-
start: CellCoord;
|
|
2828
|
-
end: CellCoord;
|
|
2829
|
-
} | null>;
|
|
2830
|
-
readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
2831
|
-
readonly focusSource: _angular_core.WritableSignal<"click" | "keyboard" | null>;
|
|
2832
|
-
readonly isFilling: _angular_core.WritableSignal<boolean>;
|
|
2833
|
-
readonly fillAnchor: _angular_core.WritableSignal<CellCoord | null>;
|
|
2834
|
-
readonly fillTarget: _angular_core.WritableSignal<CellCoord | null>;
|
|
2835
|
-
readonly cutSource: _angular_core.WritableSignal<{
|
|
2836
|
-
start: CellCoord;
|
|
2837
|
-
end: CellCoord;
|
|
2838
|
-
} | null>;
|
|
2839
|
-
readonly expandedRowIds: _angular_core.WritableSignal<Set<unknown>>;
|
|
2840
|
-
readonly rowIdField: _angular_core.WritableSignal<string>;
|
|
2841
|
-
readonly multiCellSelectionEnabled: _angular_core.WritableSignal<boolean>;
|
|
2842
|
-
readonly activeSelectionMode: _angular_core.WritableSignal<"none" | "rows" | "cells">;
|
|
2843
|
-
readonly draggingColumn: _angular_core.WritableSignal<string | null>;
|
|
2844
|
-
readonly dropIndicatorIndex: _angular_core.WritableSignal<number | null>;
|
|
2845
|
-
readonly cellEditState: _angular_core.WritableSignal<CellEditState>;
|
|
2846
|
-
/** `true` while the user is editing a formula inside the top formula bar
|
|
2847
|
-
* (outside any cell). Consumed by `FormulaEngine.isFormulaEditActive`
|
|
2848
|
-
* so headers show column-letter badges during bar-driven edits too. */
|
|
2849
|
-
readonly formulaBarEditingActive: _angular_core.WritableSignal<boolean>;
|
|
2850
|
-
readonly visibleColumns: _angular_core.Signal<ColumnStateEntry[]>;
|
|
2851
|
-
readonly pinnedLeftColumns: _angular_core.Signal<ColumnStateEntry[]>;
|
|
2852
|
-
readonly unpinnedColumns: _angular_core.Signal<ColumnStateEntry[]>;
|
|
2853
|
-
readonly pinnedRightColumns: _angular_core.Signal<ColumnStateEntry[]>;
|
|
2854
|
-
readonly pinnedLeftWidth: _angular_core.Signal<number>;
|
|
2855
|
-
readonly pinnedRightWidth: _angular_core.Signal<number>;
|
|
2856
|
-
/**
|
|
2857
|
-
* Cumulative `left` offset (px) for each pinned-left column, in render
|
|
2858
|
-
* order. Consumers add their own utility-cell prefix (checkbox/expand) and
|
|
2859
|
-
* pass the result to `position: sticky; left: <offset>px`.
|
|
2860
|
-
* Returns an array of length `pinnedLeftColumns().length`.
|
|
2861
|
-
*/
|
|
2862
|
-
readonly pinnedLeftCumulativeOffsets: _angular_core.Signal<number[]>;
|
|
2863
|
-
/**
|
|
2864
|
-
* Cumulative `right` offset (px) for each pinned-right column, in render
|
|
2865
|
-
* order. The first column from the right (visually leftmost in the
|
|
2866
|
-
* pinned-right group) has the largest `right` offset.
|
|
2867
|
-
*/
|
|
2868
|
-
readonly pinnedRightCumulativeOffsets: _angular_core.Signal<number[]>;
|
|
2869
|
-
readonly unpinnedWidth: _angular_core.Signal<number>;
|
|
2870
|
-
/**
|
|
2871
|
-
* Unpinned columns actually rendered in data rows. When horizontal virtual scroll
|
|
2872
|
-
* is disabled, this is the full set; when enabled, it's the slice inside the
|
|
2873
|
-
* current visibleColumnRange. Header and filter row keep rendering the full set —
|
|
2874
|
-
* only row cells are virtualized.
|
|
2875
|
-
*/
|
|
2876
|
-
/**
|
|
2877
|
-
* Effective column range with edit-mode widening: keeps the column being edited
|
|
2878
|
-
* inside the rendered window so the editor never gets torn down mid-edit.
|
|
2879
|
-
*/
|
|
2880
|
-
readonly effectiveColumnRange: _angular_core.Signal<{
|
|
2881
|
-
start: number;
|
|
2882
|
-
end: number;
|
|
2883
|
-
}>;
|
|
2884
|
-
readonly renderedUnpinnedColumns: _angular_core.Signal<ColumnStateEntry[]>;
|
|
2885
|
-
readonly leadingColumnSpacer: _angular_core.Signal<number>;
|
|
2886
|
-
readonly trailingColumnSpacer: _angular_core.Signal<number>;
|
|
2887
|
-
readonly columnDefMap: _angular_core.Signal<Map<string, ColumnDef<T>>>;
|
|
2888
|
-
/** `true` when at least one column declares `allowFormula: true`. */
|
|
2889
|
-
readonly hasFormulaColumns: _angular_core.Signal<boolean>;
|
|
2890
|
-
readonly gridTemplateColumns: _angular_core.Signal<string>;
|
|
2891
|
-
readonly totalContentWidth: _angular_core.Signal<number>;
|
|
2892
|
-
readonly totalPages: _angular_core.Signal<number>;
|
|
2893
|
-
readonly hasMore: _angular_core.Signal<boolean>;
|
|
2894
|
-
initColumns(defs: ColumnDef<T>[]): void;
|
|
2895
|
-
updateColumnState(field: string, updates: Partial<ColumnStateEntry>): void;
|
|
2896
|
-
private resolveWidth;
|
|
2897
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridStateManager<any>, never>;
|
|
2898
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<GridStateManager<any>>;
|
|
2899
|
-
}
|
|
2900
|
-
|
|
2901
|
-
declare class RowSelectionEngine<T = unknown> {
|
|
2902
|
-
private readonly state;
|
|
2903
|
-
private readonly engine;
|
|
2904
|
-
readonly selectedIds: _angular_core.Signal<Set<unknown>>;
|
|
2905
|
-
readonly excludedIds: _angular_core.Signal<Set<unknown>>;
|
|
2906
|
-
/**
|
|
2907
|
-
* Anchor row for shift-click range selection. We track the row object
|
|
2908
|
-
* (not its index) so the anchor stays valid across grouping, sorting and
|
|
2909
|
-
* filtering — where display indices shift without the underlying row
|
|
2910
|
-
* changing.
|
|
2911
|
-
*/
|
|
2912
|
-
readonly lastToggledRow: _angular_core.WritableSignal<T | null>;
|
|
2913
|
-
readonly count: _angular_core.Signal<number>;
|
|
2914
|
-
readonly pageSelectedCount: _angular_core.Signal<number>;
|
|
2915
|
-
readonly isAllSelected: _angular_core.Signal<boolean>;
|
|
2916
|
-
readonly isIndeterminate: _angular_core.Signal<boolean>;
|
|
2917
|
-
/**
|
|
2918
|
-
* Extends the selection from the last-toggled row (the anchor) to `endRow`,
|
|
2919
|
-
* resolving positions by object identity against the currently paginated
|
|
2920
|
-
* data. This is robust to grouping / sorting / filtering because we don't
|
|
2921
|
-
* rely on numeric indices, and works across any visible page slice.
|
|
2922
|
-
*/
|
|
2923
|
-
selectRowRangeToRow(endRow: T): void;
|
|
2924
|
-
toggleRow(row: T): void;
|
|
2925
|
-
isRowSelected(row: T): boolean;
|
|
2926
|
-
selectAllPage(): void;
|
|
2927
|
-
selectAll(): void;
|
|
2928
|
-
deselectAll(): void;
|
|
2929
|
-
deselectPage(): void;
|
|
2930
|
-
toggleSelectAllPage(): void;
|
|
2931
|
-
getSelectionEvent(): RowSelectionEvent<T>;
|
|
2932
|
-
getRowId(row: T): unknown;
|
|
2933
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RowSelectionEngine<any>, never>;
|
|
2934
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<RowSelectionEngine<any>>;
|
|
2935
|
-
}
|
|
2936
|
-
|
|
2937
|
-
/**
|
|
2938
|
-
* Public types for the formula engine. These are the only symbols consumers
|
|
2939
|
-
* of the grid need to interact with. The parser / evaluator / DAG live in
|
|
2940
|
-
* `features/formula/` and expose the public surface through `FormulaEngine`.
|
|
2941
|
-
*
|
|
2942
|
-
* Shape overview:
|
|
2943
|
-
* - `CellAddress` — stable (rowId, field) tuple.
|
|
2944
|
-
* - `FormulaValue` — tagged union of numbers, strings, booleans, empty
|
|
2945
|
-
* and errors. Errors propagate through operators.
|
|
2946
|
-
* - `FormulaError` — Excel-compatible error codes + `#PARSE!`.
|
|
2947
|
-
* - `FormulaFunction*` — registration shape for built-in + custom funcs.
|
|
2948
|
-
* - `FormulaChange*` / `FormulaError*` — events emitted by the grid.
|
|
2949
|
-
*/
|
|
2950
|
-
/** Stable cell identifier, resistant to sort/filter/pagination. */
|
|
2951
|
-
interface CellAddress {
|
|
2952
|
-
rowId: string | number;
|
|
2953
|
-
field: string;
|
|
2954
|
-
}
|
|
2955
|
-
/** Excel-compatible error codes, plus mozaic-specific `#PARSE!`. */
|
|
2956
|
-
type FormulaError = '#DIV/0!' | '#VALUE!' | '#REF!' | '#NAME?' | '#NUM!' | '#N/A' | '#CYCLE!' | '#PARSE!';
|
|
2957
|
-
/**
|
|
2958
|
-
* Tagged union for any value that can appear as a formula operand or result.
|
|
2959
|
-
* `empty` represents a cell with no source value (distinct from the empty
|
|
2960
|
-
* string) and coerces to 0 in arithmetic contexts, `""` in textual ones.
|
|
2961
|
-
*/
|
|
2962
|
-
type FormulaValue = {
|
|
2963
|
-
kind: 'number';
|
|
2964
|
-
value: number;
|
|
2965
|
-
} | {
|
|
2966
|
-
kind: 'string';
|
|
2967
|
-
value: string;
|
|
2968
|
-
} | {
|
|
2969
|
-
kind: 'boolean';
|
|
2970
|
-
value: boolean;
|
|
2971
|
-
} | {
|
|
2972
|
-
kind: 'empty';
|
|
2973
|
-
} | {
|
|
2974
|
-
kind: 'error';
|
|
2975
|
-
error: FormulaError;
|
|
2976
|
-
};
|
|
2977
|
-
/**
|
|
2978
|
-
* Context passed to every function implementation. Keeps evaluation
|
|
2979
|
-
* side-effect free: the engine owns the cell store and only exposes a
|
|
2980
|
-
* `resolveRef` primitive. Range expansion is handled by the engine before
|
|
2981
|
-
* the function is invoked, so implementations receive a flat value array.
|
|
2982
|
-
*/
|
|
2983
|
-
interface FormulaEvalContext {
|
|
2984
|
-
/** Current cell being evaluated (used for diagnostics only). */
|
|
2985
|
-
readonly addr?: CellAddress;
|
|
2986
|
-
/**
|
|
2987
|
-
* Resolve a long-form reference. Returns `#REF!` when the target is
|
|
2988
|
-
* missing (column removed, row deleted). The engine is responsible for
|
|
2989
|
-
* cycle protection — functions must not worry about recursion.
|
|
2990
|
-
*/
|
|
2991
|
-
resolveRef(target: CellAddress): FormulaValue;
|
|
2992
|
-
/** Active locale, used by date/text helpers that are locale-aware. */
|
|
2993
|
-
readonly locale: 'en' | 'fr';
|
|
2994
|
-
}
|
|
2995
|
-
/** Arity constraint for a function registration. */
|
|
2996
|
-
type FormulaArity = number | 'variadic' | readonly [min: number, max: number];
|
|
2997
|
-
/**
|
|
2998
|
-
* Human-readable metadata shown in the autocomplete panel. When absent, the
|
|
2999
|
-
* suggestion listing falls back to the function name only.
|
|
3000
|
-
*/
|
|
3001
|
-
interface FormulaFunctionDocs {
|
|
3002
|
-
/** Canonical signature string, e.g. `SUM(number1, [number2, ...])`. */
|
|
3003
|
-
readonly signature: string;
|
|
3004
|
-
/** One-line summary — displayed next to the signature in FR by default. */
|
|
3005
|
-
readonly summary: string;
|
|
3006
|
-
}
|
|
3007
|
-
interface FormulaFunctionImpl {
|
|
3008
|
-
/** Number of arguments accepted. */
|
|
3009
|
-
readonly arity: FormulaArity;
|
|
3010
|
-
/**
|
|
3011
|
-
* Whether the function accepts a range argument (e.g. `SUM(A1:B3)`).
|
|
3012
|
-
* When `true`, each range is flattened into the `args` array in
|
|
3013
|
-
* row-major order. When `false`, passing a range yields `#VALUE!`.
|
|
3014
|
-
*
|
|
3015
|
-
* Defaults to `false`.
|
|
3016
|
-
*/
|
|
3017
|
-
readonly acceptsRange?: boolean;
|
|
3018
|
-
/** Optional documentation — consumed by the editor's autocomplete panel. */
|
|
3019
|
-
readonly docs?: FormulaFunctionDocs;
|
|
3020
|
-
/** Evaluate the function. Must be pure (no I/O, no mutation). */
|
|
3021
|
-
evaluate(args: FormulaValue[], ctx: FormulaEvalContext): FormulaValue;
|
|
3022
|
-
}
|
|
3023
|
-
/** Lookup table of function name (uppercase) → implementation. */
|
|
3024
|
-
type FormulaFunctionRegistry = Readonly<Record<string, FormulaFunctionImpl>>;
|
|
3025
|
-
/**
|
|
3026
|
-
* Source for storing formulas externally (instead of serialising the raw
|
|
3027
|
-
* formula into the row's field). Mirror of AG-Grid's `formulaDataSource`.
|
|
3028
|
-
*/
|
|
3029
|
-
interface FormulaDataSource {
|
|
3030
|
-
getFormula(addr: CellAddress): string | undefined;
|
|
3031
|
-
setFormula(addr: CellAddress, formula: string | undefined): void;
|
|
3032
|
-
/** Optional bulk hydration — useful for persistence layers. */
|
|
3033
|
-
hydrate?(entries: Iterable<{
|
|
3034
|
-
addr: CellAddress;
|
|
3035
|
-
formula: string;
|
|
3036
|
-
}>): void;
|
|
3037
|
-
}
|
|
3038
|
-
interface FormulaChangeEvent {
|
|
3039
|
-
addr: CellAddress;
|
|
3040
|
-
/** Canonical long-form formula (references keyed by rowId/field). */
|
|
3041
|
-
formula: string;
|
|
3042
|
-
/** Last evaluated value after the change. */
|
|
3043
|
-
evaluated: FormulaValue;
|
|
3044
|
-
}
|
|
3045
|
-
interface FormulaErrorEvent {
|
|
3046
|
-
addr: CellAddress;
|
|
3047
|
-
formula: string;
|
|
3048
|
-
error: FormulaError;
|
|
3049
|
-
}
|
|
3050
|
-
/** Factory helpers for callers that prefer not to build literals by hand. */
|
|
3051
|
-
declare const FormulaValues: {
|
|
3052
|
-
readonly number: (value: number) => FormulaValue;
|
|
3053
|
-
readonly string: (value: string) => FormulaValue;
|
|
3054
|
-
readonly boolean: (value: boolean) => FormulaValue;
|
|
3055
|
-
readonly empty: () => FormulaValue;
|
|
3056
|
-
readonly error: (error: FormulaError) => FormulaValue;
|
|
3057
|
-
};
|
|
3058
|
-
/** Narrow a value to a number, following Excel coercion rules. */
|
|
3059
|
-
declare function toNumber(v: FormulaValue): number | FormulaError;
|
|
3060
|
-
/** Narrow a value to a string, following Excel coercion rules. */
|
|
3061
|
-
declare function toStringValue(v: FormulaValue): string | FormulaError;
|
|
3062
|
-
/** Narrow a value to a boolean, following Excel coercion rules. */
|
|
3063
|
-
declare function toBoolean(v: FormulaValue): boolean | FormulaError;
|
|
3064
|
-
/** Returns the first error found in the given values, or `null`. */
|
|
3065
|
-
declare function firstError(values: readonly FormulaValue[]): FormulaError | null;
|
|
3066
|
-
|
|
3067
|
-
/**
|
|
3068
|
-
* Maps structured refs (A1-backed, field-keyed) to / from long-form
|
|
3069
|
-
* `CellAddress` tuples, and converts formula *source strings* between the
|
|
3070
|
-
* A1 edit surface and the `REF(COLUMN("…"),ROW(N))` storage form.
|
|
3071
|
-
*
|
|
3072
|
-
* The mapper is the only component aware of the grid's current column
|
|
3073
|
-
* order — every other layer works exclusively with addresses, so reordering
|
|
3074
|
-
* columns or renaming a field's display label never breaks a stored formula.
|
|
3075
|
-
*
|
|
3076
|
-
* Surface round-trip:
|
|
3077
|
-
*
|
|
3078
|
-
* Editor types → a1ToLongForm(ctx) → REF(COLUMN(…),ROW(…)) (stored)
|
|
3079
|
-
* Stored REF long-form → longFormToA1(ctx) → A1 (displayed)
|
|
3080
|
-
*
|
|
3081
|
-
* The mapper is intentionally stateless and receives its dependencies
|
|
3082
|
-
* (fields list + row id list) through the method parameters. This keeps
|
|
3083
|
-
* it unit-testable without instantiating the whole grid.
|
|
3084
|
-
*/
|
|
3085
|
-
|
|
3086
|
-
interface RefMapperContext {
|
|
3087
|
-
/**
|
|
3088
|
-
* Ordered list of column fields that can participate in formulas. Used
|
|
3089
|
-
* for A1 letter ↔ field conversion and for existence checks (an unknown
|
|
3090
|
-
* field yields `#REF!`).
|
|
3091
|
-
*/
|
|
3092
|
-
readonly fields: readonly string[];
|
|
3093
|
-
/**
|
|
3094
|
-
* Row identifiers in display order. Index 0 = row `1` in the user-facing
|
|
3095
|
-
* surface syntax. For grids in server mode, callers typically provide the
|
|
3096
|
-
* *currently loaded* subset — unresolved references surface as `#REF!`
|
|
3097
|
-
* which is the expected behaviour for page-scoped formulas.
|
|
3098
|
-
*/
|
|
3099
|
-
readonly rowIds: readonly (string | number)[];
|
|
3100
|
-
/**
|
|
3101
|
-
* Row id of the formula being resolved. The editor-side A1 helpers use
|
|
3102
|
-
* this to detect same-row refs (so the display can be relative by
|
|
3103
|
-
* default).
|
|
3104
|
-
*/
|
|
3105
|
-
readonly currentRowId?: string | number;
|
|
3106
|
-
}
|
|
3107
|
-
/** `(addr) → "A1"` using the current column order. */
|
|
3108
|
-
declare function addressToA1(addr: CellAddress, ctx: RefMapperContext): string | undefined;
|
|
3109
|
-
|
|
3110
|
-
/**
|
|
3111
|
-
* `FormulaEngine` — grid-scoped service that owns every formula cell, the
|
|
3112
|
-
* dependency DAG linking them, and the evaluator that turns stored
|
|
3113
|
-
* formulas into `FormulaValue`s.
|
|
3114
|
-
*
|
|
3115
|
-
* Responsibilities (Phase 1):
|
|
3116
|
-
* - Parse + resolve a raw formula when the user commits an edit.
|
|
3117
|
-
* - Update the dependency graph and detect cycles (`#CYCLE!`).
|
|
3118
|
-
* - Re-evaluate the mutated cell and every descendant in topological order.
|
|
3119
|
-
* - Expose a `values` signal the grid renders against.
|
|
3120
|
-
* - Provide an explicit `invalidate(addr)` so inline-edit can refresh
|
|
3121
|
-
* dependents after a *non-formula* source cell changes — avoiding a
|
|
3122
|
-
* blanket re-eval of the whole dataset.
|
|
3123
|
-
*
|
|
3124
|
-
* Out of scope (Phase ≥ 2):
|
|
3125
|
-
* - Editor component + autocomplete (uses `longFormToA1` under the hood).
|
|
3126
|
-
* - Clipboard / fill-handle rebasing of relative refs.
|
|
3127
|
-
* - History integration (undo/redo of formula mutations).
|
|
3128
|
-
*/
|
|
3129
|
-
|
|
3130
|
-
declare class FormulaEngine<T = unknown> {
|
|
3131
|
-
private readonly state;
|
|
3132
|
-
private readonly cells;
|
|
3133
|
-
private readonly dag;
|
|
3134
|
-
/** Last-evaluated values keyed by `rowId|field`. */
|
|
3135
|
-
private readonly valuesSignal;
|
|
3136
|
-
/** Function registry — consumers can replace via `setFunctions`. */
|
|
3137
|
-
private functions;
|
|
3138
|
-
/** Active locale for the parser/evaluator. */
|
|
3139
|
-
private locale;
|
|
3140
|
-
/** Snapshot of all evaluated formula values. Consumers read by key. */
|
|
3141
|
-
readonly values: Signal<ReadonlyMap<string, FormulaValue>>;
|
|
3142
|
-
/** Whether any formula is currently tracked. */
|
|
3143
|
-
readonly hasAnyFormula: Signal<boolean>;
|
|
3144
|
-
/**
|
|
3145
|
-
* `true` when the user is currently editing a cell whose column has
|
|
3146
|
-
* `allowFormula: true`. The grid's header uses this to surface the
|
|
3147
|
-
* structured-ref column badges (`[price]`, `[qty]`, …) above each
|
|
3148
|
-
* header, matching what the user types in their formula.
|
|
3149
|
-
*/
|
|
3150
|
-
readonly isFormulaEditActive: Signal<boolean>;
|
|
3151
|
-
/** Merge / replace the function registry (called once at grid init). */
|
|
3152
|
-
setFunctions(functions: FormulaFunctionRegistry): void;
|
|
3153
|
-
/** Read-only view of the current function registry — used by the editor's
|
|
3154
|
-
* autocomplete panel to enumerate available names + their docs. */
|
|
3155
|
-
getFunctions(): FormulaFunctionRegistry;
|
|
3156
|
-
setLocale(locale: 'en' | 'fr'): void;
|
|
3157
|
-
hasFormula(addr: CellAddress): boolean;
|
|
3158
|
-
/** Raw formula string, or `undefined` when none is stored. */
|
|
3159
|
-
getFormula(addr: CellAddress): string | undefined;
|
|
3160
|
-
/** Last-evaluated value, or `undefined` when no formula is stored. */
|
|
3161
|
-
valueAt(addr: CellAddress): FormulaValue | undefined;
|
|
3162
|
-
/**
|
|
3163
|
-
* Formula re-presented as A1 surface syntax for the current column /
|
|
3164
|
-
* row order. Returns `undefined` when the cell has no formula. Used by
|
|
3165
|
-
* the editor when opening a cell for edit.
|
|
3166
|
-
*/
|
|
3167
|
-
displayFormula(addr: CellAddress): string | undefined;
|
|
3168
|
-
/**
|
|
3169
|
-
* Registers or updates a formula at `addr`. Returns the freshly-computed
|
|
3170
|
-
* value. Invalid formulas are stored with their error as value so the
|
|
3171
|
-
* grid can render `#PARSE!` / `#REF!` etc. instead of silently dropping.
|
|
3172
|
-
*/
|
|
3173
|
-
set(addr: CellAddress, rawFormula: string): FormulaValue;
|
|
3174
|
-
/** Removes the formula at `addr`. Descendants are re-evaluated. */
|
|
3175
|
-
remove(addr: CellAddress): void;
|
|
3176
|
-
/**
|
|
3177
|
-
* Notifies the engine that a non-formula cell changed. Only dependents
|
|
3178
|
-
* are re-evaluated — this is the hook used by `InlineEditEngine` after
|
|
3179
|
-
* committing a plain value edit.
|
|
3180
|
-
*/
|
|
3181
|
-
invalidate(addr: CellAddress): void;
|
|
3182
|
-
/** Wipes every formula / value. */
|
|
3183
|
-
clear(): void;
|
|
3184
|
-
/**
|
|
3185
|
-
* Reconciles the engine against `sourceData()`: any cell whose column
|
|
3186
|
-
* declares `allowFormula: true` and whose value is a `=…` string is
|
|
3187
|
-
* registered (or updated). Cells previously registered but no longer
|
|
3188
|
-
* present (row removed, value changed to a literal) are dropped.
|
|
3189
|
-
*
|
|
3190
|
-
* Designed to be called from a grid-level effect tracking
|
|
3191
|
-
* `(formulas, sourceData, columnDefMap)` so that formulas baked into
|
|
3192
|
-
* the initial dataset are evaluated on first render — without it, the
|
|
3193
|
-
* engine would only learn about a formula after the user committed an
|
|
3194
|
-
* inline edit on it.
|
|
3195
|
-
*
|
|
3196
|
-
* The reconciliation is incremental: identical formula strings short-
|
|
3197
|
-
* circuit (no re-parse, no re-eval) so the call is cheap on stable data.
|
|
3198
|
-
*/
|
|
3199
|
-
syncFromSource(allowFormula: (field: string) => boolean): void;
|
|
3200
|
-
/**
|
|
3201
|
-
* Re-parses every stored formula so refs pick up the latest column
|
|
3202
|
-
* order / row list. Called by the grid shell when visibility or row
|
|
3203
|
-
* identity changes (reorder, filter flip, …).
|
|
3204
|
-
*/
|
|
3205
|
-
rebuild(): void;
|
|
3206
|
-
private refMapperContext;
|
|
3207
|
-
private storeError;
|
|
3208
|
-
/**
|
|
3209
|
-
* Evaluate the given seeds and every descendant in topological order.
|
|
3210
|
-
* Each node is first checked for cycle participation — any node inside
|
|
3211
|
-
* a cycle reports `#CYCLE!` without attempting evaluation (which would
|
|
3212
|
-
* recurse through the cached values and either spin or yield garbage).
|
|
3213
|
-
*/
|
|
3214
|
-
private revalidateFrom;
|
|
3215
|
-
private makeEvalContext;
|
|
3216
|
-
/** Resolve a reference: formula cell → cached value, else source data. */
|
|
3217
|
-
private resolveRef;
|
|
3218
|
-
private readSourceValue;
|
|
3219
|
-
private commitValues;
|
|
3220
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormulaEngine<any>, never>;
|
|
3221
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FormulaEngine<any>>;
|
|
3222
|
-
}
|
|
3223
|
-
|
|
3224
|
-
interface GridPlugin {
|
|
3225
|
-
name: string;
|
|
3226
|
-
init(state: GridStateManager<never>): void;
|
|
3227
|
-
destroy(): void;
|
|
3228
|
-
}
|
|
3229
|
-
|
|
3230
|
-
type GridToolbarSlot = 'start' | 'end';
|
|
3231
|
-
declare class MozGridToolbarDef {
|
|
3232
|
-
readonly slot: _angular_core.InputSignal<GridToolbarSlot>;
|
|
3233
|
-
readonly template: TemplateRef<any>;
|
|
3234
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridToolbarDef, never>;
|
|
3235
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MozGridToolbarDef, "[mozGridToolbarDef]", never, { "slot": { "alias": "mozGridToolbarDef"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3236
|
-
}
|
|
3237
|
-
|
|
3238
|
-
/**
|
|
3239
|
-
* Discriminator for the empty-state context.
|
|
3240
|
-
* - `no-data` : the source dataset is empty (no rows ever loaded).
|
|
3241
|
-
* - `no-results` : the dataset is non-empty but the active filter / search
|
|
3242
|
-
* produced zero rows.
|
|
3243
|
-
*
|
|
3244
|
-
* A template registered without an explicit kind defaults to `no-data` and
|
|
3245
|
-
* is also used as the fallback when `no-results` has no dedicated template.
|
|
3246
|
-
*/
|
|
3247
|
-
type GridEmptyKind = 'no-data' | 'no-results';
|
|
3248
|
-
/**
|
|
3249
|
-
* Marks a `<ng-template>` projected into `<moz-grid>` as the renderer for
|
|
3250
|
-
* the empty state. Register one or two templates:
|
|
3251
|
-
*
|
|
3252
|
-
* ```html
|
|
3253
|
-
* <moz-grid [data]="rows">
|
|
3254
|
-
* <ng-template mozGridEmptyDef>
|
|
3255
|
-
* <p>Aucune donnée pour le moment</p>
|
|
3256
|
-
* </ng-template>
|
|
3257
|
-
*
|
|
3258
|
-
* <ng-template mozGridEmptyDef="no-results" let-ctx>
|
|
3259
|
-
* <p>Aucun résultat pour vos filtres ({{ ctx.activeFilterCount }})</p>
|
|
3260
|
-
* <button (click)="ctx.clearFilters()">Réinitialiser</button>
|
|
3261
|
-
* </ng-template>
|
|
3262
|
-
* </moz-grid>
|
|
3263
|
-
* ```
|
|
3264
|
-
*
|
|
3265
|
-
* The implicit context (`let-ctx`) exposes `{ activeFilterCount, clearFilters }`.
|
|
3266
|
-
*/
|
|
3267
|
-
declare class MozGridEmptyDef {
|
|
3268
|
-
readonly kind: _angular_core.InputSignal<GridEmptyKind>;
|
|
3269
|
-
readonly template: TemplateRef<GridEmptyContext>;
|
|
3270
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridEmptyDef, never>;
|
|
3271
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MozGridEmptyDef, "[mozGridEmptyDef]", never, { "kind": { "alias": "mozGridEmptyDef"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3272
|
-
}
|
|
3273
|
-
/** Context object passed to a `mozGridEmptyDef` template. */
|
|
3274
|
-
interface GridEmptyContext {
|
|
3275
|
-
/** Number of active filter conditions; `0` when called with `no-data`. */
|
|
3276
|
-
activeFilterCount: number;
|
|
3277
|
-
/** Convenience callback to clear all filter conditions. */
|
|
3278
|
-
clearFilters: () => void;
|
|
3279
|
-
}
|
|
3280
|
-
|
|
3281
|
-
declare class MozGridComponent<T = unknown> {
|
|
3282
|
-
protected readonly state: GridStateManager<T>;
|
|
3283
|
-
private readonly gridEngine;
|
|
3284
|
-
private readonly sortEngine;
|
|
3285
|
-
private readonly inlineEditEngine;
|
|
3286
|
-
private readonly resizeEngine;
|
|
3287
|
-
protected readonly rowSelectionEngine: RowSelectionEngine<T>;
|
|
3288
|
-
private readonly cellSelectionEngine;
|
|
3289
|
-
private readonly keyboardEngine;
|
|
3290
|
-
private readonly clipboardEngine;
|
|
3291
|
-
private readonly historyEngine;
|
|
3292
|
-
private readonly groupEngine;
|
|
3293
|
-
private readonly filterEngine;
|
|
3294
|
-
protected readonly formulaEngine: FormulaEngine<T>;
|
|
3295
|
-
private readonly refHighlight;
|
|
3296
|
-
private readonly persistenceEngine;
|
|
3297
|
-
private readonly exportEngine;
|
|
3298
|
-
private readonly validationEngine;
|
|
3299
|
-
private readonly verticalVirtualScrollEngine;
|
|
3300
|
-
private readonly horizontalVirtualScrollEngine;
|
|
3301
|
-
private readonly paginationEngine;
|
|
3302
|
-
private readonly infiniteScrollEngine;
|
|
3303
|
-
private readonly gridContainer;
|
|
3304
|
-
private readonly ngZone;
|
|
3305
|
-
private readonly destroyRef;
|
|
3306
|
-
private readonly drawerService;
|
|
3307
|
-
private readonly columnDefs;
|
|
3308
|
-
private readonly toolbarDefs;
|
|
3309
|
-
private readonly emptyDefs;
|
|
3310
|
-
readonly data: _angular_core.InputSignal<T[]>;
|
|
3311
|
-
readonly mode: _angular_core.InputSignal<"client" | "server">;
|
|
3312
|
-
readonly filterMode: _angular_core.InputSignal<FilterMode>;
|
|
3313
|
-
readonly totalItems: _angular_core.InputSignal<number>;
|
|
3314
|
-
readonly pagination: _angular_core.InputSignal<boolean>;
|
|
3315
|
-
readonly pageSize: _angular_core.InputSignal<number>;
|
|
3316
|
-
readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
|
|
3317
|
-
readonly rowHeight: _angular_core.InputSignal<number>;
|
|
3318
|
-
readonly loading: _angular_core.InputSignal<boolean>;
|
|
3319
|
-
readonly rowSelection: _angular_core.InputSignal<boolean>;
|
|
3320
|
-
readonly expandable: _angular_core.InputSignal<boolean>;
|
|
3321
|
-
readonly rowIdField: _angular_core.InputSignal<string>;
|
|
3322
|
-
/**
|
|
3323
|
-
* Enables the spreadsheet-style formula engine. When `true`, any cell
|
|
3324
|
-
* committed with a leading `=` in a column declaring `allowFormula: true`
|
|
3325
|
-
* is routed to `FormulaEngine` and its evaluated value is rendered.
|
|
3326
|
-
*/
|
|
3327
|
-
readonly formulas: _angular_core.InputSignal<boolean>;
|
|
3328
|
-
readonly detailTemplate: _angular_core.InputSignal<TemplateRef<unknown> | null>;
|
|
3329
|
-
readonly fullscreen: _angular_core.InputSignal<boolean>;
|
|
3330
|
-
readonly reorderable: _angular_core.InputSignal<boolean>;
|
|
3331
|
-
readonly stateKey: _angular_core.InputSignal<string | null>;
|
|
3332
|
-
/** Title for the default "no data" empty state. */
|
|
3333
|
-
readonly emptyDataTitle: _angular_core.InputSignal<string>;
|
|
3334
|
-
/** Description for the default "no data" empty state. */
|
|
3335
|
-
readonly emptyDataDescription: _angular_core.InputSignal<string>;
|
|
3336
|
-
/** Title for the default "no results" empty state (active filters). */
|
|
3337
|
-
readonly noResultsTitle: _angular_core.InputSignal<string>;
|
|
3338
|
-
/** Description for the default "no results" empty state. */
|
|
3339
|
-
readonly noResultsDescription: _angular_core.InputSignal<string>;
|
|
3340
|
-
/** CTA label on the "no results" state. Empty disables the button. */
|
|
3341
|
-
readonly noResultsActionLabel: _angular_core.InputSignal<string>;
|
|
3342
|
-
readonly exportable: _angular_core.InputSignal<boolean>;
|
|
3343
|
-
/**
|
|
3344
|
-
* `'client'` (default): the grid builds and downloads the CSV itself.
|
|
3345
|
-
* `'server'`: the grid emits `(exportRequest)` instead, leaving the consumer
|
|
3346
|
-
* to perform the export (e.g. a back-end download).
|
|
3347
|
-
*/
|
|
3348
|
-
readonly exportMode: _angular_core.InputSignal<"client" | "server">;
|
|
3349
|
-
readonly showToolbar: _angular_core.InputSignal<boolean>;
|
|
3350
|
-
readonly multiCellSelection: _angular_core.InputSignal<boolean>;
|
|
3351
|
-
readonly horizontalVirtualScroll: _angular_core.InputSignal<boolean>;
|
|
3352
|
-
readonly loadingStrategy: _angular_core.InputSignal<LoadingStrategy>;
|
|
3353
|
-
readonly scrollThreshold: _angular_core.InputSignal<number>;
|
|
3354
|
-
readonly plugins: _angular_core.InputSignal<GridPlugin[]>;
|
|
3355
|
-
readonly sortChange: _angular_core.OutputEmitterRef<SortEvent>;
|
|
3356
|
-
readonly pageChange: _angular_core.OutputEmitterRef<PageEvent>;
|
|
3357
|
-
readonly loadMore: _angular_core.OutputEmitterRef<LoadMoreEvent>;
|
|
3358
|
-
readonly cellEdit: _angular_core.OutputEmitterRef<CellEditEvent<T>>;
|
|
3359
|
-
readonly cellEditCancel: _angular_core.OutputEmitterRef<CellEditCancelEvent>;
|
|
3360
|
-
readonly selectionChange: _angular_core.OutputEmitterRef<RowSelectionEvent<T>>;
|
|
3361
|
-
readonly cellSelectionChange: _angular_core.OutputEmitterRef<CellSelectionEvent<T>>;
|
|
3362
|
-
readonly groupChange: _angular_core.OutputEmitterRef<GroupEvent>;
|
|
3363
|
-
readonly filterChange: _angular_core.OutputEmitterRef<FilterEvent>;
|
|
3364
|
-
readonly bulkEdit: _angular_core.OutputEmitterRef<BulkEditEvent>;
|
|
3365
|
-
readonly bulkCopy: _angular_core.OutputEmitterRef<BulkCopyEvent>;
|
|
3366
|
-
readonly bulkPaste: _angular_core.OutputEmitterRef<BulkPasteEvent>;
|
|
3367
|
-
readonly bulkDelete: _angular_core.OutputEmitterRef<BulkDeleteEvent>;
|
|
3368
|
-
readonly fillDown: _angular_core.OutputEmitterRef<FillDownEvent>;
|
|
3369
|
-
readonly settingsChange: _angular_core.OutputEmitterRef<GridSettingsResult>;
|
|
3370
|
-
/** Emitted when the toolbar export is triggered while `exportMode === 'server'`. */
|
|
3371
|
-
readonly exportRequest: _angular_core.OutputEmitterRef<GridExportEvent>;
|
|
3372
|
-
protected readonly isFullscreen: _angular_core.WritableSignal<boolean>;
|
|
3373
|
-
protected readonly groupPanelOpen: _angular_core.WritableSignal<boolean>;
|
|
3374
|
-
/**
|
|
3375
|
-
* Mode controlling how the builder emits `filterChange`:
|
|
3376
|
-
* - `auto` : each mutation triggers an event (default in `client` mode).
|
|
3377
|
-
* - `manual` : only an explicit Apply emits (default in `server` mode).
|
|
3378
|
-
*/
|
|
3379
|
-
readonly filterApplyMode: _angular_core.InputSignal<FilterApplyMode | null>;
|
|
3380
|
-
protected readonly resolvedFilterApplyMode: _angular_core.Signal<FilterApplyMode>;
|
|
3381
|
-
/** Display descriptors for the "FILTERED BY" tag bar. */
|
|
3382
|
-
protected readonly activeFilters: _angular_core.Signal<ActiveFilter[]>;
|
|
3383
|
-
protected readonly activeFilterCount: _angular_core.Signal<number>;
|
|
3384
|
-
/**
|
|
3385
|
-
* Kind of empty state to show, or `'none'` when rows are present:
|
|
3386
|
-
* - `'no-data'` : no rows have been loaded (and the source is empty).
|
|
3387
|
-
* - `'no-results'` : the source has rows but the active filters yield 0.
|
|
3388
|
-
*
|
|
3389
|
-
* Loading and infinite-scroll loading-more states are *not* treated as
|
|
3390
|
-
* empty (we let the loading indicator drive the UX instead).
|
|
3391
|
-
*/
|
|
3392
|
-
protected readonly emptyStateKind: _angular_core.Signal<"none" | GridEmptyKind>;
|
|
3393
|
-
/** Resolves the projected `<ng-template mozGridEmptyDef>` for the kind. */
|
|
3394
|
-
protected readonly emptyTemplate: _angular_core.Signal<TemplateRef<GridEmptyContext> | null>;
|
|
3395
|
-
/** Context object exposed to projected empty-state templates. */
|
|
3396
|
-
protected readonly emptyContext: _angular_core.Signal<GridEmptyContext>;
|
|
3397
|
-
/**
|
|
3398
|
-
* Wrap the empty context for `ngTemplateOutlet` so consumers can use
|
|
3399
|
-
* either `let-ctx` (positional, via `$implicit`) or named bindings
|
|
3400
|
-
* (`let-clearFilters="clearFilters"`) without having to choose at
|
|
3401
|
-
* declaration time.
|
|
3402
|
-
*/
|
|
3403
|
-
protected readonly emptyTemplateContext: _angular_core.Signal<{
|
|
3404
|
-
activeFilterCount: number;
|
|
3405
|
-
clearFilters: () => void;
|
|
3406
|
-
$implicit: GridEmptyContext;
|
|
3407
|
-
}>;
|
|
3408
|
-
/** CTA label for the default no-results state — hidden when no filters. */
|
|
3409
|
-
protected readonly resolvedNoResultsActionLabel: _angular_core.Signal<string>;
|
|
3410
|
-
protected readonly hasHiddenColumns: _angular_core.Signal<boolean>;
|
|
3411
|
-
protected readonly hiddenColumnsList: _angular_core.Signal<{
|
|
3412
|
-
field: string;
|
|
3413
|
-
label: string;
|
|
3414
|
-
}[]>;
|
|
3415
|
-
protected readonly toolbarStartDefs: _angular_core.Signal<MozGridToolbarDef[]>;
|
|
3416
|
-
protected readonly toolbarEndDefs: _angular_core.Signal<MozGridToolbarDef[]>;
|
|
3417
|
-
protected readonly selectionBannerVisible: _angular_core.Signal<boolean>;
|
|
3418
|
-
protected readonly selectionTotalCount: _angular_core.Signal<number>;
|
|
3419
|
-
protected readonly showPagination: _angular_core.Signal<boolean>;
|
|
3420
|
-
protected readonly showInfiniteScrollLoader: _angular_core.Signal<boolean>;
|
|
3421
|
-
/** Focused cell coord picked up by the formula bar — falls back to the
|
|
3422
|
-
* selected cell so the bar stays populated after focus is lost (e.g.
|
|
3423
|
-
* the user clicked outside to dismiss an overlay). */
|
|
3424
|
-
private readonly formulaBarCoord;
|
|
3425
|
-
/** Snapshot coord captured at edit entry — kept as a signal so the
|
|
3426
|
-
* bar's address reads from it reactively and stays pinned to the
|
|
3427
|
-
* original cell even when the user clicks elsewhere to pick refs. */
|
|
3428
|
-
private readonly formulaBarActiveCoord;
|
|
3429
|
-
/** A1 address (`A5`, `$A$5`) of the formula-bar target cell. While the
|
|
3430
|
-
* bar is editing the address stays pinned to the snapshot so ref
|
|
3431
|
-
* picking doesn't visually jump the label around. */
|
|
3432
|
-
protected readonly formulaBarAddress: _angular_core.Signal<string>;
|
|
3433
|
-
/** Formula source if the target cell holds one, otherwise the displayed
|
|
3434
|
-
* value as a string. Mirrors Excel's formula-bar behaviour. */
|
|
3435
|
-
protected readonly formulaBarContent: _angular_core.Signal<string>;
|
|
3436
|
-
/** `true` while the user is editing in the formula bar (mounts the
|
|
3437
|
-
* full-featured formula editor with ref highlights + autocomplete). */
|
|
3438
|
-
protected readonly formulaBarEditing: _angular_core.WritableSignal<boolean>;
|
|
3439
|
-
/** Live draft while the formula-bar input is focused. `null` means
|
|
3440
|
-
* "not editing" and the input mirrors `formulaBarContent()`. */
|
|
3441
|
-
protected readonly formulaBarDraft: _angular_core.WritableSignal<string | null>;
|
|
3442
|
-
/** Snapshot of the cell targeted when the formula bar gained focus.
|
|
3443
|
-
* Needed because blur fires *after* the click that moved the
|
|
3444
|
-
* selection elsewhere — without this we'd commit into the new cell. */
|
|
3445
|
-
private formulaBarEditSnapshot;
|
|
3446
|
-
/** Value shown in the bar input — draft while editing, committed value otherwise. */
|
|
3447
|
-
protected readonly formulaBarDisplay: _angular_core.Signal<string>;
|
|
3448
|
-
/** Address of the cell the formula bar is editing (for `@row`
|
|
3449
|
-
* highlighting inside the embedded editor). Reads from the snapshot
|
|
3450
|
-
* so it stays stable while the user clicks other cells to pick refs. */
|
|
3451
|
-
protected readonly formulaBarEditingAddr: _angular_core.Signal<CellAddress | null>;
|
|
3452
|
-
/** `true` when the target cell sits in an editable column. */
|
|
3453
|
-
protected readonly formulaBarEditable: _angular_core.Signal<boolean>;
|
|
3454
|
-
private columnsInitialized;
|
|
3455
|
-
private stateRestored;
|
|
3456
|
-
private documentMouseUpHandler;
|
|
3457
|
-
constructor();
|
|
3458
|
-
onSortClick(event: {
|
|
3459
|
-
field: string;
|
|
3460
|
-
isMultiSort: boolean;
|
|
3461
|
-
}): void;
|
|
3462
|
-
onMenuAction(event: {
|
|
3463
|
-
field: string;
|
|
3464
|
-
actionId: HeaderMenuActionId;
|
|
3465
|
-
}): void;
|
|
3466
|
-
onCellEdit(event: CellEditEvent<unknown>): void;
|
|
3467
|
-
onSelectAllToggle(): void;
|
|
3468
|
-
onRowSelectionToggle(): void;
|
|
3469
|
-
private activateRowSelectionMode;
|
|
3470
|
-
onKeydown(event: KeyboardEvent): void;
|
|
3471
|
-
private handleEditModeKeydown;
|
|
3472
|
-
private commitFromEditMode;
|
|
3473
|
-
private onCutShortcut;
|
|
3474
|
-
private onUndo;
|
|
3475
|
-
private onRedo;
|
|
3476
|
-
private onFillDownShortcut;
|
|
3477
|
-
private onFillRightShortcut;
|
|
3478
|
-
private onStartEditShortcut;
|
|
3479
|
-
private resetInfiniteScrollIfActive;
|
|
3480
|
-
private refocusGrid;
|
|
3481
|
-
onMouseUp(): void;
|
|
3482
|
-
/**
|
|
3483
|
-
* Shifts a formula's relative refs by the given (row, col) delta when the
|
|
3484
|
-
* value is a formula string dropped on a new cell during a fill. Non-formula
|
|
3485
|
-
* values are returned as-is so downstream code can still see the raw value.
|
|
3486
|
-
*/
|
|
3487
|
-
private shiftFormulaForFill;
|
|
3488
|
-
/**
|
|
3489
|
-
* Maps a display row index (from displayRow.index) to the actual index in
|
|
3490
|
-
* sourceData(). When grouping or sorting is active the display index doesn't
|
|
3491
|
-
* match sourceData order, so we resolve via object identity.
|
|
3492
|
-
*/
|
|
3493
|
-
private displayIndexToSourceIndex;
|
|
3494
|
-
private applyFill;
|
|
3495
|
-
private applyVerticalFill;
|
|
3496
|
-
private applyHorizontalFill;
|
|
3497
|
-
onGroupToggle(groupKey: string): void;
|
|
3498
|
-
onRemoveGroup(field: string): void;
|
|
3499
|
-
onToggleGroupSort(field: string): void;
|
|
3500
|
-
onSelectAllRows(): void;
|
|
3501
|
-
onClearSelection(): void;
|
|
3502
|
-
/** Removes a single condition by id (tag "×" button). */
|
|
3503
|
-
onRemoveFilter(id: string): void;
|
|
3504
|
-
/** Clears the whole filter model ("Remove all" button). */
|
|
3505
|
-
onRemoveAllFilters(): void;
|
|
3506
|
-
onFiltersClick(): void;
|
|
3507
|
-
onRestoreColumn(field: string): void;
|
|
3508
|
-
toggleFullscreen(): void;
|
|
3509
|
-
onRestoreAllColumns(): void;
|
|
3510
|
-
getColumnLabel(field: string): string;
|
|
3511
|
-
onResizeStart(event: {
|
|
3512
|
-
field: string;
|
|
3513
|
-
event: MouseEvent;
|
|
3514
|
-
}): void;
|
|
3515
|
-
onExportCsv(): void;
|
|
3516
|
-
onGroupClick(): void;
|
|
3517
|
-
private applyGroupResult;
|
|
3518
|
-
onKeyboardShortcutsClick(): void;
|
|
3519
|
-
/** Clicking the readonly preview flips the bar into edit mode: we mount
|
|
3520
|
-
* the full formula editor on the next tick (it auto-focuses) and
|
|
3521
|
-
* snapshot the target cell so blur-ordering races can't mis-route
|
|
3522
|
-
* the commit to a different row. */
|
|
3523
|
-
onFormulaBarInputFocus(): void;
|
|
3524
|
-
onFormulaBarEditorChange(value: string): void;
|
|
3525
|
-
onFormulaBarEditorCommit(): void;
|
|
3526
|
-
onFormulaBarEditorCancel(): void;
|
|
3527
|
-
/** Commit-on-outside-focus: when the user tabs or clicks truly away
|
|
3528
|
-
* from the bar (not onto a grid cell — cells aren't focusable so they
|
|
3529
|
-
* don't steal focus), persist the draft. */
|
|
3530
|
-
onFormulaBarWrapperFocusout(event: FocusEvent): void;
|
|
3531
|
-
private exitFormulaBarEdit;
|
|
3532
|
-
private commitFormulaBar;
|
|
3533
|
-
/**
|
|
3534
|
-
* Convert a formula-bar A1 draft to REF long-form storage. Kept as a
|
|
3535
|
-
* member so it can re-use the grid's reactive context without threading
|
|
3536
|
-
* `fields` / `rowIds` through every caller.
|
|
3537
|
-
*/
|
|
3538
|
-
private a1FormulaToStorage;
|
|
3539
|
-
onFormulaReferenceClick(): void;
|
|
3540
|
-
private static readonly DENSITY_ROW_HEIGHT;
|
|
3541
|
-
onSettingsClick(): void;
|
|
3542
|
-
private applySettings;
|
|
3543
|
-
private freezeLeft;
|
|
3544
|
-
private freezeRight;
|
|
3545
|
-
private getRangeRowIds;
|
|
3546
|
-
private getRangeFields;
|
|
3547
|
-
private getRowSelectionIds;
|
|
3548
|
-
private getAllVisibleFields;
|
|
3549
|
-
/**
|
|
3550
|
-
* Resolves a list of internal `HistoryCellChange` records into the public
|
|
3551
|
-
* `BulkCellChange[]` shape exposed on bulk events. Looks up each row's
|
|
3552
|
-
* configured id so consumers can persist changes without a second pass.
|
|
3553
|
-
*/
|
|
3554
|
-
private toBulkCellChanges;
|
|
3555
|
-
private clearSelectionAndCloseBar;
|
|
3556
|
-
onBulkEdit(): void;
|
|
3557
|
-
onBulkCopy(): void;
|
|
3558
|
-
onBulkPaste(): Promise<void>;
|
|
3559
|
-
onBulkExport(): void;
|
|
3560
|
-
onBulkDelete(): void;
|
|
3561
|
-
private extractRangeData;
|
|
3562
|
-
private extractRowSelectionData;
|
|
3563
|
-
private applyPasteToSelectedRows;
|
|
3564
|
-
private deleteSelectedRows;
|
|
3565
|
-
private coerceAndValidate;
|
|
3566
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridComponent<any>, never>;
|
|
3567
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MozGridComponent<any>, "moz-grid", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "filterMode": { "alias": "filterMode"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "rowSelection": { "alias": "rowSelection"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "rowIdField": { "alias": "rowIdField"; "required": false; "isSignal": true; }; "formulas": { "alias": "formulas"; "required": false; "isSignal": true; }; "detailTemplate": { "alias": "detailTemplate"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; "stateKey": { "alias": "stateKey"; "required": false; "isSignal": true; }; "emptyDataTitle": { "alias": "emptyDataTitle"; "required": false; "isSignal": true; }; "emptyDataDescription": { "alias": "emptyDataDescription"; "required": false; "isSignal": true; }; "noResultsTitle": { "alias": "noResultsTitle"; "required": false; "isSignal": true; }; "noResultsDescription": { "alias": "noResultsDescription"; "required": false; "isSignal": true; }; "noResultsActionLabel": { "alias": "noResultsActionLabel"; "required": false; "isSignal": true; }; "exportable": { "alias": "exportable"; "required": false; "isSignal": true; }; "exportMode": { "alias": "exportMode"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "multiCellSelection": { "alias": "multiCellSelection"; "required": false; "isSignal": true; }; "horizontalVirtualScroll": { "alias": "horizontalVirtualScroll"; "required": false; "isSignal": true; }; "loadingStrategy": { "alias": "loadingStrategy"; "required": false; "isSignal": true; }; "scrollThreshold": { "alias": "scrollThreshold"; "required": false; "isSignal": true; }; "plugins": { "alias": "plugins"; "required": false; "isSignal": true; }; "filterApplyMode": { "alias": "filterApplyMode"; "required": false; "isSignal": true; }; }, { "sortChange": "sortChange"; "pageChange": "pageChange"; "loadMore": "loadMore"; "cellEdit": "cellEdit"; "cellEditCancel": "cellEditCancel"; "selectionChange": "selectionChange"; "cellSelectionChange": "cellSelectionChange"; "groupChange": "groupChange"; "filterChange": "filterChange"; "bulkEdit": "bulkEdit"; "bulkCopy": "bulkCopy"; "bulkPaste": "bulkPaste"; "bulkDelete": "bulkDelete"; "fillDown": "fillDown"; "settingsChange": "settingsChange"; "exportRequest": "exportRequest"; }, ["columnDefs", "toolbarDefs", "emptyDefs"], ["[mozGridFilterTags]"], true, never>;
|
|
3568
|
-
}
|
|
3569
|
-
|
|
3570
|
-
interface GroupRow<T = unknown> {
|
|
3571
|
-
type: 'group';
|
|
3572
|
-
field: string;
|
|
3573
|
-
value: unknown;
|
|
3574
|
-
displayValue: string;
|
|
3575
|
-
depth: number;
|
|
3576
|
-
count: number;
|
|
3577
|
-
expanded: boolean;
|
|
3578
|
-
groupKey: string;
|
|
3579
|
-
children: (GroupRow<T> | T)[];
|
|
3580
|
-
parent: GroupRow<T> | null;
|
|
3581
|
-
}
|
|
3582
|
-
type DisplayRow<T = unknown> = {
|
|
3583
|
-
type: 'data';
|
|
3584
|
-
data: T;
|
|
3585
|
-
index: number;
|
|
3586
|
-
depth: number;
|
|
3587
|
-
} | {
|
|
3588
|
-
type: 'group';
|
|
3589
|
-
group: GroupRow<T>;
|
|
3590
|
-
} | {
|
|
3591
|
-
type: 'detail';
|
|
3592
|
-
data: T;
|
|
3593
|
-
index: number;
|
|
3594
|
-
};
|
|
3595
|
-
|
|
3596
|
-
interface GridOptions<T = unknown> {
|
|
3597
|
-
/** Data mode */
|
|
3598
|
-
mode: 'client' | 'server';
|
|
3599
|
-
/** Pagination */
|
|
3600
|
-
pagination: boolean;
|
|
3601
|
-
pageSize: number;
|
|
3602
|
-
pageSizeOptions: number[];
|
|
3603
|
-
/** Row height for virtual scroll (px) */
|
|
3604
|
-
rowHeight: number;
|
|
3605
|
-
/** Enable row checkbox selection */
|
|
3606
|
-
rowSelection: boolean;
|
|
3607
|
-
/** Selection mode */
|
|
3608
|
-
selectionMode: 'single' | 'multiple';
|
|
3609
|
-
/** Enable column grouping */
|
|
3610
|
-
grouping: boolean;
|
|
3611
|
-
/** Enable fullscreen toggle */
|
|
3612
|
-
fullscreen: boolean;
|
|
3613
|
-
/** Enable expandable rows */
|
|
3614
|
-
expandableRows: boolean;
|
|
3615
|
-
/** Enable column resize */
|
|
3616
|
-
columnResize: boolean;
|
|
3617
|
-
/** Enable column reorder */
|
|
3618
|
-
columnReorder: boolean;
|
|
3619
|
-
/** Show or hide the toolbar. Defaults to true. */
|
|
3620
|
-
showToolbar?: boolean;
|
|
3621
|
-
/** Enable multi-cell selection (click / drag range / keyboard navigation). Defaults to true. */
|
|
3622
|
-
multiCellSelection?: boolean;
|
|
3623
|
-
/** Track by function for virtual scroll */
|
|
3624
|
-
trackBy: (index: number, item: T) => unknown;
|
|
3625
|
-
}
|
|
3626
|
-
declare const DEFAULT_GRID_OPTIONS: GridOptions;
|
|
3627
|
-
|
|
3628
|
-
declare class MozGridColumnDef<T = unknown> {
|
|
3629
|
-
readonly field: _angular_core.InputSignal<string>;
|
|
3630
|
-
readonly headerName: _angular_core.InputSignal<string | undefined>;
|
|
3631
|
-
readonly width: _angular_core.InputSignal<string | undefined>;
|
|
3632
|
-
readonly minWidth: _angular_core.InputSignal<string | undefined>;
|
|
3633
|
-
readonly maxWidth: _angular_core.InputSignal<string | undefined>;
|
|
3634
|
-
readonly flex: _angular_core.InputSignal<number | undefined>;
|
|
3635
|
-
readonly sortable: _angular_core.InputSignal<boolean>;
|
|
3636
|
-
readonly resizable: _angular_core.InputSignal<boolean>;
|
|
3637
|
-
readonly reorderable: _angular_core.InputSignal<boolean>;
|
|
3638
|
-
readonly groupable: _angular_core.InputSignal<boolean>;
|
|
3639
|
-
readonly filterable: _angular_core.InputSignal<boolean>;
|
|
3640
|
-
readonly filterType: _angular_core.InputSignal<FilterDataType | undefined>;
|
|
3641
|
-
readonly filterOperators: _angular_core.InputSignal<FilterOperator[] | undefined>;
|
|
3642
|
-
readonly defaultFilterOperator: _angular_core.InputSignal<FilterOperator | undefined>;
|
|
3643
|
-
readonly filterOptions: _angular_core.InputSignal<{
|
|
3644
|
-
value: unknown;
|
|
3645
|
-
label: string;
|
|
3646
|
-
}[] | undefined>;
|
|
3647
|
-
readonly filterComponent: _angular_core.InputSignal<Type<MozGridCustomFilter> | undefined>;
|
|
3648
|
-
readonly filterIsComplete: _angular_core.InputSignal<((value: FilterValue) => boolean) | undefined>;
|
|
3649
|
-
readonly filterPredicate: _angular_core.InputSignal<((row: unknown, value: FilterValue) => boolean) | undefined>;
|
|
3650
|
-
readonly editable: _angular_core.InputSignal<boolean>;
|
|
3651
|
-
readonly visible: _angular_core.InputSignal<boolean>;
|
|
3652
|
-
readonly hideable: _angular_core.InputSignal<boolean>;
|
|
3653
|
-
readonly freezable: _angular_core.InputSignal<boolean>;
|
|
3654
|
-
readonly headerMenuDisabled: _angular_core.InputSignal<boolean>;
|
|
3655
|
-
/**
|
|
3656
|
-
* Mirrors `ColumnDef.allowFormula`. Required so the template binding
|
|
3657
|
-
* `[allowFormula]="true"` is forwarded into the generated column def —
|
|
3658
|
-
* without it, `FormulaEngine.syncFromSource` cannot detect this column
|
|
3659
|
-
* and any baked-in `=…` value is rendered as a raw string.
|
|
3660
|
-
*/
|
|
3661
|
-
readonly allowFormula: _angular_core.InputSignal<boolean>;
|
|
3662
|
-
readonly pinned: _angular_core.InputSignal<"start" | "end" | null>;
|
|
3663
|
-
readonly cellEditor: _angular_core.InputSignal<CellEditorType | undefined>;
|
|
3664
|
-
readonly cellEditorOptions: _angular_core.InputSignal<MozSelectOption[] | undefined>;
|
|
3665
|
-
readonly cellValidator: _angular_core.InputSignal<((value: unknown, row: unknown) => CellError | null) | undefined>;
|
|
3666
|
-
readonly cellTemplateInput: _angular_core.InputSignal<TemplateRef<unknown> | null>;
|
|
3667
|
-
readonly editTemplateInput: _angular_core.InputSignal<TemplateRef<unknown> | null>;
|
|
3668
|
-
readonly filterTemplateInput: _angular_core.InputSignal<TemplateRef<unknown> | null>;
|
|
3669
|
-
readonly cellTemplateContent: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
3670
|
-
readonly editTemplateContent: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
3671
|
-
readonly filterTemplateContent: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
3672
|
-
toColumnDef(): ColumnDef<T>;
|
|
3673
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridColumnDef<any>, never>;
|
|
3674
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MozGridColumnDef<any>, "moz-grid-column-def", never, { "field": { "alias": "field"; "required": true; "isSignal": true; }; "headerName": { "alias": "headerName"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "flex": { "alias": "flex"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; "groupable": { "alias": "groupable"; "required": false; "isSignal": true; }; "filterable": { "alias": "filterable"; "required": false; "isSignal": true; }; "filterType": { "alias": "filterType"; "required": false; "isSignal": true; }; "filterOperators": { "alias": "filterOperators"; "required": false; "isSignal": true; }; "defaultFilterOperator": { "alias": "defaultFilterOperator"; "required": false; "isSignal": true; }; "filterOptions": { "alias": "filterOptions"; "required": false; "isSignal": true; }; "filterComponent": { "alias": "filterComponent"; "required": false; "isSignal": true; }; "filterIsComplete": { "alias": "filterIsComplete"; "required": false; "isSignal": true; }; "filterPredicate": { "alias": "filterPredicate"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "hideable": { "alias": "hideable"; "required": false; "isSignal": true; }; "freezable": { "alias": "freezable"; "required": false; "isSignal": true; }; "headerMenuDisabled": { "alias": "headerMenuDisabled"; "required": false; "isSignal": true; }; "allowFormula": { "alias": "allowFormula"; "required": false; "isSignal": true; }; "pinned": { "alias": "pinned"; "required": false; "isSignal": true; }; "cellEditor": { "alias": "cellEditor"; "required": false; "isSignal": true; }; "cellEditorOptions": { "alias": "cellEditorOptions"; "required": false; "isSignal": true; }; "cellValidator": { "alias": "cellValidator"; "required": false; "isSignal": true; }; "cellTemplateInput": { "alias": "cellTemplate"; "required": false; "isSignal": true; }; "editTemplateInput": { "alias": "editTemplate"; "required": false; "isSignal": true; }; "filterTemplateInput": { "alias": "filterTemplate"; "required": false; "isSignal": true; }; }, {}, ["cellTemplateContent", "editTemplateContent", "filterTemplateContent"], never, true, never>;
|
|
3675
|
-
}
|
|
3676
|
-
|
|
3677
|
-
declare class GridEngine<T = unknown> {
|
|
3678
|
-
private readonly state;
|
|
3679
|
-
private readonly sortEngine;
|
|
3680
|
-
private readonly filterEngine;
|
|
3681
|
-
private readonly groupEngine;
|
|
3682
|
-
/**
|
|
3683
|
-
* Pipeline step 1: sorted data.
|
|
3684
|
-
* In server mode, returns source data unchanged.
|
|
3685
|
-
*/
|
|
3686
|
-
readonly sortedData: _angular_core.Signal<T[]>;
|
|
3687
|
-
/**
|
|
3688
|
-
* Pipeline step 2: filtered data.
|
|
3689
|
-
* In server mode, returns sorted data unchanged.
|
|
3690
|
-
*/
|
|
3691
|
-
readonly filteredData: _angular_core.Signal<T[]>;
|
|
3692
|
-
/**
|
|
3693
|
-
* Pipeline step 3: paginated data.
|
|
3694
|
-
* In server mode, the data is already paginated by the server.
|
|
3695
|
-
* In infinite-scroll mode, all accumulated data is displayed (no slice).
|
|
3696
|
-
* Pagination applies before grouping so groups are per-page.
|
|
3697
|
-
*/
|
|
3698
|
-
readonly paginatedData: _angular_core.Signal<T[]>;
|
|
3699
|
-
/**
|
|
3700
|
-
* Pipeline final: display rows (flat array for virtual scroll).
|
|
3701
|
-
* If grouped, produces group header + data rows.
|
|
3702
|
-
* If not grouped, wraps paginated data rows.
|
|
3703
|
-
*/
|
|
3704
|
-
readonly displayRows: _angular_core.Signal<DisplayRow<T>[]>;
|
|
3705
|
-
/**
|
|
3706
|
-
* Total items count for pagination.
|
|
3707
|
-
*/
|
|
3708
|
-
readonly computedTotalItems: _angular_core.Signal<number>;
|
|
3709
|
-
/**
|
|
3710
|
-
* Resolves a display row index (as emitted via `DisplayRow.index`) to the
|
|
3711
|
-
* actual index in `sourceData()`. When sort/filter/group is active these do
|
|
3712
|
-
* not match, so we look up the display row's data object and search for it
|
|
3713
|
-
* in sourceData. Returns -1 when the display index is unknown.
|
|
3714
|
-
*/
|
|
3715
|
-
displayIndexToSourceIndex(displayIndex: number): number;
|
|
3716
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridEngine<any>, never>;
|
|
3717
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<GridEngine<any>>;
|
|
3718
|
-
}
|
|
3719
|
-
|
|
3720
|
-
declare class SortEngine<T = unknown> {
|
|
3721
|
-
private readonly state;
|
|
3722
|
-
toggleSort(field: string, isMultiSort: boolean): void;
|
|
3723
|
-
setSort(field: string, direction: SortDirection): void;
|
|
3724
|
-
clearSort(): void;
|
|
3725
|
-
sortData(data: T[]): T[];
|
|
3726
|
-
private syncColumnSortState;
|
|
3727
|
-
private getValue;
|
|
3728
|
-
private defaultCompare;
|
|
3729
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SortEngine<any>, never>;
|
|
3730
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<SortEngine<any>>;
|
|
3731
|
-
}
|
|
3732
|
-
|
|
3733
|
-
declare class ColumnResizeEngine<T = unknown> {
|
|
3734
|
-
private readonly state;
|
|
3735
|
-
private readonly ngZone;
|
|
3736
|
-
private resizing;
|
|
3737
|
-
private resizeField;
|
|
3738
|
-
private startX;
|
|
3739
|
-
private startWidth;
|
|
3740
|
-
private invertDelta;
|
|
3741
|
-
private readonly onMouseMove;
|
|
3742
|
-
private readonly onMouseUp;
|
|
3743
|
-
startResize(field: string, event: MouseEvent): void;
|
|
3744
|
-
getResizeEvent(field: string, previousWidth: number): ColumnResizeEvent;
|
|
3745
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColumnResizeEngine<any>, never>;
|
|
3746
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ColumnResizeEngine<any>>;
|
|
3747
|
-
}
|
|
3748
|
-
|
|
3749
|
-
declare class InlineEditEngine<T = unknown> {
|
|
3750
|
-
private readonly state;
|
|
3751
|
-
private readonly history;
|
|
3752
|
-
private readonly gridEngine;
|
|
3753
|
-
private readonly formulaEngine;
|
|
3754
|
-
startEdit(rowIndex: number, field: string): void;
|
|
3755
|
-
/**
|
|
3756
|
-
* Excel-style "typing-to-edit": starts the editor with the cell value replaced
|
|
3757
|
-
* by the character the user just typed. For non-text editors (select / date /
|
|
3758
|
-
* checkbox / number) we coerce: the character is kept if it's compatible with
|
|
3759
|
-
* the editor, otherwise the editor opens on a cleared value.
|
|
3760
|
-
*/
|
|
3761
|
-
startEditWithChar(rowIndex: number, field: string, char: string): void;
|
|
3762
|
-
updateDraft(value: unknown): void;
|
|
3763
|
-
commitEdit(): CellEditEvent<T> | null;
|
|
3764
|
-
cancelEdit(): CellEditCancelEvent | null;
|
|
3765
|
-
isEditing(rowIndex: number, colIndex: number): boolean;
|
|
3766
|
-
/**
|
|
3767
|
-
* Convert an A1-surface formula draft to REF long-form storage. Strings
|
|
3768
|
-
* that do not start with `=` are returned untouched — callers should
|
|
3769
|
-
* only invoke this on values they already know to be formulas.
|
|
3770
|
-
*/
|
|
3771
|
-
private a1DraftToStorage;
|
|
3772
|
-
resolveEditorType(field: string, value: unknown): CellEditorType;
|
|
3773
|
-
/**
|
|
3774
|
-
* Route a cell-edit commit through the formula engine when appropriate:
|
|
3775
|
-
* - `allowFormula` column + new value starts with `=` → register formula.
|
|
3776
|
-
* - `allowFormula` column + old value was a formula but new one isn't
|
|
3777
|
-
* → remove the stored formula (reverts to a plain literal).
|
|
3778
|
-
* - Any cell change → invalidate dependents so their cached value
|
|
3779
|
-
* refreshes (no-op when the engine has zero dependents on this cell).
|
|
3780
|
-
*/
|
|
3781
|
-
private updateFormulaEngine;
|
|
3782
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InlineEditEngine<any>, never>;
|
|
3783
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<InlineEditEngine<any>>;
|
|
3784
|
-
}
|
|
3785
|
-
|
|
3786
|
-
declare class CellSelectionEngine<T = unknown> {
|
|
3787
|
-
private readonly state;
|
|
3788
|
-
focusCell(row: number, col: number, source?: 'click' | 'keyboard'): void;
|
|
3789
|
-
clearFocus(): void;
|
|
3790
|
-
isCellFocused(row: number, col: number): boolean;
|
|
3791
|
-
isCellInRange(row: number, col: number): boolean;
|
|
3792
|
-
selectRange(start: {
|
|
3793
|
-
row: number;
|
|
3794
|
-
col: number;
|
|
3795
|
-
}, end: {
|
|
3796
|
-
row: number;
|
|
3797
|
-
col: number;
|
|
3798
|
-
}): void;
|
|
3799
|
-
startRangeSelection(row: number, col: number): void;
|
|
3800
|
-
extendRange(row: number, col: number): void;
|
|
3801
|
-
endRangeSelection(): void;
|
|
3802
|
-
moveUp(): void;
|
|
3803
|
-
moveDown(): void;
|
|
3804
|
-
moveLeft(): void;
|
|
3805
|
-
moveRight(): void;
|
|
3806
|
-
moveToRowStart(): void;
|
|
3807
|
-
moveToRowEnd(): void;
|
|
3808
|
-
moveToGridStart(): void;
|
|
3809
|
-
moveToGridEnd(): void;
|
|
3810
|
-
/**
|
|
3811
|
-
* Excel-style Ctrl+Arrow: jump to the edge of the current data block.
|
|
3812
|
-
* If on an empty cell, jumps to the next non-empty cell. If on a filled
|
|
3813
|
-
* cell, jumps to the last filled cell before the next empty transition
|
|
3814
|
-
* (or to the grid edge if no empty cell is encountered).
|
|
3815
|
-
*/
|
|
3816
|
-
jumpToEdge(direction: 'up' | 'down' | 'left' | 'right'): void;
|
|
3817
|
-
movePage(direction: 'up' | 'down'): void;
|
|
3818
|
-
extendRangeBy(dRow: number, dCol: number): void;
|
|
3819
|
-
extendRangeToRowStart(): void;
|
|
3820
|
-
extendRangeToRowEnd(): void;
|
|
3821
|
-
extendRangeToGridStart(): void;
|
|
3822
|
-
extendRangeToGridEnd(): void;
|
|
3823
|
-
extendRangeJumpToEdge(direction: 'up' | 'down' | 'left' | 'right'): void;
|
|
3824
|
-
extendRangeByPage(direction: 'up' | 'down'): void;
|
|
3825
|
-
selectRow(row: number): void;
|
|
3826
|
-
selectColumn(col: number): void;
|
|
3827
|
-
selectAll(): void;
|
|
3828
|
-
private pageBounds;
|
|
3829
|
-
private pageRowStep;
|
|
3830
|
-
private directionVector;
|
|
3831
|
-
private inBounds;
|
|
3832
|
-
private isCellFilled;
|
|
3833
|
-
private findLastNonEmptyCol;
|
|
3834
|
-
private edgeFromCell;
|
|
3835
|
-
moveToNextEditableCell(): void;
|
|
3836
|
-
startFill(row: number, col: number): void;
|
|
3837
|
-
/**
|
|
3838
|
-
* Extends the fill range. The dominant axis (the one with the largest delta
|
|
3839
|
-
* from the anchor) wins: vertical if |dRow| >= |dCol|, otherwise horizontal.
|
|
3840
|
-
* The fill is 1D — it's always locked to a single row or a single column.
|
|
3841
|
-
*/
|
|
3842
|
-
extendFill(row: number, col: number): void;
|
|
3843
|
-
endFill(): {
|
|
3844
|
-
anchor: {
|
|
3845
|
-
row: number;
|
|
3846
|
-
col: number;
|
|
3847
|
-
};
|
|
3848
|
-
target: {
|
|
3849
|
-
row: number;
|
|
3850
|
-
col: number;
|
|
3851
|
-
};
|
|
3852
|
-
} | null;
|
|
3853
|
-
cancelFill(): void;
|
|
3854
|
-
isCellInFillRange(row: number, col: number): boolean;
|
|
3855
|
-
/**
|
|
3856
|
-
* During a horizontal fill, cells that sit inside the drag bounding box but
|
|
3857
|
-
* belong to a non-editable column cannot receive the filled value. We expose
|
|
3858
|
-
* them here so the view can paint a red dashed outline — a visual cue that
|
|
3859
|
-
* the fill is skipping that column.
|
|
3860
|
-
*/
|
|
3861
|
-
isCellInFillRejectRange(row: number, col: number): boolean;
|
|
3862
|
-
private isColEditable;
|
|
3863
|
-
/**
|
|
3864
|
-
* Returns the effective editor type for a column index.
|
|
3865
|
-
* Falls back to 'text' when no explicit cellEditor is defined.
|
|
3866
|
-
*/
|
|
3867
|
-
private getColEditorType;
|
|
3868
|
-
/**
|
|
3869
|
-
* Checks whether the source column's editor type is compatible with the
|
|
3870
|
-
* target column's editor type for a horizontal fill operation.
|
|
3871
|
-
* text↔text, number↔number, select↔select, etc. — only same-type is allowed.
|
|
3872
|
-
*/
|
|
3873
|
-
private isColTypeCompatible;
|
|
3874
|
-
private moveBy;
|
|
3875
|
-
getNormalizedRange(): CellRange | null;
|
|
3876
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CellSelectionEngine<any>, never>;
|
|
3877
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<CellSelectionEngine<any>>;
|
|
3878
|
-
}
|
|
3879
|
-
|
|
3880
|
-
/**
|
|
3881
|
-
* Actions that require grid-level orchestration (event emission, clipboard
|
|
3882
|
-
* system access, async, UI refocus). The keyboard engine can run pure
|
|
3883
|
-
* navigation locally, but bounces these back to the host component.
|
|
3884
|
-
*/
|
|
3885
|
-
interface KeyboardActions {
|
|
3886
|
-
copy: () => void;
|
|
3887
|
-
paste: () => void;
|
|
3888
|
-
cut: () => void;
|
|
3889
|
-
deleteRange: () => void;
|
|
3890
|
-
undo: () => void;
|
|
3891
|
-
redo: () => void;
|
|
3892
|
-
fillDown: () => void;
|
|
3893
|
-
fillRight: () => void;
|
|
3894
|
-
startEdit: (row: number, col: number, initialChar?: string) => void;
|
|
3895
|
-
}
|
|
3896
|
-
declare class KeyboardEngine<T = unknown> {
|
|
3897
|
-
private readonly cellSelection;
|
|
3898
|
-
private readonly inlineEdit;
|
|
3899
|
-
private readonly state;
|
|
3900
|
-
private actions;
|
|
3901
|
-
registerActions(actions: KeyboardActions): void;
|
|
3902
|
-
handleKeydown(event: KeyboardEvent): void;
|
|
3903
|
-
/** Returns true when the event was handled (so the caller should preventDefault). */
|
|
3904
|
-
private dispatch;
|
|
3905
|
-
private handleArrow;
|
|
3906
|
-
/**
|
|
3907
|
-
* A key press is "printable" when it represents exactly one character that
|
|
3908
|
-
* the user intends as input — excluding named keys like F1, Home, Arrow*,
|
|
3909
|
-
* etc. Also excludes IME composition events (event.isComposing).
|
|
3910
|
-
*/
|
|
3911
|
-
private isPrintableKey;
|
|
3912
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KeyboardEngine<any>, never>;
|
|
3913
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<KeyboardEngine<any>>;
|
|
3914
|
-
}
|
|
3915
|
-
|
|
3916
|
-
declare class GroupEngine<T = unknown> {
|
|
3917
|
-
private readonly state;
|
|
3918
|
-
addGroup(field: string): void;
|
|
3919
|
-
removeGroup(field: string): void;
|
|
3920
|
-
applyGroups(groups: GroupEntry[]): void;
|
|
3921
|
-
clearGroups(): void;
|
|
3922
|
-
toggleGroupExpand(groupKey: string): void;
|
|
3923
|
-
isGroupExpanded(groupKey: string): boolean;
|
|
3924
|
-
groupData(data: T[]): DisplayRow<T>[];
|
|
3925
|
-
private buildGroups;
|
|
3926
|
-
private flattenGroups;
|
|
3927
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GroupEngine<any>, never>;
|
|
3928
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<GroupEngine<any>>;
|
|
3929
|
-
}
|
|
3930
|
-
|
|
3931
|
-
declare class FilterEngine<T = unknown> {
|
|
3932
|
-
private readonly state;
|
|
3933
|
-
/** Latest mutation, used by the grid shell to emit `filterChange` once. */
|
|
3934
|
-
private readonly lastChange;
|
|
3935
|
-
readonly conditions: Signal<FilterCondition[]>;
|
|
3936
|
-
readonly hasActiveFilters: Signal<boolean>;
|
|
3937
|
-
readonly lastEvent: Signal<FilterEvent | null>;
|
|
3938
|
-
/** Replaces the whole model in one go. Used by the drawer's Apply button. */
|
|
3939
|
-
setModel(model: FilterModel, reason?: FilterChangeReason): void;
|
|
3940
|
-
addCondition(condition: FilterCondition): void;
|
|
3941
|
-
updateCondition(id: string, patch: Partial<FilterCondition>): void;
|
|
3942
|
-
removeCondition(id: string): void;
|
|
3943
|
-
reorderConditions(fromIndex: number, toIndex: number): void;
|
|
3944
|
-
clearAll(): void;
|
|
3945
|
-
/** Convenience: drop all conditions that target a given field. */
|
|
3946
|
-
removeByField(field: string): void;
|
|
3947
|
-
/**
|
|
3948
|
-
* Drops conditions whose value is not yet complete. Called when a filter
|
|
3949
|
-
* builder is dismissed: a row the user added but never filled in must not
|
|
3950
|
-
* linger in the model as a phantom active filter.
|
|
3951
|
-
*/
|
|
3952
|
-
dropIncompleteConditions(): void;
|
|
3953
|
-
/**
|
|
3954
|
-
* Evaluates the current model against the provided data.
|
|
3955
|
-
* In `server` filterMode the grid delegates filtering to the consumer — returns input as-is.
|
|
3956
|
-
*/
|
|
3957
|
-
filterData(data: T[]): T[];
|
|
3958
|
-
private isComplete;
|
|
3959
|
-
private matchRow;
|
|
3960
|
-
/** Returns a human-readable label for a condition ("Status equals En stock"). */
|
|
3961
|
-
toLabel(condition: FilterCondition): string;
|
|
3962
|
-
/** Returns the filter data type inferred for a column. */
|
|
3963
|
-
getFilterType(field: string): FilterDataType;
|
|
3964
|
-
/**
|
|
3965
|
-
* Builds the column descriptors consumed by the filter builder UI.
|
|
3966
|
-
*
|
|
3967
|
-
* All `filterable` columns are included, even those that ship a custom
|
|
3968
|
-
* `filterTemplate`. The custom template drives the inline header filter
|
|
3969
|
-
* row (quick per-column UI), while the builder — rendered in the toolbar
|
|
3970
|
-
* drawer and in the column-menu overlay — always uses the generic editors.
|
|
3971
|
-
* The two mechanisms are complementary and can coexist on the same column.
|
|
3972
|
-
*/
|
|
3973
|
-
describeFilterableColumns(): FilterColumnDescriptor[];
|
|
3974
|
-
describeColumn(def: ColumnDef<T>): FilterColumnDescriptor;
|
|
3975
|
-
/** Factory for new conditions created by the UI. */
|
|
3976
|
-
makeCondition(field: string, isFirst: boolean, overrides?: Partial<FilterCondition>): FilterCondition;
|
|
3977
|
-
private notify;
|
|
3978
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FilterEngine<any>, never>;
|
|
3979
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FilterEngine<any>>;
|
|
3980
|
-
}
|
|
3981
|
-
|
|
3982
|
-
declare class ColumnReorderEngine<T = unknown> {
|
|
3983
|
-
private readonly state;
|
|
3984
|
-
reorder(previousIndex: number, newIndex: number): void;
|
|
3985
|
-
/**
|
|
3986
|
-
* Reorder using indices relative to unpinned columns only.
|
|
3987
|
-
* Translates to global columnStates indices before applying.
|
|
3988
|
-
*/
|
|
3989
|
-
reorderUnpinned(unpinnedPrevIndex: number, unpinnedNewIndex: number): void;
|
|
3990
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColumnReorderEngine<any>, never>;
|
|
3991
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ColumnReorderEngine<any>>;
|
|
3992
|
-
}
|
|
3993
|
-
|
|
3994
|
-
declare class ExpandableRowEngine<T = unknown> {
|
|
3995
|
-
private readonly state;
|
|
3996
|
-
readonly hasExpandedRows: _angular_core.Signal<boolean>;
|
|
3997
|
-
toggleRow(rowId: unknown): void;
|
|
3998
|
-
expandRow(rowId: unknown): void;
|
|
3999
|
-
collapseRow(rowId: unknown): void;
|
|
4000
|
-
collapseAll(): void;
|
|
4001
|
-
isRowExpanded(rowId: unknown): boolean;
|
|
4002
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ExpandableRowEngine<any>, never>;
|
|
4003
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ExpandableRowEngine<any>>;
|
|
4004
|
-
}
|
|
4005
|
-
|
|
4006
|
-
interface PersistedGridState {
|
|
4007
|
-
columns: Array<{
|
|
4008
|
-
field: string;
|
|
4009
|
-
currentWidth: number;
|
|
4010
|
-
order: number;
|
|
4011
|
-
visible: boolean;
|
|
4012
|
-
pinned: 'start' | 'end' | null;
|
|
4013
|
-
}>;
|
|
4014
|
-
sorts: SortDef[];
|
|
4015
|
-
/** Serialised filter conditions. `id` is regenerated on restore. */
|
|
4016
|
-
filters?: Array<Omit<FilterCondition, 'id'>>;
|
|
4017
|
-
}
|
|
4018
|
-
declare class StatePersistenceEngine<T = unknown> {
|
|
4019
|
-
private readonly state;
|
|
4020
|
-
save(storageKey: string): void;
|
|
4021
|
-
restore(storageKey: string): boolean;
|
|
4022
|
-
clear(storageKey: string): void;
|
|
4023
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatePersistenceEngine<any>, never>;
|
|
4024
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<StatePersistenceEngine<any>>;
|
|
4025
|
-
}
|
|
4026
|
-
|
|
4027
|
-
interface ExportOptions {
|
|
4028
|
-
filename?: string;
|
|
4029
|
-
separator?: string;
|
|
4030
|
-
includeHeaders?: boolean;
|
|
4031
|
-
columns?: string[];
|
|
4032
|
-
}
|
|
4033
|
-
declare class ExportEngine<T = unknown> {
|
|
4034
|
-
private readonly state;
|
|
4035
|
-
exportCsv(data: T[], options?: ExportOptions): void;
|
|
4036
|
-
exportJson(data: T[], options?: {
|
|
4037
|
-
filename?: string;
|
|
4038
|
-
columns?: string[];
|
|
4039
|
-
}): void;
|
|
4040
|
-
private escapeCsvValue;
|
|
4041
|
-
private downloadFile;
|
|
4042
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ExportEngine<any>, never>;
|
|
4043
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ExportEngine<any>>;
|
|
4044
|
-
}
|
|
4045
|
-
|
|
4046
|
-
interface TreeNodeConfig {
|
|
4047
|
-
childrenField: string;
|
|
4048
|
-
hasChildrenField?: string;
|
|
4049
|
-
expandedByDefault?: boolean;
|
|
4050
|
-
}
|
|
4051
|
-
interface TreeDisplayRow<T = unknown> {
|
|
4052
|
-
type: 'data';
|
|
4053
|
-
data: T;
|
|
4054
|
-
index: number;
|
|
4055
|
-
depth: number;
|
|
4056
|
-
hasChildren: boolean;
|
|
4057
|
-
expanded: boolean;
|
|
4058
|
-
nodeKey: string;
|
|
4059
|
-
}
|
|
4060
|
-
declare class TreeEngine<T = unknown> {
|
|
4061
|
-
private readonly state;
|
|
4062
|
-
flatten(data: T[], config: TreeNodeConfig, expandedNodes: Set<string>, idField: string): TreeDisplayRow<T>[];
|
|
4063
|
-
toggleNode(nodeKey: string): void;
|
|
4064
|
-
expandAll(data: T[], config: TreeNodeConfig, idField: string): void;
|
|
4065
|
-
collapseAll(): void;
|
|
4066
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TreeEngine<any>, never>;
|
|
4067
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<TreeEngine<any>>;
|
|
4068
|
-
}
|
|
4069
|
-
|
|
4070
|
-
declare class CellValidationEngine<T = unknown> {
|
|
4071
|
-
private readonly state;
|
|
4072
|
-
/** Map<"rowIndex:field", CellError> */
|
|
4073
|
-
readonly cellErrors: _angular_core.WritableSignal<Map<string, CellError>>;
|
|
4074
|
-
/** Number of cells currently in error */
|
|
4075
|
-
readonly errorCount: _angular_core.Signal<number>;
|
|
4076
|
-
/** Revalidate all cells for the given data slice */
|
|
4077
|
-
validateAll(data: T[]): void;
|
|
4078
|
-
/** Revalidate a single cell */
|
|
4079
|
-
validateCell(rowIndex: number, field: string, value: unknown, row: T): void;
|
|
4080
|
-
/** Get the error for a specific cell, or null */
|
|
4081
|
-
getCellError(rowIndex: number, field: string): CellError | null;
|
|
4082
|
-
/** Check if a specific cell has an error */
|
|
4083
|
-
hasCellError(rowIndex: number, field: string): boolean;
|
|
4084
|
-
/** Clear all errors */
|
|
4085
|
-
clearAll(): void;
|
|
4086
|
-
private removeCellError;
|
|
4087
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CellValidationEngine<any>, never>;
|
|
4088
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<CellValidationEngine<any>>;
|
|
4089
|
-
}
|
|
4090
|
-
|
|
4091
|
-
declare class HorizontalVirtualScrollEngine<T = unknown> {
|
|
4092
|
-
private readonly state;
|
|
4093
|
-
/** Cumulative left offsets of unpinned columns. Length = unpinnedColumns.length + 1. */
|
|
4094
|
-
private offsets;
|
|
4095
|
-
constructor();
|
|
4096
|
-
/** Called by grid.ts when the body viewport scrolls or resizes. */
|
|
4097
|
-
onScroll(scrollLeft: number, viewportWidth: number): void;
|
|
4098
|
-
rebuildOffsets(): void;
|
|
4099
|
-
private recompute;
|
|
4100
|
-
/** Binary search: returns the largest index i such that offsets[i] <= x. */
|
|
4101
|
-
private findIndexAt;
|
|
4102
|
-
private fullRange;
|
|
4103
|
-
private setRange;
|
|
4104
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HorizontalVirtualScrollEngine<any>, never>;
|
|
4105
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<HorizontalVirtualScrollEngine<any>>;
|
|
4106
|
-
}
|
|
4107
|
-
|
|
4108
|
-
declare class PaginationEngine<T = unknown> {
|
|
4109
|
-
private readonly state;
|
|
4110
|
-
readonly totalPages: _angular_core.Signal<number>;
|
|
4111
|
-
readonly currentPage: _angular_core.Signal<number>;
|
|
4112
|
-
readonly startItem: _angular_core.Signal<number>;
|
|
4113
|
-
readonly endItem: _angular_core.Signal<number>;
|
|
4114
|
-
readonly isFirstPage: _angular_core.Signal<boolean>;
|
|
4115
|
-
readonly isLastPage: _angular_core.Signal<boolean>;
|
|
4116
|
-
private readonly computedTotal;
|
|
4117
|
-
goToPage(pageIndex: number): void;
|
|
4118
|
-
nextPage(): void;
|
|
4119
|
-
previousPage(): void;
|
|
4120
|
-
setPageSize(size: number): void;
|
|
4121
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PaginationEngine<any>, never>;
|
|
4122
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<PaginationEngine<any>>;
|
|
4123
|
-
}
|
|
4124
|
-
|
|
4125
|
-
declare class InfiniteScrollEngine<T = unknown> {
|
|
4126
|
-
private readonly state;
|
|
4127
|
-
private readonly destroyRef;
|
|
4128
|
-
private readonly ngZone;
|
|
4129
|
-
private scrollListener;
|
|
4130
|
-
private scrollElement;
|
|
4131
|
-
private loadMoreCallback;
|
|
4132
|
-
readonly scrollThreshold: _angular_core.WritableSignal<number>;
|
|
4133
|
-
readonly hasMore: _angular_core.Signal<boolean>;
|
|
4134
|
-
readonly isActive: _angular_core.Signal<boolean>;
|
|
4135
|
-
attach(scrollElement: HTMLElement, onLoadMore: (event: LoadMoreEvent) => void): void;
|
|
4136
|
-
detach(): void;
|
|
4137
|
-
private checkScrollPosition;
|
|
4138
|
-
/**
|
|
4139
|
-
* Reset scroll state — called when sort/filter changes require
|
|
4140
|
-
* reloading from offset 0.
|
|
4141
|
-
*/
|
|
4142
|
-
reset(onLoadMore: (event: LoadMoreEvent) => void): void;
|
|
4143
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InfiniteScrollEngine<any>, never>;
|
|
4144
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<InfiniteScrollEngine<any>>;
|
|
4145
|
-
}
|
|
4146
|
-
|
|
4147
|
-
/**
|
|
4148
|
-
* Default registry of formula functions (Phase 1 scope).
|
|
4149
|
-
*
|
|
4150
|
-
* Implementations are intentionally compact and reuse the coercion helpers
|
|
4151
|
-
* in `models/formula.model.ts`. Each entry is pure, side-effect free and
|
|
4152
|
-
* returns a `FormulaValue` — errors are data, never exceptions.
|
|
4153
|
-
*
|
|
4154
|
-
* Naming: keys are uppercase; the parser uppercases every identifier before
|
|
4155
|
-
* dispatch so consumers can write `sum(a, b)` or `SUM(a,b)` interchangeably.
|
|
4156
|
-
*/
|
|
4157
|
-
|
|
4158
|
-
/**
|
|
4159
|
-
* Default function registry. Consumers can spread this into their own
|
|
4160
|
-
* registry to extend it:
|
|
4161
|
-
*
|
|
4162
|
-
* ```
|
|
4163
|
-
* const registry = { ...DEFAULT_FORMULA_FUNCTIONS, TVA: myTvaFn };
|
|
4164
|
-
* ```
|
|
4165
|
-
*/
|
|
4166
|
-
declare const DEFAULT_FORMULA_FUNCTIONS: FormulaFunctionRegistry;
|
|
4167
|
-
|
|
4168
|
-
declare function trackDisplayRow<T>(_index: number, row: DisplayRow<T>): string;
|
|
4169
|
-
declare function trackByField(_index: number, col: {
|
|
4170
|
-
field: string;
|
|
4171
|
-
}): string;
|
|
4172
|
-
|
|
4173
|
-
declare class MozGridHeaderComponent {
|
|
4174
|
-
protected readonly state: GridStateManager<any>;
|
|
4175
|
-
protected readonly rowSelection: RowSelectionEngine<any>;
|
|
4176
|
-
private readonly dragEngine;
|
|
4177
|
-
protected readonly trackByField: typeof trackByField;
|
|
4178
|
-
readonly headerCenter: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
|
|
4179
|
-
readonly showCheckbox: _angular_core.InputSignal<boolean>;
|
|
4180
|
-
readonly showExpand: _angular_core.InputSignal<boolean>;
|
|
4181
|
-
readonly reorderable: _angular_core.InputSignal<boolean>;
|
|
4182
|
-
readonly sortClick: _angular_core.OutputEmitterRef<{
|
|
4183
|
-
field: string;
|
|
4184
|
-
isMultiSort: boolean;
|
|
4185
|
-
}>;
|
|
4186
|
-
readonly menuAction: _angular_core.OutputEmitterRef<{
|
|
4187
|
-
field: string;
|
|
4188
|
-
actionId: HeaderMenuActionId;
|
|
4189
|
-
}>;
|
|
4190
|
-
readonly resizeStart: _angular_core.OutputEmitterRef<{
|
|
4191
|
-
field: string;
|
|
4192
|
-
event: MouseEvent;
|
|
4193
|
-
}>;
|
|
4194
|
-
readonly selectAllToggle: _angular_core.OutputEmitterRef<void>;
|
|
4195
|
-
readonly columnReorder: _angular_core.OutputEmitterRef<{
|
|
4196
|
-
previousIndex: number;
|
|
4197
|
-
currentIndex: number;
|
|
4198
|
-
}>;
|
|
4199
|
-
constructor();
|
|
4200
|
-
protected readonly utilityLeftWidth: _angular_core.Signal<number>;
|
|
4201
|
-
protected readonly rowMinWidth: _angular_core.Signal<number>;
|
|
4202
|
-
protected readonly hasFilterRow: _angular_core.Signal<boolean>;
|
|
4203
|
-
getFilterTemplate(field: string): TemplateRef<unknown> | null;
|
|
4204
|
-
onSelectAllClick(event: Event): void;
|
|
4205
|
-
onDragStart(event: MouseEvent, unpinnedIndex: number): void;
|
|
4206
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridHeaderComponent, never>;
|
|
4207
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MozGridHeaderComponent, "moz-grid-header", never, { "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "showExpand": { "alias": "showExpand"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; }, { "sortClick": "sortClick"; "menuAction": "menuAction"; "resizeStart": "resizeStart"; "selectAllToggle": "selectAllToggle"; "columnReorder": "columnReorder"; }, never, never, true, never>;
|
|
4208
|
-
}
|
|
4209
|
-
|
|
4210
|
-
/**
|
|
4211
|
-
* Programmatically opens a CDK overlay anchored on the host element that
|
|
4212
|
-
* renders the filter builder. Unlike the action-listbox directive, the
|
|
4213
|
-
* overlay does not toggle on click — the host is simply the anchor. Open
|
|
4214
|
-
* the overlay by injecting this directive via a template ref (`#filter`)
|
|
4215
|
-
* and calling `filter.open(options)`.
|
|
4216
|
-
*/
|
|
4217
|
-
declare class MozGridFilterOverlayDirective implements OnDestroy {
|
|
4218
|
-
private readonly overlay;
|
|
4219
|
-
private readonly host;
|
|
4220
|
-
private readonly injector;
|
|
4221
|
-
private readonly engine;
|
|
4222
|
-
private overlayRef;
|
|
4223
|
-
private componentRef;
|
|
4224
|
-
/** Opens the overlay anchored on the host. No-op if already open. */
|
|
4225
|
-
open(options: {
|
|
4226
|
-
columns: FilterColumnDescriptor[];
|
|
4227
|
-
model: FilterModel;
|
|
4228
|
-
/** Optional pre-selected column to seed a new condition. */
|
|
4229
|
-
seedField?: string;
|
|
4230
|
-
onChange: (model: FilterModel) => void;
|
|
4231
|
-
}): void;
|
|
4232
|
-
close(): void;
|
|
4233
|
-
ngOnDestroy(): void;
|
|
4234
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridFilterOverlayDirective, never>;
|
|
4235
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MozGridFilterOverlayDirective, "[mozGridFilterOverlay]", ["mozGridFilterOverlay"], {}, {}, never, never, true, never>;
|
|
4236
|
-
}
|
|
4237
|
-
|
|
4238
|
-
declare class MozGridHeaderCellComponent<T = unknown> {
|
|
4239
|
-
private readonly state;
|
|
4240
|
-
private readonly filterEngine;
|
|
4241
|
-
/** Optional — only present when the grid provides `FormulaEngine`. */
|
|
4242
|
-
private readonly formulaEngine;
|
|
4243
|
-
readonly columnState: _angular_core.InputSignal<ColumnStateEntry>;
|
|
4244
|
-
readonly def: _angular_core.InputSignal<ColumnDef<T>>;
|
|
4245
|
-
readonly isLast: _angular_core.InputSignal<boolean>;
|
|
4246
|
-
readonly pinnedEnd: _angular_core.InputSignal<boolean>;
|
|
4247
|
-
readonly reorderable: _angular_core.InputSignal<boolean>;
|
|
4248
|
-
/** When set, applies `position: sticky` with the given side. */
|
|
4249
|
-
readonly pinnedSticky: _angular_core.InputSignal<"left" | "right" | null>;
|
|
4250
|
-
/** Pixel offset for `left` (left-pinned) or `right` (right-pinned). */
|
|
4251
|
-
readonly pinnedOffset: _angular_core.InputSignal<number>;
|
|
4252
|
-
/** Visual edge of the pinned section — drives the separation shadow. */
|
|
4253
|
-
readonly pinnedEdge: _angular_core.InputSignal<"left" | "right" | null>;
|
|
4254
|
-
protected readonly filterOverlay: _angular_core.Signal<MozGridFilterOverlayDirective | undefined>;
|
|
4255
|
-
/** True when at least one active condition targets this column. */
|
|
4256
|
-
readonly hasActiveFilter: _angular_core.Signal<boolean>;
|
|
4257
|
-
/** Tooltip for the gear / filter button (count + short summary). */
|
|
4258
|
-
readonly filterTooltip: _angular_core.Signal<string>;
|
|
4259
|
-
readonly resolvedMinWidth: _angular_core.Signal<number>;
|
|
4260
|
-
readonly isDragging: _angular_core.Signal<boolean>;
|
|
4261
|
-
readonly sortClick: _angular_core.OutputEmitterRef<{
|
|
4262
|
-
field: string;
|
|
4263
|
-
isMultiSort: boolean;
|
|
4264
|
-
}>;
|
|
4265
|
-
readonly menuAction: _angular_core.OutputEmitterRef<{
|
|
4266
|
-
field: string;
|
|
4267
|
-
actionId: HeaderMenuActionId;
|
|
4268
|
-
}>;
|
|
4269
|
-
readonly resizeStart: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
4270
|
-
readonly label: _angular_core.Signal<string>;
|
|
4271
|
-
/**
|
|
4272
|
-
* Spreadsheet-style column letter (`A`, `B`, …, `AA`, `AB`, …) matching
|
|
4273
|
-
* this column's position in the visible column order. Shown above each
|
|
4274
|
-
* header while a formula is being edited so the user sees exactly what
|
|
4275
|
-
* letter to type to reference a cell in this column.
|
|
4276
|
-
*/
|
|
4277
|
-
readonly columnLetter: _angular_core.Signal<string>;
|
|
4278
|
-
/**
|
|
4279
|
-
* `true` when the user is editing a formula-capable cell. The header
|
|
4280
|
-
* uses this to show the column-letter badge — a visual cue matching the
|
|
4281
|
-
* A1 references the user types in the formula bar.
|
|
4282
|
-
*/
|
|
4283
|
-
readonly showColumnLetter: _angular_core.Signal<boolean>;
|
|
4284
|
-
readonly menuItems: _angular_core.Signal<MozActionListItem[]>;
|
|
4285
|
-
onHeaderClick(event: MouseEvent): void;
|
|
4286
|
-
onMenuItemClick(item: MozActionListItem): void;
|
|
4287
|
-
private openFilterOverlay;
|
|
4288
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridHeaderCellComponent<any>, never>;
|
|
4289
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MozGridHeaderCellComponent<any>, "moz-grid-header-cell", never, { "columnState": { "alias": "columnState"; "required": true; "isSignal": true; }; "def": { "alias": "def"; "required": true; "isSignal": true; }; "isLast": { "alias": "isLast"; "required": false; "isSignal": true; }; "pinnedEnd": { "alias": "pinnedEnd"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; "pinnedSticky": { "alias": "pinnedSticky"; "required": false; "isSignal": true; }; "pinnedOffset": { "alias": "pinnedOffset"; "required": false; "isSignal": true; }; "pinnedEdge": { "alias": "pinnedEdge"; "required": false; "isSignal": true; }; }, { "sortClick": "sortClick"; "menuAction": "menuAction"; "resizeStart": "resizeStart"; }, never, never, true, never>;
|
|
4290
|
-
}
|
|
4291
|
-
|
|
4292
|
-
declare class MozGridBodyComponent {
|
|
4293
|
-
protected readonly state: GridStateManager<any>;
|
|
4294
|
-
protected readonly engine: GridEngine<any>;
|
|
4295
|
-
private readonly expandableEngine;
|
|
4296
|
-
private readonly verticalEngine;
|
|
4297
|
-
readonly bodyContainer: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
|
|
4298
|
-
private readonly rowEls;
|
|
4299
|
-
readonly showCheckbox: _angular_core.InputSignal<boolean>;
|
|
4300
|
-
readonly showExpand: _angular_core.InputSignal<boolean>;
|
|
4301
|
-
readonly detailTemplate: _angular_core.InputSignal<TemplateRef<unknown> | null>;
|
|
4302
|
-
readonly cellEdit: _angular_core.OutputEmitterRef<CellEditEvent<unknown>>;
|
|
4303
|
-
readonly cellEditCancel: _angular_core.OutputEmitterRef<CellEditCancelEvent>;
|
|
4304
|
-
readonly rowSelectionToggle: _angular_core.OutputEmitterRef<void>;
|
|
4305
|
-
readonly groupToggle: _angular_core.OutputEmitterRef<string>;
|
|
4306
|
-
/** Width consumed by sticky utility cells before the first pinned-left
|
|
4307
|
-
* column — must match `MozGridRowComponent.utilityLeftWidth()` so the
|
|
4308
|
-
* detail/group rows align with the data row layout. */
|
|
4309
|
-
protected readonly utilityLeftWidth: _angular_core.Signal<number>;
|
|
4310
|
-
/** Number of skeleton rows shown while loading — match page size, max 20. */
|
|
4311
|
-
protected readonly skeletonRows: _angular_core.Signal<number[]>;
|
|
4312
|
-
/** Concrete display-row indices to render this frame. */
|
|
4313
|
-
protected readonly visibleIndices: _angular_core.Signal<number[]>;
|
|
4314
|
-
protected isRowExpanded(data: unknown): boolean;
|
|
4315
|
-
private resizeObserver;
|
|
4316
|
-
constructor();
|
|
4317
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridBodyComponent, never>;
|
|
4318
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MozGridBodyComponent, "moz-grid-body", never, { "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "showExpand": { "alias": "showExpand"; "required": false; "isSignal": true; }; "detailTemplate": { "alias": "detailTemplate"; "required": false; "isSignal": true; }; }, { "cellEdit": "cellEdit"; "cellEditCancel": "cellEditCancel"; "rowSelectionToggle": "rowSelectionToggle"; "groupToggle": "groupToggle"; }, never, never, true, never>;
|
|
4319
|
-
}
|
|
4320
|
-
|
|
4321
|
-
declare class MozGridRowComponent<T = unknown> {
|
|
4322
|
-
protected readonly state: GridStateManager<any>;
|
|
4323
|
-
private readonly inlineEdit;
|
|
4324
|
-
private readonly rowSelection;
|
|
4325
|
-
private readonly expandableEngine;
|
|
4326
|
-
private readonly elRef;
|
|
4327
|
-
protected readonly trackByField: typeof trackByField;
|
|
4328
|
-
readonly row: _angular_core.InputSignal<T>;
|
|
4329
|
-
readonly rowIndex: _angular_core.InputSignal<number>;
|
|
4330
|
-
readonly showCheckbox: _angular_core.InputSignal<boolean>;
|
|
4331
|
-
readonly showExpand: _angular_core.InputSignal<boolean>;
|
|
4332
|
-
readonly cellEdit: _angular_core.OutputEmitterRef<{
|
|
4333
|
-
row: T;
|
|
4334
|
-
rowIndex: number;
|
|
4335
|
-
field: string;
|
|
4336
|
-
oldValue: unknown;
|
|
4337
|
-
newValue: unknown;
|
|
4338
|
-
}>;
|
|
4339
|
-
readonly cellEditCancel: _angular_core.OutputEmitterRef<{
|
|
4340
|
-
rowIndex: number;
|
|
4341
|
-
field: string;
|
|
4342
|
-
originalValue: unknown;
|
|
4343
|
-
}>;
|
|
4344
|
-
readonly rowSelectionToggle: _angular_core.OutputEmitterRef<void>;
|
|
4345
|
-
readonly isSelected: _angular_core.Signal<boolean>;
|
|
4346
|
-
readonly isExpanded: _angular_core.Signal<boolean>;
|
|
4347
|
-
/** Width consumed by sticky utility cells before the first pinned-left
|
|
4348
|
-
* column (expand button + checkbox). */
|
|
4349
|
-
protected readonly utilityLeftWidth: _angular_core.Signal<number>;
|
|
4350
|
-
onExpandClick(event: Event): void;
|
|
4351
|
-
onCheckboxClick(event: MouseEvent): void;
|
|
4352
|
-
onCommitEdit(): void;
|
|
4353
|
-
onCancelEdit(): void;
|
|
4354
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridRowComponent<any>, never>;
|
|
4355
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MozGridRowComponent<any>, "moz-grid-row", never, { "row": { "alias": "row"; "required": true; "isSignal": true; }; "rowIndex": { "alias": "rowIndex"; "required": true; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "showExpand": { "alias": "showExpand"; "required": false; "isSignal": true; }; }, { "cellEdit": "cellEdit"; "cellEditCancel": "cellEditCancel"; "rowSelectionToggle": "rowSelectionToggle"; }, never, never, true, never>;
|
|
4356
|
-
}
|
|
4357
|
-
|
|
4358
|
-
declare class MozGridCellComponent<T = unknown> {
|
|
4359
|
-
private readonly state;
|
|
4360
|
-
private readonly inlineEdit;
|
|
4361
|
-
private readonly cellSelectionEngine;
|
|
4362
|
-
private readonly validationEngine;
|
|
4363
|
-
private readonly clipboard;
|
|
4364
|
-
private readonly gridEngine;
|
|
4365
|
-
/** Optional: present only when the grid provides `FormulaEngine`. */
|
|
4366
|
-
private readonly formulaEngine;
|
|
4367
|
-
private readonly refHighlight;
|
|
4368
|
-
private readonly elRef;
|
|
4369
|
-
constructor();
|
|
4370
|
-
private focusEditor;
|
|
4371
|
-
readonly row: _angular_core.InputSignal<T>;
|
|
4372
|
-
readonly rowIndex: _angular_core.InputSignal<number>;
|
|
4373
|
-
readonly colIndex: _angular_core.InputSignal<number>;
|
|
4374
|
-
readonly colState: _angular_core.InputSignal<ColumnStateEntry>;
|
|
4375
|
-
readonly def: _angular_core.InputSignal<ColumnDef<T>>;
|
|
4376
|
-
readonly isLast: _angular_core.InputSignal<boolean>;
|
|
4377
|
-
readonly pinnedEnd: _angular_core.InputSignal<boolean>;
|
|
4378
|
-
/** When set, applies `position: sticky` with the given side; the offset is
|
|
4379
|
-
* read from `pinnedOffset()`. */
|
|
4380
|
-
readonly pinnedSticky: _angular_core.InputSignal<"left" | "right" | null>;
|
|
4381
|
-
/** Pixel offset applied to `left` (when `pinnedSticky === 'left'`) or
|
|
4382
|
-
* `right` (when `'right'`). */
|
|
4383
|
-
readonly pinnedOffset: _angular_core.InputSignal<number>;
|
|
4384
|
-
/** Marks the cell at the visual edge of its pinned section so it can paint
|
|
4385
|
-
* the shadow that separates frozen columns from the scrollable area. */
|
|
4386
|
-
readonly pinnedEdge: _angular_core.InputSignal<"left" | "right" | null>;
|
|
4387
|
-
readonly resolvedMinWidth: _angular_core.Signal<number>;
|
|
4388
|
-
readonly commitEdit: _angular_core.OutputEmitterRef<void>;
|
|
4389
|
-
readonly cancelEdit: _angular_core.OutputEmitterRef<void>;
|
|
4390
|
-
onFormulaCancel(): void;
|
|
4391
|
-
readonly cellTemplate: _angular_core.Signal<_angular_core.TemplateRef<unknown> | null>;
|
|
4392
|
-
readonly editTemplate: _angular_core.Signal<_angular_core.TemplateRef<unknown> | null>;
|
|
4393
|
-
readonly updateDraftFn: (value: unknown) => void;
|
|
4394
|
-
readonly commitEditFn: () => void;
|
|
4395
|
-
/**
|
|
4396
|
-
* Stable cell address for the formula engine. `null` when the column
|
|
4397
|
-
* isn't formula-enabled or the row lacks a stable id (e.g. headers).
|
|
4398
|
-
*/
|
|
4399
|
-
private readonly formulaAddr;
|
|
4400
|
-
/**
|
|
4401
|
-
* Last-evaluated `FormulaValue` for this cell, or `null` when the cell
|
|
4402
|
-
* holds no formula. Reactivity is driven by `formulaEngine.values`.
|
|
4403
|
-
*/
|
|
4404
|
-
readonly formulaValue: _angular_core.Signal<FormulaValue | null>;
|
|
4405
|
-
readonly value: _angular_core.Signal<unknown>;
|
|
4406
|
-
readonly displayValue: _angular_core.Signal<string>;
|
|
4407
|
-
/** `true` when the current cell value is a formula error (e.g. `#DIV/0!`). */
|
|
4408
|
-
readonly hasFormulaError: _angular_core.Signal<boolean>;
|
|
4409
|
-
/**
|
|
4410
|
-
* Currently editing and the draft is a formula (starts with `=`).
|
|
4411
|
-
* Drives the switch to `MozGridFormulaEditorComponent` instead of the
|
|
4412
|
-
* default text input.
|
|
4413
|
-
*/
|
|
4414
|
-
readonly isFormulaEditing: _angular_core.Signal<boolean>;
|
|
4415
|
-
/**
|
|
4416
|
-
* Palette CSS var for the coloured border shown when this cell is
|
|
4417
|
-
* currently referenced by the formula being edited elsewhere. `null`
|
|
4418
|
-
* when no editor is active or this cell is not referenced.
|
|
4419
|
-
*/
|
|
4420
|
-
readonly refHighlightColor: _angular_core.Signal<string | null>;
|
|
4421
|
-
readonly editState: _angular_core.Signal<_mozaic_ds_angular.CellEditState>;
|
|
4422
|
-
readonly isEditing: _angular_core.Signal<boolean>;
|
|
4423
|
-
readonly editorType: _angular_core.Signal<CellEditorType>;
|
|
4424
|
-
readonly isFocused: _angular_core.Signal<boolean>;
|
|
4425
|
-
readonly isInRange: _angular_core.Signal<boolean>;
|
|
4426
|
-
readonly isInFillRange: _angular_core.Signal<boolean>;
|
|
4427
|
-
readonly isInFillRejectRange: _angular_core.Signal<boolean>;
|
|
4428
|
-
readonly cutEdges: _angular_core.Signal<{
|
|
4429
|
-
top: boolean;
|
|
4430
|
-
right: boolean;
|
|
4431
|
-
bottom: boolean;
|
|
4432
|
-
left: boolean;
|
|
4433
|
-
any: boolean;
|
|
4434
|
-
}>;
|
|
4435
|
-
readonly cellError: _angular_core.Signal<_mozaic_ds_angular.CellError | null>;
|
|
4436
|
-
onCellClick(event: MouseEvent): void;
|
|
4437
|
-
onMouseDown(event: MouseEvent): void;
|
|
4438
|
-
onMouseEnter(): void;
|
|
4439
|
-
onDoubleClick(): void;
|
|
4440
|
-
onEditorInput(event: Event): void;
|
|
4441
|
-
onSelectChange(event: Event): void;
|
|
4442
|
-
onCheckboxChange(event: Event): void;
|
|
4443
|
-
onDateChange(value: string | null): void;
|
|
4444
|
-
onFillHandleMouseDown(event: MouseEvent): void;
|
|
4445
|
-
onEditorBlur(event: FocusEvent): void;
|
|
4446
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridCellComponent<any>, never>;
|
|
4447
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MozGridCellComponent<any>, "moz-grid-cell", never, { "row": { "alias": "row"; "required": true; "isSignal": true; }; "rowIndex": { "alias": "rowIndex"; "required": true; "isSignal": true; }; "colIndex": { "alias": "colIndex"; "required": true; "isSignal": true; }; "colState": { "alias": "colState"; "required": true; "isSignal": true; }; "def": { "alias": "def"; "required": true; "isSignal": true; }; "isLast": { "alias": "isLast"; "required": false; "isSignal": true; }; "pinnedEnd": { "alias": "pinnedEnd"; "required": false; "isSignal": true; }; "pinnedSticky": { "alias": "pinnedSticky"; "required": false; "isSignal": true; }; "pinnedOffset": { "alias": "pinnedOffset"; "required": false; "isSignal": true; }; "pinnedEdge": { "alias": "pinnedEdge"; "required": false; "isSignal": true; }; }, { "commitEdit": "commitEdit"; "cancelEdit": "cancelEdit"; }, never, never, true, never>;
|
|
4448
|
-
}
|
|
4449
|
-
|
|
4450
|
-
declare class MozGridFooterComponent {
|
|
4451
|
-
protected readonly state: GridStateManager<any>;
|
|
4452
|
-
protected readonly engine: GridEngine<any>;
|
|
4453
|
-
readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
|
|
4454
|
-
readonly pageChange: _angular_core.OutputEmitterRef<PageEvent>;
|
|
4455
|
-
readonly currentPageSizeStr: _angular_core.Signal<string>;
|
|
4456
|
-
readonly pageSizeSelectOptions: _angular_core.Signal<{
|
|
4457
|
-
text: string;
|
|
4458
|
-
value: string;
|
|
4459
|
-
}[]>;
|
|
4460
|
-
readonly paginationOptions: _angular_core.Signal<{
|
|
4461
|
-
text: string;
|
|
4462
|
-
value: number;
|
|
4463
|
-
}[]>;
|
|
4464
|
-
readonly rangeLabel: _angular_core.Signal<string>;
|
|
4465
|
-
onPageChange(newPageIndex: number): void;
|
|
4466
|
-
onPageSizeChange(event: Event): void;
|
|
4467
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridFooterComponent, never>;
|
|
4468
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MozGridFooterComponent, "moz-grid-footer", never, { "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; }, never, never, true, never>;
|
|
4469
|
-
}
|
|
4470
|
-
|
|
4471
|
-
declare class MozGridGroupRowComponent<T = unknown> {
|
|
4472
|
-
protected readonly state: GridStateManager<any>;
|
|
4473
|
-
readonly groupRow: _angular_core.InputSignal<GroupRow<T>>;
|
|
4474
|
-
readonly toggleExpand: _angular_core.OutputEmitterRef<string>;
|
|
4475
|
-
readonly fieldLabel: _angular_core.Signal<string>;
|
|
4476
|
-
readonly groupValue: _angular_core.Signal<string>;
|
|
4477
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridGroupRowComponent<any>, never>;
|
|
4478
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MozGridGroupRowComponent<any>, "moz-grid-group-row", never, { "groupRow": { "alias": "groupRow"; "required": true; "isSignal": true; }; }, { "toggleExpand": "toggleExpand"; }, never, never, true, never>;
|
|
4479
|
-
}
|
|
4480
|
-
|
|
4481
|
-
declare class MozGridDetailRowComponent<T = unknown> {
|
|
4482
|
-
readonly data: _angular_core.InputSignal<T>;
|
|
4483
|
-
readonly rowIndex: _angular_core.InputSignal<number>;
|
|
4484
|
-
readonly detailTemplate: _angular_core.InputSignal<TemplateRef<unknown> | null>;
|
|
4485
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridDetailRowComponent<any>, never>;
|
|
4486
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MozGridDetailRowComponent<any>, "moz-grid-detail-row", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "rowIndex": { "alias": "rowIndex"; "required": true; "isSignal": true; }; "detailTemplate": { "alias": "detailTemplate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4487
|
-
}
|
|
4488
|
-
|
|
4489
|
-
declare class MozGridColumnVisibilityPanelComponent {
|
|
4490
|
-
private readonly state;
|
|
4491
|
-
readonly restoreColumn: _angular_core.OutputEmitterRef<string>;
|
|
4492
|
-
readonly restoreAll: _angular_core.OutputEmitterRef<void>;
|
|
4493
|
-
readonly hiddenColumns: _angular_core.Signal<{
|
|
4494
|
-
field: string;
|
|
4495
|
-
label: string;
|
|
4496
|
-
}[]>;
|
|
4497
|
-
onRestore(field: string): void;
|
|
4498
|
-
onRestoreAll(): void;
|
|
4499
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridColumnVisibilityPanelComponent, never>;
|
|
4500
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MozGridColumnVisibilityPanelComponent, "moz-grid-column-visibility-panel", never, {}, { "restoreColumn": "restoreColumn"; "restoreAll": "restoreAll"; }, never, never, true, never>;
|
|
4501
|
-
}
|
|
4502
|
-
|
|
4503
|
-
declare class MozGridHeaderMenuComponent {
|
|
4504
|
-
private readonly state;
|
|
4505
|
-
readonly field: _angular_core.InputSignal<string>;
|
|
4506
|
-
readonly isOpen: _angular_core.InputSignal<boolean>;
|
|
4507
|
-
readonly actionClick: _angular_core.OutputEmitterRef<{
|
|
4508
|
-
field: string;
|
|
4509
|
-
actionId: HeaderMenuActionId;
|
|
4510
|
-
}>;
|
|
4511
|
-
readonly close: _angular_core.OutputEmitterRef<void>;
|
|
4512
|
-
readonly menuItems: _angular_core.Signal<MozActionListItem[]>;
|
|
4513
|
-
onItemClick(item: MozActionListItem): void;
|
|
4514
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridHeaderMenuComponent, never>;
|
|
4515
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MozGridHeaderMenuComponent, "moz-grid-header-menu", never, { "field": { "alias": "field"; "required": true; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; }, { "actionClick": "actionClick"; "close": "close"; }, never, never, true, never>;
|
|
4516
|
-
}
|
|
4517
|
-
|
|
4518
|
-
type SettingsScreen = 'main' | 'density' | 'columns';
|
|
4519
|
-
interface DraftColumn {
|
|
4520
|
-
field: string;
|
|
4521
|
-
headerName: string;
|
|
4522
|
-
visible: boolean;
|
|
4523
|
-
}
|
|
4524
|
-
declare class GridSettingsDrawerComponent {
|
|
4525
|
-
private readonly drawerRef;
|
|
4526
|
-
private readonly data;
|
|
4527
|
-
readonly screen: _angular_core.WritableSignal<SettingsScreen>;
|
|
4528
|
-
readonly draftDensity: _angular_core.WritableSignal<GridDensity>;
|
|
4529
|
-
readonly draftColumns: _angular_core.WritableSignal<DraftColumn[]>;
|
|
4530
|
-
readonly searchQuery: _angular_core.WritableSignal<string>;
|
|
4531
|
-
readonly densityOptions: {
|
|
4532
|
-
text: string;
|
|
4533
|
-
value: string;
|
|
4534
|
-
}[];
|
|
4535
|
-
readonly densityLabel: _angular_core.Signal<string>;
|
|
4536
|
-
readonly columnsLabel: _angular_core.Signal<string>;
|
|
4537
|
-
readonly filteredColumns: _angular_core.Signal<DraftColumn[]>;
|
|
4538
|
-
private readonly defaultColumns;
|
|
4539
|
-
constructor();
|
|
4540
|
-
goTo(screen: SettingsScreen): void;
|
|
4541
|
-
onColumnToggle(field: string, checked: boolean): void;
|
|
4542
|
-
onColumnDrop(event: CdkDragDrop<DraftColumn[]>): void;
|
|
4543
|
-
onSearchInput(event: Event): void;
|
|
4544
|
-
hideAll(): void;
|
|
4545
|
-
showAll(): void;
|
|
4546
|
-
apply(): void;
|
|
4547
|
-
reset(): void;
|
|
4548
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridSettingsDrawerComponent, never>;
|
|
4549
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<GridSettingsDrawerComponent, "moz-grid-settings-drawer", never, {}, {}, never, never, true, never>;
|
|
4550
|
-
}
|
|
4551
|
-
|
|
4552
|
-
interface DraftGroupItem {
|
|
4553
|
-
field: string;
|
|
4554
|
-
headerName: string;
|
|
4555
|
-
sortDirection: 'asc' | 'desc';
|
|
4556
|
-
}
|
|
4557
|
-
declare class GridGroupDrawerComponent {
|
|
4558
|
-
private readonly drawerRef;
|
|
4559
|
-
private readonly data;
|
|
4560
|
-
readonly draftGrouped: _angular_core.WritableSignal<DraftGroupItem[]>;
|
|
4561
|
-
private readonly allAvailable;
|
|
4562
|
-
readonly available: _angular_core.Signal<{
|
|
4563
|
-
field: string;
|
|
4564
|
-
headerName: string;
|
|
4565
|
-
}[]>;
|
|
4566
|
-
onDrop(event: CdkDragDrop<DraftGroupItem[]>): void;
|
|
4567
|
-
onSortDirectionChange(index: number, event: Event): void;
|
|
4568
|
-
addGroup(field: string): void;
|
|
4569
|
-
removeGroup(field: string): void;
|
|
4570
|
-
apply(): void;
|
|
4571
|
-
reset(): void;
|
|
4572
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridGroupDrawerComponent, never>;
|
|
4573
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<GridGroupDrawerComponent, "moz-grid-group-drawer", never, {}, {}, never, never, true, never>;
|
|
4574
|
-
}
|
|
4575
|
-
|
|
4576
|
-
declare class MozGridLoadingIndicatorComponent {
|
|
4577
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozGridLoadingIndicatorComponent, never>;
|
|
4578
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MozGridLoadingIndicatorComponent, "moz-grid-loading-indicator", never, {}, {}, never, never, true, never>;
|
|
4579
|
-
}
|
|
4580
|
-
|
|
4581
|
-
/**
|
|
4582
|
-
* Structural host for custom filter components inside the filter builder.
|
|
4583
|
-
*
|
|
4584
|
-
* Usage in template:
|
|
4585
|
-
* <ng-container mozCustomFilterHost
|
|
4586
|
-
* [componentType]="descriptor.filterComponent"
|
|
4587
|
-
* [condition]="condition"
|
|
4588
|
-
* (conditionChange)="onValueChange(condition.id, $event)"
|
|
4589
|
-
* />
|
|
4590
|
-
*/
|
|
4591
|
-
declare class MozCustomFilterHostDirective implements OnChanges, OnDestroy {
|
|
4592
|
-
readonly componentType: _angular_core.InputSignal<Type<MozGridCustomFilter>>;
|
|
4593
|
-
readonly condition: _angular_core.InputSignal<FilterCondition>;
|
|
4594
|
-
readonly conditionChange: _angular_core.OutputEmitterRef<FilterValue>;
|
|
4595
|
-
private readonly vcr;
|
|
4596
|
-
private ref;
|
|
4597
|
-
private sub;
|
|
4598
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
4599
|
-
ngOnDestroy(): void;
|
|
4600
|
-
private teardown;
|
|
4601
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MozCustomFilterHostDirective, never>;
|
|
4602
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MozCustomFilterHostDirective, "[mozCustomFilterHost]", never, { "componentType": { "alias": "componentType"; "required": true; "isSignal": true; }; "condition": { "alias": "condition"; "required": true; "isSignal": true; }; }, { "conditionChange": "conditionChange"; }, never, never, true, never>;
|
|
4603
|
-
}
|
|
4604
|
-
|
|
4605
2261
|
/**
|
|
4606
2262
|
* McCombobox — Data models & type guards
|
|
4607
2263
|
*
|
|
@@ -5072,5 +2728,5 @@ declare class MozTreeNodeComponent<T = unknown> {
|
|
|
5072
2728
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MozTreeNodeComponent<any>, "moz-tree-node", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "depth": { "alias": "depth"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "indentSize": { "alias": "indentSize"; "required": false; "isSignal": true; }; "nodeTemplate": { "alias": "nodeTemplate"; "required": false; "isSignal": true; }; "nodeTemplates": { "alias": "nodeTemplates"; "required": false; "isSignal": true; }; "loadChildren": { "alias": "loadChildren"; "required": false; "isSignal": true; }; "ancestors": { "alias": "ancestors"; "required": false; "isSignal": true; }; "flat": { "alias": "flat"; "required": false; "isSignal": true; }; "noResultText": { "alias": "noResultText"; "required": false; "isSignal": true; }; }, { "expandChange": "expandChange"; "selectionChange": "selectionChange"; }, never, never, true, never>;
|
|
5073
2729
|
}
|
|
5074
2730
|
|
|
5075
|
-
export { ACTION_LISTBOX_CONFIG, ActionListboxContainerComponent, ActionListboxRef, BuiltInMenuComponent,
|
|
5076
|
-
export type { ActionListboxConfig, ActionListboxPosition,
|
|
2731
|
+
export { ACTION_LISTBOX_CONFIG, ActionListboxContainerComponent, ActionListboxRef, BuiltInMenuComponent, DEFAULT_ACTION_LISTBOX_CONFIG, DEFAULT_MODAL_CONFIG, DEFAULT_TOASTER_CONFIG, DRAWER_CONFIG, DRAWER_DATA, DrawerContainerComponent, MODAL_CONFIG, MODAL_DATA, MozAccordionComponent, MozAccordionContentComponent, MozAccordionHeaderComponent, MozAccordionPanelComponent, MozActionBottomBarComponent, MozActionListboxComponent, MozActionListboxTriggerDirective, MozAvatarComponent, MozBreadcrumbComponent, MozButtonComponent, MozCalloutComponent, MozCarouselComponent, MozCheckListMenuComponent, MozCheckboxComponent, MozCheckboxGroupComponent, MozCircularProgressBarComponent, MozComboboxComponent, MozComboboxHarness, MozComboboxOptionHarness, MozDatepickerComponent, MozDividerComponent, MozDrawerComponent, MozDrawerFooterDirective, MozDrawerRef, MozDrawerService, MozFieldComponent, MozFieldGroupComponent, MozFileUploaderComponent, MozFileUploaderItemComponent, MozFlagComponent, MozIconButtonComponent, MozKpiComponent, MozLinearProgressBarBufferComponent, MozLinearProgressBarPercentageComponent, MozLinkComponent, MozLoaderComponent, MozLoadingOverlayComponent, MozModalComponent, MozModalFooterDirective, MozModalRef, MozModalService, MozNavigationIndicatorComponent, MozNumberBadgeComponent, MozOverlayComponent, MozPageHeaderComponent, MozPaginationComponent, MozPasswordInputDirective, MozPhoneNumberComponent, MozPincodeInputComponent, MozPopoverComponent, MozPopoverFooterDirective, MozPopoverTriggerDirective, MozQuantitySelectorComponent, MozRadioComponent, MozRadioGroupComponent, MozSegmentedControlComponent, MozSelectComponent, MozSidebarComponent, MozStarRatingComponent, MozStatusBadgeComponent, MozStatusDotComponent, MozStatusMessageComponent, MozStatusNotificationComponent, MozStepperBottomBarComponent, MozStepperCompactComponent, MozStepperInlineComponent, MozStepperStackedComponent, MozTabComponent, MozTabsComponent, MozTagComponent, MozTextInput, MozTextarea, MozTileComponent, MozTileExpandableComponent, MozTileSelectableComponent, MozToasterComponent, MozToasterRef, MozToasterService, MozToggleComponent, MozTooltipComponent, MozTooltipDirective, MozTreeComponent, MozTreeNodeComponent, MozTreeNodeTemplateDirective, POPOVER_CONFIG, POPOVER_DATA, PopoverContainerComponent, PopoverRef, PopoverService, TOASTER_CONFIG, TreeKeyboardService, TreeSelectionService, TreeStateService, isSection };
|
|
2732
|
+
export type { ActionListboxConfig, ActionListboxPosition, FlatNode, LoadChildrenFn, MozActionListItem, MozActionListItemAppearance, MozAvatarSize, MozBreadcrumbAppearance, MozBreadcrumbLink, MozBuiltInMenuItem, MozBuiltInMenuItemTarget, MozButtonAppearance, MozButtonIconPosition, MozButtonSize, MozButtonType, MozCalloutVariant, MozCheckListMenuItem, MozCircularProgessBarSize, MozComboboxItem, MozComboboxOption, MozComboboxSection, MozComboboxSize, MozDatepickerSize, MozDividerAppearance, MozDividerOrientation, MozDividerSize, MozDrawerConfig, MozDrawerPosition, MozFileUploaderFormat, MozFileUploaderItemFormat, MozFlagType, MozIconButtonAppearance, MozIconButtonSize, MozIconButtonType, MozKpiSize, MozKpiStatus, MozKpiTrend, MozLinearProgressBarBufferSize, MozLinkAppearance, MozLinkIconPosition, MozLinkSize, MozLoaderAppearance, MozLoaderSize, MozNavigationIndicatorAction, MozNumberBadgeAppearance, MozNumberBadgeSize, MozPageHeaderScope, MozPhoneNumberCountry, MozPhoneNumberSize, MozPhoneNumberValue, MozPincodeLength, MozPopoverAppearance, MozPopoverPosition, MozPopoverSize, MozQuantitySelectorSize, MozSegmentedControlSize, MozSegmentedItem, MozSelectOption, MozSelectSize, MozSelectValue, MozSidebarItem, MozSidebarSubItem, MozStarRatingAppearance, MozStarRatingSize, MozStatusBadgeStatus, MozStatusDotSize, MozStatusDotStatus, MozStatusMessageStatus, MozStatusNotificationStatus, MozStepperBottomBarStep, MozStepperInlineStep, MozStepperStackedStep, MozTabItem, MozTagSize, MozTagType, MozTextInputSize, MozTileAppearance, MozTileExpandableTrigger, MozTileInputPosition, MozTileInputVerticalPosition, MozTileSelectableAppearance, MozTileSelectableType, MozToasterPosition, MozToasterRole, MozToasterStatus, MozToggleSize, MozTooltipPosition, PopoverConfig, PopoverTriggerMode, TreeNode, TreeNodeContext, TreeSelectionMode };
|