@praxisui/rich-content 9.0.0-beta.5 → 9.0.0-beta.6
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.
|
@@ -48,6 +48,7 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
48
48
|
'praxis.richContent.editor.nodeType.text': 'Text',
|
|
49
49
|
'praxis.richContent.editor.nodeType.badge': 'Badge',
|
|
50
50
|
'praxis.richContent.editor.nodeType.icon': 'Icon',
|
|
51
|
+
'praxis.richContent.editor.nodeType.avatar': 'Avatar',
|
|
51
52
|
'praxis.richContent.editor.nodeType.image': 'Image',
|
|
52
53
|
'praxis.richContent.editor.nodeType.link': 'Link',
|
|
53
54
|
'praxis.richContent.editor.nodeType.metric': 'Metric',
|
|
@@ -87,6 +88,7 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
87
88
|
'praxis.richContent.editor.field.src': 'Image URL',
|
|
88
89
|
'praxis.richContent.editor.field.href': 'Link URL',
|
|
89
90
|
'praxis.richContent.editor.field.target': 'Target',
|
|
91
|
+
'praxis.richContent.editor.field.rel': 'Rel',
|
|
90
92
|
'praxis.richContent.editor.field.alt': 'Alternative text',
|
|
91
93
|
'praxis.richContent.editor.field.testId': 'Test id',
|
|
92
94
|
'praxis.richContent.editor.field.className': 'CSS class',
|
|
@@ -101,6 +103,10 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
101
103
|
'praxis.richContent.editor.field.gap': 'Gap',
|
|
102
104
|
'praxis.richContent.editor.field.avatarName': 'Avatar name',
|
|
103
105
|
'praxis.richContent.editor.field.avatarImage': 'Avatar image',
|
|
106
|
+
'praxis.richContent.editor.field.nameExpr': 'Name binding',
|
|
107
|
+
'praxis.richContent.editor.field.imageSrcExpr': 'Image binding',
|
|
108
|
+
'praxis.richContent.editor.field.initials': 'Initials',
|
|
109
|
+
'praxis.richContent.editor.field.initialsExpr': 'Initials binding',
|
|
104
110
|
'praxis.richContent.editor.field.emptyText': 'Empty text',
|
|
105
111
|
'praxis.richContent.editor.field.errorText': 'Error text',
|
|
106
112
|
'praxis.richContent.editor.field.meta': 'Meta',
|
|
@@ -171,6 +177,10 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
171
177
|
'praxis.richContent.editor.decisionEvidence': 'Evidence',
|
|
172
178
|
'praxis.richContent.editor.decisionPrimaryAction': 'Primary action',
|
|
173
179
|
'praxis.richContent.editor.decisionSecondaryActions': 'Secondary actions',
|
|
180
|
+
'praxis.richContent.editor.addPrimaryAction': 'Add primary action',
|
|
181
|
+
'praxis.richContent.editor.addSecondaryAction': 'Add secondary action',
|
|
182
|
+
'praxis.richContent.editor.addAction': 'Add action',
|
|
183
|
+
'praxis.richContent.editor.action': 'Action',
|
|
174
184
|
'praxis.richContent.editor.addEvidence': 'Add evidence',
|
|
175
185
|
'praxis.richContent.editor.evidence': 'Evidence',
|
|
176
186
|
'praxis.richContent.editor.defaultEvidenceLabel': 'Evidence',
|
|
@@ -287,6 +297,12 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
287
297
|
'praxis.richContent.editor.placeholder.valueExpr': 'row.total',
|
|
288
298
|
'praxis.richContent.editor.placeholder.captionExpr': 'row.caption',
|
|
289
299
|
'praxis.richContent.editor.placeholder.progressExpr': 'row.progress',
|
|
300
|
+
'praxis.richContent.editor.placeholder.nameExpr': 'row.name',
|
|
301
|
+
'praxis.richContent.editor.placeholder.imageSrcExpr': 'row.avatarUrl',
|
|
302
|
+
'praxis.richContent.editor.placeholder.initialsExpr': 'row.initials',
|
|
303
|
+
'praxis.richContent.editor.placeholder.rel': 'noopener noreferrer',
|
|
304
|
+
'praxis.richContent.editor.target.self': 'Same tab',
|
|
305
|
+
'praxis.richContent.editor.target.blank': 'New tab',
|
|
290
306
|
'praxis.richContent.editor.defaultText': 'Text',
|
|
291
307
|
'praxis.richContent.editor.defaultBadge': 'Badge',
|
|
292
308
|
'praxis.richContent.editor.defaultLink': 'Link',
|
|
@@ -327,13 +343,18 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
327
343
|
'praxis.richContent.editor.defaultActionCardAction': 'Run action',
|
|
328
344
|
'praxis.richContent.editor.defaultCollapsibleCardTitle': 'Advanced details',
|
|
329
345
|
'praxis.richContent.editor.defaultCollapsibleCardText': 'Collapsible card content',
|
|
346
|
+
'praxis.richContent.editor.cardActions': 'Card actions',
|
|
347
|
+
'praxis.richContent.editor.calloutActions': 'Callout actions',
|
|
330
348
|
'praxis.richContent.editor.ctaGroupActions': 'CTA actions',
|
|
349
|
+
'praxis.richContent.editor.emptyStateActions': 'Empty state actions',
|
|
350
|
+
'praxis.richContent.editor.recordSummaryActions': 'Summary actions',
|
|
331
351
|
'praxis.richContent.editor.tabsItems': 'Tab items',
|
|
332
352
|
'praxis.richContent.editor.lookupResultActions': 'Lookup actions',
|
|
333
353
|
'praxis.richContent.editor.lookupCardSecondaryActions': 'Secondary actions',
|
|
334
354
|
'praxis.richContent.editor.relatedRecordSecondaryActions': 'Secondary actions',
|
|
335
355
|
'praxis.richContent.editor.actionCardSecondaryActions': 'Secondary actions',
|
|
336
356
|
'praxis.richContent.editor.collapsibleCardActions': 'Card actions',
|
|
357
|
+
'praxis.richContent.editor.accordionItemActions': 'Item actions',
|
|
337
358
|
'praxis.richContent.editor.status.idle': 'Idle',
|
|
338
359
|
'praxis.richContent.editor.status.resolved': 'Resolved',
|
|
339
360
|
'praxis.richContent.editor.status.empty': 'Empty',
|
|
@@ -422,6 +443,7 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
422
443
|
'praxis.richContent.editor.nodeType.text': 'Texto',
|
|
423
444
|
'praxis.richContent.editor.nodeType.badge': 'Badge',
|
|
424
445
|
'praxis.richContent.editor.nodeType.icon': 'Ícone',
|
|
446
|
+
'praxis.richContent.editor.nodeType.avatar': 'Avatar',
|
|
425
447
|
'praxis.richContent.editor.nodeType.image': 'Imagem',
|
|
426
448
|
'praxis.richContent.editor.nodeType.link': 'Link',
|
|
427
449
|
'praxis.richContent.editor.nodeType.metric': 'Métrica',
|
|
@@ -440,6 +462,7 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
440
462
|
'praxis.richContent.editor.field.src': 'URL da imagem',
|
|
441
463
|
'praxis.richContent.editor.field.href': 'URL do link',
|
|
442
464
|
'praxis.richContent.editor.field.target': 'Destino',
|
|
465
|
+
'praxis.richContent.editor.field.rel': 'Rel',
|
|
443
466
|
'praxis.richContent.editor.field.alt': 'Texto alternativo',
|
|
444
467
|
'praxis.richContent.editor.field.testId': 'Id de teste',
|
|
445
468
|
'praxis.richContent.editor.field.className': 'Classe CSS',
|
|
@@ -454,6 +477,10 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
454
477
|
'praxis.richContent.editor.field.gap': 'Espaçamento',
|
|
455
478
|
'praxis.richContent.editor.field.avatarName': 'Nome do avatar',
|
|
456
479
|
'praxis.richContent.editor.field.avatarImage': 'Imagem do avatar',
|
|
480
|
+
'praxis.richContent.editor.field.nameExpr': 'Vínculo do nome',
|
|
481
|
+
'praxis.richContent.editor.field.imageSrcExpr': 'Vínculo da imagem',
|
|
482
|
+
'praxis.richContent.editor.field.initials': 'Iniciais',
|
|
483
|
+
'praxis.richContent.editor.field.initialsExpr': 'Vínculo das iniciais',
|
|
457
484
|
'praxis.richContent.editor.field.emptyText': 'Texto vazio',
|
|
458
485
|
'praxis.richContent.editor.field.errorText': 'Texto de erro',
|
|
459
486
|
'praxis.richContent.editor.field.meta': 'Meta',
|
|
@@ -501,6 +528,12 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
501
528
|
'praxis.richContent.editor.placeholder.valueExpr': 'row.total',
|
|
502
529
|
'praxis.richContent.editor.placeholder.captionExpr': 'row.caption',
|
|
503
530
|
'praxis.richContent.editor.placeholder.progressExpr': 'row.progress',
|
|
531
|
+
'praxis.richContent.editor.placeholder.nameExpr': 'row.name',
|
|
532
|
+
'praxis.richContent.editor.placeholder.imageSrcExpr': 'row.avatarUrl',
|
|
533
|
+
'praxis.richContent.editor.placeholder.initialsExpr': 'row.initials',
|
|
534
|
+
'praxis.richContent.editor.placeholder.rel': 'noopener noreferrer',
|
|
535
|
+
'praxis.richContent.editor.target.self': 'Mesma aba',
|
|
536
|
+
'praxis.richContent.editor.target.blank': 'Nova aba',
|
|
504
537
|
'praxis.richContent.editor.defaultText': 'Texto',
|
|
505
538
|
'praxis.richContent.editor.defaultBadge': 'Badge',
|
|
506
539
|
'praxis.richContent.editor.defaultLink': 'Link',
|
|
@@ -572,9 +605,9 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
572
605
|
'praxis.richContent.editor.nodeType.collapsibleCard': 'Card colapsável',
|
|
573
606
|
'praxis.richContent.editor.nodeType.disclosure': 'Disclosure',
|
|
574
607
|
'praxis.richContent.editor.nodeType.accordion': 'Accordion',
|
|
575
|
-
'praxis.richContent.editor.nodeType.formLauncher': '
|
|
608
|
+
'praxis.richContent.editor.nodeType.formLauncher': 'Lançador de formulário',
|
|
576
609
|
'praxis.richContent.editor.field.message': 'Mensagem',
|
|
577
|
-
'praxis.richContent.editor.field.description': '
|
|
610
|
+
'praxis.richContent.editor.field.description': 'Descrição',
|
|
578
611
|
'praxis.richContent.editor.field.status': 'Status',
|
|
579
612
|
'praxis.richContent.editor.field.titleExpr': 'Vínculo do título',
|
|
580
613
|
'praxis.richContent.editor.field.subtitleExpr': 'Vínculo do subtítulo',
|
|
@@ -617,11 +650,15 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
617
650
|
'praxis.richContent.editor.field.actionId': 'Action ID',
|
|
618
651
|
'praxis.richContent.editor.field.payloadExpr': 'Binding do payload',
|
|
619
652
|
'praxis.richContent.editor.field.availabilityExpr': 'Binding de disponibilidade',
|
|
620
|
-
'praxis.richContent.editor.field.confirmMessage': 'Mensagem de
|
|
653
|
+
'praxis.richContent.editor.field.confirmMessage': 'Mensagem de confirmação',
|
|
621
654
|
'praxis.richContent.editor.decisionGovernance': 'Governança da decisão',
|
|
622
655
|
'praxis.richContent.editor.decisionEvidence': 'Evidências',
|
|
623
656
|
'praxis.richContent.editor.decisionPrimaryAction': 'Ação primária',
|
|
624
657
|
'praxis.richContent.editor.decisionSecondaryActions': 'Ações secundárias',
|
|
658
|
+
'praxis.richContent.editor.addPrimaryAction': 'Adicionar ação primária',
|
|
659
|
+
'praxis.richContent.editor.addSecondaryAction': 'Adicionar ação secundária',
|
|
660
|
+
'praxis.richContent.editor.addAction': 'Adicionar ação',
|
|
661
|
+
'praxis.richContent.editor.action': 'Ação',
|
|
625
662
|
'praxis.richContent.editor.addEvidence': 'Adicionar evidência',
|
|
626
663
|
'praxis.richContent.editor.evidence': 'Evidência',
|
|
627
664
|
'praxis.richContent.editor.defaultEvidenceLabel': 'Evidência',
|
|
@@ -653,7 +690,7 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
653
690
|
'praxis.richContent.editor.placeholder.evidenceSourceExpr': '${evidence.source}',
|
|
654
691
|
'praxis.richContent.editor.field.formId': 'Form ID',
|
|
655
692
|
'praxis.richContent.editor.field.ctaLabel': 'Label do CTA',
|
|
656
|
-
'praxis.richContent.editor.field.ctaIcon': '
|
|
693
|
+
'praxis.richContent.editor.field.ctaIcon': 'Ícone do CTA',
|
|
657
694
|
'praxis.richContent.editor.layout.stacked': 'Empilhado',
|
|
658
695
|
'praxis.richContent.editor.layout.inlineShort': 'Inline',
|
|
659
696
|
'praxis.richContent.editor.layout.split': 'Dividido',
|
|
@@ -695,25 +732,31 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
695
732
|
'praxis.richContent.editor.timeline.textAppearance.label': 'Rótulo',
|
|
696
733
|
'praxis.richContent.editor.appearance.underline': 'Sublinhado',
|
|
697
734
|
'praxis.richContent.editor.appearance.pills': 'Pílulas',
|
|
698
|
-
'praxis.richContent.editor.variant.basic': '
|
|
735
|
+
'praxis.richContent.editor.variant.basic': 'Básico',
|
|
699
736
|
'praxis.richContent.editor.variant.raised': 'Elevado',
|
|
700
737
|
'praxis.richContent.editor.variant.stroked': 'Contornado',
|
|
701
738
|
'praxis.richContent.editor.variant.flat': 'Flat',
|
|
702
|
-
'praxis.richContent.editor.color.basic': '
|
|
703
|
-
'praxis.richContent.editor.color.primary': '
|
|
739
|
+
'praxis.richContent.editor.color.basic': 'Básica',
|
|
740
|
+
'praxis.richContent.editor.color.primary': 'Primária',
|
|
704
741
|
'praxis.richContent.editor.color.accent': 'Accent',
|
|
705
742
|
'praxis.richContent.editor.color.warn': 'Warn',
|
|
706
|
-
'praxis.richContent.editor.
|
|
743
|
+
'praxis.richContent.editor.cardActions': 'Ações do card',
|
|
744
|
+
'praxis.richContent.editor.calloutActions': 'Ações do callout',
|
|
745
|
+
'praxis.richContent.editor.ctaGroupActions': 'Ações do CTA',
|
|
746
|
+
'praxis.richContent.editor.emptyStateActions': 'Ações do estado vazio',
|
|
747
|
+
'praxis.richContent.editor.recordSummaryActions': 'Ações do resumo',
|
|
707
748
|
'praxis.richContent.editor.tabsItems': 'Itens de aba',
|
|
708
|
-
'praxis.richContent.editor.lookupResultActions': '
|
|
709
|
-
'praxis.richContent.editor.lookupCardSecondaryActions': '
|
|
749
|
+
'praxis.richContent.editor.lookupResultActions': 'Ações da consulta',
|
|
750
|
+
'praxis.richContent.editor.lookupCardSecondaryActions': 'Ações secundárias',
|
|
751
|
+
'praxis.richContent.editor.relatedRecordSecondaryActions': 'Ações secundárias',
|
|
710
752
|
'praxis.richContent.editor.actionCardSecondaryActions': 'Ações secundárias',
|
|
711
|
-
'praxis.richContent.editor.collapsibleCardActions': '
|
|
753
|
+
'praxis.richContent.editor.collapsibleCardActions': 'Ações do card',
|
|
754
|
+
'praxis.richContent.editor.accordionItemActions': 'Ações do item',
|
|
712
755
|
'praxis.richContent.editor.status.idle': 'Aguardando',
|
|
713
756
|
'praxis.richContent.editor.status.resolved': 'Resolvido',
|
|
714
757
|
'praxis.richContent.editor.status.empty': 'Vazio',
|
|
715
758
|
'praxis.richContent.editor.status.error': 'Erro',
|
|
716
|
-
'praxis.richContent.editor.formLauncherSecondaryActions': '
|
|
759
|
+
'praxis.richContent.editor.formLauncherSecondaryActions': 'Ações secundárias',
|
|
717
760
|
'praxis.richContent.editor.defaultLookupResultTitle': 'Resultado de consulta',
|
|
718
761
|
'praxis.richContent.editor.defaultLookupResultField': 'Departamento',
|
|
719
762
|
'praxis.richContent.editor.defaultLookupResultHint': 'Resolvido a partir do registro selecionado',
|
|
@@ -5136,6 +5179,7 @@ const EDITABLE_TOP_LEVEL_NODE_TYPES = [
|
|
|
5136
5179
|
'text',
|
|
5137
5180
|
'badge',
|
|
5138
5181
|
'icon',
|
|
5182
|
+
'avatar',
|
|
5139
5183
|
'image',
|
|
5140
5184
|
'link',
|
|
5141
5185
|
'metric',
|
|
@@ -5168,6 +5212,7 @@ const EDITABLE_PRESENTER_NODE_TYPES = [
|
|
|
5168
5212
|
'text',
|
|
5169
5213
|
'badge',
|
|
5170
5214
|
'icon',
|
|
5215
|
+
'avatar',
|
|
5171
5216
|
'image',
|
|
5172
5217
|
'link',
|
|
5173
5218
|
'metric',
|
|
@@ -5184,6 +5229,12 @@ function createDefaultRichContentNode(type, tx, presetRef) {
|
|
|
5184
5229
|
return { type: 'badge', label: tx('editor.defaultBadge', 'Badge') };
|
|
5185
5230
|
case 'icon':
|
|
5186
5231
|
return { type: 'icon', icon: 'check_circle' };
|
|
5232
|
+
case 'avatar':
|
|
5233
|
+
return {
|
|
5234
|
+
type: 'avatar',
|
|
5235
|
+
name: tx('editor.defaultAvatarName', 'Person'),
|
|
5236
|
+
initials: 'P',
|
|
5237
|
+
};
|
|
5187
5238
|
case 'image':
|
|
5188
5239
|
return { type: 'image', src: '/assets/placeholder.png', alt: '' };
|
|
5189
5240
|
case 'link':
|
|
@@ -5539,6 +5590,12 @@ function createDefaultPresenterNode(type, tx) {
|
|
|
5539
5590
|
return { type: 'badge', label: tx('editor.defaultBadge', 'Badge') };
|
|
5540
5591
|
case 'icon':
|
|
5541
5592
|
return { type: 'icon', icon: 'check_circle' };
|
|
5593
|
+
case 'avatar':
|
|
5594
|
+
return {
|
|
5595
|
+
type: 'avatar',
|
|
5596
|
+
name: tx('editor.defaultAvatarName', 'Person'),
|
|
5597
|
+
initials: 'P',
|
|
5598
|
+
};
|
|
5542
5599
|
case 'image':
|
|
5543
5600
|
return { type: 'image', src: '/assets/placeholder.png', alt: '' };
|
|
5544
5601
|
case 'link':
|
|
@@ -7109,6 +7166,50 @@ class PraxisRichContentConfigEditor {
|
|
|
7109
7166
|
/>
|
|
7110
7167
|
</label>
|
|
7111
7168
|
}
|
|
7169
|
+
@case ('avatar') {
|
|
7170
|
+
<label>
|
|
7171
|
+
<span>{{ tx('editor.field.avatarName', 'Avatar name') }}</span>
|
|
7172
|
+
<input
|
|
7173
|
+
[ngModel]="getStringField(node, 'name')"
|
|
7174
|
+
(ngModelChange)="setString('name', $event)"
|
|
7175
|
+
/>
|
|
7176
|
+
</label>
|
|
7177
|
+
<label>
|
|
7178
|
+
<span>{{ tx('editor.field.nameExpr', 'Name binding') }}</span>
|
|
7179
|
+
<input
|
|
7180
|
+
[ngModel]="getStringField(node, 'nameExpr')"
|
|
7181
|
+
(ngModelChange)="setString('nameExpr', $event)"
|
|
7182
|
+
/>
|
|
7183
|
+
</label>
|
|
7184
|
+
<label>
|
|
7185
|
+
<span>{{ tx('editor.field.avatarImage', 'Avatar image') }}</span>
|
|
7186
|
+
<input
|
|
7187
|
+
[ngModel]="getStringField(node, 'imageSrc')"
|
|
7188
|
+
(ngModelChange)="setString('imageSrc', $event)"
|
|
7189
|
+
/>
|
|
7190
|
+
</label>
|
|
7191
|
+
<label>
|
|
7192
|
+
<span>{{ tx('editor.field.imageSrcExpr', 'Image binding') }}</span>
|
|
7193
|
+
<input
|
|
7194
|
+
[ngModel]="getStringField(node, 'imageSrcExpr')"
|
|
7195
|
+
(ngModelChange)="setString('imageSrcExpr', $event)"
|
|
7196
|
+
/>
|
|
7197
|
+
</label>
|
|
7198
|
+
<label>
|
|
7199
|
+
<span>{{ tx('editor.field.initials', 'Initials') }}</span>
|
|
7200
|
+
<input
|
|
7201
|
+
[ngModel]="getStringField(node, 'initials')"
|
|
7202
|
+
(ngModelChange)="setString('initials', $event)"
|
|
7203
|
+
/>
|
|
7204
|
+
</label>
|
|
7205
|
+
<label>
|
|
7206
|
+
<span>{{ tx('editor.field.initialsExpr', 'Initials binding') }}</span>
|
|
7207
|
+
<input
|
|
7208
|
+
[ngModel]="getStringField(node, 'initialsExpr')"
|
|
7209
|
+
(ngModelChange)="setString('initialsExpr', $event)"
|
|
7210
|
+
/>
|
|
7211
|
+
</label>
|
|
7212
|
+
}
|
|
7112
7213
|
@case ('image') {
|
|
7113
7214
|
<label>
|
|
7114
7215
|
<span>{{ tx('editor.field.src', 'Image URL') }}</span>
|
|
@@ -7140,6 +7241,23 @@ class PraxisRichContentConfigEditor {
|
|
|
7140
7241
|
(ngModelChange)="setString('href', $event)"
|
|
7141
7242
|
/>
|
|
7142
7243
|
</label>
|
|
7244
|
+
<label>
|
|
7245
|
+
<span>{{ tx('editor.field.target', 'Target') }}</span>
|
|
7246
|
+
<select
|
|
7247
|
+
[ngModel]="getStringField(node, 'target') || '_self'"
|
|
7248
|
+
(ngModelChange)="setString('target', $event)"
|
|
7249
|
+
>
|
|
7250
|
+
<option value="_self">{{ tx('editor.target.self', 'Same tab') }}</option>
|
|
7251
|
+
<option value="_blank">{{ tx('editor.target.blank', 'New tab') }}</option>
|
|
7252
|
+
</select>
|
|
7253
|
+
</label>
|
|
7254
|
+
<label>
|
|
7255
|
+
<span>{{ tx('editor.field.rel', 'Rel') }}</span>
|
|
7256
|
+
<input
|
|
7257
|
+
[ngModel]="getStringField(node, 'rel')"
|
|
7258
|
+
(ngModelChange)="setString('rel', $event)"
|
|
7259
|
+
/>
|
|
7260
|
+
</label>
|
|
7143
7261
|
}
|
|
7144
7262
|
@case ('metric') {
|
|
7145
7263
|
<label>
|
|
@@ -7595,6 +7713,53 @@ class PraxisRichContentConfigEditor {
|
|
|
7595
7713
|
/>
|
|
7596
7714
|
</label>
|
|
7597
7715
|
}
|
|
7716
|
+
@case ('avatar') {
|
|
7717
|
+
<label>
|
|
7718
|
+
<span>{{ tx('editor.field.avatarName', 'Avatar name') }}</span>
|
|
7719
|
+
<input
|
|
7720
|
+
[ngModel]="getStringField(node, 'name')"
|
|
7721
|
+
(ngModelChange)="setStringField($index, 'name', $event)"
|
|
7722
|
+
/>
|
|
7723
|
+
</label>
|
|
7724
|
+
<label>
|
|
7725
|
+
<span>{{ tx('editor.field.nameExpr', 'Name binding') }}</span>
|
|
7726
|
+
<input
|
|
7727
|
+
[ngModel]="getStringField(node, 'nameExpr')"
|
|
7728
|
+
(ngModelChange)="setStringField($index, 'nameExpr', $event)"
|
|
7729
|
+
[placeholder]="tx('editor.placeholder.nameExpr', 'row.name')"
|
|
7730
|
+
/>
|
|
7731
|
+
</label>
|
|
7732
|
+
<label>
|
|
7733
|
+
<span>{{ tx('editor.field.avatarImage', 'Avatar image') }}</span>
|
|
7734
|
+
<input
|
|
7735
|
+
[ngModel]="getStringField(node, 'imageSrc')"
|
|
7736
|
+
(ngModelChange)="setStringField($index, 'imageSrc', $event)"
|
|
7737
|
+
/>
|
|
7738
|
+
</label>
|
|
7739
|
+
<label>
|
|
7740
|
+
<span>{{ tx('editor.field.imageSrcExpr', 'Image binding') }}</span>
|
|
7741
|
+
<input
|
|
7742
|
+
[ngModel]="getStringField(node, 'imageSrcExpr')"
|
|
7743
|
+
(ngModelChange)="setStringField($index, 'imageSrcExpr', $event)"
|
|
7744
|
+
[placeholder]="tx('editor.placeholder.imageSrcExpr', 'row.avatarUrl')"
|
|
7745
|
+
/>
|
|
7746
|
+
</label>
|
|
7747
|
+
<label>
|
|
7748
|
+
<span>{{ tx('editor.field.initials', 'Initials') }}</span>
|
|
7749
|
+
<input
|
|
7750
|
+
[ngModel]="getStringField(node, 'initials')"
|
|
7751
|
+
(ngModelChange)="setStringField($index, 'initials', $event)"
|
|
7752
|
+
/>
|
|
7753
|
+
</label>
|
|
7754
|
+
<label>
|
|
7755
|
+
<span>{{ tx('editor.field.initialsExpr', 'Initials binding') }}</span>
|
|
7756
|
+
<input
|
|
7757
|
+
[ngModel]="getStringField(node, 'initialsExpr')"
|
|
7758
|
+
(ngModelChange)="setStringField($index, 'initialsExpr', $event)"
|
|
7759
|
+
[placeholder]="tx('editor.placeholder.initialsExpr', 'row.initials')"
|
|
7760
|
+
/>
|
|
7761
|
+
</label>
|
|
7762
|
+
}
|
|
7598
7763
|
@case ('image') {
|
|
7599
7764
|
<label>
|
|
7600
7765
|
<span>{{ tx('editor.field.src', 'Image URL') }}</span>
|
|
@@ -7611,6 +7776,48 @@ class PraxisRichContentConfigEditor {
|
|
|
7611
7776
|
/>
|
|
7612
7777
|
</label>
|
|
7613
7778
|
}
|
|
7779
|
+
@case ('link') {
|
|
7780
|
+
<label>
|
|
7781
|
+
<span>{{ tx('editor.field.label', 'Label') }}</span>
|
|
7782
|
+
<input
|
|
7783
|
+
[ngModel]="getStringField(node, 'label')"
|
|
7784
|
+
(ngModelChange)="setStringField($index, 'label', $event)"
|
|
7785
|
+
/>
|
|
7786
|
+
</label>
|
|
7787
|
+
<label>
|
|
7788
|
+
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
7789
|
+
<input
|
|
7790
|
+
[ngModel]="getStringField(node, 'labelExpr')"
|
|
7791
|
+
(ngModelChange)="setStringField($index, 'labelExpr', $event)"
|
|
7792
|
+
[placeholder]="tx('editor.placeholder.labelExpr', 'row.linkLabel')"
|
|
7793
|
+
/>
|
|
7794
|
+
</label>
|
|
7795
|
+
<label class="prx-rich-editor__wide-field">
|
|
7796
|
+
<span>{{ tx('editor.field.href', 'Link URL') }}</span>
|
|
7797
|
+
<input
|
|
7798
|
+
[ngModel]="getStringField(node, 'href')"
|
|
7799
|
+
(ngModelChange)="setStringField($index, 'href', $event)"
|
|
7800
|
+
/>
|
|
7801
|
+
</label>
|
|
7802
|
+
<label>
|
|
7803
|
+
<span>{{ tx('editor.field.target', 'Target') }}</span>
|
|
7804
|
+
<select
|
|
7805
|
+
[ngModel]="getStringField(node, 'target') || '_self'"
|
|
7806
|
+
(ngModelChange)="setStringField($index, 'target', $event)"
|
|
7807
|
+
>
|
|
7808
|
+
<option value="_self">{{ tx('editor.target.self', 'Same tab') }}</option>
|
|
7809
|
+
<option value="_blank">{{ tx('editor.target.blank', 'New tab') }}</option>
|
|
7810
|
+
</select>
|
|
7811
|
+
</label>
|
|
7812
|
+
<label>
|
|
7813
|
+
<span>{{ tx('editor.field.rel', 'Rel') }}</span>
|
|
7814
|
+
<input
|
|
7815
|
+
[ngModel]="getStringField(node, 'rel')"
|
|
7816
|
+
(ngModelChange)="setStringField($index, 'rel', $event)"
|
|
7817
|
+
[placeholder]="tx('editor.placeholder.rel', 'noopener noreferrer')"
|
|
7818
|
+
/>
|
|
7819
|
+
</label>
|
|
7820
|
+
}
|
|
7614
7821
|
@case ('metric') {
|
|
7615
7822
|
<label>
|
|
7616
7823
|
<span>{{ tx('editor.field.label', 'Label') }}</span>
|
|
@@ -9035,24 +9242,24 @@ class PraxisRichContentConfigEditor {
|
|
|
9035
9242
|
<header class="prx-rich-editor__nested-header">
|
|
9036
9243
|
<h5>{{ tx('editor.decisionEvidence', 'Evidence') }}</h5>
|
|
9037
9244
|
<div class="prx-rich-editor__quick-actions">
|
|
9038
|
-
<button type="button" (click)="addDecisionPackageEvidence(
|
|
9245
|
+
<button type="button" (click)="addDecisionPackageEvidence(nodeIndex)">
|
|
9039
9246
|
{{ tx('editor.addEvidence', 'Add evidence') }}
|
|
9040
9247
|
</button>
|
|
9041
9248
|
</div>
|
|
9042
9249
|
</header>
|
|
9043
|
-
@for (evidence of getDecisionPackageEvidence(
|
|
9250
|
+
@for (evidence of getDecisionPackageEvidence(nodeIndex); track evidence.id ?? $index; let evidenceIndex = $index) {
|
|
9044
9251
|
<div class="prx-rich-editor__nested-node">
|
|
9045
9252
|
<div class="prx-rich-editor__nested-actions">
|
|
9046
9253
|
<strong>{{ tx('editor.evidence', 'Evidence') }} {{ evidenceIndex + 1 }}</strong>
|
|
9047
|
-
@if (isRemovalPending('nodes.' +
|
|
9048
|
-
<button type="button" (click)="removeDecisionPackageEvidence(
|
|
9254
|
+
@if (isRemovalPending('nodes.' + nodeIndex + '.evidence', evidenceIndex)) {
|
|
9255
|
+
<button type="button" (click)="removeDecisionPackageEvidence(nodeIndex, evidenceIndex)">
|
|
9049
9256
|
{{ tx('editor.confirmRemove', 'Confirm remove') }}
|
|
9050
9257
|
</button>
|
|
9051
9258
|
<button type="button" (click)="cancelRemoval()">
|
|
9052
9259
|
{{ tx('editor.cancelRemove', 'Cancel') }}
|
|
9053
9260
|
</button>
|
|
9054
9261
|
} @else {
|
|
9055
|
-
<button type="button" (click)="requestNestedRemoval('nodes.' +
|
|
9262
|
+
<button type="button" (click)="requestNestedRemoval('nodes.' + nodeIndex + '.evidence', evidenceIndex)">
|
|
9056
9263
|
{{ tx('editor.removeBlock', 'Remove') }}
|
|
9057
9264
|
</button>
|
|
9058
9265
|
}
|
|
@@ -9061,37 +9268,37 @@ class PraxisRichContentConfigEditor {
|
|
|
9061
9268
|
<label>
|
|
9062
9269
|
<span>{{ tx('editor.field.itemId', 'Item ID') }}</span>
|
|
9063
9270
|
<input
|
|
9064
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
9065
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
9271
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'id')"
|
|
9272
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'id', $event)"
|
|
9066
9273
|
/>
|
|
9067
9274
|
</label>
|
|
9068
9275
|
<label>
|
|
9069
9276
|
<span>{{ tx('editor.field.label', 'Label') }}</span>
|
|
9070
9277
|
<input
|
|
9071
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
9072
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
9278
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'label')"
|
|
9279
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'label', $event)"
|
|
9073
9280
|
/>
|
|
9074
9281
|
</label>
|
|
9075
9282
|
<label>
|
|
9076
9283
|
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
9077
9284
|
<input
|
|
9078
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
9079
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
9285
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'labelExpr')"
|
|
9286
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'labelExpr', $event)"
|
|
9080
9287
|
[placeholder]="tx('editor.placeholder.evidenceLabelExpr', '\${evidence.label}')"
|
|
9081
9288
|
/>
|
|
9082
9289
|
</label>
|
|
9083
9290
|
<label>
|
|
9084
9291
|
<span>{{ tx('editor.field.source', 'Source') }}</span>
|
|
9085
9292
|
<input
|
|
9086
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
9087
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
9293
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'source')"
|
|
9294
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'source', $event)"
|
|
9088
9295
|
/>
|
|
9089
9296
|
</label>
|
|
9090
9297
|
<label>
|
|
9091
9298
|
<span>{{ tx('editor.field.sourceExpr', 'Source binding') }}</span>
|
|
9092
9299
|
<input
|
|
9093
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
9094
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
9300
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'sourceExpr')"
|
|
9301
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'sourceExpr', $event)"
|
|
9095
9302
|
[placeholder]="tx('editor.placeholder.evidenceSourceExpr', '\${evidence.source}')"
|
|
9096
9303
|
/>
|
|
9097
9304
|
</label>
|
|
@@ -9104,27 +9311,27 @@ class PraxisRichContentConfigEditor {
|
|
|
9104
9311
|
<header class="prx-rich-editor__nested-header">
|
|
9105
9312
|
<h5>{{ tx('editor.decisionPrimaryAction', 'Primary action') }}</h5>
|
|
9106
9313
|
<div class="prx-rich-editor__quick-actions">
|
|
9107
|
-
@if (getDecisionPackagePrimaryAction(
|
|
9108
|
-
<button type="button" (click)="removeDecisionPackagePrimaryAction(
|
|
9314
|
+
@if (getDecisionPackagePrimaryAction(nodeIndex)) {
|
|
9315
|
+
<button type="button" (click)="removeDecisionPackagePrimaryAction(nodeIndex)">
|
|
9109
9316
|
{{ tx('editor.removeBlock', 'Remove') }}
|
|
9110
9317
|
</button>
|
|
9111
9318
|
} @else {
|
|
9112
|
-
<button type="button" (click)="addDecisionPackagePrimaryActionPreset(
|
|
9319
|
+
<button type="button" (click)="addDecisionPackagePrimaryActionPreset(nodeIndex, 'primary')">
|
|
9113
9320
|
{{ tx('editor.addPrimaryAction', 'Add primary action') }}
|
|
9114
9321
|
</button>
|
|
9115
|
-
<button type="button" (click)="addDecisionPackagePrimaryAction(
|
|
9322
|
+
<button type="button" (click)="addDecisionPackagePrimaryAction(nodeIndex)">
|
|
9116
9323
|
{{ tx('editor.addAction', 'Add action') }}
|
|
9117
9324
|
</button>
|
|
9118
9325
|
}
|
|
9119
9326
|
</div>
|
|
9120
9327
|
</header>
|
|
9121
|
-
@if (getDecisionPackagePrimaryAction(
|
|
9328
|
+
@if (getDecisionPackagePrimaryAction(nodeIndex); as primaryAction) {
|
|
9122
9329
|
<div class="prx-rich-editor__node-grid">
|
|
9123
9330
|
<ng-container
|
|
9124
9331
|
*ngTemplateOutlet="actionFields; context: {
|
|
9125
9332
|
action: primaryAction,
|
|
9126
|
-
path: '$.nodes[' +
|
|
9127
|
-
setField: setDecisionPackagePrimaryActionField.bind(this,
|
|
9333
|
+
path: '$.nodes[' + nodeIndex + '].primaryAction',
|
|
9334
|
+
setField: setDecisionPackagePrimaryActionField.bind(this, nodeIndex)
|
|
9128
9335
|
}"
|
|
9129
9336
|
></ng-container>
|
|
9130
9337
|
</div>
|
|
@@ -10041,6 +10248,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10041
10248
|
/>
|
|
10042
10249
|
</label>
|
|
10043
10250
|
}
|
|
10251
|
+
@case ('avatar') {
|
|
10252
|
+
<label>
|
|
10253
|
+
<span>{{ tx('editor.field.avatarName', 'Avatar name') }}</span>
|
|
10254
|
+
<input
|
|
10255
|
+
[ngModel]="getStringField(node, 'name')"
|
|
10256
|
+
(ngModelChange)="setString('name', $event)"
|
|
10257
|
+
/>
|
|
10258
|
+
</label>
|
|
10259
|
+
<label>
|
|
10260
|
+
<span>{{ tx('editor.field.nameExpr', 'Name binding') }}</span>
|
|
10261
|
+
<input
|
|
10262
|
+
[ngModel]="getStringField(node, 'nameExpr')"
|
|
10263
|
+
(ngModelChange)="setString('nameExpr', $event)"
|
|
10264
|
+
/>
|
|
10265
|
+
</label>
|
|
10266
|
+
<label>
|
|
10267
|
+
<span>{{ tx('editor.field.avatarImage', 'Avatar image') }}</span>
|
|
10268
|
+
<input
|
|
10269
|
+
[ngModel]="getStringField(node, 'imageSrc')"
|
|
10270
|
+
(ngModelChange)="setString('imageSrc', $event)"
|
|
10271
|
+
/>
|
|
10272
|
+
</label>
|
|
10273
|
+
<label>
|
|
10274
|
+
<span>{{ tx('editor.field.imageSrcExpr', 'Image binding') }}</span>
|
|
10275
|
+
<input
|
|
10276
|
+
[ngModel]="getStringField(node, 'imageSrcExpr')"
|
|
10277
|
+
(ngModelChange)="setString('imageSrcExpr', $event)"
|
|
10278
|
+
/>
|
|
10279
|
+
</label>
|
|
10280
|
+
<label>
|
|
10281
|
+
<span>{{ tx('editor.field.initials', 'Initials') }}</span>
|
|
10282
|
+
<input
|
|
10283
|
+
[ngModel]="getStringField(node, 'initials')"
|
|
10284
|
+
(ngModelChange)="setString('initials', $event)"
|
|
10285
|
+
/>
|
|
10286
|
+
</label>
|
|
10287
|
+
<label>
|
|
10288
|
+
<span>{{ tx('editor.field.initialsExpr', 'Initials binding') }}</span>
|
|
10289
|
+
<input
|
|
10290
|
+
[ngModel]="getStringField(node, 'initialsExpr')"
|
|
10291
|
+
(ngModelChange)="setString('initialsExpr', $event)"
|
|
10292
|
+
/>
|
|
10293
|
+
</label>
|
|
10294
|
+
}
|
|
10044
10295
|
@case ('image') {
|
|
10045
10296
|
<label>
|
|
10046
10297
|
<span>{{ tx('editor.field.src', 'Image URL') }}</span>
|
|
@@ -10072,6 +10323,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10072
10323
|
(ngModelChange)="setString('href', $event)"
|
|
10073
10324
|
/>
|
|
10074
10325
|
</label>
|
|
10326
|
+
<label>
|
|
10327
|
+
<span>{{ tx('editor.field.target', 'Target') }}</span>
|
|
10328
|
+
<select
|
|
10329
|
+
[ngModel]="getStringField(node, 'target') || '_self'"
|
|
10330
|
+
(ngModelChange)="setString('target', $event)"
|
|
10331
|
+
>
|
|
10332
|
+
<option value="_self">{{ tx('editor.target.self', 'Same tab') }}</option>
|
|
10333
|
+
<option value="_blank">{{ tx('editor.target.blank', 'New tab') }}</option>
|
|
10334
|
+
</select>
|
|
10335
|
+
</label>
|
|
10336
|
+
<label>
|
|
10337
|
+
<span>{{ tx('editor.field.rel', 'Rel') }}</span>
|
|
10338
|
+
<input
|
|
10339
|
+
[ngModel]="getStringField(node, 'rel')"
|
|
10340
|
+
(ngModelChange)="setString('rel', $event)"
|
|
10341
|
+
/>
|
|
10342
|
+
</label>
|
|
10075
10343
|
}
|
|
10076
10344
|
@case ('metric') {
|
|
10077
10345
|
<label>
|
|
@@ -10527,6 +10795,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10527
10795
|
/>
|
|
10528
10796
|
</label>
|
|
10529
10797
|
}
|
|
10798
|
+
@case ('avatar') {
|
|
10799
|
+
<label>
|
|
10800
|
+
<span>{{ tx('editor.field.avatarName', 'Avatar name') }}</span>
|
|
10801
|
+
<input
|
|
10802
|
+
[ngModel]="getStringField(node, 'name')"
|
|
10803
|
+
(ngModelChange)="setStringField($index, 'name', $event)"
|
|
10804
|
+
/>
|
|
10805
|
+
</label>
|
|
10806
|
+
<label>
|
|
10807
|
+
<span>{{ tx('editor.field.nameExpr', 'Name binding') }}</span>
|
|
10808
|
+
<input
|
|
10809
|
+
[ngModel]="getStringField(node, 'nameExpr')"
|
|
10810
|
+
(ngModelChange)="setStringField($index, 'nameExpr', $event)"
|
|
10811
|
+
[placeholder]="tx('editor.placeholder.nameExpr', 'row.name')"
|
|
10812
|
+
/>
|
|
10813
|
+
</label>
|
|
10814
|
+
<label>
|
|
10815
|
+
<span>{{ tx('editor.field.avatarImage', 'Avatar image') }}</span>
|
|
10816
|
+
<input
|
|
10817
|
+
[ngModel]="getStringField(node, 'imageSrc')"
|
|
10818
|
+
(ngModelChange)="setStringField($index, 'imageSrc', $event)"
|
|
10819
|
+
/>
|
|
10820
|
+
</label>
|
|
10821
|
+
<label>
|
|
10822
|
+
<span>{{ tx('editor.field.imageSrcExpr', 'Image binding') }}</span>
|
|
10823
|
+
<input
|
|
10824
|
+
[ngModel]="getStringField(node, 'imageSrcExpr')"
|
|
10825
|
+
(ngModelChange)="setStringField($index, 'imageSrcExpr', $event)"
|
|
10826
|
+
[placeholder]="tx('editor.placeholder.imageSrcExpr', 'row.avatarUrl')"
|
|
10827
|
+
/>
|
|
10828
|
+
</label>
|
|
10829
|
+
<label>
|
|
10830
|
+
<span>{{ tx('editor.field.initials', 'Initials') }}</span>
|
|
10831
|
+
<input
|
|
10832
|
+
[ngModel]="getStringField(node, 'initials')"
|
|
10833
|
+
(ngModelChange)="setStringField($index, 'initials', $event)"
|
|
10834
|
+
/>
|
|
10835
|
+
</label>
|
|
10836
|
+
<label>
|
|
10837
|
+
<span>{{ tx('editor.field.initialsExpr', 'Initials binding') }}</span>
|
|
10838
|
+
<input
|
|
10839
|
+
[ngModel]="getStringField(node, 'initialsExpr')"
|
|
10840
|
+
(ngModelChange)="setStringField($index, 'initialsExpr', $event)"
|
|
10841
|
+
[placeholder]="tx('editor.placeholder.initialsExpr', 'row.initials')"
|
|
10842
|
+
/>
|
|
10843
|
+
</label>
|
|
10844
|
+
}
|
|
10530
10845
|
@case ('image') {
|
|
10531
10846
|
<label>
|
|
10532
10847
|
<span>{{ tx('editor.field.src', 'Image URL') }}</span>
|
|
@@ -10543,6 +10858,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10543
10858
|
/>
|
|
10544
10859
|
</label>
|
|
10545
10860
|
}
|
|
10861
|
+
@case ('link') {
|
|
10862
|
+
<label>
|
|
10863
|
+
<span>{{ tx('editor.field.label', 'Label') }}</span>
|
|
10864
|
+
<input
|
|
10865
|
+
[ngModel]="getStringField(node, 'label')"
|
|
10866
|
+
(ngModelChange)="setStringField($index, 'label', $event)"
|
|
10867
|
+
/>
|
|
10868
|
+
</label>
|
|
10869
|
+
<label>
|
|
10870
|
+
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
10871
|
+
<input
|
|
10872
|
+
[ngModel]="getStringField(node, 'labelExpr')"
|
|
10873
|
+
(ngModelChange)="setStringField($index, 'labelExpr', $event)"
|
|
10874
|
+
[placeholder]="tx('editor.placeholder.labelExpr', 'row.linkLabel')"
|
|
10875
|
+
/>
|
|
10876
|
+
</label>
|
|
10877
|
+
<label class="prx-rich-editor__wide-field">
|
|
10878
|
+
<span>{{ tx('editor.field.href', 'Link URL') }}</span>
|
|
10879
|
+
<input
|
|
10880
|
+
[ngModel]="getStringField(node, 'href')"
|
|
10881
|
+
(ngModelChange)="setStringField($index, 'href', $event)"
|
|
10882
|
+
/>
|
|
10883
|
+
</label>
|
|
10884
|
+
<label>
|
|
10885
|
+
<span>{{ tx('editor.field.target', 'Target') }}</span>
|
|
10886
|
+
<select
|
|
10887
|
+
[ngModel]="getStringField(node, 'target') || '_self'"
|
|
10888
|
+
(ngModelChange)="setStringField($index, 'target', $event)"
|
|
10889
|
+
>
|
|
10890
|
+
<option value="_self">{{ tx('editor.target.self', 'Same tab') }}</option>
|
|
10891
|
+
<option value="_blank">{{ tx('editor.target.blank', 'New tab') }}</option>
|
|
10892
|
+
</select>
|
|
10893
|
+
</label>
|
|
10894
|
+
<label>
|
|
10895
|
+
<span>{{ tx('editor.field.rel', 'Rel') }}</span>
|
|
10896
|
+
<input
|
|
10897
|
+
[ngModel]="getStringField(node, 'rel')"
|
|
10898
|
+
(ngModelChange)="setStringField($index, 'rel', $event)"
|
|
10899
|
+
[placeholder]="tx('editor.placeholder.rel', 'noopener noreferrer')"
|
|
10900
|
+
/>
|
|
10901
|
+
</label>
|
|
10902
|
+
}
|
|
10546
10903
|
@case ('metric') {
|
|
10547
10904
|
<label>
|
|
10548
10905
|
<span>{{ tx('editor.field.label', 'Label') }}</span>
|
|
@@ -11967,24 +12324,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11967
12324
|
<header class="prx-rich-editor__nested-header">
|
|
11968
12325
|
<h5>{{ tx('editor.decisionEvidence', 'Evidence') }}</h5>
|
|
11969
12326
|
<div class="prx-rich-editor__quick-actions">
|
|
11970
|
-
<button type="button" (click)="addDecisionPackageEvidence(
|
|
12327
|
+
<button type="button" (click)="addDecisionPackageEvidence(nodeIndex)">
|
|
11971
12328
|
{{ tx('editor.addEvidence', 'Add evidence') }}
|
|
11972
12329
|
</button>
|
|
11973
12330
|
</div>
|
|
11974
12331
|
</header>
|
|
11975
|
-
@for (evidence of getDecisionPackageEvidence(
|
|
12332
|
+
@for (evidence of getDecisionPackageEvidence(nodeIndex); track evidence.id ?? $index; let evidenceIndex = $index) {
|
|
11976
12333
|
<div class="prx-rich-editor__nested-node">
|
|
11977
12334
|
<div class="prx-rich-editor__nested-actions">
|
|
11978
12335
|
<strong>{{ tx('editor.evidence', 'Evidence') }} {{ evidenceIndex + 1 }}</strong>
|
|
11979
|
-
@if (isRemovalPending('nodes.' +
|
|
11980
|
-
<button type="button" (click)="removeDecisionPackageEvidence(
|
|
12336
|
+
@if (isRemovalPending('nodes.' + nodeIndex + '.evidence', evidenceIndex)) {
|
|
12337
|
+
<button type="button" (click)="removeDecisionPackageEvidence(nodeIndex, evidenceIndex)">
|
|
11981
12338
|
{{ tx('editor.confirmRemove', 'Confirm remove') }}
|
|
11982
12339
|
</button>
|
|
11983
12340
|
<button type="button" (click)="cancelRemoval()">
|
|
11984
12341
|
{{ tx('editor.cancelRemove', 'Cancel') }}
|
|
11985
12342
|
</button>
|
|
11986
12343
|
} @else {
|
|
11987
|
-
<button type="button" (click)="requestNestedRemoval('nodes.' +
|
|
12344
|
+
<button type="button" (click)="requestNestedRemoval('nodes.' + nodeIndex + '.evidence', evidenceIndex)">
|
|
11988
12345
|
{{ tx('editor.removeBlock', 'Remove') }}
|
|
11989
12346
|
</button>
|
|
11990
12347
|
}
|
|
@@ -11993,37 +12350,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11993
12350
|
<label>
|
|
11994
12351
|
<span>{{ tx('editor.field.itemId', 'Item ID') }}</span>
|
|
11995
12352
|
<input
|
|
11996
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
11997
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
12353
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'id')"
|
|
12354
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'id', $event)"
|
|
11998
12355
|
/>
|
|
11999
12356
|
</label>
|
|
12000
12357
|
<label>
|
|
12001
12358
|
<span>{{ tx('editor.field.label', 'Label') }}</span>
|
|
12002
12359
|
<input
|
|
12003
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
12004
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
12360
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'label')"
|
|
12361
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'label', $event)"
|
|
12005
12362
|
/>
|
|
12006
12363
|
</label>
|
|
12007
12364
|
<label>
|
|
12008
12365
|
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
12009
12366
|
<input
|
|
12010
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
12011
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
12367
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'labelExpr')"
|
|
12368
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'labelExpr', $event)"
|
|
12012
12369
|
[placeholder]="tx('editor.placeholder.evidenceLabelExpr', '\${evidence.label}')"
|
|
12013
12370
|
/>
|
|
12014
12371
|
</label>
|
|
12015
12372
|
<label>
|
|
12016
12373
|
<span>{{ tx('editor.field.source', 'Source') }}</span>
|
|
12017
12374
|
<input
|
|
12018
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
12019
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
12375
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'source')"
|
|
12376
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'source', $event)"
|
|
12020
12377
|
/>
|
|
12021
12378
|
</label>
|
|
12022
12379
|
<label>
|
|
12023
12380
|
<span>{{ tx('editor.field.sourceExpr', 'Source binding') }}</span>
|
|
12024
12381
|
<input
|
|
12025
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
12026
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
12382
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'sourceExpr')"
|
|
12383
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'sourceExpr', $event)"
|
|
12027
12384
|
[placeholder]="tx('editor.placeholder.evidenceSourceExpr', '\${evidence.source}')"
|
|
12028
12385
|
/>
|
|
12029
12386
|
</label>
|
|
@@ -12036,27 +12393,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
12036
12393
|
<header class="prx-rich-editor__nested-header">
|
|
12037
12394
|
<h5>{{ tx('editor.decisionPrimaryAction', 'Primary action') }}</h5>
|
|
12038
12395
|
<div class="prx-rich-editor__quick-actions">
|
|
12039
|
-
@if (getDecisionPackagePrimaryAction(
|
|
12040
|
-
<button type="button" (click)="removeDecisionPackagePrimaryAction(
|
|
12396
|
+
@if (getDecisionPackagePrimaryAction(nodeIndex)) {
|
|
12397
|
+
<button type="button" (click)="removeDecisionPackagePrimaryAction(nodeIndex)">
|
|
12041
12398
|
{{ tx('editor.removeBlock', 'Remove') }}
|
|
12042
12399
|
</button>
|
|
12043
12400
|
} @else {
|
|
12044
|
-
<button type="button" (click)="addDecisionPackagePrimaryActionPreset(
|
|
12401
|
+
<button type="button" (click)="addDecisionPackagePrimaryActionPreset(nodeIndex, 'primary')">
|
|
12045
12402
|
{{ tx('editor.addPrimaryAction', 'Add primary action') }}
|
|
12046
12403
|
</button>
|
|
12047
|
-
<button type="button" (click)="addDecisionPackagePrimaryAction(
|
|
12404
|
+
<button type="button" (click)="addDecisionPackagePrimaryAction(nodeIndex)">
|
|
12048
12405
|
{{ tx('editor.addAction', 'Add action') }}
|
|
12049
12406
|
</button>
|
|
12050
12407
|
}
|
|
12051
12408
|
</div>
|
|
12052
12409
|
</header>
|
|
12053
|
-
@if (getDecisionPackagePrimaryAction(
|
|
12410
|
+
@if (getDecisionPackagePrimaryAction(nodeIndex); as primaryAction) {
|
|
12054
12411
|
<div class="prx-rich-editor__node-grid">
|
|
12055
12412
|
<ng-container
|
|
12056
12413
|
*ngTemplateOutlet="actionFields; context: {
|
|
12057
12414
|
action: primaryAction,
|
|
12058
|
-
path: '$.nodes[' +
|
|
12059
|
-
setField: setDecisionPackagePrimaryActionField.bind(this,
|
|
12415
|
+
path: '$.nodes[' + nodeIndex + '].primaryAction',
|
|
12416
|
+
setField: setDecisionPackagePrimaryActionField.bind(this, nodeIndex)
|
|
12060
12417
|
}"
|
|
12061
12418
|
></ng-container>
|
|
12062
12419
|
</div>
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/rich-content",
|
|
3
|
-
"version": "9.0.0-beta.
|
|
3
|
+
"version": "9.0.0-beta.6",
|
|
4
4
|
"description": "Rich content rendering and authoring primitives for Praxis UI surfaces, including semantic blocks and page-builder integration.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
7
7
|
"@angular/core": "^21.0.0",
|
|
8
|
-
"@praxisui/core": "^9.0.0-beta.
|
|
8
|
+
"@praxisui/core": "^9.0.0-beta.6",
|
|
9
9
|
"@angular/forms": "^21.0.0",
|
|
10
10
|
"rxjs": "~7.8.0"
|
|
11
11
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { OnChanges, OnInit, SimpleChanges, InjectionToken, Provider } from '@angular/core';
|
|
3
|
-
import { RichContentDocument, RichPrimitiveNode, RichPresetReferenceNode, JsonLogicDataRecord, RichBlockHostCapabilities, RichBlockNode, RichPresenterNode, RichComposeNode, RichCardNode, RichCardMedia, RichActionButtonNode, RichCalloutNode, RichCtaGroupNode, RichKeyValueListNode, RichKeyValueItem, RichEmptyStateNode, RichPropertySheetNode, RichPropertySheetItem, RichStatGroupNode, RichStatItem, RichTabsNode, RichTabsItem, RichRecordSummaryNode, RichRecordSummaryField, RichLookupResultNode, RichLookupResultField, RichLookupCardNode, RichRelatedRecordNode, RichActionCardNode, RichDecisionPackageNode, RichDecisionPackageEvidence, RichCollapsibleCardNode, RichFormLauncherNode, RichDisclosureNode, RichAccordionNode, RichAccordionItem, RichMediaBlockNode, RichTimelineNode, RichTimelineItem, RichTextNode, RichBadgeNode, RichIconNode, RichImageNode, RichLinkNode, RichMetricNode, RichProgressNode, SettingsValueProvider, CorePresetRef, CorePresetDescriptor, ComponentDocMeta, AiCapabilityCatalog, AiCapability, AiCapabilityCategory, AiValueKind, ComponentAuthoringManifest, PraxisI18nDictionary, PraxisI18nConfig, PraxisI18nService } from '@praxisui/core';
|
|
3
|
+
import { RichContentDocument, RichPrimitiveNode, RichPresetReferenceNode, JsonLogicDataRecord, RichBlockHostCapabilities, RichBlockNode, RichPresenterNode, RichComposeNode, RichCardNode, RichCardMedia, RichActionButtonNode, RichCalloutNode, RichCtaGroupNode, RichKeyValueListNode, RichKeyValueItem, RichEmptyStateNode, RichPropertySheetNode, RichPropertySheetItem, RichStatGroupNode, RichStatItem, RichTabsNode, RichTabsItem, RichRecordSummaryNode, RichRecordSummaryField, RichLookupResultNode, RichLookupResultField, RichLookupCardNode, RichRelatedRecordNode, RichActionCardNode, RichDecisionPackageNode, RichDecisionPackageEvidence, RichCollapsibleCardNode, RichFormLauncherNode, RichDisclosureNode, RichAccordionNode, RichAccordionItem, RichMediaBlockNode, RichTimelineNode, RichTimelineItem, RichTextNode, RichBadgeNode, RichIconNode, RichAvatarNode, RichImageNode, RichLinkNode, RichMetricNode, RichProgressNode, SettingsValueProvider, CorePresetRef, CorePresetDescriptor, ComponentDocMeta, AiCapabilityCatalog, AiCapability, AiCapabilityCategory, AiValueKind, ComponentAuthoringManifest, PraxisI18nDictionary, PraxisI18nConfig, PraxisI18nService } from '@praxisui/core';
|
|
4
4
|
import * as _praxisui_rich_content from '@praxisui/rich-content';
|
|
5
5
|
import { BehaviorSubject } from 'rxjs';
|
|
6
6
|
|
|
@@ -270,7 +270,7 @@ interface RichContentValidationResult {
|
|
|
270
270
|
declare function validateRichContentDocument(value: unknown): RichContentValidationResult;
|
|
271
271
|
declare function isValidRichContentDocument(value: unknown): value is RichContentDocument;
|
|
272
272
|
|
|
273
|
-
type EditableTopLevelNode = RichTextNode | RichBadgeNode | RichIconNode | RichImageNode | RichLinkNode | RichMetricNode | RichProgressNode | RichActionButtonNode | RichComposeNode | RichCardNode | RichCalloutNode | RichCtaGroupNode | RichKeyValueListNode | RichPropertySheetNode | RichStatGroupNode | RichTabsNode | RichEmptyStateNode | RichRecordSummaryNode | RichLookupResultNode | RichLookupCardNode | RichRelatedRecordNode | RichActionCardNode | RichDecisionPackageNode | RichFormLauncherNode | RichCollapsibleCardNode | RichDisclosureNode | RichAccordionNode | RichMediaBlockNode | RichTimelineNode | RichPresetReferenceNode;
|
|
273
|
+
type EditableTopLevelNode = RichTextNode | RichBadgeNode | RichIconNode | RichAvatarNode | RichImageNode | RichLinkNode | RichMetricNode | RichProgressNode | RichActionButtonNode | RichComposeNode | RichCardNode | RichCalloutNode | RichCtaGroupNode | RichKeyValueListNode | RichPropertySheetNode | RichStatGroupNode | RichTabsNode | RichEmptyStateNode | RichRecordSummaryNode | RichLookupResultNode | RichLookupCardNode | RichRelatedRecordNode | RichActionCardNode | RichDecisionPackageNode | RichFormLauncherNode | RichCollapsibleCardNode | RichDisclosureNode | RichAccordionNode | RichMediaBlockNode | RichTimelineNode | RichPresetReferenceNode;
|
|
274
274
|
type EditableTopLevelNodeType = EditableTopLevelNode['type'];
|
|
275
275
|
type EditablePresenterNode = RichPresenterNode;
|
|
276
276
|
type EditablePresenterNodeType = EditablePresenterNode['type'];
|
|
@@ -298,7 +298,7 @@ declare class PraxisRichContentConfigEditor implements SettingsValueProvider, On
|
|
|
298
298
|
readonly isDirty$: BehaviorSubject<boolean>;
|
|
299
299
|
readonly isValid$: BehaviorSubject<boolean>;
|
|
300
300
|
readonly isBusy$: BehaviorSubject<boolean>;
|
|
301
|
-
readonly editableNodeTypes: ("text" | "icon" | "image" | "link" | "badge" | "metric" | "progress" | "actionButton" | "compose" | "card" | "callout" | "ctaGroup" | "keyValueList" | "propertySheet" | "statGroup" | "tabs" | "emptyState" | "recordSummary" | "lookupResult" | "lookupCard" | "relatedRecord" | "actionCard" | "decisionPackage" | "formLauncher" | "collapsibleCard" | "disclosure" | "accordion" | "mediaBlock" | "timeline" | "preset")[];
|
|
301
|
+
readonly editableNodeTypes: ("text" | "icon" | "image" | "link" | "badge" | "avatar" | "metric" | "progress" | "actionButton" | "compose" | "card" | "callout" | "ctaGroup" | "keyValueList" | "propertySheet" | "statGroup" | "tabs" | "emptyState" | "recordSummary" | "lookupResult" | "lookupCard" | "relatedRecord" | "actionCard" | "decisionPackage" | "formLauncher" | "collapsibleCard" | "disclosure" | "accordion" | "mediaBlock" | "timeline" | "preset")[];
|
|
302
302
|
readonly presenterNodeTypes: ("text" | "icon" | "image" | "link" | "badge" | "avatar" | "metric" | "progress" | "actionButton")[];
|
|
303
303
|
readonly cardContentNodeTypes: EditableCardContentNodeType[];
|
|
304
304
|
readonly presetOptions: _praxisui_rich_content.RichBlockPresetDefinition[];
|