@praxisui/list 1.0.0-beta.4 → 1.0.0-beta.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +171 -8
- package/fesm2022/praxisui-list.mjs +3574 -1591
- package/fesm2022/praxisui-list.mjs.map +1 -1
- package/index.d.ts +612 -27
- package/package.json +5 -4
package/index.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as rxjs from 'rxjs';
|
|
2
2
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
3
|
-
import * as
|
|
4
|
-
import { OnInit, OnChanges, EventEmitter, SimpleChanges, DoCheck, Provider } from '@angular/core';
|
|
3
|
+
import * as _angular_core from '@angular/core';
|
|
4
|
+
import { OnInit, OnChanges, OnDestroy, EventEmitter, SimpleChanges, DoCheck, Provider } from '@angular/core';
|
|
5
5
|
import { MatSelectionListChange } from '@angular/material/list';
|
|
6
6
|
import { FormGroup, FormControl } from '@angular/forms';
|
|
7
|
+
import { BaseAiAdapter, Capability as Capability$1, PatchResult } from '@praxisui/ai';
|
|
7
8
|
import { SettingsValueProvider } from '@praxisui/settings-panel';
|
|
8
|
-
import { ComponentDocMeta } from '@praxisui/core';
|
|
9
|
+
import { GlobalActionCatalogEntry, ComponentDocMeta, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog } from '@praxisui/core';
|
|
9
10
|
|
|
10
11
|
type TemplateType = 'text' | 'icon' | 'image' | 'chip' | 'rating' | 'currency' | 'date' | 'html' | 'slot';
|
|
11
12
|
interface TemplateDef {
|
|
@@ -15,6 +16,13 @@ interface TemplateDef {
|
|
|
15
16
|
style?: string;
|
|
16
17
|
color?: string;
|
|
17
18
|
variant?: 'filled' | 'outlined';
|
|
19
|
+
props?: {
|
|
20
|
+
rating?: {
|
|
21
|
+
max?: number;
|
|
22
|
+
size?: number;
|
|
23
|
+
color?: string;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
18
26
|
imageAlt?: string;
|
|
19
27
|
badge?: {
|
|
20
28
|
expr: string;
|
|
@@ -37,7 +45,7 @@ interface PraxisListConfig {
|
|
|
37
45
|
sort?: string[];
|
|
38
46
|
};
|
|
39
47
|
layout?: {
|
|
40
|
-
variant?: 'list' | 'cards';
|
|
48
|
+
variant?: 'list' | 'cards' | 'tiles';
|
|
41
49
|
density?: 'default' | 'comfortable' | 'compact';
|
|
42
50
|
lines?: 1 | 2 | 3;
|
|
43
51
|
dividers?: 'none' | 'between' | 'all';
|
|
@@ -48,7 +56,7 @@ interface PraxisListConfig {
|
|
|
48
56
|
pageSize?: number;
|
|
49
57
|
};
|
|
50
58
|
skin?: {
|
|
51
|
-
type?: 'pill-soft' | 'gradient-tile' | 'glass' | 'elevated' | 'custom';
|
|
59
|
+
type?: 'pill-soft' | 'gradient-tile' | 'glass' | 'elevated' | 'outline' | 'flat' | 'neumorphism' | 'custom';
|
|
52
60
|
gradient?: {
|
|
53
61
|
from: string;
|
|
54
62
|
to: string;
|
|
@@ -76,6 +84,10 @@ interface PraxisListConfig {
|
|
|
76
84
|
trailing?: TemplateDef;
|
|
77
85
|
metaPlacement?: 'side' | 'line';
|
|
78
86
|
metaPrefixIcon?: string;
|
|
87
|
+
statusPosition?: 'inline' | 'top-right';
|
|
88
|
+
chipColorMap?: Record<string, string>;
|
|
89
|
+
chipLabelMap?: Record<string, string>;
|
|
90
|
+
iconColorMap?: Record<string, string>;
|
|
79
91
|
features?: ListFeatureDef[];
|
|
80
92
|
featuresVisible?: boolean;
|
|
81
93
|
featuresMode?: 'icons+labels' | 'icons-only' | 'labels-only';
|
|
@@ -94,8 +106,28 @@ interface PraxisListConfig {
|
|
|
94
106
|
buttonVariant?: 'stroked' | 'raised' | 'flat';
|
|
95
107
|
showIf?: string;
|
|
96
108
|
emitPayload?: 'item' | 'id' | 'value';
|
|
109
|
+
command?: string;
|
|
110
|
+
globalPayload?: any;
|
|
111
|
+
emitLocal?: boolean;
|
|
112
|
+
showLoading?: boolean;
|
|
113
|
+
confirmation?: {
|
|
114
|
+
title?: string;
|
|
115
|
+
message?: string;
|
|
116
|
+
type?: 'danger' | 'warning' | 'info';
|
|
117
|
+
};
|
|
97
118
|
}>;
|
|
98
119
|
i18n?: Record<string, string>;
|
|
120
|
+
ui?: {
|
|
121
|
+
showSearch?: boolean;
|
|
122
|
+
searchField?: string;
|
|
123
|
+
searchPlaceholder?: string;
|
|
124
|
+
showSort?: boolean;
|
|
125
|
+
sortOptions?: Array<string | {
|
|
126
|
+
label: string;
|
|
127
|
+
value: string;
|
|
128
|
+
}>;
|
|
129
|
+
showRange?: boolean;
|
|
130
|
+
};
|
|
99
131
|
a11y?: {
|
|
100
132
|
ariaLabel?: string;
|
|
101
133
|
ariaLabelledBy?: string;
|
|
@@ -131,13 +163,23 @@ interface ListSection<T = any> {
|
|
|
131
163
|
items: T[];
|
|
132
164
|
}
|
|
133
165
|
declare class ListDataService<T = any> {
|
|
166
|
+
private readonly DEBUG;
|
|
134
167
|
private config$;
|
|
135
168
|
private refresh$;
|
|
136
169
|
private pageable$;
|
|
137
170
|
private query$;
|
|
138
171
|
readonly loading$: BehaviorSubject<boolean>;
|
|
139
172
|
readonly total$: BehaviorSubject<number>;
|
|
173
|
+
readonly pageState$: Observable<{
|
|
174
|
+
pageNumber: number;
|
|
175
|
+
pageSize: number;
|
|
176
|
+
sort?: string[];
|
|
177
|
+
}>;
|
|
140
178
|
private lastSig;
|
|
179
|
+
private nextObjectId;
|
|
180
|
+
private readonly objectIds;
|
|
181
|
+
private readonly logger;
|
|
182
|
+
private readonly logContext;
|
|
141
183
|
private readonly crud;
|
|
142
184
|
setConfig(config: PraxisListConfig): void;
|
|
143
185
|
refresh(): void;
|
|
@@ -149,13 +191,39 @@ declare class ListDataService<T = any> {
|
|
|
149
191
|
setSort(sort: string[]): void;
|
|
150
192
|
setQuery(q: Record<string, any>): void;
|
|
151
193
|
groupedStream(): Observable<ListSection<T>[]>;
|
|
152
|
-
|
|
153
|
-
|
|
194
|
+
private buildConfigSignature;
|
|
195
|
+
private buildLocalDataSignature;
|
|
196
|
+
private ensureObjectId;
|
|
197
|
+
private safeSerialize;
|
|
198
|
+
private warnFilterFallbackOnce;
|
|
199
|
+
private buildLogOptions;
|
|
200
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListDataService<any>, never>;
|
|
201
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ListDataService<any>>;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
declare class ListAiAdapter extends BaseAiAdapter<PraxisListConfig> {
|
|
205
|
+
private list;
|
|
206
|
+
componentName: string;
|
|
207
|
+
constructor(list: PraxisList);
|
|
208
|
+
getCurrentConfig(): PraxisListConfig;
|
|
209
|
+
getCapabilities(): Capability$1[];
|
|
210
|
+
getRuntimeState(): Record<string, any>;
|
|
211
|
+
createSnapshot(): PraxisListConfig;
|
|
212
|
+
restoreSnapshot(snapshot: PraxisListConfig): Promise<void>;
|
|
213
|
+
applyPatch(patch: Partial<PraxisListConfig>, _intent?: string): Promise<PatchResult>;
|
|
214
|
+
private applyConfig;
|
|
215
|
+
private smartMergeListConfig;
|
|
216
|
+
private sanitizePatch;
|
|
217
|
+
private cloneConfig;
|
|
154
218
|
}
|
|
155
219
|
|
|
156
|
-
declare class PraxisList implements OnInit, OnChanges {
|
|
220
|
+
declare class PraxisList implements OnInit, OnChanges, OnDestroy {
|
|
221
|
+
private static nextSkinScopeId;
|
|
157
222
|
config: PraxisListConfig;
|
|
223
|
+
listId: string;
|
|
224
|
+
componentInstanceId?: string;
|
|
158
225
|
form?: FormGroup | null;
|
|
226
|
+
enableCustomization: boolean;
|
|
159
227
|
itemClick: EventEmitter<ListItemEvent>;
|
|
160
228
|
actionClick: EventEmitter<ListActionEvent>;
|
|
161
229
|
selectionChange: EventEmitter<ListSelectionEvent>;
|
|
@@ -163,21 +231,52 @@ declare class PraxisList implements OnInit, OnChanges {
|
|
|
163
231
|
sections$: rxjs.Observable<ListSection<any>[]>;
|
|
164
232
|
loading$: rxjs.Observable<boolean>;
|
|
165
233
|
total$: rxjs.Observable<number>;
|
|
234
|
+
page$: rxjs.Observable<{
|
|
235
|
+
pageNumber: number;
|
|
236
|
+
pageSize: number;
|
|
237
|
+
sort?: string[];
|
|
238
|
+
}>;
|
|
239
|
+
private lastQuery;
|
|
240
|
+
private search$;
|
|
166
241
|
get layoutLines(): number;
|
|
167
242
|
boundControl: FormControl<unknown | unknown[] | null>;
|
|
243
|
+
readonly skinScopeId: string;
|
|
168
244
|
skinClasses: string;
|
|
169
245
|
inlineCss: string;
|
|
246
|
+
readonly cspNonce: string | null;
|
|
247
|
+
aiAdapter: ListAiAdapter;
|
|
170
248
|
private readonly storage;
|
|
171
249
|
private readonly skin;
|
|
172
250
|
private inferredForPath;
|
|
173
251
|
private readonly data;
|
|
174
252
|
private readonly settings;
|
|
175
253
|
private readonly cdr;
|
|
254
|
+
private readonly componentKeys;
|
|
255
|
+
private readonly logger;
|
|
256
|
+
private readonly logContext;
|
|
257
|
+
private readonly route;
|
|
258
|
+
private readonly globalActions;
|
|
259
|
+
private readonly dialog;
|
|
260
|
+
private warnedMissingId;
|
|
261
|
+
private hasHydratedPersistence;
|
|
262
|
+
private hydratedPersistenceKey;
|
|
263
|
+
private hydratingPersistenceKey;
|
|
264
|
+
private externalConfigRevision;
|
|
265
|
+
private nextActionItemObjectId;
|
|
266
|
+
private readonly actionItemObjectIds;
|
|
267
|
+
private readonly destroy$;
|
|
268
|
+
actionLoadingState: Record<string, boolean>;
|
|
176
269
|
ngOnInit(): void;
|
|
177
270
|
ngOnChanges(changes: SimpleChanges): void;
|
|
271
|
+
ngOnDestroy(): void;
|
|
178
272
|
private applyPersistence;
|
|
273
|
+
private applyConfigChange;
|
|
274
|
+
private setupSearch;
|
|
275
|
+
private persistConfig;
|
|
179
276
|
private applySkins;
|
|
180
277
|
isListVariant(): boolean;
|
|
278
|
+
isCardsVariant(): boolean;
|
|
279
|
+
isTilesVariant(): boolean;
|
|
181
280
|
isSelectionEnabled(): boolean;
|
|
182
281
|
private setupSelectionBinding;
|
|
183
282
|
leading: (item: any) => any;
|
|
@@ -185,7 +284,8 @@ declare class PraxisList implements OnInit, OnChanges {
|
|
|
185
284
|
secondary: (item: any) => any;
|
|
186
285
|
meta: (item: any) => any;
|
|
187
286
|
trailing: (item: any) => any;
|
|
188
|
-
|
|
287
|
+
sectionHeaderTemplate: (key: string) => any;
|
|
288
|
+
emptyStateTemplate: () => any;
|
|
189
289
|
featureLabel(item: any, expr: string): string;
|
|
190
290
|
featuresVisible(): boolean;
|
|
191
291
|
featuresMode(): 'icons+labels' | 'icons-only' | 'labels-only';
|
|
@@ -201,14 +301,46 @@ declare class PraxisList implements OnInit, OnChanges {
|
|
|
201
301
|
buttonVariant?: "stroked" | "raised" | "flat";
|
|
202
302
|
showIf?: string;
|
|
203
303
|
emitPayload?: "item" | "id" | "value";
|
|
304
|
+
command?: string;
|
|
305
|
+
globalPayload?: any;
|
|
306
|
+
emitLocal?: boolean;
|
|
307
|
+
showLoading?: boolean;
|
|
308
|
+
confirmation?: {
|
|
309
|
+
title?: string;
|
|
310
|
+
message?: string;
|
|
311
|
+
type?: "danger" | "warning" | "info";
|
|
312
|
+
};
|
|
204
313
|
}[];
|
|
205
314
|
onItemClick(item: any, index: number, section?: string): void;
|
|
206
|
-
|
|
315
|
+
onActionKeydown(ev: Event): void;
|
|
316
|
+
onActionClick(ev: MouseEvent, actionId: string, item: any, index: number): Promise<void>;
|
|
317
|
+
private isGlobalCommand;
|
|
318
|
+
private resolveActionPayload;
|
|
319
|
+
private resolveTemplate;
|
|
320
|
+
private resolveStringTemplate;
|
|
321
|
+
private lookup;
|
|
207
322
|
onSelectionChange(_change: MatSelectionListChange): void;
|
|
208
323
|
openConfigEditor(): void;
|
|
209
324
|
nextPage(): void;
|
|
210
325
|
prevPage(): void;
|
|
326
|
+
setPageSize(ps: number): void;
|
|
327
|
+
onSortChange(val: string): void;
|
|
328
|
+
onSearchInput(val: string): void;
|
|
329
|
+
sortOptionValue(op: any): string;
|
|
330
|
+
sortOptionLabel(op: any): string;
|
|
331
|
+
rangeStart(ps: {
|
|
332
|
+
pageNumber: number;
|
|
333
|
+
pageSize: number;
|
|
334
|
+
}): number;
|
|
335
|
+
rangeEnd(currLen: number, ps: {
|
|
336
|
+
pageNumber: number;
|
|
337
|
+
pageSize: number;
|
|
338
|
+
}, total: number): number;
|
|
339
|
+
applyConfigFromAdapter(newCfg: PraxisListConfig): void;
|
|
211
340
|
private onEditorApplied;
|
|
341
|
+
private storageKey;
|
|
342
|
+
private componentKeyId;
|
|
343
|
+
private warnMissingId;
|
|
212
344
|
private readonly crud;
|
|
213
345
|
private tryInferTemplatingFromSchema;
|
|
214
346
|
private evalSlot;
|
|
@@ -217,12 +349,30 @@ declare class PraxisList implements OnInit, OnChanges {
|
|
|
217
349
|
private evalString;
|
|
218
350
|
private parseTwoParams;
|
|
219
351
|
private toBoolean;
|
|
352
|
+
private prettyLabel;
|
|
220
353
|
private mapDateStyle;
|
|
221
354
|
starIcon(index: number, ratingValue: string | number): string;
|
|
355
|
+
isThemeColor(color?: string): boolean;
|
|
356
|
+
chipStyle(color?: string, variant?: 'filled' | 'outlined'): string;
|
|
357
|
+
iconStyle(color?: string): string;
|
|
358
|
+
buttonStyle(color?: string, variant?: 'stroked' | 'raised' | 'flat'): string;
|
|
359
|
+
ratingMax(def?: any): number;
|
|
360
|
+
ratingThemeColor(def?: any): string | undefined;
|
|
361
|
+
ratingIconStyle(def?: any): string;
|
|
362
|
+
ratingRange(def?: any): number[];
|
|
222
363
|
trackBySection: (_: number, s: ListSection<any>) => string | number;
|
|
223
364
|
trackByItem: (i: number, it: any) => any;
|
|
224
|
-
|
|
225
|
-
|
|
365
|
+
isActionLoading(actionId: string, item: any, index: number): boolean;
|
|
366
|
+
private evaluateActionVisibility;
|
|
367
|
+
private resolveShowIfOperand;
|
|
368
|
+
private looseEquals;
|
|
369
|
+
private warnInvalidShowIfOnce;
|
|
370
|
+
private buildActionLoadingKey;
|
|
371
|
+
private ensureActionItemObjectId;
|
|
372
|
+
private warnGlobalCommandUnavailableOnce;
|
|
373
|
+
private buildLogOptions;
|
|
374
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisList, never>;
|
|
375
|
+
static ɵcmp: _angular_core.ɵɵ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>;
|
|
226
376
|
}
|
|
227
377
|
|
|
228
378
|
type NormalizedListConfig = Omit<PraxisListConfig, 'dataSource' | 'layout' | 'selection' | 'skin' | 'i18n'> & {
|
|
@@ -233,7 +383,7 @@ type NormalizedListConfig = Omit<PraxisListConfig, 'dataSource' | 'layout' | 'se
|
|
|
233
383
|
sort?: string[];
|
|
234
384
|
};
|
|
235
385
|
layout: {
|
|
236
|
-
variant: 'list' | 'cards';
|
|
386
|
+
variant: 'list' | 'cards' | 'tiles';
|
|
237
387
|
density?: 'default' | 'comfortable' | 'compact';
|
|
238
388
|
lines: 1 | 2 | 3;
|
|
239
389
|
dividers?: 'none' | 'between' | 'all';
|
|
@@ -244,7 +394,7 @@ type NormalizedListConfig = Omit<PraxisListConfig, 'dataSource' | 'layout' | 'se
|
|
|
244
394
|
pageSize?: number;
|
|
245
395
|
};
|
|
246
396
|
skin: {
|
|
247
|
-
type: 'pill-soft' | 'gradient-tile' | 'glass' | 'elevated' | 'custom';
|
|
397
|
+
type: 'pill-soft' | 'gradient-tile' | 'glass' | 'elevated' | 'outline' | 'flat' | 'neumorphism' | 'custom';
|
|
248
398
|
gradient: {
|
|
249
399
|
from: string;
|
|
250
400
|
to: string;
|
|
@@ -269,7 +419,12 @@ type NormalizedListConfig = Omit<PraxisListConfig, 'dataSource' | 'layout' | 'se
|
|
|
269
419
|
currency?: string;
|
|
270
420
|
};
|
|
271
421
|
actions?: PraxisListConfig['actions'];
|
|
422
|
+
ui: NonNullable<PraxisListConfig['ui']>;
|
|
423
|
+
a11y?: PraxisListConfig['a11y'];
|
|
424
|
+
events?: PraxisListConfig['events'];
|
|
272
425
|
};
|
|
426
|
+
type SkinType = NormalizedListConfig['skin']['type'];
|
|
427
|
+
type SkinPreset = Exclude<SkinType, 'custom'>;
|
|
273
428
|
declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
|
|
274
429
|
config: PraxisListConfig;
|
|
275
430
|
listId?: string;
|
|
@@ -285,25 +440,27 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
|
|
|
285
440
|
sortDir: 'asc' | 'desc';
|
|
286
441
|
mappingPrimary: {
|
|
287
442
|
field?: string;
|
|
288
|
-
type: 'text' | 'currency' | 'date';
|
|
443
|
+
type: 'text' | 'currency' | 'date' | 'html';
|
|
289
444
|
currencyCode?: string;
|
|
290
445
|
locale?: string;
|
|
291
446
|
dateStyle?: 'short' | 'medium' | 'long' | 'full';
|
|
292
447
|
class?: string;
|
|
293
448
|
style?: string;
|
|
449
|
+
extraPipe?: string;
|
|
294
450
|
};
|
|
295
451
|
mappingSecondary: {
|
|
296
452
|
field?: string;
|
|
297
|
-
type: 'text' | 'currency' | 'date';
|
|
453
|
+
type: 'text' | 'currency' | 'date' | 'html';
|
|
298
454
|
currencyCode?: string;
|
|
299
455
|
locale?: string;
|
|
300
456
|
dateStyle?: 'short' | 'medium' | 'long' | 'full';
|
|
301
457
|
class?: string;
|
|
302
458
|
style?: string;
|
|
459
|
+
extraPipe?: string;
|
|
303
460
|
};
|
|
304
461
|
mappingMeta: {
|
|
305
462
|
field?: string;
|
|
306
|
-
type: 'text' | 'currency' | 'date' | 'chip' | 'rating';
|
|
463
|
+
type: 'text' | 'currency' | 'date' | 'chip' | 'rating' | 'icon' | 'image' | 'html';
|
|
307
464
|
currencyCode?: string;
|
|
308
465
|
locale?: string;
|
|
309
466
|
dateStyle?: 'short' | 'medium' | 'long' | 'full';
|
|
@@ -312,31 +469,106 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
|
|
|
312
469
|
placement?: 'side' | 'line';
|
|
313
470
|
chipColor?: string;
|
|
314
471
|
chipVariant?: 'filled' | 'outlined';
|
|
472
|
+
ratingColor?: string;
|
|
473
|
+
ratingSize?: number;
|
|
474
|
+
ratingMax?: number;
|
|
475
|
+
iconColor?: string;
|
|
476
|
+
imageAlt?: string;
|
|
477
|
+
extraPipe?: string;
|
|
315
478
|
};
|
|
316
479
|
mappingMetaPrefixIcon?: string;
|
|
317
480
|
mappingTrailing: {
|
|
318
481
|
field?: string;
|
|
319
|
-
type?: 'text' | 'currency' | 'date' | 'chip';
|
|
482
|
+
type?: 'text' | 'currency' | 'date' | 'chip' | 'icon' | 'rating' | 'html' | 'image';
|
|
320
483
|
class?: string;
|
|
321
484
|
style?: string;
|
|
322
485
|
chipColor?: string;
|
|
323
486
|
chipVariant?: 'filled' | 'outlined';
|
|
487
|
+
ratingColor?: string;
|
|
488
|
+
ratingSize?: number;
|
|
489
|
+
ratingMax?: number;
|
|
490
|
+
iconColor?: string;
|
|
491
|
+
imageUrl?: string;
|
|
492
|
+
imageAlt?: string;
|
|
324
493
|
currencyCode?: string;
|
|
325
494
|
locale?: string;
|
|
326
495
|
dateStyle?: 'short' | 'medium' | 'long' | 'full';
|
|
496
|
+
extraPipe?: string;
|
|
327
497
|
};
|
|
328
498
|
mappingLeading: {
|
|
329
|
-
|
|
499
|
+
field?: string;
|
|
500
|
+
type: 'icon' | 'image' | 'text' | 'chip' | 'rating' | 'html';
|
|
330
501
|
icon?: string;
|
|
331
502
|
imageUrl?: string;
|
|
503
|
+
imageAlt?: string;
|
|
332
504
|
badgeText?: string;
|
|
333
505
|
badgeColor?: string;
|
|
334
506
|
badgeVariant?: 'filled' | 'outlined';
|
|
507
|
+
class?: string;
|
|
508
|
+
style?: string;
|
|
509
|
+
chipColor?: string;
|
|
510
|
+
chipVariant?: 'filled' | 'outlined';
|
|
511
|
+
ratingColor?: string;
|
|
512
|
+
ratingSize?: number;
|
|
513
|
+
ratingMax?: number;
|
|
514
|
+
iconColor?: string;
|
|
515
|
+
extraPipe?: string;
|
|
516
|
+
};
|
|
517
|
+
mappingSectionHeader: {
|
|
518
|
+
type: 'text' | 'chip' | 'icon' | 'image' | 'rating' | 'html';
|
|
519
|
+
expr?: string;
|
|
520
|
+
class?: string;
|
|
521
|
+
style?: string;
|
|
522
|
+
chipColor?: string;
|
|
523
|
+
chipVariant?: 'filled' | 'outlined';
|
|
524
|
+
ratingColor?: string;
|
|
525
|
+
ratingSize?: number;
|
|
526
|
+
ratingMax?: number;
|
|
527
|
+
iconColor?: string;
|
|
528
|
+
imageUrl?: string;
|
|
529
|
+
imageAlt?: string;
|
|
530
|
+
extraPipe?: string;
|
|
531
|
+
};
|
|
532
|
+
mappingEmptyState: {
|
|
533
|
+
type: 'text' | 'chip' | 'icon' | 'image' | 'rating' | 'html';
|
|
534
|
+
expr?: string;
|
|
535
|
+
class?: string;
|
|
536
|
+
style?: string;
|
|
537
|
+
chipColor?: string;
|
|
538
|
+
chipVariant?: 'filled' | 'outlined';
|
|
539
|
+
ratingColor?: string;
|
|
540
|
+
ratingSize?: number;
|
|
541
|
+
ratingMax?: number;
|
|
542
|
+
iconColor?: string;
|
|
543
|
+
imageUrl?: string;
|
|
544
|
+
imageAlt?: string;
|
|
545
|
+
extraPipe?: string;
|
|
335
546
|
};
|
|
336
547
|
mapping: {
|
|
337
548
|
leadingIcon?: string;
|
|
338
549
|
};
|
|
339
550
|
private mappingDirty;
|
|
551
|
+
private appliedMappingSnapshot;
|
|
552
|
+
statusPosition: 'inline' | 'top-right' | undefined;
|
|
553
|
+
iconColorMapEntries: Array<{
|
|
554
|
+
key: string;
|
|
555
|
+
color?: string;
|
|
556
|
+
}>;
|
|
557
|
+
chipColorMapEntries: Array<{
|
|
558
|
+
key: string;
|
|
559
|
+
color?: string;
|
|
560
|
+
}>;
|
|
561
|
+
chipLabelMapEntries: Array<{
|
|
562
|
+
key: string;
|
|
563
|
+
label?: string;
|
|
564
|
+
}>;
|
|
565
|
+
globalActionCatalog: GlobalActionCatalogEntry[];
|
|
566
|
+
selectedGlobalActionId?: string;
|
|
567
|
+
uiSortRows: Array<{
|
|
568
|
+
label?: string;
|
|
569
|
+
field?: string;
|
|
570
|
+
dir?: 'asc' | 'desc';
|
|
571
|
+
}>;
|
|
340
572
|
mappingMetaFields: string[];
|
|
341
573
|
mappingMetaSeparator: string;
|
|
342
574
|
mappingMetaWrapSecondInParens: boolean;
|
|
@@ -349,6 +581,9 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
|
|
|
349
581
|
}>;
|
|
350
582
|
featuresVisible: boolean;
|
|
351
583
|
featuresMode: 'icons+labels' | 'icons-only' | 'labels-only';
|
|
584
|
+
skeletonCountInput: number;
|
|
585
|
+
queryJson: string;
|
|
586
|
+
queryError: string;
|
|
352
587
|
private crud;
|
|
353
588
|
private resourcePathChanges;
|
|
354
589
|
constructor(injected?: any);
|
|
@@ -361,7 +596,8 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
|
|
|
361
596
|
private normalize;
|
|
362
597
|
private setupSchemaWatcher;
|
|
363
598
|
onResourcePathChange(value: string): void;
|
|
364
|
-
applySkinPreset(preset:
|
|
599
|
+
applySkinPreset(preset: SkinPreset): void;
|
|
600
|
+
applyLayoutPreset(preset: 'tiles-modern'): void;
|
|
365
601
|
previewData: {
|
|
366
602
|
title: string;
|
|
367
603
|
subtitle: string;
|
|
@@ -369,17 +605,103 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
|
|
|
369
605
|
salary: number;
|
|
370
606
|
hireDate: string;
|
|
371
607
|
rating: number;
|
|
608
|
+
name: string;
|
|
609
|
+
status: string;
|
|
610
|
+
price: number;
|
|
611
|
+
imageUrl: string;
|
|
372
612
|
}[];
|
|
373
613
|
skinPreviewTheme: 'light' | 'dark' | 'grid';
|
|
614
|
+
readonly metaTypeConfigs: Array<{
|
|
615
|
+
type: 'text' | 'chip' | 'rating' | 'currency' | 'date' | 'icon' | 'image' | 'html';
|
|
616
|
+
label: string;
|
|
617
|
+
icon: string;
|
|
618
|
+
props?: string[];
|
|
619
|
+
}>;
|
|
620
|
+
readonly primaryTypeConfigs: {
|
|
621
|
+
type: "text" | "chip" | "rating" | "currency" | "date" | "icon" | "image" | "html";
|
|
622
|
+
label: string;
|
|
623
|
+
icon: string;
|
|
624
|
+
props?: string[];
|
|
625
|
+
}[];
|
|
626
|
+
readonly secondaryTypeConfigs: {
|
|
627
|
+
type: "text" | "chip" | "rating" | "currency" | "date" | "icon" | "image" | "html";
|
|
628
|
+
label: string;
|
|
629
|
+
icon: string;
|
|
630
|
+
props?: string[];
|
|
631
|
+
}[];
|
|
632
|
+
readonly leadingTypeConfigs: {
|
|
633
|
+
type: "text" | "chip" | "rating" | "currency" | "date" | "icon" | "image" | "html";
|
|
634
|
+
label: string;
|
|
635
|
+
icon: string;
|
|
636
|
+
props?: string[];
|
|
637
|
+
}[];
|
|
638
|
+
readonly trailingTypeConfigs: {
|
|
639
|
+
type: "text" | "chip" | "rating" | "currency" | "date" | "icon" | "image" | "html";
|
|
640
|
+
label: string;
|
|
641
|
+
icon: string;
|
|
642
|
+
props?: string[];
|
|
643
|
+
}[];
|
|
644
|
+
readonly sectionHeaderTypeConfigs: {
|
|
645
|
+
type: "text" | "chip" | "rating" | "currency" | "date" | "icon" | "image" | "html";
|
|
646
|
+
label: string;
|
|
647
|
+
icon: string;
|
|
648
|
+
props?: string[];
|
|
649
|
+
}[];
|
|
650
|
+
readonly emptyStateTypeConfigs: {
|
|
651
|
+
type: "text" | "chip" | "rating" | "currency" | "date" | "icon" | "image" | "html";
|
|
652
|
+
label: string;
|
|
653
|
+
icon: string;
|
|
654
|
+
props?: string[];
|
|
655
|
+
}[];
|
|
656
|
+
readonly paletteOptions: Array<{
|
|
657
|
+
value?: string;
|
|
658
|
+
label: string;
|
|
659
|
+
}>;
|
|
660
|
+
isThemeColor(value?: string): boolean;
|
|
661
|
+
isM3Color(value?: string): boolean;
|
|
662
|
+
isCustomColor(value?: string): boolean;
|
|
663
|
+
iconStyle(color?: string): string;
|
|
664
|
+
buttonStyle(color?: string, variant?: 'stroked' | 'raised' | 'flat'): string;
|
|
665
|
+
colorDotBackground(value?: string): string;
|
|
666
|
+
enableCustomColor(obj: any, prop: string, fallback?: string): void;
|
|
667
|
+
enableCustomActionColor(action: any, fallback?: string): void;
|
|
374
668
|
addAction(): void;
|
|
375
669
|
removeAction(idx: number): void;
|
|
376
670
|
onActionsChanged(): void;
|
|
671
|
+
ensureConfirmation(action: any): void;
|
|
672
|
+
setConfirmationField(action: any, field: 'title' | 'message', value: string): void;
|
|
673
|
+
applyConfirmationPreset(action: any, type?: 'danger' | 'warning' | 'info' | ''): void;
|
|
674
|
+
isGlobalPayloadInvalid(payload: any): boolean;
|
|
675
|
+
applyGlobalPayloadExample(action: any): void;
|
|
676
|
+
globalPayloadExampleHint(action: any): string;
|
|
677
|
+
globalPayloadSchemaTooltip(action: any): string;
|
|
678
|
+
onGlobalActionSelected(id?: string): void;
|
|
679
|
+
private addGlobalActionFromCatalog;
|
|
680
|
+
metaTypeConfig(type?: string): {
|
|
681
|
+
type: "text" | "chip" | "rating" | "currency" | "date" | "icon" | "image" | "html";
|
|
682
|
+
label: string;
|
|
683
|
+
icon: string;
|
|
684
|
+
props?: string[];
|
|
685
|
+
} | undefined;
|
|
686
|
+
metaSupports(prop: string): boolean;
|
|
377
687
|
ngDoCheck(): void;
|
|
378
688
|
reset(): void;
|
|
379
689
|
onLayoutChanged(): void;
|
|
380
690
|
onSelectionChanged(): void;
|
|
691
|
+
onSkinGradientChanged(prop: 'from' | 'to' | 'angle', value: string | number): void;
|
|
692
|
+
onSkinTypeChanged(type: SkinType): void;
|
|
381
693
|
onSkinChanged(): void;
|
|
694
|
+
private ensureSkinGradient;
|
|
695
|
+
onQueryChanged(value: string): void;
|
|
382
696
|
onPageSizeChange(value: any): void;
|
|
697
|
+
onUiChanged(): void;
|
|
698
|
+
onSkeletonChanged(value: any): void;
|
|
699
|
+
addUiSortRow(): void;
|
|
700
|
+
removeUiSortRow(i: number): void;
|
|
701
|
+
onUiSortRowsChanged(): void;
|
|
702
|
+
isUiSortRowDuplicate(index: number): boolean;
|
|
703
|
+
isIconColorDuplicate(index: number): boolean;
|
|
704
|
+
private hydrateUiEditorFromConfig;
|
|
383
705
|
private loadFieldsIfNeeded;
|
|
384
706
|
updateSortConfig(): void;
|
|
385
707
|
applyTemplate(): void;
|
|
@@ -388,6 +710,16 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
|
|
|
388
710
|
addFeature(): void;
|
|
389
711
|
removeFeature(idx: number): void;
|
|
390
712
|
onFeaturesChanged(): void;
|
|
713
|
+
addIconColorEntry(): void;
|
|
714
|
+
removeIconColorEntry(i: number): void;
|
|
715
|
+
onIconColorMapChanged(): void;
|
|
716
|
+
addChipColorEntry(): void;
|
|
717
|
+
removeChipColorEntry(i: number): void;
|
|
718
|
+
onChipColorMapChanged(): void;
|
|
719
|
+
addChipLabelEntry(): void;
|
|
720
|
+
removeChipLabelEntry(i: number): void;
|
|
721
|
+
onChipLabelMapChanged(): void;
|
|
722
|
+
setPipe(target: any, spec: string): void;
|
|
391
723
|
insertFeatureToken(index: number, inputEl: HTMLInputElement | HTMLTextAreaElement, field: string): void;
|
|
392
724
|
insertLiteralAt(index: number, inputEl: HTMLInputElement | HTMLTextAreaElement, text: string): void;
|
|
393
725
|
wrapSelectionAt(index: number, inputEl: HTMLInputElement | HTMLTextAreaElement, left: string, right: string): void;
|
|
@@ -395,13 +727,25 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
|
|
|
395
727
|
private updateFeatureExpr;
|
|
396
728
|
private hydrateMappingFromTemplating;
|
|
397
729
|
markDirty(): void;
|
|
730
|
+
private getMappingSnapshot;
|
|
731
|
+
private updateMappingDirty;
|
|
732
|
+
private isJsonLike;
|
|
733
|
+
private resolveGlobalActionCatalog;
|
|
734
|
+
private normalizeActionPayloads;
|
|
398
735
|
verify(): void;
|
|
399
736
|
inferFromFields(): void;
|
|
400
737
|
generateFeaturesFromMetaComposition(): void;
|
|
401
738
|
metaComposePreview(): string;
|
|
739
|
+
private splitTopLevelPipe;
|
|
740
|
+
private validateImageUrl;
|
|
741
|
+
isImageUrlInvalid(url?: string): boolean;
|
|
742
|
+
isImageUrlRequiredInvalid(url?: string): boolean;
|
|
743
|
+
isRatingSizeInvalid(value?: number): boolean;
|
|
744
|
+
isRatingMaxInvalid(value?: number): boolean;
|
|
402
745
|
private suggestIcon;
|
|
403
|
-
|
|
404
|
-
static
|
|
746
|
+
getTypeIcon(type: string): string;
|
|
747
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisListConfigEditor, [{ optional: true; }]>;
|
|
748
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisListConfigEditor, "praxis-list-config-editor", never, { "config": { "alias": "config"; "required": false; }; "listId": { "alias": "listId"; "required": false; }; }, {}, never, never, true, never>;
|
|
405
749
|
}
|
|
406
750
|
|
|
407
751
|
/**
|
|
@@ -413,9 +757,10 @@ declare function inferTemplatingFromSchema(cfg: PraxisListConfig, fieldNames: st
|
|
|
413
757
|
|
|
414
758
|
declare class ListSkinService {
|
|
415
759
|
toHostClasses(config?: PraxisListConfig): string[];
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
static
|
|
760
|
+
toCssVars(config?: PraxisListConfig): Record<string, string>;
|
|
761
|
+
toInlineStyle(config?: PraxisListConfig, rootSelector?: string, includeVars?: boolean): string;
|
|
762
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListSkinService, never>;
|
|
763
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ListSkinService>;
|
|
419
764
|
}
|
|
420
765
|
|
|
421
766
|
/**
|
|
@@ -447,5 +792,245 @@ declare function adaptSelection(config: PraxisListConfig | undefined, items: any
|
|
|
447
792
|
declare const PRAXIS_LIST_COMPONENT_METADATA: ComponentDocMeta;
|
|
448
793
|
declare function providePraxisListMetadata(): Provider;
|
|
449
794
|
|
|
450
|
-
|
|
451
|
-
|
|
795
|
+
/**
|
|
796
|
+
* Capabilities catalog for PraxisListConfig.
|
|
797
|
+
* Uses paths compatible with AiConfigAgentService (patch is merged into config).
|
|
798
|
+
*/
|
|
799
|
+
|
|
800
|
+
declare module '@praxisui/core' {
|
|
801
|
+
interface AiCapabilityCategoryMap {
|
|
802
|
+
meta: true;
|
|
803
|
+
skin: true;
|
|
804
|
+
selection: true;
|
|
805
|
+
templating: true;
|
|
806
|
+
actions: true;
|
|
807
|
+
ui: true;
|
|
808
|
+
i18n: true;
|
|
809
|
+
a11y: true;
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
type CapabilityCategory = AiCapabilityCategory;
|
|
813
|
+
type ValueKind = AiValueKind;
|
|
814
|
+
interface Capability extends AiCapability {
|
|
815
|
+
category: CapabilityCategory;
|
|
816
|
+
}
|
|
817
|
+
interface CapabilityCatalog extends AiCapabilityCatalog {
|
|
818
|
+
capabilities: Capability[];
|
|
819
|
+
}
|
|
820
|
+
declare const LIST_AI_CAPABILITIES: CapabilityCatalog;
|
|
821
|
+
|
|
822
|
+
type DemoScenario = 'operations' | 'catalog' | 'empty';
|
|
823
|
+
type DemoVariant = 'list' | 'cards' | 'tiles';
|
|
824
|
+
type DemoDensity = 'default' | 'comfortable' | 'compact';
|
|
825
|
+
type DemoFeaturesMode = 'icons+labels' | 'icons-only' | 'labels-only';
|
|
826
|
+
type DemoSelectionMode = 'none' | 'single' | 'multiple';
|
|
827
|
+
type DemoSkin = 'elevated' | 'outline' | 'flat' | 'neumorphism' | 'pill-soft' | 'glass' | 'gradient-tile' | 'custom';
|
|
828
|
+
type CodeTab = 'template' | 'ts' | 'config' | 'remote';
|
|
829
|
+
interface ScenarioOption {
|
|
830
|
+
id: DemoScenario;
|
|
831
|
+
label: string;
|
|
832
|
+
helper: string;
|
|
833
|
+
}
|
|
834
|
+
interface VariantOption {
|
|
835
|
+
id: DemoVariant;
|
|
836
|
+
label: string;
|
|
837
|
+
}
|
|
838
|
+
interface DensityOption {
|
|
839
|
+
id: DemoDensity;
|
|
840
|
+
label: string;
|
|
841
|
+
}
|
|
842
|
+
interface FeaturesModeOption {
|
|
843
|
+
id: DemoFeaturesMode;
|
|
844
|
+
label: string;
|
|
845
|
+
}
|
|
846
|
+
interface SelectionModeOption {
|
|
847
|
+
id: DemoSelectionMode;
|
|
848
|
+
label: string;
|
|
849
|
+
}
|
|
850
|
+
interface SkinOption {
|
|
851
|
+
id: DemoSkin;
|
|
852
|
+
label: string;
|
|
853
|
+
}
|
|
854
|
+
interface CodeTabOption {
|
|
855
|
+
id: CodeTab;
|
|
856
|
+
label: string;
|
|
857
|
+
}
|
|
858
|
+
interface CoverageTopic {
|
|
859
|
+
title: string;
|
|
860
|
+
details: string;
|
|
861
|
+
}
|
|
862
|
+
interface EventLogEntry {
|
|
863
|
+
id: number;
|
|
864
|
+
message: string;
|
|
865
|
+
}
|
|
866
|
+
interface DemoItem {
|
|
867
|
+
id: number;
|
|
868
|
+
title: string;
|
|
869
|
+
subtitle: string;
|
|
870
|
+
department: string;
|
|
871
|
+
status: string;
|
|
872
|
+
statusIcon: string;
|
|
873
|
+
priority: string;
|
|
874
|
+
budget: number;
|
|
875
|
+
updatedAt: string;
|
|
876
|
+
rating: number;
|
|
877
|
+
owner: string;
|
|
878
|
+
city: string;
|
|
879
|
+
trend: string;
|
|
880
|
+
cover: string;
|
|
881
|
+
}
|
|
882
|
+
declare class PraxisListDocPageComponent {
|
|
883
|
+
readonly form: FormGroup<{
|
|
884
|
+
selectedItems: FormControl<unknown>;
|
|
885
|
+
}>;
|
|
886
|
+
readonly scenario: _angular_core.WritableSignal<DemoScenario>;
|
|
887
|
+
readonly variant: _angular_core.WritableSignal<DemoVariant>;
|
|
888
|
+
readonly density: _angular_core.WritableSignal<DemoDensity>;
|
|
889
|
+
readonly lines: _angular_core.WritableSignal<1 | 2 | 3>;
|
|
890
|
+
readonly skin: _angular_core.WritableSignal<DemoSkin>;
|
|
891
|
+
readonly featuresMode: _angular_core.WritableSignal<DemoFeaturesMode>;
|
|
892
|
+
readonly selectionMode: _angular_core.WritableSignal<DemoSelectionMode>;
|
|
893
|
+
readonly customizationEnabled: _angular_core.WritableSignal<boolean>;
|
|
894
|
+
readonly activeTab: _angular_core.WritableSignal<CodeTab>;
|
|
895
|
+
readonly eventLog: _angular_core.WritableSignal<EventLogEntry[]>;
|
|
896
|
+
private nextLogId;
|
|
897
|
+
readonly scenarioOptions: ReadonlyArray<ScenarioOption>;
|
|
898
|
+
readonly variantOptions: ReadonlyArray<VariantOption>;
|
|
899
|
+
readonly densityOptions: ReadonlyArray<DensityOption>;
|
|
900
|
+
readonly featuresModeOptions: ReadonlyArray<FeaturesModeOption>;
|
|
901
|
+
readonly selectionOptions: ReadonlyArray<SelectionModeOption>;
|
|
902
|
+
readonly skinOptions: ReadonlyArray<SkinOption>;
|
|
903
|
+
readonly codeTabs: ReadonlyArray<CodeTabOption>;
|
|
904
|
+
readonly featureCoverage: ReadonlyArray<CoverageTopic>;
|
|
905
|
+
readonly liveItems: _angular_core.Signal<DemoItem[]>;
|
|
906
|
+
readonly activeScenarioMeta: _angular_core.Signal<ScenarioOption | null>;
|
|
907
|
+
readonly liveConfig: _angular_core.Signal<PraxisListConfig>;
|
|
908
|
+
readonly skinPreviewItems: DemoItem[];
|
|
909
|
+
readonly skinPreviewConfigs: _angular_core.Signal<{
|
|
910
|
+
type: DemoSkin;
|
|
911
|
+
config: {
|
|
912
|
+
layout: {
|
|
913
|
+
variant: "cards";
|
|
914
|
+
lines: 2;
|
|
915
|
+
density: "compact";
|
|
916
|
+
model: "hotel";
|
|
917
|
+
groupBy: undefined;
|
|
918
|
+
dividers?: "none" | "between" | "all";
|
|
919
|
+
stickySectionHeader?: boolean;
|
|
920
|
+
virtualScroll?: boolean;
|
|
921
|
+
pageSize?: number;
|
|
922
|
+
};
|
|
923
|
+
selection: {
|
|
924
|
+
mode: "none";
|
|
925
|
+
};
|
|
926
|
+
dataSource: {
|
|
927
|
+
data: DemoItem[];
|
|
928
|
+
};
|
|
929
|
+
skin: {
|
|
930
|
+
type?: "pill-soft" | "gradient-tile" | "glass" | "elevated" | "outline" | "flat" | "neumorphism" | "custom";
|
|
931
|
+
gradient?: {
|
|
932
|
+
from: string;
|
|
933
|
+
to: string;
|
|
934
|
+
angle?: number;
|
|
935
|
+
};
|
|
936
|
+
radius?: string;
|
|
937
|
+
shadow?: string;
|
|
938
|
+
border?: string;
|
|
939
|
+
backdropBlur?: string;
|
|
940
|
+
class?: string;
|
|
941
|
+
inlineStyle?: string;
|
|
942
|
+
} | undefined;
|
|
943
|
+
id?: string;
|
|
944
|
+
templating?: {
|
|
945
|
+
leading?: TemplateDef;
|
|
946
|
+
primary?: TemplateDef;
|
|
947
|
+
secondary?: TemplateDef;
|
|
948
|
+
meta?: TemplateDef;
|
|
949
|
+
trailing?: TemplateDef;
|
|
950
|
+
metaPlacement?: "side" | "line";
|
|
951
|
+
metaPrefixIcon?: string;
|
|
952
|
+
statusPosition?: "inline" | "top-right";
|
|
953
|
+
chipColorMap?: Record<string, string>;
|
|
954
|
+
chipLabelMap?: Record<string, string>;
|
|
955
|
+
iconColorMap?: Record<string, string>;
|
|
956
|
+
features?: ListFeatureDef[];
|
|
957
|
+
featuresVisible?: boolean;
|
|
958
|
+
featuresMode?: "icons+labels" | "icons-only" | "labels-only";
|
|
959
|
+
sectionHeader?: TemplateDef;
|
|
960
|
+
emptyState?: TemplateDef;
|
|
961
|
+
skeleton?: {
|
|
962
|
+
count?: number;
|
|
963
|
+
};
|
|
964
|
+
};
|
|
965
|
+
actions?: Array<{
|
|
966
|
+
id: string;
|
|
967
|
+
icon?: string;
|
|
968
|
+
label?: string;
|
|
969
|
+
color?: string;
|
|
970
|
+
kind?: "icon" | "button";
|
|
971
|
+
buttonVariant?: "stroked" | "raised" | "flat";
|
|
972
|
+
showIf?: string;
|
|
973
|
+
emitPayload?: "item" | "id" | "value";
|
|
974
|
+
command?: string;
|
|
975
|
+
globalPayload?: any;
|
|
976
|
+
emitLocal?: boolean;
|
|
977
|
+
showLoading?: boolean;
|
|
978
|
+
confirmation?: {
|
|
979
|
+
title?: string;
|
|
980
|
+
message?: string;
|
|
981
|
+
type?: "danger" | "warning" | "info";
|
|
982
|
+
};
|
|
983
|
+
}>;
|
|
984
|
+
i18n?: Record<string, string>;
|
|
985
|
+
ui?: {
|
|
986
|
+
showSearch?: boolean;
|
|
987
|
+
searchField?: string;
|
|
988
|
+
searchPlaceholder?: string;
|
|
989
|
+
showSort?: boolean;
|
|
990
|
+
sortOptions?: Array<string | {
|
|
991
|
+
label: string;
|
|
992
|
+
value: string;
|
|
993
|
+
}>;
|
|
994
|
+
showRange?: boolean;
|
|
995
|
+
};
|
|
996
|
+
a11y?: {
|
|
997
|
+
ariaLabel?: string;
|
|
998
|
+
ariaLabelledBy?: string;
|
|
999
|
+
highContrast?: boolean;
|
|
1000
|
+
reduceMotion?: boolean;
|
|
1001
|
+
};
|
|
1002
|
+
events?: {
|
|
1003
|
+
itemClick?: string;
|
|
1004
|
+
actionClick?: string;
|
|
1005
|
+
selectionChange?: string;
|
|
1006
|
+
loaded?: string;
|
|
1007
|
+
};
|
|
1008
|
+
};
|
|
1009
|
+
}[]>;
|
|
1010
|
+
readonly configPreview: _angular_core.Signal<string>;
|
|
1011
|
+
readonly selectedSnippet: _angular_core.Signal<string>;
|
|
1012
|
+
readonly templateSnippet = "<praxis-list-doc-page></praxis-list-doc-page>";
|
|
1013
|
+
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 {}";
|
|
1014
|
+
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;";
|
|
1015
|
+
setScenario(next: DemoScenario): void;
|
|
1016
|
+
setVariant(next: DemoVariant): void;
|
|
1017
|
+
setDensity(next: DemoDensity): void;
|
|
1018
|
+
setLines(next: 1 | 2 | 3): void;
|
|
1019
|
+
setSkin(next: DemoSkin): void;
|
|
1020
|
+
setFeaturesMode(next: DemoFeaturesMode): void;
|
|
1021
|
+
setSelectionMode(next: DemoSelectionMode): void;
|
|
1022
|
+
setCodeTab(next: CodeTab): void;
|
|
1023
|
+
setCustomizationMode(enabled: boolean): void;
|
|
1024
|
+
clearLog(): void;
|
|
1025
|
+
handleItemClick(event: ListItemEvent): void;
|
|
1026
|
+
handleActionClick(event: ListActionEvent): void;
|
|
1027
|
+
handleSelectionChange(event: ListSelectionEvent): void;
|
|
1028
|
+
private buildSkinConfig;
|
|
1029
|
+
private buildTemplatingConfig;
|
|
1030
|
+
private pushLog;
|
|
1031
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisListDocPageComponent, never>;
|
|
1032
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisListDocPageComponent, "praxis-list-doc-page", never, {}, {}, never, never, true, never>;
|
|
1033
|
+
}
|
|
1034
|
+
|
|
1035
|
+
export { LIST_AI_CAPABILITIES, ListDataService, ListSkinService, PRAXIS_LIST_COMPONENT_METADATA, PraxisList, PraxisListConfigEditor, PraxisListDocPageComponent, adaptSelection, evalExpr, evaluateTemplate, inferTemplatingFromSchema, providePraxisListMetadata };
|
|
1036
|
+
export type { Capability, CapabilityCatalog, CapabilityCategory, ListActionEvent, ListFeatureDef, ListItemEvent, ListSection, ListSelectionEvent, PraxisListConfig, TemplateDef, TemplateType, ValueKind };
|