@praxisui/list 9.0.68-rc.3 → 10.0.0-rc.10
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 +38 -0
- package/ai/component-registry.json +239 -4
- package/fesm2022/praxisui-list.mjs +888 -95
- package/package.json +7 -6
- package/src/lib/praxis-list.json-api.md +143 -19
- package/types/praxisui-list.d.ts +82 -70
package/package.json
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/list",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.0-rc.10",
|
|
4
4
|
"description": "List components and helpers for Praxis UI.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
7
7
|
"@angular/core": "^21.0.0",
|
|
8
|
+
"@angular/cdk": "^21.0.0",
|
|
8
9
|
"@angular/material": "^21.0.0",
|
|
9
|
-
"@praxisui/dynamic-fields": "^
|
|
10
|
+
"@praxisui/dynamic-fields": "^10.0.0-rc.10",
|
|
10
11
|
"rxjs": ">=7 <9",
|
|
11
12
|
"@angular/forms": "^21.0.0",
|
|
12
13
|
"@angular/router": "^21.0.0",
|
|
13
|
-
"@praxisui/ai": "^
|
|
14
|
-
"@praxisui/core": "^
|
|
15
|
-
"@praxisui/rich-content": "^
|
|
16
|
-
"@praxisui/settings-panel": "^
|
|
14
|
+
"@praxisui/ai": "^10.0.0-rc.10",
|
|
15
|
+
"@praxisui/core": "^10.0.0-rc.10",
|
|
16
|
+
"@praxisui/rich-content": "^10.0.0-rc.10",
|
|
17
|
+
"@praxisui/settings-panel": "^10.0.0-rc.10"
|
|
17
18
|
},
|
|
18
19
|
"dependencies": {
|
|
19
20
|
"tslib": "^2.3.0",
|
|
@@ -534,18 +534,19 @@ interface PraxisListConfig {
|
|
|
534
534
|
|
|
535
535
|
#### Layout API
|
|
536
536
|
|
|
537
|
-
| Caminho | Status | Observacao
|
|
538
|
-
| ---------------------------- | ------------- |
|
|
539
|
-
| `layout.variant` | Active | `list/cards/tiles`
|
|
540
|
-
| `layout.density` | Active | classe `density-*`
|
|
541
|
-
| `layout.itemSpacing` | Active | classe `item-spacing-*`
|
|
542
|
-
| `layout.
|
|
543
|
-
| `layout.
|
|
544
|
-
| `layout.
|
|
545
|
-
| `layout.
|
|
546
|
-
| `layout.
|
|
547
|
-
| `layout.
|
|
548
|
-
| `layout.
|
|
537
|
+
| Caminho | Status | Observacao |
|
|
538
|
+
| ---------------------------- | ------------- | ---------------------------------------------------------- |
|
|
539
|
+
| `layout.variant` | Active | `list/cards/tiles` |
|
|
540
|
+
| `layout.density` | Active | classe `density-*` |
|
|
541
|
+
| `layout.itemSpacing` | Active | classe `item-spacing-*` |
|
|
542
|
+
| `layout.itemAppearance` | Active | `flat/card` (isola itens em cartões sob `variant: 'list'`) |
|
|
543
|
+
| `layout.lines` | Active | linhas de texto + classe `lines-*` |
|
|
544
|
+
| `layout.dividers` | Active | divisores no modo `list` |
|
|
545
|
+
| `layout.model` | Active | classe `model-*` |
|
|
546
|
+
| `layout.groupBy` | Active | agrupamento em `sections$` |
|
|
547
|
+
| `layout.pageSize` | Active | page size inicial |
|
|
548
|
+
| `layout.stickySectionHeader` | Declared-only | sem sticky runtime |
|
|
549
|
+
| `layout.virtualScroll` | Declared-only | sem virtual scroll runtime |
|
|
549
550
|
|
|
550
551
|
#### Skin API
|
|
551
552
|
|
|
@@ -634,7 +635,7 @@ Slots suportados:
|
|
|
634
635
|
|
|
635
636
|
Tipos funcionais no runtime:
|
|
636
637
|
|
|
637
|
-
- `text`, `icon`, `image`, `chip`, `rating`, `currency`, `date`, `html`, `metric`, `compose`, `component`.
|
|
638
|
+
- `text`, `icon`, `image`, `chip`, `rating`, `currency`, `date`, `datetime`, `relative`, `html`, `metric`, `compose`, `component`.
|
|
638
639
|
|
|
639
640
|
Inferencia opcional:
|
|
640
641
|
|
|
@@ -765,15 +766,21 @@ Semantica de execucao:
|
|
|
765
766
|
Suporte principal:
|
|
766
767
|
|
|
767
768
|
- placeholders: `${item.campo}`;
|
|
768
|
-
-
|
|
769
|
-
-
|
|
769
|
+
- coalescência em placeholders: `${item.displayName ?? item.name ?? item.id}`;
|
|
770
|
+
- pipes em placeholder: `bool`, `date`, `datetime`, `relative`, `map`, `number`, `currency`;
|
|
771
|
+
- pipes top-level pós-expressão: `|bool:True:False`, `|map:k=v`, `|relative:locale`, `|datetime:locale:style`, `|date:locale:style`.
|
|
770
772
|
|
|
771
773
|
Exemplos validos:
|
|
772
774
|
|
|
773
775
|
- `${item.active|bool:Ativo:Inativo}`
|
|
774
776
|
- `${item.createdAt|date:pt-BR:short}`
|
|
777
|
+
- `${item.occurredAt|datetime:pt-BR:short}`
|
|
778
|
+
- `${item.occurredAt|relative:pt-BR}` (exibe *"há 5 minutos"*)
|
|
775
779
|
- `${item.status|map:done=Concluido;pending=Pendente}`
|
|
776
780
|
- `${item.total|number:pt-BR:compact}`
|
|
781
|
+
- `${item.amount|currency:BRL:pt-BR}`
|
|
782
|
+
- `${item.occurredAt}|relative:pt-BR` (pipe top-level)
|
|
783
|
+
- `${item.createdAt}|datetime:pt-BR:short` (pipe top-level)
|
|
777
784
|
|
|
778
785
|
##### `actions[].showIf`
|
|
779
786
|
|
|
@@ -958,25 +965,142 @@ Recomendacao corporativa:
|
|
|
958
965
|
### Minimal valid
|
|
959
966
|
|
|
960
967
|
```json
|
|
961
|
-
{
|
|
968
|
+
{
|
|
969
|
+
"layout": {
|
|
970
|
+
"variant": "list"
|
|
971
|
+
},
|
|
972
|
+
"templating": {
|
|
973
|
+
"primary": {
|
|
974
|
+
"type": "text",
|
|
975
|
+
"expr": "${item.name}"
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
}
|
|
962
979
|
```
|
|
963
980
|
|
|
964
981
|
### Typical/common
|
|
965
982
|
|
|
966
983
|
```json
|
|
967
|
-
{
|
|
984
|
+
{
|
|
985
|
+
"layout": {
|
|
986
|
+
"variant": "list",
|
|
987
|
+
"density": "comfortable",
|
|
988
|
+
"itemSpacing": "default"
|
|
989
|
+
},
|
|
990
|
+
"templating": {
|
|
991
|
+
"leading": {
|
|
992
|
+
"type": "icon",
|
|
993
|
+
"expr": "person"
|
|
994
|
+
},
|
|
995
|
+
"primary": {
|
|
996
|
+
"type": "text",
|
|
997
|
+
"expr": "${item.nomeCompleto}"
|
|
998
|
+
},
|
|
999
|
+
"secondary": {
|
|
1000
|
+
"type": "text",
|
|
1001
|
+
"expr": "${item.cargo} · ${item.departamento}"
|
|
1002
|
+
},
|
|
1003
|
+
"meta": {
|
|
1004
|
+
"type": "date",
|
|
1005
|
+
"expr": "${item.dataAdmissao}"
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
}
|
|
968
1009
|
```
|
|
969
1010
|
|
|
970
1011
|
### Advanced
|
|
971
1012
|
|
|
972
1013
|
```json
|
|
973
|
-
{
|
|
1014
|
+
{
|
|
1015
|
+
"layout": {
|
|
1016
|
+
"variant": "list",
|
|
1017
|
+
"itemAppearance": "card",
|
|
1018
|
+
"itemSpacing": "compact"
|
|
1019
|
+
},
|
|
1020
|
+
"skin": {
|
|
1021
|
+
"type": "glass"
|
|
1022
|
+
},
|
|
1023
|
+
"templating": {
|
|
1024
|
+
"leading": {
|
|
1025
|
+
"type": "icon",
|
|
1026
|
+
"expr": "${item.severidade|map:CRITICA=warning,ALTA=error_outline,MEDIA=info}",
|
|
1027
|
+
"color": "${item.severidade|map:CRITICA=warn,ALTA=warn,MEDIA=primary}"
|
|
1028
|
+
},
|
|
1029
|
+
"primary": {
|
|
1030
|
+
"type": "text",
|
|
1031
|
+
"expr": "${item.titulo}"
|
|
1032
|
+
},
|
|
1033
|
+
"secondary": {
|
|
1034
|
+
"type": "text",
|
|
1035
|
+
"expr": "${item.localizacao} · Protocolo ${item.protocolo}"
|
|
1036
|
+
},
|
|
1037
|
+
"meta": {
|
|
1038
|
+
"type": "relative",
|
|
1039
|
+
"expr": "${item.abertoEm}"
|
|
1040
|
+
},
|
|
1041
|
+
"metaPlacement": "side"
|
|
1042
|
+
},
|
|
1043
|
+
"actions": [
|
|
1044
|
+
{
|
|
1045
|
+
"id": "dispatch",
|
|
1046
|
+
"label": "Despachar",
|
|
1047
|
+
"icon": "send",
|
|
1048
|
+
"kind": "icon"
|
|
1049
|
+
}
|
|
1050
|
+
]
|
|
1051
|
+
}
|
|
974
1052
|
```
|
|
975
1053
|
|
|
976
1054
|
### Enterprise scenario
|
|
977
1055
|
|
|
978
1056
|
```json
|
|
979
|
-
{
|
|
1057
|
+
{
|
|
1058
|
+
"dataSource": {
|
|
1059
|
+
"resourcePath": "incidentes",
|
|
1060
|
+
"sort": {
|
|
1061
|
+
"field": "abertoEm",
|
|
1062
|
+
"direction": "desc"
|
|
1063
|
+
}
|
|
1064
|
+
},
|
|
1065
|
+
"layout": {
|
|
1066
|
+
"variant": "list",
|
|
1067
|
+
"itemAppearance": "card",
|
|
1068
|
+
"pageSize": 20
|
|
1069
|
+
},
|
|
1070
|
+
"i18n": {
|
|
1071
|
+
"locale": "pt-BR",
|
|
1072
|
+
"currency": "BRL"
|
|
1073
|
+
},
|
|
1074
|
+
"selection": {
|
|
1075
|
+
"mode": "multiple",
|
|
1076
|
+
"compareBy": "id",
|
|
1077
|
+
"return": "id"
|
|
1078
|
+
},
|
|
1079
|
+
"templating": {
|
|
1080
|
+
"leading": {
|
|
1081
|
+
"type": "chip",
|
|
1082
|
+
"expr": "${item.codigo}",
|
|
1083
|
+
"variant": "outlined"
|
|
1084
|
+
},
|
|
1085
|
+
"primary": {
|
|
1086
|
+
"type": "text",
|
|
1087
|
+
"expr": "${item.nome ?? item.titulo}"
|
|
1088
|
+
},
|
|
1089
|
+
"secondary": {
|
|
1090
|
+
"type": "text",
|
|
1091
|
+
"expr": "${item.resumo}"
|
|
1092
|
+
},
|
|
1093
|
+
"meta": {
|
|
1094
|
+
"type": "datetime",
|
|
1095
|
+
"expr": "${item.dataCriacao}|pt-BR:short"
|
|
1096
|
+
}
|
|
1097
|
+
},
|
|
1098
|
+
"ui": {
|
|
1099
|
+
"showSearch": true,
|
|
1100
|
+
"searchField": "titulo",
|
|
1101
|
+
"showSort": true
|
|
1102
|
+
}
|
|
1103
|
+
}
|
|
980
1104
|
```
|
|
981
1105
|
|
|
982
1106
|
## Known limitations and mismatches
|
package/types/praxisui-list.d.ts
CHANGED
|
@@ -4,13 +4,12 @@ import * as i0 from '@angular/core';
|
|
|
4
4
|
import { OnInit, OnChanges, AfterViewInit, OnDestroy, EventEmitter, SimpleChanges, ChangeDetectorRef, DoCheck, Provider } from '@angular/core';
|
|
5
5
|
import { MatPaginatorSelectConfig, PageEvent } from '@angular/material/paginator';
|
|
6
6
|
import { FormGroup, FormControl } from '@angular/forms';
|
|
7
|
-
import * as _praxisui_core from '@praxisui/core';
|
|
8
7
|
import { PraxisExportFormat, PraxisExportScope, PraxisRuntimeConditionalEffectRule, JsonLogicExpression, RichContentDocument, ResourceRecordOpenRef, GlobalActionRef, LocalizationConfig, AiCapability, PraxisDataQueryContext, RichBlockNode, RichBlockHostCapabilities, SurfaceOpenActionEditorComponent, GlobalActionCatalogEntry, SurfaceOpenPayload, SettingsValueProvider as SettingsValueProvider$1, RichPresenterNode, RichComposeNode, ComponentDocMeta, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest } from '@praxisui/core';
|
|
9
8
|
import { BaseAiAdapter, AiResponseCompileResult, PatchResult, PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantSessionSnapshot, PraxisAssistantShellQuickReply, PraxisAssistantShellMessage } from '@praxisui/ai';
|
|
10
9
|
import { SettingsValueProvider } from '@praxisui/settings-panel';
|
|
11
10
|
import * as _praxisui_list from '@praxisui/list';
|
|
12
11
|
|
|
13
|
-
type TemplateType = 'text' | 'icon' | 'image' | 'chip' | 'rating' | 'currency' | 'date' | 'html' | 'slot' | 'metric' | 'compose' | 'component';
|
|
12
|
+
type TemplateType = 'text' | 'icon' | 'image' | 'chip' | 'rating' | 'currency' | 'date' | 'datetime' | 'relative' | 'html' | 'slot' | 'metric' | 'compose' | 'component';
|
|
14
13
|
interface TemplateDef {
|
|
15
14
|
type: TemplateType;
|
|
16
15
|
expr?: string;
|
|
@@ -147,6 +146,45 @@ interface ListSlotOverrideRule extends Omit<PraxisRuntimeConditionalEffectRule<L
|
|
|
147
146
|
condition?: JsonLogicExpression | null;
|
|
148
147
|
effects?: ListSlotOverrideEffect[];
|
|
149
148
|
}
|
|
149
|
+
interface PraxisListVirtualScrollConfig {
|
|
150
|
+
enabled: boolean;
|
|
151
|
+
itemSize?: number;
|
|
152
|
+
minBufferPx?: number;
|
|
153
|
+
maxBufferPx?: number;
|
|
154
|
+
viewportHeight?: string;
|
|
155
|
+
}
|
|
156
|
+
interface PraxisListItemAction {
|
|
157
|
+
id: string;
|
|
158
|
+
icon?: string;
|
|
159
|
+
label?: string;
|
|
160
|
+
color?: string;
|
|
161
|
+
tooltip?: string;
|
|
162
|
+
kind?: 'icon' | 'button' | 'menu-item';
|
|
163
|
+
buttonVariant?: 'stroked' | 'raised' | 'flat';
|
|
164
|
+
showIf?: JsonLogicExpression | null;
|
|
165
|
+
visibleWhen?: JsonLogicExpression | null;
|
|
166
|
+
disabledWhen?: JsonLogicExpression | null;
|
|
167
|
+
/**
|
|
168
|
+
* Condição HATEOAS canônica: se especificado, a ação só é exibida
|
|
169
|
+
* se o item possuir o link correspondente em `item._links[hateoasRel]` ou `item.links[hateoasRel]`.
|
|
170
|
+
*/
|
|
171
|
+
hateoasRel?: string;
|
|
172
|
+
emitPayload?: 'item' | 'id' | 'value';
|
|
173
|
+
action?: 'surface.open' | string;
|
|
174
|
+
recordOpen?: ResourceRecordOpenRef;
|
|
175
|
+
globalAction?: GlobalActionRef;
|
|
176
|
+
command?: string;
|
|
177
|
+
params?: Record<string, unknown>;
|
|
178
|
+
emitLocal?: boolean;
|
|
179
|
+
showLoading?: boolean;
|
|
180
|
+
placement?: 'actions' | 'trailing' | 'menu';
|
|
181
|
+
confirmation?: {
|
|
182
|
+
title?: string;
|
|
183
|
+
message?: string;
|
|
184
|
+
type?: 'danger' | 'warning' | 'info';
|
|
185
|
+
};
|
|
186
|
+
requiresConfirmation?: boolean;
|
|
187
|
+
}
|
|
150
188
|
interface PraxisListConfig {
|
|
151
189
|
id?: string;
|
|
152
190
|
dataSource?: {
|
|
@@ -159,12 +197,13 @@ interface PraxisListConfig {
|
|
|
159
197
|
variant?: 'list' | 'cards' | 'tiles';
|
|
160
198
|
density?: 'default' | 'comfortable' | 'compact';
|
|
161
199
|
itemSpacing?: 'none' | 'tight' | 'default' | 'relaxed';
|
|
200
|
+
itemAppearance?: 'flat' | 'card' | 'capsule';
|
|
162
201
|
lines?: 1 | 2 | 3;
|
|
163
202
|
dividers?: 'none' | 'between' | 'all';
|
|
164
203
|
model?: 'standard' | 'media' | 'hotel';
|
|
165
204
|
groupBy?: string;
|
|
166
205
|
stickySectionHeader?: boolean;
|
|
167
|
-
virtualScroll?: boolean;
|
|
206
|
+
virtualScroll?: boolean | PraxisListVirtualScrollConfig;
|
|
168
207
|
pageSize?: number;
|
|
169
208
|
rowLayout?: {
|
|
170
209
|
type?: 'grid' | 'flex';
|
|
@@ -284,27 +323,10 @@ interface PraxisListConfig {
|
|
|
284
323
|
errorTemplate?: TemplateDef;
|
|
285
324
|
};
|
|
286
325
|
};
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
color?: string;
|
|
292
|
-
kind?: 'icon' | 'button';
|
|
293
|
-
buttonVariant?: 'stroked' | 'raised' | 'flat';
|
|
294
|
-
showIf?: JsonLogicExpression | null;
|
|
295
|
-
emitPayload?: 'item' | 'id' | 'value';
|
|
296
|
-
action?: 'surface.open';
|
|
297
|
-
recordOpen?: ResourceRecordOpenRef;
|
|
298
|
-
globalAction?: GlobalActionRef;
|
|
299
|
-
emitLocal?: boolean;
|
|
300
|
-
showLoading?: boolean;
|
|
301
|
-
placement?: 'actions' | 'trailing';
|
|
302
|
-
confirmation?: {
|
|
303
|
-
title?: string;
|
|
304
|
-
message?: string;
|
|
305
|
-
type?: 'danger' | 'warning' | 'info';
|
|
306
|
-
};
|
|
307
|
-
}>;
|
|
326
|
+
/** Ações declarativas de item governadas (compatível com itemActions) */
|
|
327
|
+
actions?: PraxisListItemAction[];
|
|
328
|
+
/** Ações declarativas de item com HATEOAS e despacho canônico */
|
|
329
|
+
itemActions?: PraxisListItemAction[];
|
|
308
330
|
i18n?: PraxisListI18nConfig;
|
|
309
331
|
ui?: {
|
|
310
332
|
showSearch?: boolean;
|
|
@@ -488,6 +510,8 @@ declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy
|
|
|
488
510
|
form?: FormGroup | null;
|
|
489
511
|
set enableCustomization(value: boolean);
|
|
490
512
|
get enableCustomization(): boolean;
|
|
513
|
+
itemActions?: PraxisListItemAction[];
|
|
514
|
+
virtualScroll?: boolean | PraxisListVirtualScrollConfig;
|
|
491
515
|
itemClick: EventEmitter<ListItemEvent>;
|
|
492
516
|
actionClick: EventEmitter<ListActionEvent>;
|
|
493
517
|
selectionChange: EventEmitter<ListSelectionEvent>;
|
|
@@ -536,6 +560,7 @@ declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy
|
|
|
536
560
|
private appliedRuntimeConfig?;
|
|
537
561
|
private readonly data;
|
|
538
562
|
private readonly settings;
|
|
563
|
+
private readonly destroyRef;
|
|
539
564
|
private readonly cdr;
|
|
540
565
|
private readonly componentKeys;
|
|
541
566
|
private readonly logger;
|
|
@@ -668,27 +693,17 @@ declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy
|
|
|
668
693
|
hasSkeleton(): boolean;
|
|
669
694
|
skeletonCount(): number;
|
|
670
695
|
skeletonItems(): any[];
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
globalAction?: GlobalActionRef;
|
|
683
|
-
emitLocal?: boolean;
|
|
684
|
-
showLoading?: boolean;
|
|
685
|
-
placement?: "actions" | "trailing";
|
|
686
|
-
confirmation?: {
|
|
687
|
-
title?: string;
|
|
688
|
-
message?: string;
|
|
689
|
-
type?: "danger" | "warning" | "info";
|
|
690
|
-
};
|
|
691
|
-
}[];
|
|
696
|
+
isVirtualScrollEnabled(): boolean;
|
|
697
|
+
virtualScrollItemSize(): number;
|
|
698
|
+
virtualScrollMinBufferPx(): number;
|
|
699
|
+
virtualScrollMaxBufferPx(): number;
|
|
700
|
+
virtualScrollViewportHeight(): string;
|
|
701
|
+
virtualScrollItems(sections: ListSection<any>[] | null | undefined, items: any[] | null | undefined): any[];
|
|
702
|
+
trackByVirtualItem: (index: number, item: any) => any;
|
|
703
|
+
private warnOnIncompatibleVirtualScroll;
|
|
704
|
+
effectiveActions(): PraxisListItemAction[];
|
|
705
|
+
hasHateoasLink(item: any, rel: string): boolean;
|
|
706
|
+
visibleActions(item: any, placement?: 'actions' | 'trailing' | 'menu'): PraxisListItemAction[];
|
|
692
707
|
onItemClick(item: any, index: number, section?: string): void;
|
|
693
708
|
onRowActivate(item: any, index: number, section?: string): void;
|
|
694
709
|
onExpandToggle(event: Event, item: any, index: number): void;
|
|
@@ -843,6 +858,7 @@ declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy
|
|
|
843
858
|
private toBoolean;
|
|
844
859
|
private prettyLabel;
|
|
845
860
|
private mapDateStyle;
|
|
861
|
+
private mapDateTimeStyle;
|
|
846
862
|
starIcon(index: number, ratingValue: string | number): string;
|
|
847
863
|
isThemeColor(color?: string): boolean;
|
|
848
864
|
chipStyle(color?: string, variant?: 'filled' | 'outlined'): string;
|
|
@@ -880,7 +896,7 @@ declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy
|
|
|
880
896
|
private normalizeExpansionItems;
|
|
881
897
|
private normalizeKeyValueItems;
|
|
882
898
|
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisList, never>;
|
|
883
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisList, "praxis-list", never, { "config": { "alias": "config"; "required": false; }; "listId": { "alias": "listId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "form": { "alias": "form"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; }, { "itemClick": "itemClick"; "actionClick": "actionClick"; "selectionChange": "selectionChange"; "exportAction": "exportAction"; "configPatchChange": "configPatchChange"; }, never, never, true, never>;
|
|
899
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisList, "praxis-list", never, { "config": { "alias": "config"; "required": false; }; "listId": { "alias": "listId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "form": { "alias": "form"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "itemActions": { "alias": "itemActions"; "required": false; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; }; }, { "itemClick": "itemClick"; "actionClick": "actionClick"; "selectionChange": "selectionChange"; "exportAction": "exportAction"; "configPatchChange": "configPatchChange"; }, never, never, true, never>;
|
|
884
900
|
static ngAcceptInputType_enableCustomization: unknown;
|
|
885
901
|
}
|
|
886
902
|
|
|
@@ -1237,6 +1253,13 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
|
|
|
1237
1253
|
isDirty$: BehaviorSubject<boolean>;
|
|
1238
1254
|
isValid$: BehaviorSubject<boolean>;
|
|
1239
1255
|
isBusy$: BehaviorSubject<boolean>;
|
|
1256
|
+
readonly saveError: i0.WritableSignal<string>;
|
|
1257
|
+
private readonly destroyRef;
|
|
1258
|
+
private saving;
|
|
1259
|
+
private editorBusy;
|
|
1260
|
+
private persistSettings?;
|
|
1261
|
+
private setEditorBusy;
|
|
1262
|
+
onBeforeClose(): boolean;
|
|
1240
1263
|
private initialJson;
|
|
1241
1264
|
private lastJson;
|
|
1242
1265
|
fields: string[];
|
|
@@ -1424,6 +1447,7 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
|
|
|
1424
1447
|
pickMetaPrefixIcon(): Promise<void>;
|
|
1425
1448
|
getSettingsValue(): any;
|
|
1426
1449
|
onSave(): any;
|
|
1450
|
+
private persistDraft;
|
|
1427
1451
|
onJsonConfigChange(newValue: PraxisListConfig | ListAuthoringDocument): void;
|
|
1428
1452
|
onJsonValidationChange(result: JsonValidationResult): void;
|
|
1429
1453
|
onJsonEditorEvent(event: JsonEditorEvent): void;
|
|
@@ -1812,6 +1836,9 @@ declare function evaluateTemplate(def: TemplateDef | undefined, item: any, optio
|
|
|
1812
1836
|
variant?: 'filled' | 'outlined';
|
|
1813
1837
|
};
|
|
1814
1838
|
} | null;
|
|
1839
|
+
declare function safeFormatDate(date: Date, format?: string, locale?: string, style?: string): string;
|
|
1840
|
+
declare function safeFormatDateTime(date: Date, format?: string, locale?: string, style?: string): string;
|
|
1841
|
+
declare function formatRelativeTime(date: Date, locale?: string, baseDate?: Date): string;
|
|
1815
1842
|
|
|
1816
1843
|
type ListRichContentP0Node = RichPresenterNode | RichComposeNode;
|
|
1817
1844
|
declare function isListTemplateSupportedByRichContentP0(template?: TemplateDef | null): boolean;
|
|
@@ -1819,6 +1846,7 @@ declare function mapListTemplateToRichContentP0(template?: TemplateDef | null):
|
|
|
1819
1846
|
|
|
1820
1847
|
declare function adaptSelection(config: PraxisListConfig | undefined, items: any[]): ListSelectionEvent;
|
|
1821
1848
|
|
|
1849
|
+
declare const PRAXIS_LIST_INSERTION_PRESETS: NonNullable<ComponentDocMeta['insertionPresets']>;
|
|
1822
1850
|
declare const PRAXIS_LIST_COMPONENT_METADATA: ComponentDocMeta;
|
|
1823
1851
|
declare function providePraxisListMetadata(): Provider;
|
|
1824
1852
|
|
|
@@ -1977,9 +2005,10 @@ declare class PraxisListDocPageComponent {
|
|
|
1977
2005
|
model: "hotel";
|
|
1978
2006
|
groupBy: undefined;
|
|
1979
2007
|
itemSpacing?: "none" | "tight" | "default" | "relaxed";
|
|
2008
|
+
itemAppearance?: "flat" | "card" | "capsule";
|
|
1980
2009
|
dividers?: "none" | "between" | "all";
|
|
1981
2010
|
stickySectionHeader?: boolean;
|
|
1982
|
-
virtualScroll?: boolean;
|
|
2011
|
+
virtualScroll?: boolean | _praxisui_list.PraxisListVirtualScrollConfig;
|
|
1983
2012
|
pageSize?: number;
|
|
1984
2013
|
rowLayout?: {
|
|
1985
2014
|
type?: "grid" | "flex";
|
|
@@ -2099,27 +2128,8 @@ declare class PraxisListDocPageComponent {
|
|
|
2099
2128
|
errorTemplate?: _praxisui_list.TemplateDef;
|
|
2100
2129
|
};
|
|
2101
2130
|
};
|
|
2102
|
-
actions?:
|
|
2103
|
-
|
|
2104
|
-
icon?: string;
|
|
2105
|
-
label?: string;
|
|
2106
|
-
color?: string;
|
|
2107
|
-
kind?: "icon" | "button";
|
|
2108
|
-
buttonVariant?: "stroked" | "raised" | "flat";
|
|
2109
|
-
showIf?: _praxisui_core.JsonLogicExpression | null;
|
|
2110
|
-
emitPayload?: "item" | "id" | "value";
|
|
2111
|
-
action?: "surface.open";
|
|
2112
|
-
recordOpen?: _praxisui_core.ResourceRecordOpenRef;
|
|
2113
|
-
globalAction?: _praxisui_core.GlobalActionRef;
|
|
2114
|
-
emitLocal?: boolean;
|
|
2115
|
-
showLoading?: boolean;
|
|
2116
|
-
placement?: "actions" | "trailing";
|
|
2117
|
-
confirmation?: {
|
|
2118
|
-
title?: string;
|
|
2119
|
-
message?: string;
|
|
2120
|
-
type?: "danger" | "warning" | "info";
|
|
2121
|
-
};
|
|
2122
|
-
}>;
|
|
2131
|
+
actions?: _praxisui_list.PraxisListItemAction[];
|
|
2132
|
+
itemActions?: _praxisui_list.PraxisListItemAction[];
|
|
2123
2133
|
i18n?: _praxisui_list.PraxisListI18nConfig;
|
|
2124
2134
|
ui?: {
|
|
2125
2135
|
showSearch?: boolean;
|
|
@@ -2175,6 +2185,7 @@ declare class PraxisListDocPageComponent {
|
|
|
2175
2185
|
|
|
2176
2186
|
declare const PRAXIS_LIST_EN_US: {
|
|
2177
2187
|
readonly loading: "Loading items…";
|
|
2188
|
+
readonly 'editor.saveFailed': "Unable to save the list settings. Your draft was kept. Try again.";
|
|
2178
2189
|
readonly "configurationSource.label": "Configuration source";
|
|
2179
2190
|
readonly "configurationSource.page": "Page configuration";
|
|
2180
2191
|
readonly "configurationSource.individual": "Individual list preferences";
|
|
@@ -2562,6 +2573,7 @@ declare function providePraxisListI18n(): i0.Provider[];
|
|
|
2562
2573
|
|
|
2563
2574
|
declare const PRAXIS_LIST_PT_BR: {
|
|
2564
2575
|
readonly loading: "Carregando itens…";
|
|
2576
|
+
readonly 'editor.saveFailed': "Não foi possível salvar as configurações da lista. O rascunho foi preservado. Tente novamente.";
|
|
2565
2577
|
readonly "configurationSource.label": "Origem da configuração";
|
|
2566
2578
|
readonly "configurationSource.page": "Configuração da página";
|
|
2567
2579
|
readonly "configurationSource.individual": "Preferências individuais da lista";
|
|
@@ -2944,5 +2956,5 @@ declare const PRAXIS_LIST_PT_BR: {
|
|
|
2944
2956
|
readonly 'Advanced row CSS': "CSS avançado da linha";
|
|
2945
2957
|
};
|
|
2946
2958
|
|
|
2947
|
-
export { ExecutiveAlertsComponent, ExecutiveBadgeComponent, ExecutiveOwnerComponent, LIST_AI_CAPABILITIES, ListDataService, ListSkinService, PRAXIS_LIST_AUTHORING_MANIFEST, PRAXIS_LIST_COMPONENT_METADATA, PRAXIS_LIST_EN_US, PRAXIS_LIST_I18N_NAMESPACE, PRAXIS_LIST_PT_BR, PraxisList, PraxisListConfigEditor, PraxisListDocPageComponent, PraxisListJsonConfigEditorComponent, PraxisListWidgetConfigEditor, adaptSelection, buildListApplyPlan, createListAuthoringDocument, evalExpr, evaluateTemplate, inferListAuthoringDocument, inferTemplatingFromSchema, isListTemplateSupportedByRichContentP0, mapListTemplateToRichContentP0, normalizeListActionPayloads, normalizeListAuthoringDocument, normalizeListConfig, parseLegacyOrListDocument, projectListAuthoringDocument, providePraxisListI18n, providePraxisListMetadata, serializeListAuthoringDocument, toCanonicalListConfig, validateListAuthoringDocument };
|
|
2948
|
-
export type { Capability, CapabilityCatalog, CapabilityCategory, EditorDiagnostic, EditorDocument, ExecutiveAlert, JsonEditorEvent, JsonValidationResult, ListActionEvent, ListApplyPlan, ListAuthoringDocument, ListExpansionSectionDef, ListExpansionSectionType, ListFeatureDef, ListItemEvent, ListItemStyleEffect, ListItemStyleRule, ListProjectionContext, ListRemoteLoadError, ListRichContentP0Node, ListRowLayoutSlot, ListRuntimeContext, ListSchemaInferencePlan, ListSection, ListSelectionEvent, ListSlotOverrideEffect, ListSlotOverrideRule, ListTemplatingSlot, ListValidationContext, PraxisListConfig, PraxisListExportConfig, PraxisListI18nConfig, PraxisListWidgetEditorInputs, PraxisListWidgetEditorValue, TemplateDef, TemplateEvaluatorOptions, TemplateFeatureDef, TemplateType, TemplatingFeatureDef, ValueKind };
|
|
2959
|
+
export { ExecutiveAlertsComponent, ExecutiveBadgeComponent, ExecutiveOwnerComponent, LIST_AI_CAPABILITIES, ListDataService, ListSkinService, PRAXIS_LIST_AUTHORING_MANIFEST, PRAXIS_LIST_COMPONENT_METADATA, PRAXIS_LIST_EN_US, PRAXIS_LIST_I18N_NAMESPACE, PRAXIS_LIST_INSERTION_PRESETS, PRAXIS_LIST_PT_BR, PraxisList, PraxisListConfigEditor, PraxisListDocPageComponent, PraxisListJsonConfigEditorComponent, PraxisListWidgetConfigEditor, adaptSelection, buildListApplyPlan, createListAuthoringDocument, evalExpr, evaluateTemplate, formatRelativeTime, inferListAuthoringDocument, inferTemplatingFromSchema, isListTemplateSupportedByRichContentP0, mapListTemplateToRichContentP0, normalizeListActionPayloads, normalizeListAuthoringDocument, normalizeListConfig, parseLegacyOrListDocument, projectListAuthoringDocument, providePraxisListI18n, providePraxisListMetadata, safeFormatDate, safeFormatDateTime, serializeListAuthoringDocument, toCanonicalListConfig, validateListAuthoringDocument };
|
|
2960
|
+
export type { Capability, CapabilityCatalog, CapabilityCategory, EditorDiagnostic, EditorDocument, ExecutiveAlert, JsonEditorEvent, JsonValidationResult, ListActionEvent, ListApplyPlan, ListAuthoringDocument, ListExpansionSectionDef, ListExpansionSectionType, ListFeatureDef, ListItemEvent, ListItemStyleEffect, ListItemStyleRule, ListProjectionContext, ListRemoteLoadError, ListRichContentP0Node, ListRowLayoutSlot, ListRuntimeContext, ListSchemaInferencePlan, ListSection, ListSelectionEvent, ListSlotOverrideEffect, ListSlotOverrideRule, ListTemplatingSlot, ListValidationContext, PraxisListConfig, PraxisListExportConfig, PraxisListI18nConfig, PraxisListItemAction, PraxisListVirtualScrollConfig, PraxisListWidgetEditorInputs, PraxisListWidgetEditorValue, TemplateDef, TemplateEvaluatorOptions, TemplateFeatureDef, TemplateType, TemplatingFeatureDef, ValueKind };
|