@praxisui/list 1.0.0-beta.64 → 1.0.0-beta.65
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/praxisui-list.mjs +4832 -387
- package/fesm2022/praxisui-list.mjs.map +1 -1
- package/index.d.ts +663 -47
- package/package.json +2 -2
package/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as rxjs from 'rxjs';
|
|
2
2
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
3
|
-
import * as
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
4
|
import { OnInit, OnChanges, OnDestroy, EventEmitter, SimpleChanges, ChangeDetectorRef, DoCheck, Provider } from '@angular/core';
|
|
5
5
|
import { MatSelectionListChange } from '@angular/material/list';
|
|
6
6
|
import { FormGroup, FormControl } from '@angular/forms';
|
|
@@ -8,10 +8,10 @@ import { BaseAiAdapter, Capability as Capability$1, PatchResult } from '@praxisu
|
|
|
8
8
|
import { SettingsValueProvider } from '@praxisui/settings-panel';
|
|
9
9
|
import { GlobalActionCatalogEntry, ComponentDocMeta, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog } from '@praxisui/core';
|
|
10
10
|
|
|
11
|
-
type TemplateType = 'text' | 'icon' | 'image' | 'chip' | 'rating' | 'currency' | 'date' | 'html' | 'slot';
|
|
11
|
+
type TemplateType = 'text' | 'icon' | 'image' | 'chip' | 'rating' | 'currency' | 'date' | 'html' | 'slot' | 'metric' | 'compose' | 'component';
|
|
12
12
|
interface TemplateDef {
|
|
13
13
|
type: TemplateType;
|
|
14
|
-
expr
|
|
14
|
+
expr?: string;
|
|
15
15
|
class?: string;
|
|
16
16
|
style?: string;
|
|
17
17
|
color?: string;
|
|
@@ -22,6 +22,54 @@ interface TemplateDef {
|
|
|
22
22
|
size?: number;
|
|
23
23
|
color?: string;
|
|
24
24
|
};
|
|
25
|
+
metric?: {
|
|
26
|
+
label?: string;
|
|
27
|
+
valueExpr?: string;
|
|
28
|
+
caption?: string;
|
|
29
|
+
subcaption?: string;
|
|
30
|
+
captionPosition?: 'below-value' | 'below-progress';
|
|
31
|
+
icon?: string;
|
|
32
|
+
iconExpr?: string;
|
|
33
|
+
tone?: string;
|
|
34
|
+
toneExpr?: string;
|
|
35
|
+
layout?: 'value-only' | 'value+caption' | 'icon+value+caption' | 'stacked-center';
|
|
36
|
+
align?: 'start' | 'center' | 'end';
|
|
37
|
+
progress?: {
|
|
38
|
+
valueExpr?: string;
|
|
39
|
+
max?: number;
|
|
40
|
+
mode?: 'determinate' | 'indeterminate';
|
|
41
|
+
color?: string;
|
|
42
|
+
colorExpr?: string;
|
|
43
|
+
trackColor?: string;
|
|
44
|
+
};
|
|
45
|
+
valueClass?: string;
|
|
46
|
+
valueStyle?: string;
|
|
47
|
+
showBar?: boolean;
|
|
48
|
+
barValueExpr?: string;
|
|
49
|
+
barColor?: string;
|
|
50
|
+
barVariant?: 'determinate' | 'indeterminate';
|
|
51
|
+
legendExpr?: string;
|
|
52
|
+
iconPosition?: 'left' | 'right' | 'top';
|
|
53
|
+
iconColorExpr?: string;
|
|
54
|
+
};
|
|
55
|
+
compose?: {
|
|
56
|
+
items?: TemplateDef[];
|
|
57
|
+
direction?: 'row' | 'column';
|
|
58
|
+
align?: 'start' | 'center' | 'end';
|
|
59
|
+
gap?: string;
|
|
60
|
+
wrap?: boolean;
|
|
61
|
+
class?: string;
|
|
62
|
+
style?: string;
|
|
63
|
+
nodes?: TemplateDef[];
|
|
64
|
+
separator?: string;
|
|
65
|
+
orientation?: 'horizontal' | 'vertical';
|
|
66
|
+
};
|
|
67
|
+
component?: {
|
|
68
|
+
id: string;
|
|
69
|
+
inputs?: Record<string, any>;
|
|
70
|
+
class?: string;
|
|
71
|
+
style?: string;
|
|
72
|
+
};
|
|
25
73
|
};
|
|
26
74
|
imageAlt?: string;
|
|
27
75
|
badge?: {
|
|
@@ -36,6 +84,38 @@ interface ListFeatureDef {
|
|
|
36
84
|
class?: string;
|
|
37
85
|
style?: string;
|
|
38
86
|
}
|
|
87
|
+
interface TemplateFeatureDef extends TemplateDef {
|
|
88
|
+
icon?: string;
|
|
89
|
+
}
|
|
90
|
+
type TemplatingFeatureDef = ListFeatureDef | TemplateFeatureDef;
|
|
91
|
+
type ListExpansionSectionType = 'info-list' | 'chip-list' | 'timeline' | 'key-value' | 'metadata' | 'component';
|
|
92
|
+
interface ListExpansionSectionDef {
|
|
93
|
+
id: string;
|
|
94
|
+
title?: string;
|
|
95
|
+
type: ListExpansionSectionType;
|
|
96
|
+
itemsExpr?: string;
|
|
97
|
+
emptyLabel?: string;
|
|
98
|
+
metadata?: {
|
|
99
|
+
orientation?: 'horizontal' | 'vertical';
|
|
100
|
+
columns?: 1 | 2 | 3;
|
|
101
|
+
gap?: string;
|
|
102
|
+
keyClass?: string;
|
|
103
|
+
valueClass?: string;
|
|
104
|
+
keyStyle?: string;
|
|
105
|
+
valueStyle?: string;
|
|
106
|
+
};
|
|
107
|
+
component?: {
|
|
108
|
+
id: string;
|
|
109
|
+
inputs?: Record<string, any>;
|
|
110
|
+
class?: string;
|
|
111
|
+
style?: string;
|
|
112
|
+
};
|
|
113
|
+
class?: string;
|
|
114
|
+
style?: string;
|
|
115
|
+
showIf?: string;
|
|
116
|
+
}
|
|
117
|
+
type ListTemplatingSlot = 'leading' | 'primary' | 'secondary' | 'meta' | 'trailing' | 'identity' | 'balance' | 'limit' | 'risk' | 'alerts' | 'owner';
|
|
118
|
+
type ListRowLayoutSlot = ListTemplatingSlot | 'actions' | 'expand';
|
|
39
119
|
interface PraxisListConfig {
|
|
40
120
|
id?: string;
|
|
41
121
|
dataSource?: {
|
|
@@ -47,6 +127,7 @@ interface PraxisListConfig {
|
|
|
47
127
|
layout?: {
|
|
48
128
|
variant?: 'list' | 'cards' | 'tiles';
|
|
49
129
|
density?: 'default' | 'comfortable' | 'compact';
|
|
130
|
+
itemSpacing?: 'none' | 'tight' | 'default' | 'relaxed';
|
|
50
131
|
lines?: 1 | 2 | 3;
|
|
51
132
|
dividers?: 'none' | 'between' | 'all';
|
|
52
133
|
model?: 'standard' | 'media' | 'hotel';
|
|
@@ -54,6 +135,24 @@ interface PraxisListConfig {
|
|
|
54
135
|
stickySectionHeader?: boolean;
|
|
55
136
|
virtualScroll?: boolean;
|
|
56
137
|
pageSize?: number;
|
|
138
|
+
rowLayout?: {
|
|
139
|
+
type?: 'grid' | 'flex';
|
|
140
|
+
columns?: Array<{
|
|
141
|
+
slot: ListRowLayoutSlot;
|
|
142
|
+
width?: string;
|
|
143
|
+
minWidth?: string;
|
|
144
|
+
maxWidth?: string;
|
|
145
|
+
align?: 'start' | 'center' | 'end';
|
|
146
|
+
justify?: 'start' | 'center' | 'end' | 'stretch';
|
|
147
|
+
class?: string;
|
|
148
|
+
style?: string;
|
|
149
|
+
}>;
|
|
150
|
+
gap?: string;
|
|
151
|
+
align?: 'start' | 'center' | 'end' | 'stretch';
|
|
152
|
+
itemAlignY?: 'start' | 'center' | 'end' | 'stretch';
|
|
153
|
+
class?: string;
|
|
154
|
+
style?: string;
|
|
155
|
+
};
|
|
57
156
|
};
|
|
58
157
|
skin?: {
|
|
59
158
|
type?: 'pill-soft' | 'gradient-tile' | 'glass' | 'elevated' | 'outline' | 'flat' | 'neumorphism' | 'custom';
|
|
@@ -76,19 +175,31 @@ interface PraxisListConfig {
|
|
|
76
175
|
compareBy?: string;
|
|
77
176
|
return?: 'value' | 'item' | 'id';
|
|
78
177
|
};
|
|
178
|
+
interaction?: {
|
|
179
|
+
expandable?: boolean;
|
|
180
|
+
expandTrigger?: 'row' | 'icon' | 'row+icon';
|
|
181
|
+
expandMode?: 'single' | 'multiple';
|
|
182
|
+
expandPlacement?: 'expand' | 'trailing';
|
|
183
|
+
};
|
|
79
184
|
templating?: {
|
|
80
185
|
leading?: TemplateDef;
|
|
81
186
|
primary?: TemplateDef;
|
|
82
187
|
secondary?: TemplateDef;
|
|
83
188
|
meta?: TemplateDef;
|
|
84
189
|
trailing?: TemplateDef;
|
|
190
|
+
identity?: TemplateDef;
|
|
191
|
+
balance?: TemplateDef;
|
|
192
|
+
limit?: TemplateDef;
|
|
193
|
+
risk?: TemplateDef;
|
|
194
|
+
alerts?: TemplateDef;
|
|
195
|
+
owner?: TemplateDef;
|
|
85
196
|
metaPlacement?: 'side' | 'line';
|
|
86
197
|
metaPrefixIcon?: string;
|
|
87
198
|
statusPosition?: 'inline' | 'top-right';
|
|
88
199
|
chipColorMap?: Record<string, string>;
|
|
89
200
|
chipLabelMap?: Record<string, string>;
|
|
90
201
|
iconColorMap?: Record<string, string>;
|
|
91
|
-
features?:
|
|
202
|
+
features?: TemplatingFeatureDef[];
|
|
92
203
|
featuresVisible?: boolean;
|
|
93
204
|
featuresMode?: 'icons+labels' | 'icons-only' | 'labels-only';
|
|
94
205
|
sectionHeader?: TemplateDef;
|
|
@@ -97,6 +208,65 @@ interface PraxisListConfig {
|
|
|
97
208
|
count?: number;
|
|
98
209
|
};
|
|
99
210
|
};
|
|
211
|
+
rules?: {
|
|
212
|
+
itemStyles?: Array<{
|
|
213
|
+
id: string;
|
|
214
|
+
condition?: string;
|
|
215
|
+
class?: string;
|
|
216
|
+
style?: string;
|
|
217
|
+
border?: string;
|
|
218
|
+
background?: string;
|
|
219
|
+
}>;
|
|
220
|
+
slotOverrides?: Array<{
|
|
221
|
+
id: string;
|
|
222
|
+
slot: ListTemplatingSlot;
|
|
223
|
+
condition?: string;
|
|
224
|
+
template?: TemplateDef;
|
|
225
|
+
class?: string;
|
|
226
|
+
style?: string;
|
|
227
|
+
hide?: boolean;
|
|
228
|
+
}>;
|
|
229
|
+
};
|
|
230
|
+
expansion?: {
|
|
231
|
+
sections?: ListExpansionSectionDef[];
|
|
232
|
+
dataSource?: {
|
|
233
|
+
mode?: 'inline' | 'resource' | 'resourcePath';
|
|
234
|
+
resource?: {
|
|
235
|
+
kind: string;
|
|
236
|
+
id: string;
|
|
237
|
+
version: string;
|
|
238
|
+
};
|
|
239
|
+
resourcePath?: {
|
|
240
|
+
path: string;
|
|
241
|
+
method?: 'GET' | 'POST';
|
|
242
|
+
paramsMap?: Record<string, string>;
|
|
243
|
+
};
|
|
244
|
+
resourceAllowList?: string[];
|
|
245
|
+
fallbackMode?: 'none' | 'inline' | 'resource';
|
|
246
|
+
cache?: {
|
|
247
|
+
enabled?: boolean;
|
|
248
|
+
};
|
|
249
|
+
cancelOnCollapse?: boolean;
|
|
250
|
+
};
|
|
251
|
+
schemaContract?: {
|
|
252
|
+
kind: 'praxis.detail.schema';
|
|
253
|
+
version: string;
|
|
254
|
+
allowedNodes?: Array<'info-list' | 'chip-list' | 'timeline' | 'key-value' | 'metadata' | 'component'>;
|
|
255
|
+
maxSections?: number;
|
|
256
|
+
maxItemsPerSection?: number;
|
|
257
|
+
requireSectionIds?: boolean;
|
|
258
|
+
};
|
|
259
|
+
rendering?: {
|
|
260
|
+
shell?: 'attached' | 'detached' | 'modal';
|
|
261
|
+
columns?: 1 | 2 | 3;
|
|
262
|
+
gap?: string;
|
|
263
|
+
padding?: string;
|
|
264
|
+
class?: string;
|
|
265
|
+
style?: string;
|
|
266
|
+
loadingTemplate?: TemplateDef;
|
|
267
|
+
errorTemplate?: TemplateDef;
|
|
268
|
+
};
|
|
269
|
+
};
|
|
100
270
|
actions?: Array<{
|
|
101
271
|
id: string;
|
|
102
272
|
icon?: string;
|
|
@@ -110,6 +280,7 @@ interface PraxisListConfig {
|
|
|
110
280
|
globalPayload?: any;
|
|
111
281
|
emitLocal?: boolean;
|
|
112
282
|
showLoading?: boolean;
|
|
283
|
+
placement?: 'actions' | 'trailing';
|
|
113
284
|
confirmation?: {
|
|
114
285
|
title?: string;
|
|
115
286
|
message?: string;
|
|
@@ -197,8 +368,8 @@ declare class ListDataService<T = any> {
|
|
|
197
368
|
private safeSerialize;
|
|
198
369
|
private warnFilterFallbackOnce;
|
|
199
370
|
private buildLogOptions;
|
|
200
|
-
static ɵfac:
|
|
201
|
-
static ɵprov:
|
|
371
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ListDataService<any>, never>;
|
|
372
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ListDataService<any>>;
|
|
202
373
|
}
|
|
203
374
|
|
|
204
375
|
declare class ListAiAdapter extends BaseAiAdapter<PraxisListConfig> {
|
|
@@ -217,6 +388,16 @@ declare class ListAiAdapter extends BaseAiAdapter<PraxisListConfig> {
|
|
|
217
388
|
private cloneConfig;
|
|
218
389
|
}
|
|
219
390
|
|
|
391
|
+
interface ListRowLayoutColumnViewModel {
|
|
392
|
+
slot: ListRowLayoutSlot;
|
|
393
|
+
width?: string;
|
|
394
|
+
minWidth?: string;
|
|
395
|
+
maxWidth?: string;
|
|
396
|
+
align?: 'start' | 'center' | 'end';
|
|
397
|
+
justify?: 'start' | 'center' | 'end' | 'stretch';
|
|
398
|
+
class?: string;
|
|
399
|
+
style?: string;
|
|
400
|
+
}
|
|
220
401
|
declare class PraxisList implements OnInit, OnChanges, OnDestroy {
|
|
221
402
|
private static nextSkinScopeId;
|
|
222
403
|
config: PraxisListConfig;
|
|
@@ -256,6 +437,7 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
|
|
|
256
437
|
private readonly cdr;
|
|
257
438
|
private readonly componentKeys;
|
|
258
439
|
private readonly logger;
|
|
440
|
+
private readonly i18n;
|
|
259
441
|
private readonly logContext;
|
|
260
442
|
private readonly route;
|
|
261
443
|
private readonly globalActions;
|
|
@@ -267,8 +449,11 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
|
|
|
267
449
|
private externalConfigRevision;
|
|
268
450
|
private nextActionItemObjectId;
|
|
269
451
|
private readonly actionItemObjectIds;
|
|
452
|
+
private nextExpansionItemObjectId;
|
|
453
|
+
private readonly expansionItemObjectIds;
|
|
270
454
|
private readonly destroy$;
|
|
271
455
|
actionLoadingState: Record<string, boolean>;
|
|
456
|
+
private expandedItemKeys;
|
|
272
457
|
ngOnInit(): void;
|
|
273
458
|
ngOnChanges(changes: SimpleChanges): void;
|
|
274
459
|
ngOnDestroy(): void;
|
|
@@ -282,20 +467,69 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
|
|
|
282
467
|
isTilesVariant(): boolean;
|
|
283
468
|
isSelectionEnabled(): boolean;
|
|
284
469
|
private setupSelectionBinding;
|
|
285
|
-
leading: (item: any) => any;
|
|
286
|
-
primary: (item: any) => any;
|
|
287
|
-
secondary: (item: any) => any;
|
|
288
|
-
meta: (item: any) => any;
|
|
289
|
-
trailing: (item: any) => any;
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
470
|
+
leading: (item: any) => Record<string, any> | null;
|
|
471
|
+
primary: (item: any) => Record<string, any> | null;
|
|
472
|
+
secondary: (item: any) => Record<string, any> | null;
|
|
473
|
+
meta: (item: any) => Record<string, any> | null;
|
|
474
|
+
trailing: (item: any) => Record<string, any> | null;
|
|
475
|
+
identity: (item: any) => Record<string, any> | null;
|
|
476
|
+
balance: (item: any) => Record<string, any> | null;
|
|
477
|
+
limit: (item: any) => Record<string, any> | null;
|
|
478
|
+
risk: (item: any) => Record<string, any> | null;
|
|
479
|
+
alerts: (item: any) => Record<string, any> | null;
|
|
480
|
+
owner: (item: any) => Record<string, any> | null;
|
|
481
|
+
sectionHeaderTemplate: (key: string) => Record<string, any>;
|
|
482
|
+
emptyStateTemplate: () => Record<string, any>;
|
|
483
|
+
itemRuleClass(item: any): string | undefined;
|
|
484
|
+
itemRuleStyle(item: any): string | undefined;
|
|
485
|
+
rowLayoutItemStyle(item: any): string | undefined;
|
|
486
|
+
rowLayoutItemClass(item: any): string | undefined;
|
|
487
|
+
hasRowLayoutGrid(): boolean;
|
|
488
|
+
rowLayoutColumns(): ListRowLayoutColumnViewModel[];
|
|
489
|
+
rowLayoutTrackColumn(index: number, column: ListRowLayoutColumnViewModel): string;
|
|
490
|
+
rowLayoutContentStyle(): string | undefined;
|
|
491
|
+
rowLayoutContentClass(): string | undefined;
|
|
492
|
+
rowLayoutColumnClass(column: ListRowLayoutColumnViewModel): string | undefined;
|
|
493
|
+
rowLayoutColumnStyle(column: ListRowLayoutColumnViewModel): string | undefined;
|
|
494
|
+
rowLayoutSlot(item: any, slot: string): Record<string, any> | null;
|
|
495
|
+
rowLayoutHasSlot(slot: ListRowLayoutSlot): boolean;
|
|
496
|
+
rowLayoutImageAlt(slot: string): string;
|
|
497
|
+
rowLayoutAlignItems(): 'start' | 'center' | 'end' | 'stretch';
|
|
498
|
+
private rowLayoutTemplateColumns;
|
|
499
|
+
private rowLayoutColumnWidth;
|
|
500
|
+
private rowLayoutTextAlign;
|
|
501
|
+
private cssVar;
|
|
502
|
+
private sanitizeCssToken;
|
|
503
|
+
featureLabel(item: any, expr?: string): string;
|
|
504
|
+
plainText(value: string | null | undefined): string | null;
|
|
505
|
+
itemAriaLabel(item: any): string | null;
|
|
506
|
+
private accessibleItemLabel;
|
|
507
|
+
private slotAriaLabel;
|
|
508
|
+
private nodeAriaLabel;
|
|
509
|
+
featureLabelLines(item: any, expr?: string): string[];
|
|
510
|
+
featureSemanticClass(item: any, expr?: string, featureClass?: string): string | null;
|
|
511
|
+
featureProgressPercent(item: any, expr?: string, featureClass?: string): number | null;
|
|
512
|
+
private metricText;
|
|
513
|
+
private metricToken;
|
|
514
|
+
private buildMetricView;
|
|
515
|
+
private buildComposeView;
|
|
516
|
+
private buildMetricProgress;
|
|
517
|
+
private metricLayout;
|
|
518
|
+
private metricAlign;
|
|
519
|
+
private metricIconPosition;
|
|
520
|
+
private metricToneClass;
|
|
521
|
+
private metricToneStyle;
|
|
522
|
+
private metricColorStyle;
|
|
523
|
+
private metricCssVar;
|
|
524
|
+
private resolveMetricColor;
|
|
525
|
+
private joinStyles;
|
|
526
|
+
private joinClasses;
|
|
293
527
|
featuresVisible(): boolean;
|
|
294
528
|
featuresMode(): 'icons+labels' | 'icons-only' | 'labels-only';
|
|
295
529
|
hasSkeleton(): boolean;
|
|
296
530
|
skeletonCount(): number;
|
|
297
531
|
skeletonItems(): any[];
|
|
298
|
-
visibleActions(item: any): {
|
|
532
|
+
visibleActions(item: any, placement?: 'actions' | 'trailing'): {
|
|
299
533
|
id: string;
|
|
300
534
|
icon?: string;
|
|
301
535
|
label?: string;
|
|
@@ -308,6 +542,7 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
|
|
|
308
542
|
globalPayload?: any;
|
|
309
543
|
emitLocal?: boolean;
|
|
310
544
|
showLoading?: boolean;
|
|
545
|
+
placement?: "actions" | "trailing";
|
|
311
546
|
confirmation?: {
|
|
312
547
|
title?: string;
|
|
313
548
|
message?: string;
|
|
@@ -315,7 +550,14 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
|
|
|
315
550
|
};
|
|
316
551
|
}[];
|
|
317
552
|
onItemClick(item: any, index: number, section?: string): void;
|
|
553
|
+
onRowActivate(item: any, index: number, section?: string): void;
|
|
554
|
+
onRowSpaceActivate(event: Event, clickable: boolean, item: any, index: number, section?: string): void;
|
|
555
|
+
onExpandToggle(event: Event, item: any, index: number): void;
|
|
318
556
|
onActionKeydown(ev: Event): void;
|
|
557
|
+
configEditorLabel(): string;
|
|
558
|
+
expandToggleAriaLabel(item: any, index: number): string;
|
|
559
|
+
expansionRegionAriaLabel(item: any): string;
|
|
560
|
+
emptyStateLabel(): string;
|
|
319
561
|
onActionClick(ev: MouseEvent, actionId: string, item: any, index: number): Promise<void>;
|
|
320
562
|
private isGlobalCommand;
|
|
321
563
|
private resolveActionPayload;
|
|
@@ -349,6 +591,33 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
|
|
|
349
591
|
private readonly crud;
|
|
350
592
|
private executeSchemaInferenceForPlan;
|
|
351
593
|
private evalSlot;
|
|
594
|
+
private resolveSlotTemplate;
|
|
595
|
+
private evaluateTemplateNode;
|
|
596
|
+
private buildUnsupportedComposeNode;
|
|
597
|
+
private buildRuntimeComponentView;
|
|
598
|
+
private resolveComponentInputs;
|
|
599
|
+
private resolveComponentInputValue;
|
|
600
|
+
private resolveComponentStringInput;
|
|
601
|
+
isExpandable(): boolean;
|
|
602
|
+
expandableByRow(): boolean;
|
|
603
|
+
expansionOwnedByRow(): boolean;
|
|
604
|
+
expansionOwnedByIcon(): boolean;
|
|
605
|
+
showExpandIcon(placement?: 'expand' | 'trailing'): boolean;
|
|
606
|
+
expandPlacement(): 'expand' | 'trailing';
|
|
607
|
+
private actionPlacement;
|
|
608
|
+
isExpanded(item: any, index: number): boolean;
|
|
609
|
+
expandRegionId(item: any, index: number): string;
|
|
610
|
+
expansionSections(): ListExpansionSectionDef[];
|
|
611
|
+
expansionSectionItems(item: any, section: ListExpansionSectionDef, index?: number): any[];
|
|
612
|
+
expansionSectionHasContent(item: any, section: ListExpansionSectionDef, index?: number): boolean;
|
|
613
|
+
expansionItemLabel(value: any): string;
|
|
614
|
+
expansionInfoTitle(value: any): string;
|
|
615
|
+
expansionInfoValue(value: any): string;
|
|
616
|
+
expansionTimelineTitle(value: any): string;
|
|
617
|
+
expansionTimelineMeta(value: any): string;
|
|
618
|
+
expansionTimelineDescription(value: any): string;
|
|
619
|
+
expansionKeyValueKey(value: any): string;
|
|
620
|
+
expansionKeyValueValue(value: any): string;
|
|
352
621
|
private splitPipe;
|
|
353
622
|
private splitPipeName;
|
|
354
623
|
private evalString;
|
|
@@ -369,15 +638,225 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
|
|
|
369
638
|
trackByItem: (i: number, it: any) => any;
|
|
370
639
|
isActionLoading(actionId: string, item: any, index: number): boolean;
|
|
371
640
|
private evaluateActionVisibility;
|
|
372
|
-
private
|
|
641
|
+
private evaluateRuntimeCondition;
|
|
642
|
+
private normalizeConditionExpression;
|
|
643
|
+
private resolveConditionOperand;
|
|
373
644
|
private looseEquals;
|
|
374
|
-
private
|
|
645
|
+
private warnInvalidConditionOnce;
|
|
646
|
+
private cloneTemplateDef;
|
|
647
|
+
private mergeTemplateDefs;
|
|
648
|
+
private mergePlainObjects;
|
|
375
649
|
private buildActionLoadingKey;
|
|
376
650
|
private ensureActionItemObjectId;
|
|
377
651
|
private warnGlobalCommandUnavailableOnce;
|
|
378
652
|
private buildLogOptions;
|
|
379
|
-
|
|
380
|
-
|
|
653
|
+
private toggleExpanded;
|
|
654
|
+
private syncExpansionState;
|
|
655
|
+
private itemExpansionKey;
|
|
656
|
+
private t;
|
|
657
|
+
private ensureExpansionItemObjectId;
|
|
658
|
+
private sanitizeDomId;
|
|
659
|
+
private evaluateExpansionExpr;
|
|
660
|
+
private normalizeExpansionItems;
|
|
661
|
+
private normalizeKeyValueItems;
|
|
662
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisList, never>;
|
|
663
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisList, "praxis-list", never, { "config": { "alias": "config"; "required": false; }; "listId": { "alias": "listId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "form": { "alias": "form"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; }, { "itemClick": "itemClick"; "actionClick": "actionClick"; "selectionChange": "selectionChange"; }, never, never, true, never>;
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
/**
|
|
667
|
+
* Executive badge component for displaying account segment classification.
|
|
668
|
+
*
|
|
669
|
+
* This component replaces legacy HTML string-based badges with a type-safe,
|
|
670
|
+
* encapsulated solution that bypasses Angular's DomSanitizer restrictions.
|
|
671
|
+
*
|
|
672
|
+
* @remarks
|
|
673
|
+
* - Fully WCAG 2.1 AA compliant with proper ARIA attributes
|
|
674
|
+
* - Uses OnPush change detection for optimal performance
|
|
675
|
+
* - Supports three segment variants: enterprise, corporate, middle
|
|
676
|
+
* - Colors follow corporate branding guidelines
|
|
677
|
+
* - Input validation prevents invalid runtime values
|
|
678
|
+
*
|
|
679
|
+
* @example Basic usage
|
|
680
|
+
* ```html
|
|
681
|
+
* <praxis-executive-badge variant="enterprise">
|
|
682
|
+
* Enterprise
|
|
683
|
+
* </praxis-executive-badge>
|
|
684
|
+
* ```
|
|
685
|
+
*
|
|
686
|
+
* @example Dynamic variant with custom label
|
|
687
|
+
* ```html
|
|
688
|
+
* <praxis-executive-badge
|
|
689
|
+
* [variant]="account.segmentType"
|
|
690
|
+
* [ariaLabel]="'Account segment: ' + account.segmentLabel">
|
|
691
|
+
* {{ account.segmentLabel }}
|
|
692
|
+
* </praxis-executive-badge>
|
|
693
|
+
* ```
|
|
694
|
+
*
|
|
695
|
+
* @see {@link ExecutiveAlertsComponent} for related alert component
|
|
696
|
+
* @see WCAG 2.1 Level AA - Guideline 4.1.2 (Name, Role, Value)
|
|
697
|
+
*
|
|
698
|
+
* @public
|
|
699
|
+
*/
|
|
700
|
+
declare class ExecutiveBadgeComponent {
|
|
701
|
+
/**
|
|
702
|
+
* Custom ARIA label for screen readers.
|
|
703
|
+
* If not provided, defaults to "Segment badge: {variant}"
|
|
704
|
+
*/
|
|
705
|
+
ariaLabel?: string;
|
|
706
|
+
private _variant;
|
|
707
|
+
/**
|
|
708
|
+
* Badge variant type with runtime validation.
|
|
709
|
+
* Valid values: 'enterprise', 'corporate', 'middle'
|
|
710
|
+
* Invalid values will default to 'enterprise' with console warning.
|
|
711
|
+
*/
|
|
712
|
+
set variant(value: 'enterprise' | 'corporate' | 'middle');
|
|
713
|
+
get variant(): 'enterprise' | 'corporate' | 'middle';
|
|
714
|
+
get variantClass(): string;
|
|
715
|
+
/**
|
|
716
|
+
* Computed ARIA label for accessibility.
|
|
717
|
+
* Uses custom ariaLabel if provided, otherwise generates default.
|
|
718
|
+
*/
|
|
719
|
+
get computedAriaLabel(): string;
|
|
720
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ExecutiveBadgeComponent, never>;
|
|
721
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ExecutiveBadgeComponent, "praxis-executive-badge", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; }, {}, never, ["*"], true, never>;
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
/**
|
|
725
|
+
* Alert data interface for executive alerts component.
|
|
726
|
+
*
|
|
727
|
+
* @property type - Alert severity level (warning or critical)
|
|
728
|
+
* @property count - Number of alerts of this type (must be >= 0)
|
|
729
|
+
*/
|
|
730
|
+
interface ExecutiveAlert {
|
|
731
|
+
type: 'warning' | 'critical';
|
|
732
|
+
count: number;
|
|
733
|
+
}
|
|
734
|
+
/**
|
|
735
|
+
* Executive alerts component for displaying warning and critical account flags.
|
|
736
|
+
*
|
|
737
|
+
* This component replaces legacy HTML string-based alerts with a fully
|
|
738
|
+
* accessible, WCAG 2.1 AA compliant solution.
|
|
739
|
+
*
|
|
740
|
+
* @remarks
|
|
741
|
+
* **Accessibility Features:**
|
|
742
|
+
* - WCAG 1.3.1: Semantic structure with proper roles
|
|
743
|
+
* - WCAG 1.4.1: Does not rely on color alone (uses icons + text)
|
|
744
|
+
* - WCAG 4.1.3: Status messages properly announced to screen readers
|
|
745
|
+
* - aria-live regions for dynamic updates
|
|
746
|
+
* - Screen-reader only text for full context
|
|
747
|
+
*
|
|
748
|
+
* **Performance:**
|
|
749
|
+
* - OnPush change detection strategy
|
|
750
|
+
* - Input validation prevents invalid data
|
|
751
|
+
* - Optimized trackBy function
|
|
752
|
+
*
|
|
753
|
+
* @example Basic usage
|
|
754
|
+
* ```html
|
|
755
|
+
* <praxis-executive-alerts [alerts]="[
|
|
756
|
+
* { type: 'warning', count: 1 },
|
|
757
|
+
* { type: 'critical', count: 2 }
|
|
758
|
+
* ]"></praxis-executive-alerts>
|
|
759
|
+
* ```
|
|
760
|
+
*
|
|
761
|
+
* @example Empty state (renders nothing)
|
|
762
|
+
* ```html
|
|
763
|
+
* <praxis-executive-alerts [alerts]="[]"></praxis-executive-alerts>
|
|
764
|
+
* ```
|
|
765
|
+
*
|
|
766
|
+
* @see WCAG 2.1 Level AA - Guidelines 1.3.1, 1.4.1, 4.1.3
|
|
767
|
+
* @public
|
|
768
|
+
*/
|
|
769
|
+
declare class ExecutiveAlertsComponent implements OnChanges {
|
|
770
|
+
alerts: ExecutiveAlert[];
|
|
771
|
+
/**
|
|
772
|
+
* Validated and filtered alerts.
|
|
773
|
+
* Only valid alerts (correct type and count >= 0) are included.
|
|
774
|
+
*/
|
|
775
|
+
validAlerts: ExecutiveAlert[];
|
|
776
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
777
|
+
/**
|
|
778
|
+
* Validates alerts array and filters out invalid entries.
|
|
779
|
+
* Logs warnings for invalid data in development mode.
|
|
780
|
+
*/
|
|
781
|
+
private validateAndFilterAlerts;
|
|
782
|
+
/**
|
|
783
|
+
* TrackBy function for optimal rendering performance.
|
|
784
|
+
* Uses combination of type and count for unique identification.
|
|
785
|
+
*/
|
|
786
|
+
trackByAlert(index: number, alert: ExecutiveAlert): string;
|
|
787
|
+
/**
|
|
788
|
+
* Generates ARIA label for alert badge.
|
|
789
|
+
* Provides concise description for screen readers.
|
|
790
|
+
*/
|
|
791
|
+
getAlertAriaLabel(alert: ExecutiveAlert): string;
|
|
792
|
+
/**
|
|
793
|
+
* Generates detailed description for screen readers.
|
|
794
|
+
* Provides full context including severity and actionability.
|
|
795
|
+
*/
|
|
796
|
+
getAlertDescription(alert: ExecutiveAlert): string;
|
|
797
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ExecutiveAlertsComponent, never>;
|
|
798
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ExecutiveAlertsComponent, "praxis-executive-alerts", never, { "alerts": { "alias": "alerts"; "required": false; }; }, {}, never, never, true, never>;
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
/**
|
|
802
|
+
* Executive owner component displaying account owner with accessible avatar.
|
|
803
|
+
*
|
|
804
|
+
* This component replaces legacy HTML string-based owner displays with a
|
|
805
|
+
* fully accessible, WCAG 2.1 AA compliant solution featuring an inline SVG avatar.
|
|
806
|
+
*
|
|
807
|
+
* @remarks
|
|
808
|
+
* **Accessibility Features:**
|
|
809
|
+
* - WCAG 1.1.1: Non-text content has text alternative (SVG with role and aria-label)
|
|
810
|
+
* - SVG includes <title> element for tooltips
|
|
811
|
+
* - Handles empty/undefined names gracefully
|
|
812
|
+
* - Screen reader announces owner information clearly
|
|
813
|
+
*
|
|
814
|
+
* **Performance:**
|
|
815
|
+
* - OnPush change detection strategy
|
|
816
|
+
* - Input validation for name
|
|
817
|
+
* - Lightweight inline SVG (no external dependencies)
|
|
818
|
+
*
|
|
819
|
+
* @example Basic usage
|
|
820
|
+
* ```html
|
|
821
|
+
* <praxis-executive-owner name="Ana Carolina"></praxis-executive-owner>
|
|
822
|
+
* ```
|
|
823
|
+
*
|
|
824
|
+
* @example With empty name (shows fallback)
|
|
825
|
+
* ```html
|
|
826
|
+
* <praxis-executive-owner name=""></praxis-executive-owner>
|
|
827
|
+
* <!-- Displays: "Unassigned" -->
|
|
828
|
+
* ```
|
|
829
|
+
*
|
|
830
|
+
* @see WCAG 2.1 Level AA - Guideline 1.1.1 (Non-text Content)
|
|
831
|
+
* @public
|
|
832
|
+
*/
|
|
833
|
+
declare class ExecutiveOwnerComponent {
|
|
834
|
+
private _name;
|
|
835
|
+
/**
|
|
836
|
+
* Owner name with automatic validation and sanitization.
|
|
837
|
+
* - Empty strings default to "Unassigned"
|
|
838
|
+
* - Trimmed and limited to 50 characters
|
|
839
|
+
* - Null/undefined converted to empty string
|
|
840
|
+
*/
|
|
841
|
+
set name(value: string);
|
|
842
|
+
get name(): string;
|
|
843
|
+
/**
|
|
844
|
+
* Display name with fallback for empty values.
|
|
845
|
+
* Returns "Unassigned" if name is empty.
|
|
846
|
+
*/
|
|
847
|
+
get displayName(): string;
|
|
848
|
+
/**
|
|
849
|
+
* ARIA label for SVG avatar.
|
|
850
|
+
* Provides context for screen readers.
|
|
851
|
+
*/
|
|
852
|
+
get avatarAriaLabel(): string;
|
|
853
|
+
/**
|
|
854
|
+
* SVG title element content for tooltip.
|
|
855
|
+
* Shows on hover in most browsers.
|
|
856
|
+
*/
|
|
857
|
+
get avatarTitle(): string;
|
|
858
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ExecutiveOwnerComponent, never>;
|
|
859
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ExecutiveOwnerComponent, "praxis-executive-owner", never, { "name": { "alias": "name"; "required": false; }; }, {}, never, never, true, never>;
|
|
381
860
|
}
|
|
382
861
|
|
|
383
862
|
interface EditorDocument<TConfig, TBindings = unknown> {
|
|
@@ -472,8 +951,8 @@ declare class PraxisListJsonConfigEditorComponent implements OnInit, OnChanges,
|
|
|
472
951
|
private updateValidationState;
|
|
473
952
|
private syncJsonText;
|
|
474
953
|
private hasUnsavedLocalChanges;
|
|
475
|
-
static ɵfac:
|
|
476
|
-
static ɵcmp:
|
|
954
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisListJsonConfigEditorComponent, never>;
|
|
955
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisListJsonConfigEditorComponent, "praxis-list-json-config-editor", never, { "document": { "alias": "document"; "required": false; }; }, { "documentChange": "documentChange"; "validationChange": "validationChange"; "editorEvent": "editorEvent"; }, never, never, true, never>;
|
|
477
956
|
}
|
|
478
957
|
|
|
479
958
|
type NormalizedListConfig = Omit<PraxisListConfig, 'dataSource' | 'layout' | 'selection' | 'skin' | 'i18n'> & {
|
|
@@ -486,6 +965,7 @@ type NormalizedListConfig = Omit<PraxisListConfig, 'dataSource' | 'layout' | 'se
|
|
|
486
965
|
layout: {
|
|
487
966
|
variant: 'list' | 'cards' | 'tiles';
|
|
488
967
|
density?: 'default' | 'comfortable' | 'compact';
|
|
968
|
+
itemSpacing?: 'none' | 'tight' | 'default' | 'relaxed';
|
|
489
969
|
lines: 1 | 2 | 3;
|
|
490
970
|
dividers?: 'none' | 'between' | 'all';
|
|
491
971
|
model?: 'standard' | 'media' | 'hotel';
|
|
@@ -853,8 +1333,8 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
|
|
|
853
1333
|
isRatingMaxInvalid(value?: number): boolean;
|
|
854
1334
|
private suggestIcon;
|
|
855
1335
|
getTypeIcon(type: string): string;
|
|
856
|
-
static ɵfac:
|
|
857
|
-
static ɵcmp:
|
|
1336
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisListConfigEditor, [{ optional: true; }]>;
|
|
1337
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisListConfigEditor, "praxis-list-config-editor", never, { "config": { "alias": "config"; "required": false; }; "listId": { "alias": "listId"; "required": false; }; }, {}, never, never, true, never>;
|
|
858
1338
|
}
|
|
859
1339
|
|
|
860
1340
|
declare function createListAuthoringDocument(source: {
|
|
@@ -884,8 +1364,8 @@ declare class ListSkinService {
|
|
|
884
1364
|
toHostClasses(config?: PraxisListConfig): string[];
|
|
885
1365
|
toCssVars(config?: PraxisListConfig): Record<string, string>;
|
|
886
1366
|
toInlineStyle(config?: PraxisListConfig, rootSelector?: string, includeVars?: boolean): string;
|
|
887
|
-
static ɵfac:
|
|
888
|
-
static ɵprov:
|
|
1367
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ListSkinService, never>;
|
|
1368
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ListSkinService>;
|
|
889
1369
|
}
|
|
890
1370
|
|
|
891
1371
|
/**
|
|
@@ -944,7 +1424,7 @@ interface CapabilityCatalog extends AiCapabilityCatalog {
|
|
|
944
1424
|
}
|
|
945
1425
|
declare const LIST_AI_CAPABILITIES: CapabilityCatalog;
|
|
946
1426
|
|
|
947
|
-
type DemoScenario = 'operations' | 'catalog' | 'empty';
|
|
1427
|
+
type DemoScenario = 'operations' | 'executive-expansion' | 'catalog' | 'empty';
|
|
948
1428
|
type DemoVariant = 'list' | 'cards' | 'tiles';
|
|
949
1429
|
type DemoDensity = 'default' | 'comfortable' | 'compact';
|
|
950
1430
|
type DemoFeaturesMode = 'icons+labels' | 'icons-only' | 'labels-only';
|
|
@@ -1003,21 +1483,46 @@ interface DemoItem {
|
|
|
1003
1483
|
city: string;
|
|
1004
1484
|
trend: string;
|
|
1005
1485
|
cover: string;
|
|
1486
|
+
accountCode?: string;
|
|
1487
|
+
balanceDisplay?: string;
|
|
1488
|
+
limitDisplay?: string;
|
|
1489
|
+
usageLabel?: string;
|
|
1490
|
+
usagePercent?: number;
|
|
1491
|
+
riskDisplay?: string;
|
|
1492
|
+
riskLabel?: string;
|
|
1493
|
+
segmentVariant?: 'enterprise' | 'corporate' | 'middle';
|
|
1494
|
+
segmentLabel?: string;
|
|
1495
|
+
accountType?: string;
|
|
1496
|
+
since?: number;
|
|
1497
|
+
alertsData?: ExecutiveAlert[];
|
|
1498
|
+
ownerName?: string;
|
|
1499
|
+
executiveMarkerIcon?: string;
|
|
1500
|
+
riskIcon?: string;
|
|
1501
|
+
alerts?: Array<{
|
|
1502
|
+
title: string;
|
|
1503
|
+
value: string;
|
|
1504
|
+
}>;
|
|
1505
|
+
products?: string[];
|
|
1506
|
+
events?: Array<{
|
|
1507
|
+
title: string;
|
|
1508
|
+
meta: string;
|
|
1509
|
+
description: string;
|
|
1510
|
+
}>;
|
|
1006
1511
|
}
|
|
1007
1512
|
declare class PraxisListDocPageComponent {
|
|
1008
1513
|
readonly form: FormGroup<{
|
|
1009
1514
|
selectedItems: FormControl<unknown>;
|
|
1010
1515
|
}>;
|
|
1011
|
-
readonly scenario:
|
|
1012
|
-
readonly variant:
|
|
1013
|
-
readonly density:
|
|
1014
|
-
readonly lines:
|
|
1015
|
-
readonly skin:
|
|
1016
|
-
readonly featuresMode:
|
|
1017
|
-
readonly selectionMode:
|
|
1018
|
-
readonly customizationEnabled:
|
|
1019
|
-
readonly activeTab:
|
|
1020
|
-
readonly eventLog:
|
|
1516
|
+
readonly scenario: i0.WritableSignal<DemoScenario>;
|
|
1517
|
+
readonly variant: i0.WritableSignal<DemoVariant>;
|
|
1518
|
+
readonly density: i0.WritableSignal<DemoDensity>;
|
|
1519
|
+
readonly lines: i0.WritableSignal<1 | 2 | 3>;
|
|
1520
|
+
readonly skin: i0.WritableSignal<DemoSkin>;
|
|
1521
|
+
readonly featuresMode: i0.WritableSignal<DemoFeaturesMode>;
|
|
1522
|
+
readonly selectionMode: i0.WritableSignal<DemoSelectionMode>;
|
|
1523
|
+
readonly customizationEnabled: i0.WritableSignal<boolean>;
|
|
1524
|
+
readonly activeTab: i0.WritableSignal<CodeTab>;
|
|
1525
|
+
readonly eventLog: i0.WritableSignal<EventLogEntry[]>;
|
|
1021
1526
|
private nextLogId;
|
|
1022
1527
|
readonly scenarioOptions: ReadonlyArray<ScenarioOption>;
|
|
1023
1528
|
readonly variantOptions: ReadonlyArray<VariantOption>;
|
|
@@ -1027,11 +1532,11 @@ declare class PraxisListDocPageComponent {
|
|
|
1027
1532
|
readonly skinOptions: ReadonlyArray<SkinOption>;
|
|
1028
1533
|
readonly codeTabs: ReadonlyArray<CodeTabOption>;
|
|
1029
1534
|
readonly featureCoverage: ReadonlyArray<CoverageTopic>;
|
|
1030
|
-
readonly liveItems:
|
|
1031
|
-
readonly activeScenarioMeta:
|
|
1032
|
-
readonly liveConfig:
|
|
1535
|
+
readonly liveItems: i0.Signal<DemoItem[]>;
|
|
1536
|
+
readonly activeScenarioMeta: i0.Signal<ScenarioOption | null>;
|
|
1537
|
+
readonly liveConfig: i0.Signal<PraxisListConfig>;
|
|
1033
1538
|
readonly skinPreviewItems: DemoItem[];
|
|
1034
|
-
readonly skinPreviewConfigs:
|
|
1539
|
+
readonly skinPreviewConfigs: i0.Signal<{
|
|
1035
1540
|
type: DemoSkin;
|
|
1036
1541
|
config: {
|
|
1037
1542
|
layout: {
|
|
@@ -1040,10 +1545,29 @@ declare class PraxisListDocPageComponent {
|
|
|
1040
1545
|
density: "compact";
|
|
1041
1546
|
model: "hotel";
|
|
1042
1547
|
groupBy: undefined;
|
|
1548
|
+
itemSpacing?: "none" | "tight" | "default" | "relaxed";
|
|
1043
1549
|
dividers?: "none" | "between" | "all";
|
|
1044
1550
|
stickySectionHeader?: boolean;
|
|
1045
1551
|
virtualScroll?: boolean;
|
|
1046
1552
|
pageSize?: number;
|
|
1553
|
+
rowLayout?: {
|
|
1554
|
+
type?: "grid" | "flex";
|
|
1555
|
+
columns?: Array<{
|
|
1556
|
+
slot: ListRowLayoutSlot;
|
|
1557
|
+
width?: string;
|
|
1558
|
+
minWidth?: string;
|
|
1559
|
+
maxWidth?: string;
|
|
1560
|
+
align?: "start" | "center" | "end";
|
|
1561
|
+
justify?: "start" | "center" | "end" | "stretch";
|
|
1562
|
+
class?: string;
|
|
1563
|
+
style?: string;
|
|
1564
|
+
}>;
|
|
1565
|
+
gap?: string;
|
|
1566
|
+
align?: "start" | "center" | "end" | "stretch";
|
|
1567
|
+
itemAlignY?: "start" | "center" | "end" | "stretch";
|
|
1568
|
+
class?: string;
|
|
1569
|
+
style?: string;
|
|
1570
|
+
};
|
|
1047
1571
|
};
|
|
1048
1572
|
selection: {
|
|
1049
1573
|
mode: "none";
|
|
@@ -1066,19 +1590,31 @@ declare class PraxisListDocPageComponent {
|
|
|
1066
1590
|
inlineStyle?: string;
|
|
1067
1591
|
} | undefined;
|
|
1068
1592
|
id?: string;
|
|
1593
|
+
interaction?: {
|
|
1594
|
+
expandable?: boolean;
|
|
1595
|
+
expandTrigger?: "row" | "icon" | "row+icon";
|
|
1596
|
+
expandMode?: "single" | "multiple";
|
|
1597
|
+
expandPlacement?: "expand" | "trailing";
|
|
1598
|
+
};
|
|
1069
1599
|
templating?: {
|
|
1070
1600
|
leading?: TemplateDef;
|
|
1071
1601
|
primary?: TemplateDef;
|
|
1072
1602
|
secondary?: TemplateDef;
|
|
1073
1603
|
meta?: TemplateDef;
|
|
1074
1604
|
trailing?: TemplateDef;
|
|
1605
|
+
identity?: TemplateDef;
|
|
1606
|
+
balance?: TemplateDef;
|
|
1607
|
+
limit?: TemplateDef;
|
|
1608
|
+
risk?: TemplateDef;
|
|
1609
|
+
alerts?: TemplateDef;
|
|
1610
|
+
owner?: TemplateDef;
|
|
1075
1611
|
metaPlacement?: "side" | "line";
|
|
1076
1612
|
metaPrefixIcon?: string;
|
|
1077
1613
|
statusPosition?: "inline" | "top-right";
|
|
1078
1614
|
chipColorMap?: Record<string, string>;
|
|
1079
1615
|
chipLabelMap?: Record<string, string>;
|
|
1080
1616
|
iconColorMap?: Record<string, string>;
|
|
1081
|
-
features?:
|
|
1617
|
+
features?: TemplatingFeatureDef[];
|
|
1082
1618
|
featuresVisible?: boolean;
|
|
1083
1619
|
featuresMode?: "icons+labels" | "icons-only" | "labels-only";
|
|
1084
1620
|
sectionHeader?: TemplateDef;
|
|
@@ -1087,6 +1623,65 @@ declare class PraxisListDocPageComponent {
|
|
|
1087
1623
|
count?: number;
|
|
1088
1624
|
};
|
|
1089
1625
|
};
|
|
1626
|
+
rules?: {
|
|
1627
|
+
itemStyles?: Array<{
|
|
1628
|
+
id: string;
|
|
1629
|
+
condition?: string;
|
|
1630
|
+
class?: string;
|
|
1631
|
+
style?: string;
|
|
1632
|
+
border?: string;
|
|
1633
|
+
background?: string;
|
|
1634
|
+
}>;
|
|
1635
|
+
slotOverrides?: Array<{
|
|
1636
|
+
id: string;
|
|
1637
|
+
slot: ListTemplatingSlot;
|
|
1638
|
+
condition?: string;
|
|
1639
|
+
template?: TemplateDef;
|
|
1640
|
+
class?: string;
|
|
1641
|
+
style?: string;
|
|
1642
|
+
hide?: boolean;
|
|
1643
|
+
}>;
|
|
1644
|
+
};
|
|
1645
|
+
expansion?: {
|
|
1646
|
+
sections?: ListExpansionSectionDef[];
|
|
1647
|
+
dataSource?: {
|
|
1648
|
+
mode?: "inline" | "resource" | "resourcePath";
|
|
1649
|
+
resource?: {
|
|
1650
|
+
kind: string;
|
|
1651
|
+
id: string;
|
|
1652
|
+
version: string;
|
|
1653
|
+
};
|
|
1654
|
+
resourcePath?: {
|
|
1655
|
+
path: string;
|
|
1656
|
+
method?: "GET" | "POST";
|
|
1657
|
+
paramsMap?: Record<string, string>;
|
|
1658
|
+
};
|
|
1659
|
+
resourceAllowList?: string[];
|
|
1660
|
+
fallbackMode?: "none" | "inline" | "resource";
|
|
1661
|
+
cache?: {
|
|
1662
|
+
enabled?: boolean;
|
|
1663
|
+
};
|
|
1664
|
+
cancelOnCollapse?: boolean;
|
|
1665
|
+
};
|
|
1666
|
+
schemaContract?: {
|
|
1667
|
+
kind: "praxis.detail.schema";
|
|
1668
|
+
version: string;
|
|
1669
|
+
allowedNodes?: Array<"info-list" | "chip-list" | "timeline" | "key-value" | "metadata" | "component">;
|
|
1670
|
+
maxSections?: number;
|
|
1671
|
+
maxItemsPerSection?: number;
|
|
1672
|
+
requireSectionIds?: boolean;
|
|
1673
|
+
};
|
|
1674
|
+
rendering?: {
|
|
1675
|
+
shell?: "attached" | "detached" | "modal";
|
|
1676
|
+
columns?: 1 | 2 | 3;
|
|
1677
|
+
gap?: string;
|
|
1678
|
+
padding?: string;
|
|
1679
|
+
class?: string;
|
|
1680
|
+
style?: string;
|
|
1681
|
+
loadingTemplate?: TemplateDef;
|
|
1682
|
+
errorTemplate?: TemplateDef;
|
|
1683
|
+
};
|
|
1684
|
+
};
|
|
1090
1685
|
actions?: Array<{
|
|
1091
1686
|
id: string;
|
|
1092
1687
|
icon?: string;
|
|
@@ -1100,6 +1695,7 @@ declare class PraxisListDocPageComponent {
|
|
|
1100
1695
|
globalPayload?: any;
|
|
1101
1696
|
emitLocal?: boolean;
|
|
1102
1697
|
showLoading?: boolean;
|
|
1698
|
+
placement?: "actions" | "trailing";
|
|
1103
1699
|
confirmation?: {
|
|
1104
1700
|
title?: string;
|
|
1105
1701
|
message?: string;
|
|
@@ -1132,8 +1728,8 @@ declare class PraxisListDocPageComponent {
|
|
|
1132
1728
|
};
|
|
1133
1729
|
};
|
|
1134
1730
|
}[]>;
|
|
1135
|
-
readonly configPreview:
|
|
1136
|
-
readonly selectedSnippet:
|
|
1731
|
+
readonly configPreview: i0.Signal<string>;
|
|
1732
|
+
readonly selectedSnippet: i0.Signal<string>;
|
|
1137
1733
|
readonly templateSnippet = "<praxis-list-doc-page></praxis-list-doc-page>";
|
|
1138
1734
|
readonly tsSnippet = "import { Component } from '@angular/core';\nimport { PraxisListDocPageComponent } from '@praxisui/list';\n\n@Component({\n selector: 'app-list-doc',\n standalone: true,\n imports: [PraxisListDocPageComponent],\n template: '<praxis-list-doc-page />',\n})\nexport class ListDocHostComponent {}";
|
|
1139
1735
|
readonly remoteSnippet = "const config = {\n id: 'employees-remote',\n dataSource: {\n resourcePath: 'employees',\n query: { active: true },\n sort: ['updatedAt,desc']\n },\n layout: { variant: 'list', pageSize: 12, lines: 2 },\n templating: {\n primary: { type: 'text', expr: '${item.name}' },\n secondary: { type: 'text', expr: '${item.role}' },\n meta: { type: 'date', expr: '${item.updatedAt}|pt-BR:short' },\n trailing: { type: 'chip', expr: '${item.status}' }\n },\n ui: {\n showSearch: true,\n searchField: 'name',\n showSort: true,\n sortOptions: [{ label: 'Nome A-Z', value: 'name,asc' }]\n }\n} as const;";
|
|
@@ -1150,12 +1746,32 @@ declare class PraxisListDocPageComponent {
|
|
|
1150
1746
|
handleItemClick(event: ListItemEvent): void;
|
|
1151
1747
|
handleActionClick(event: ListActionEvent): void;
|
|
1152
1748
|
handleSelectionChange(event: ListSelectionEvent): void;
|
|
1749
|
+
isExecutiveExpansionScenario(): boolean;
|
|
1153
1750
|
private buildSkinConfig;
|
|
1154
1751
|
private buildTemplatingConfig;
|
|
1155
1752
|
private pushLog;
|
|
1156
|
-
static ɵfac:
|
|
1157
|
-
static ɵcmp:
|
|
1753
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisListDocPageComponent, never>;
|
|
1754
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisListDocPageComponent, "praxis-list-doc-page", never, {}, {}, never, never, true, never>;
|
|
1158
1755
|
}
|
|
1159
1756
|
|
|
1160
|
-
|
|
1161
|
-
|
|
1757
|
+
declare const PRAXIS_LIST_EN_US: {
|
|
1758
|
+
readonly configEdit: "Edit configuration";
|
|
1759
|
+
readonly expandDetails: "Expand details";
|
|
1760
|
+
readonly collapseDetails: "Collapse details";
|
|
1761
|
+
readonly itemDetails: "Item details";
|
|
1762
|
+
readonly emptyState: "No items available";
|
|
1763
|
+
};
|
|
1764
|
+
|
|
1765
|
+
declare const PRAXIS_LIST_I18N_NAMESPACE = "praxis-list";
|
|
1766
|
+
declare function providePraxisListI18n(): i0.Provider;
|
|
1767
|
+
|
|
1768
|
+
declare const PRAXIS_LIST_PT_BR: {
|
|
1769
|
+
readonly configEdit: "Editar configurações";
|
|
1770
|
+
readonly expandDetails: "Expandir detalhes";
|
|
1771
|
+
readonly collapseDetails: "Recolher detalhes";
|
|
1772
|
+
readonly itemDetails: "Detalhes do item";
|
|
1773
|
+
readonly emptyState: "Nenhum item disponível";
|
|
1774
|
+
};
|
|
1775
|
+
|
|
1776
|
+
export { ExecutiveAlertsComponent, ExecutiveBadgeComponent, ExecutiveOwnerComponent, LIST_AI_CAPABILITIES, ListDataService, ListSkinService, PRAXIS_LIST_COMPONENT_METADATA, PRAXIS_LIST_EN_US, PRAXIS_LIST_I18N_NAMESPACE, PRAXIS_LIST_PT_BR, PraxisList, PraxisListConfigEditor, PraxisListDocPageComponent, PraxisListJsonConfigEditorComponent, adaptSelection, buildListApplyPlan, createListAuthoringDocument, evalExpr, evaluateTemplate, inferListAuthoringDocument, inferTemplatingFromSchema, normalizeListActionPayloads, normalizeListAuthoringDocument, normalizeListConfig, parseLegacyOrListDocument, projectListAuthoringDocument, providePraxisListI18n, providePraxisListMetadata, serializeListAuthoringDocument, toCanonicalListConfig, validateListAuthoringDocument };
|
|
1777
|
+
export type { Capability, CapabilityCatalog, CapabilityCategory, EditorDiagnostic, EditorDocument, ExecutiveAlert, JsonEditorEvent, JsonValidationResult, ListActionEvent, ListApplyPlan, ListAuthoringDocument, ListExpansionSectionDef, ListExpansionSectionType, ListFeatureDef, ListItemEvent, ListProjectionContext, ListRowLayoutSlot, ListRuntimeContext, ListSchemaInferencePlan, ListSection, ListSelectionEvent, ListTemplatingSlot, ListValidationContext, PraxisListConfig, TemplateDef, TemplateFeatureDef, TemplateType, TemplatingFeatureDef, ValueKind };
|