@praxisui/visual-builder 9.0.0-beta.9 → 9.0.0-beta.90
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 +6 -27
- package/ai/component-registry.json +1911 -0
- package/fesm2022/praxisui-visual-builder.mjs +652 -571
- package/package.json +10 -6
- package/types/praxisui-visual-builder.d.ts +13 -5
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Inject, ChangeDetectionStrategy, Component, EventEmitter, ViewChild, Output, Input, Optional, inject } from '@angular/core';
|
|
2
|
+
import { Injectable, Inject, ChangeDetectionStrategy, Component, EventEmitter, ViewChild, Output, Input, Optional, inject, ENVIRONMENT_INITIALIZER } from '@angular/core';
|
|
3
3
|
import * as i12$1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import * as i1$1 from '@angular/forms';
|
|
6
6
|
import { Validators, ReactiveFormsModule, FormsModule, FormControl } from '@angular/forms';
|
|
7
|
-
import * as
|
|
7
|
+
import * as i9$2 from '@angular/material/badge';
|
|
8
8
|
import { MatBadgeModule } from '@angular/material/badge';
|
|
9
9
|
import * as i5 from '@angular/material/button';
|
|
10
10
|
import { MatButtonModule } from '@angular/material/button';
|
|
@@ -17,18 +17,18 @@ import * as i6 from '@angular/material/icon';
|
|
|
17
17
|
import { MatIconModule } from '@angular/material/icon';
|
|
18
18
|
import * as i8 from '@angular/material/list';
|
|
19
19
|
import { MatListModule } from '@angular/material/list';
|
|
20
|
-
import * as
|
|
20
|
+
import * as i6$2 from '@angular/material/menu';
|
|
21
21
|
import { MatMenuModule } from '@angular/material/menu';
|
|
22
22
|
import { MatSidenavModule } from '@angular/material/sidenav';
|
|
23
23
|
import * as i4 from '@angular/material/snack-bar';
|
|
24
24
|
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
25
|
-
import * as
|
|
25
|
+
import * as i4$2 from '@angular/material/toolbar';
|
|
26
26
|
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
27
27
|
import * as i9 from '@angular/material/tooltip';
|
|
28
28
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
29
29
|
import { BehaviorSubject, Subject, from, takeUntil as takeUntil$1, interval, Observable, of, throwError, combineLatest } from 'rxjs';
|
|
30
30
|
import * as i1$2 from '@praxisui/core';
|
|
31
|
-
import { RULE_PROPERTY_SCHEMA, providePraxisI18n, PraxisI18nService, PraxisIconDirective } from '@praxisui/core';
|
|
31
|
+
import { RULE_PROPERTY_SCHEMA, PraxisIconButtonComponent, providePraxisI18n, PraxisI18nService, ComponentMetadataRegistry, PraxisIconDirective } from '@praxisui/core';
|
|
32
32
|
import * as i3$1 from '@praxisui/ai';
|
|
33
33
|
import { AiRuleWizardDialogComponent } from '@praxisui/ai';
|
|
34
34
|
import { map, takeUntil, debounceTime, distinctUntilChanged, switchMap, catchError, startWith } from 'rxjs/operators';
|
|
@@ -41,7 +41,7 @@ import * as i4$1 from '@angular/material/input';
|
|
|
41
41
|
import { MatInputModule } from '@angular/material/input';
|
|
42
42
|
import * as i3 from '@angular/material/select';
|
|
43
43
|
import { MatSelectModule } from '@angular/material/select';
|
|
44
|
-
import * as
|
|
44
|
+
import * as i6$1 from '@angular/material/checkbox';
|
|
45
45
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
46
46
|
import * as i11 from '@angular/material/slide-toggle';
|
|
47
47
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
@@ -49,17 +49,17 @@ import * as i12 from '@angular/material/progress-bar';
|
|
|
49
49
|
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
50
50
|
import * as i10 from '@angular/material/chips';
|
|
51
51
|
import { MatChipsModule } from '@angular/material/chips';
|
|
52
|
-
import * as
|
|
52
|
+
import * as i10$1 from '@angular/material/expansion';
|
|
53
53
|
import { MatExpansionModule } from '@angular/material/expansion';
|
|
54
54
|
import * as i2$1 from '@angular/cdk/layout';
|
|
55
55
|
import { Breakpoints } from '@angular/cdk/layout';
|
|
56
|
-
import * as
|
|
56
|
+
import * as i7$1 from '@angular/material/button-toggle';
|
|
57
57
|
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
58
58
|
import * as i7$3 from '@angular/material/stepper';
|
|
59
59
|
import { MatStepperModule } from '@angular/material/stepper';
|
|
60
|
-
import * as
|
|
60
|
+
import * as i11$1 from '@angular/cdk/drag-drop';
|
|
61
61
|
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
62
|
-
import * as
|
|
62
|
+
import * as i7$2 from '@angular/material/datepicker';
|
|
63
63
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
64
64
|
import { MatNativeDateModule } from '@angular/material/core';
|
|
65
65
|
import * as i11$2 from '@angular/material/autocomplete';
|
|
@@ -1003,7 +1003,7 @@ class RuleBuilderService {
|
|
|
1003
1003
|
...this.getInitialState(),
|
|
1004
1004
|
isDirty: false,
|
|
1005
1005
|
});
|
|
1006
|
-
// Salva estado inicial para habilitar undo/redo desde a primeira
|
|
1006
|
+
// Salva estado inicial para habilitar undo/redo desde a primeira ação
|
|
1007
1007
|
this.saveSnapshot('Estado inicial');
|
|
1008
1008
|
}
|
|
1009
1009
|
/**
|
|
@@ -1279,7 +1279,7 @@ class RuleBuilderService {
|
|
|
1279
1279
|
parsed = typeof content === 'string' ? JSON.parse(content) : content;
|
|
1280
1280
|
}
|
|
1281
1281
|
catch (e) {
|
|
1282
|
-
throw new Error(`
|
|
1282
|
+
throw new Error(`Importação falhou: JSON inválido (${e?.message || e})`);
|
|
1283
1283
|
}
|
|
1284
1284
|
if (!parsed || (typeof parsed === 'object' && !Object.keys(parsed).length)) {
|
|
1285
1285
|
return;
|
|
@@ -1309,7 +1309,7 @@ class RuleBuilderService {
|
|
|
1309
1309
|
}
|
|
1310
1310
|
}
|
|
1311
1311
|
}
|
|
1312
|
-
throw new Error(`Formato de
|
|
1312
|
+
throw new Error(`Formato de importação não suportado ou inválido: ${format}`);
|
|
1313
1313
|
}
|
|
1314
1314
|
/**
|
|
1315
1315
|
* Export rules to JSON payload
|
|
@@ -1328,11 +1328,11 @@ class RuleBuilderService {
|
|
|
1328
1328
|
};
|
|
1329
1329
|
if (this.containsPropertyRule()) {
|
|
1330
1330
|
payload.warning =
|
|
1331
|
-
'
|
|
1331
|
+
'Exportação de propertyRule é experimental e pode exigir revisão manual.';
|
|
1332
1332
|
}
|
|
1333
1333
|
return JSON.stringify(payload, null, options?.prettyPrint ? 2 : undefined);
|
|
1334
1334
|
}
|
|
1335
|
-
throw new Error(`Formato de
|
|
1335
|
+
throw new Error(`Formato de exportação não suportado: ${format}`);
|
|
1336
1336
|
}
|
|
1337
1337
|
toSpecification() {
|
|
1338
1338
|
return null;
|
|
@@ -1417,31 +1417,31 @@ class RuleBuilderService {
|
|
|
1417
1417
|
}
|
|
1418
1418
|
generateNodeLabel(type) {
|
|
1419
1419
|
const labels = {
|
|
1420
|
-
[RuleNodeType.FIELD_CONDITION]: '
|
|
1420
|
+
[RuleNodeType.FIELD_CONDITION]: 'Condição de campo',
|
|
1421
1421
|
[RuleNodeType.PROPERTY_RULE]: 'Propriedade',
|
|
1422
1422
|
[RuleNodeType.AND_GROUP]: 'Grupo E',
|
|
1423
1423
|
[RuleNodeType.OR_GROUP]: 'Grupo OU',
|
|
1424
|
-
[RuleNodeType.NOT_GROUP]: 'Grupo
|
|
1424
|
+
[RuleNodeType.NOT_GROUP]: 'Grupo NÃO',
|
|
1425
1425
|
[RuleNodeType.XOR_GROUP]: 'Grupo XOR',
|
|
1426
1426
|
[RuleNodeType.IMPLIES_GROUP]: 'Implica',
|
|
1427
|
-
[RuleNodeType.REQUIRED_IF]: '
|
|
1428
|
-
[RuleNodeType.VISIBLE_IF]: '
|
|
1427
|
+
[RuleNodeType.REQUIRED_IF]: 'Obrigatório se',
|
|
1428
|
+
[RuleNodeType.VISIBLE_IF]: 'Visível se',
|
|
1429
1429
|
[RuleNodeType.DISABLED_IF]: 'Desabilitado se',
|
|
1430
1430
|
[RuleNodeType.READONLY_IF]: 'Somente leitura se',
|
|
1431
1431
|
[RuleNodeType.FOR_EACH]: 'Para cada item',
|
|
1432
|
-
[RuleNodeType.UNIQUE_BY]: '
|
|
1433
|
-
[RuleNodeType.MIN_LENGTH]: '
|
|
1434
|
-
[RuleNodeType.MAX_LENGTH]: '
|
|
1432
|
+
[RuleNodeType.UNIQUE_BY]: 'Único por campo',
|
|
1433
|
+
[RuleNodeType.MIN_LENGTH]: 'Mínimo de itens',
|
|
1434
|
+
[RuleNodeType.MAX_LENGTH]: 'Máximo de itens',
|
|
1435
1435
|
[RuleNodeType.IF_DEFINED]: 'Se definido',
|
|
1436
|
-
[RuleNodeType.IF_NOT_NULL]: 'Se
|
|
1436
|
+
[RuleNodeType.IF_NOT_NULL]: 'Se não for nulo',
|
|
1437
1437
|
[RuleNodeType.IF_EXISTS]: 'Se existir',
|
|
1438
|
-
[RuleNodeType.WITH_DEFAULT]: 'Com valor
|
|
1439
|
-
[RuleNodeType.FUNCTION_CALL]: 'Chamada de
|
|
1438
|
+
[RuleNodeType.WITH_DEFAULT]: 'Com valor padrão',
|
|
1439
|
+
[RuleNodeType.FUNCTION_CALL]: 'Chamada de função',
|
|
1440
1440
|
[RuleNodeType.FIELD_TO_FIELD]: 'Campo para campo',
|
|
1441
1441
|
[RuleNodeType.CONTEXTUAL]: 'Contextual',
|
|
1442
1442
|
[RuleNodeType.AT_LEAST]: 'Pelo menos',
|
|
1443
1443
|
[RuleNodeType.EXACTLY]: 'Exatamente',
|
|
1444
|
-
[RuleNodeType.EXPRESSION]: '
|
|
1444
|
+
[RuleNodeType.EXPRESSION]: 'Expressão',
|
|
1445
1445
|
[RuleNodeType.CONTEXTUAL_TEMPLATE]: 'Template contextual',
|
|
1446
1446
|
[RuleNodeType.CUSTOM]: 'Personalizado',
|
|
1447
1447
|
};
|
|
@@ -1471,8 +1471,8 @@ class RuleBuilderService {
|
|
|
1471
1471
|
});
|
|
1472
1472
|
}
|
|
1473
1473
|
/**
|
|
1474
|
-
*
|
|
1475
|
-
* focando em
|
|
1474
|
+
* Constrói um array de FormLayoutRule a partir do estado atual do builder,
|
|
1475
|
+
* focando em nós propertyRule ou nós com propriedades/targets definidos.
|
|
1476
1476
|
*/
|
|
1477
1477
|
exportFormRulesFromState(state) {
|
|
1478
1478
|
const rules = [];
|
|
@@ -1486,7 +1486,7 @@ class RuleBuilderService {
|
|
|
1486
1486
|
}
|
|
1487
1487
|
}
|
|
1488
1488
|
if (warnings.length) {
|
|
1489
|
-
console.warn('[RuleBuilderService] Algumas propriedades foram removidas ou ajustadas durante a
|
|
1489
|
+
console.warn('[RuleBuilderService] Algumas propriedades foram removidas ou ajustadas durante a exportação de formRules:', warnings);
|
|
1490
1490
|
}
|
|
1491
1491
|
return rules;
|
|
1492
1492
|
}
|
|
@@ -1545,7 +1545,7 @@ class RuleBuilderService {
|
|
|
1545
1545
|
return null;
|
|
1546
1546
|
}
|
|
1547
1547
|
return {
|
|
1548
|
-
[operator]: [{ var: cfg.fieldName }, this.
|
|
1548
|
+
[operator]: [{ var: cfg.fieldName }, this.buildConditionRightOperand(cfg)],
|
|
1549
1549
|
};
|
|
1550
1550
|
}
|
|
1551
1551
|
if (node.type === RuleNodeType.AND_GROUP || node.type === RuleNodeType.OR_GROUP) {
|
|
@@ -1624,7 +1624,7 @@ class RuleBuilderService {
|
|
|
1624
1624
|
const id = (rawRule && (rawRule.id || rawRule.name)) || `#${index + 1}`;
|
|
1625
1625
|
const ruleErrorsStart = errors.length;
|
|
1626
1626
|
if (!rawRule || typeof rawRule !== 'object') {
|
|
1627
|
-
errors.push(`Regra ${id}: valor
|
|
1627
|
+
errors.push(`Regra ${id}: valor inválido (esperado objeto)`);
|
|
1628
1628
|
return;
|
|
1629
1629
|
}
|
|
1630
1630
|
const rawTargets = Array.isArray(rawRule.targets) && rawRule.targets.length
|
|
@@ -1634,16 +1634,16 @@ class RuleBuilderService {
|
|
|
1634
1634
|
: [];
|
|
1635
1635
|
const { targets, targetType } = this.normalizeTargets(rawTargets, rawRule.targetType);
|
|
1636
1636
|
if (!targets.length) {
|
|
1637
|
-
errors.push(`Regra ${id}: targets
|
|
1637
|
+
errors.push(`Regra ${id}: targets obrigatórios ausentes`);
|
|
1638
1638
|
return;
|
|
1639
1639
|
}
|
|
1640
1640
|
if (!allowedTargets.has(targetType)) {
|
|
1641
|
-
errors.push(`Regra ${id}: targetType
|
|
1641
|
+
errors.push(`Regra ${id}: targetType inválido "${rawRule.targetType || targetType}"`);
|
|
1642
1642
|
return;
|
|
1643
1643
|
}
|
|
1644
1644
|
const effect = rawRule.effect;
|
|
1645
1645
|
if (!effect || typeof effect !== 'object') {
|
|
1646
|
-
errors.push(`Regra ${id}: effect ausente ou
|
|
1646
|
+
errors.push(`Regra ${id}: effect ausente ou inválido`);
|
|
1647
1647
|
return;
|
|
1648
1648
|
}
|
|
1649
1649
|
const condition = this.normalizeJsonLogicCondition(effect.condition);
|
|
@@ -1654,7 +1654,7 @@ class RuleBuilderService {
|
|
|
1654
1654
|
const propertiesWhenFalse = this.sanitizeRuleProperties(targetType, effect.propertiesWhenFalse, errors, `regra ${id} (propertiesWhenFalse)`, true);
|
|
1655
1655
|
if (Object.keys(properties).length === 0 &&
|
|
1656
1656
|
Object.keys(propertiesWhenFalse).length === 0) {
|
|
1657
|
-
errors.push(`Regra ${id}: nenhuma propriedade
|
|
1657
|
+
errors.push(`Regra ${id}: nenhuma propriedade válida encontrada`);
|
|
1658
1658
|
}
|
|
1659
1659
|
if (errors.length === ruleErrorsStart) {
|
|
1660
1660
|
normalized.push({
|
|
@@ -1672,7 +1672,7 @@ class RuleBuilderService {
|
|
|
1672
1672
|
}
|
|
1673
1673
|
});
|
|
1674
1674
|
if (errors.length) {
|
|
1675
|
-
throw new Error(`FormRules
|
|
1675
|
+
throw new Error(`FormRules inválidos: ${errors.join('; ')}`);
|
|
1676
1676
|
}
|
|
1677
1677
|
return normalized;
|
|
1678
1678
|
}
|
|
@@ -1687,7 +1687,7 @@ class RuleBuilderService {
|
|
|
1687
1687
|
const def = defMap.get(name);
|
|
1688
1688
|
if (!def) {
|
|
1689
1689
|
if (strict || collector) {
|
|
1690
|
-
collector?.push(`${context}: propriedade "${name}"
|
|
1690
|
+
collector?.push(`${context}: propriedade "${name}" não é permitida para ${targetType}`);
|
|
1691
1691
|
}
|
|
1692
1692
|
return acc;
|
|
1693
1693
|
}
|
|
@@ -1696,14 +1696,14 @@ class RuleBuilderService {
|
|
|
1696
1696
|
acc[name] = coerced.value;
|
|
1697
1697
|
}
|
|
1698
1698
|
else if (strict || collector) {
|
|
1699
|
-
collector?.push(`${context}: valor
|
|
1699
|
+
collector?.push(`${context}: valor inválido para "${name}" (esperado ${def.type}, recebido ${typeof value})`);
|
|
1700
1700
|
}
|
|
1701
1701
|
return acc;
|
|
1702
1702
|
}, {});
|
|
1703
1703
|
}
|
|
1704
1704
|
coerceRulePropertyValue(def, value) {
|
|
1705
1705
|
if (value === null) {
|
|
1706
|
-
// null
|
|
1706
|
+
// null mantém semântica de remover override
|
|
1707
1707
|
return { ok: true, value: null };
|
|
1708
1708
|
}
|
|
1709
1709
|
switch (def.type) {
|
|
@@ -1735,10 +1735,19 @@ class RuleBuilderService {
|
|
|
1735
1735
|
return { ok: true, value: this.sanitizeStructuredValue(def.name, value) };
|
|
1736
1736
|
}
|
|
1737
1737
|
return { ok: false };
|
|
1738
|
+
case 'array':
|
|
1739
|
+
return Array.isArray(value)
|
|
1740
|
+
? { ok: true, value: this.sanitizeStructuredArray(def.name, value) }
|
|
1741
|
+
: { ok: false };
|
|
1738
1742
|
default:
|
|
1739
1743
|
return { ok: false };
|
|
1740
1744
|
}
|
|
1741
1745
|
}
|
|
1746
|
+
sanitizeStructuredArray(name, value) {
|
|
1747
|
+
return value.map((item) => item && typeof item === 'object' && !Array.isArray(item)
|
|
1748
|
+
? this.sanitizeStructuredValue(name, item)
|
|
1749
|
+
: item);
|
|
1750
|
+
}
|
|
1742
1751
|
sanitizeStructuredValue(name, value) {
|
|
1743
1752
|
if (name === 'options') {
|
|
1744
1753
|
const normalizeItems = (items) => items
|
|
@@ -1951,15 +1960,20 @@ class RuleBuilderService {
|
|
|
1951
1960
|
if (!this.isVarExpression(left)) {
|
|
1952
1961
|
return undefined;
|
|
1953
1962
|
}
|
|
1963
|
+
const config = {
|
|
1964
|
+
type: 'fieldCondition',
|
|
1965
|
+
fieldName: this.extractVarPath(left.var),
|
|
1966
|
+
operator: builderOperator,
|
|
1967
|
+
value: right,
|
|
1968
|
+
};
|
|
1969
|
+
if (this.isVarExpression(right)) {
|
|
1970
|
+
config['valueType'] = 'field';
|
|
1971
|
+
config['compareToField'] = this.extractVarPath(right.var);
|
|
1972
|
+
}
|
|
1954
1973
|
return {
|
|
1955
1974
|
id: v4(),
|
|
1956
1975
|
type: RuleNodeType.FIELD_CONDITION,
|
|
1957
|
-
config:
|
|
1958
|
-
type: 'fieldCondition',
|
|
1959
|
-
fieldName: this.extractVarPath(left.var),
|
|
1960
|
-
operator: builderOperator,
|
|
1961
|
-
value: right,
|
|
1962
|
-
},
|
|
1976
|
+
config: config,
|
|
1963
1977
|
};
|
|
1964
1978
|
}
|
|
1965
1979
|
parseJsonLogicChild(child) {
|
|
@@ -2073,6 +2087,14 @@ class RuleBuilderService {
|
|
|
2073
2087
|
}
|
|
2074
2088
|
return value;
|
|
2075
2089
|
}
|
|
2090
|
+
buildConditionRightOperand(cfg) {
|
|
2091
|
+
if (cfg['valueType'] === 'field' &&
|
|
2092
|
+
typeof cfg['compareToField'] === 'string' &&
|
|
2093
|
+
cfg['compareToField'].trim()) {
|
|
2094
|
+
return { var: cfg['compareToField'].trim() };
|
|
2095
|
+
}
|
|
2096
|
+
return this.normalizeConditionValue(cfg['value']);
|
|
2097
|
+
}
|
|
2076
2098
|
isJsonLogicExpressionCandidate(value) {
|
|
2077
2099
|
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
2078
2100
|
}
|
|
@@ -2228,13 +2250,17 @@ class RuleBuilderService {
|
|
|
2228
2250
|
this.addValidationError(errors, `field-condition:compare-field:${node.id}`, 'Escolha o campo usado na comparacao.', 'error', node.id);
|
|
2229
2251
|
return;
|
|
2230
2252
|
}
|
|
2231
|
-
if (cfg.valueType === 'context'
|
|
2232
|
-
(
|
|
2233
|
-
|
|
2253
|
+
if (cfg.valueType === 'context') {
|
|
2254
|
+
this.addValidationError(errors, `field-condition:context:${node.id}`, 'Comparação com variável de contexto ainda não possui serialização JSON Logic canônica.', 'error', node.id);
|
|
2255
|
+
return;
|
|
2256
|
+
}
|
|
2257
|
+
if (cfg.valueType === 'function') {
|
|
2258
|
+
this.addValidationError(errors, `field-condition:function:${node.id}`, 'Comparação com chamada de função ainda não possui serialização JSON Logic canônica.', 'error', node.id);
|
|
2234
2259
|
return;
|
|
2235
2260
|
}
|
|
2236
2261
|
if (cfg.valueType !== 'field' &&
|
|
2237
2262
|
cfg.valueType !== 'context' &&
|
|
2263
|
+
cfg.valueType !== 'function' &&
|
|
2238
2264
|
!Object.prototype.hasOwnProperty.call(cfg, 'value')) {
|
|
2239
2265
|
this.addValidationError(errors, `field-condition:value:${node.id}`, 'Informe o valor da condicao.', 'error', node.id);
|
|
2240
2266
|
}
|
|
@@ -2310,7 +2336,7 @@ class RuleBuilderService {
|
|
|
2310
2336
|
return null;
|
|
2311
2337
|
if (input.type)
|
|
2312
2338
|
return input;
|
|
2313
|
-
//
|
|
2339
|
+
// Inferência básica de tipos de especificação comuns
|
|
2314
2340
|
// Campo simples: { field, operator, value }
|
|
2315
2341
|
if (input.field && input.operator !== undefined) {
|
|
2316
2342
|
return { type: 'field', ...input };
|
|
@@ -3397,14 +3423,13 @@ class ExportDialogComponent {
|
|
|
3397
3423
|
placeholder="Leave empty for auto-generated"
|
|
3398
3424
|
/>
|
|
3399
3425
|
<button
|
|
3400
|
-
|
|
3426
|
+
praxisIconButton="help_outline"
|
|
3427
|
+
size="dense"
|
|
3401
3428
|
matSuffix
|
|
3402
|
-
class="help-icon-button"
|
|
3403
3429
|
type="button"
|
|
3404
3430
|
[matTooltip]="'Will be auto-generated if not specified'"
|
|
3405
3431
|
matTooltipPosition="above"
|
|
3406
3432
|
>
|
|
3407
|
-
<mat-icon>help_outline</mat-icon>
|
|
3408
3433
|
</button>
|
|
3409
3434
|
</mat-form-field>
|
|
3410
3435
|
</div>
|
|
@@ -3742,10 +3767,11 @@ class ExportDialogComponent {
|
|
|
3742
3767
|
<input matInput [value]="shareResult.url" readonly />
|
|
3743
3768
|
<button
|
|
3744
3769
|
matSuffix
|
|
3745
|
-
|
|
3770
|
+
praxisIconButton="content_copy"
|
|
3771
|
+
size="dense"
|
|
3772
|
+
aria-label="Copy share URL"
|
|
3746
3773
|
(click)="copyShareUrl()"
|
|
3747
3774
|
>
|
|
3748
|
-
<mat-icon>content_copy</mat-icon>
|
|
3749
3775
|
</button>
|
|
3750
3776
|
</mat-form-field>
|
|
3751
3777
|
</div>
|
|
@@ -3821,7 +3847,7 @@ class ExportDialogComponent {
|
|
|
3821
3847
|
</mat-progress-bar>
|
|
3822
3848
|
}
|
|
3823
3849
|
</div>
|
|
3824
|
-
`, isInline: true, styles: [".export-dialog{width:800px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column}.dialog-header{display:flex;align-items:center;gap:8px;font-weight:500}.dialog-content{flex:1;overflow:auto;max-height:calc(80vh - 120px)}.tab-content{padding:16px 0;min-height:0;max-height:calc(80vh - 180px);overflow-y:auto}.section{margin-bottom:24px}.section-title{margin:0 0 16px;color:var(--md-sys-color-primary);font-size:16px;font-weight:500}.format-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-bottom:16px}.format-card{cursor:pointer;transition:all .2s ease;border:2px solid transparent}.format-card:hover{border-color:var(--md-sys-color-primary-container);box-shadow:0 4px 8px var(--vb-shadow-low-color, rgba(0,0,0,.1))}.format-card.selected{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.format-description{font-size:13px;color:var(--md-sys-color-on-surface-variant);margin:8px 0;min-height:40px}.format-features{display:flex;gap:4px;flex-wrap:wrap}.options-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:16px}.full-width{width:100%}.batch-formats{margin-top:16px}.export-results,.integration-results{margin-top:24px}.result-panel{margin-bottom:8px}.success-icon{color:var(--md-sys-color-tertiary)}.error-icon{color:var(--md-sys-color-error)}.result-details{padding:16px 0}.detail-row{margin-bottom:8px;font-size:14px}.action-buttons{display:flex;gap:8px;margin-top:16px}.error-details{color:var(--md-sys-color-error)}.error-item{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);padding:8px;border-radius:4px;margin-bottom:4px}.system-info{margin-top:16px}.info-card{background:var(--md-sys-color-surface-variant)}.system-details,.integration-result{margin-bottom:16px}.success-card{border-left:4px solid var(--md-sys-color-tertiary)}.error-card{border-left:4px solid var(--md-sys-color-error)}.sharing-form{max-width:400px}.share-card{margin-top:16px;border-left:4px solid var(--md-sys-color-primary)}.share-url{margin-bottom:16px}.dialog-actions{display:flex;justify-content:space-between;align-items:center;padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);position:sticky;bottom:0;background:var(--md-sys-color-surface);border-top:1px solid var(--md-sys-color-outline-variant);z-index:2}.dialog-actions .action-buttons{display:flex;gap:8px}.progress-bar{position:absolute;bottom:0;left:0;right:0}@media(max-width:768px){.export-dialog{width:100vw;height:100vh;max-width:none;max-height:none}.format-grid,.options-grid{grid-template-columns:1fr}}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i7.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i5$1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i5$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i11$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i11$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i11$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i11$1.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "pipe", type: i12$1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3850
|
+
`, isInline: true, styles: [".export-dialog{width:800px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column}.dialog-header{display:flex;align-items:center;gap:8px;font-weight:500}.dialog-content{flex:1;overflow:auto;max-height:calc(80vh - 120px)}.tab-content{padding:16px 0;min-height:0;max-height:calc(80vh - 180px);overflow-y:auto}.section{margin-bottom:24px}.section-title{margin:0 0 16px;color:var(--md-sys-color-primary);font-size:16px;font-weight:500}.format-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-bottom:16px}.format-card{cursor:pointer;transition:all .2s ease;border:2px solid transparent}.format-card:hover{border-color:var(--md-sys-color-primary-container);box-shadow:0 4px 8px var(--vb-shadow-low-color, rgba(0,0,0,.1))}.format-card.selected{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.format-description{font-size:13px;color:var(--md-sys-color-on-surface-variant);margin:8px 0;min-height:40px}.format-features{display:flex;gap:4px;flex-wrap:wrap}.options-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:16px}.full-width{width:100%}.batch-formats{margin-top:16px}.export-results,.integration-results{margin-top:24px}.result-panel{margin-bottom:8px}.success-icon{color:var(--md-sys-color-tertiary)}.error-icon{color:var(--md-sys-color-error)}.result-details{padding:16px 0}.detail-row{margin-bottom:8px;font-size:14px}.action-buttons{display:flex;gap:8px;margin-top:16px}.error-details{color:var(--md-sys-color-error)}.error-item{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);padding:8px;border-radius:4px;margin-bottom:4px}.system-info{margin-top:16px}.info-card{background:var(--md-sys-color-surface-variant)}.system-details,.integration-result{margin-bottom:16px}.success-card{border-left:4px solid var(--md-sys-color-tertiary)}.error-card{border-left:4px solid var(--md-sys-color-error)}.sharing-form{max-width:400px}.share-card{margin-top:16px;border-left:4px solid var(--md-sys-color-primary)}.share-url{margin-bottom:16px}.dialog-actions{display:flex;justify-content:space-between;align-items:center;padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);position:sticky;bottom:0;background:var(--md-sys-color-surface);border-top:1px solid var(--md-sys-color-outline-variant);z-index:2}.dialog-actions .action-buttons{display:flex;gap:8px}.progress-bar{position:absolute;bottom:0;left:0;right:0}@media(max-width:768px){.export-dialog{width:100vw;height:100vh;max-width:none;max-height:none}.format-grid,.options-grid{grid-template-columns:1fr}}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i7.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i5$1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i5$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i10$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i10$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i10$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i10$1.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "pipe", type: i12$1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3825
3851
|
}
|
|
3826
3852
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ExportDialogComponent, decorators: [{
|
|
3827
3853
|
type: Component,
|
|
@@ -3832,6 +3858,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
3832
3858
|
MatDialogModule,
|
|
3833
3859
|
MatButtonModule,
|
|
3834
3860
|
MatIconModule,
|
|
3861
|
+
PraxisIconButtonComponent,
|
|
3835
3862
|
MatTabsModule,
|
|
3836
3863
|
MatFormFieldModule,
|
|
3837
3864
|
MatInputModule,
|
|
@@ -3939,14 +3966,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
3939
3966
|
placeholder="Leave empty for auto-generated"
|
|
3940
3967
|
/>
|
|
3941
3968
|
<button
|
|
3942
|
-
|
|
3969
|
+
praxisIconButton="help_outline"
|
|
3970
|
+
size="dense"
|
|
3943
3971
|
matSuffix
|
|
3944
|
-
class="help-icon-button"
|
|
3945
3972
|
type="button"
|
|
3946
3973
|
[matTooltip]="'Will be auto-generated if not specified'"
|
|
3947
3974
|
matTooltipPosition="above"
|
|
3948
3975
|
>
|
|
3949
|
-
<mat-icon>help_outline</mat-icon>
|
|
3950
3976
|
</button>
|
|
3951
3977
|
</mat-form-field>
|
|
3952
3978
|
</div>
|
|
@@ -4284,10 +4310,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
4284
4310
|
<input matInput [value]="shareResult.url" readonly />
|
|
4285
4311
|
<button
|
|
4286
4312
|
matSuffix
|
|
4287
|
-
|
|
4313
|
+
praxisIconButton="content_copy"
|
|
4314
|
+
size="dense"
|
|
4315
|
+
aria-label="Copy share URL"
|
|
4288
4316
|
(click)="copyShareUrl()"
|
|
4289
4317
|
>
|
|
4290
|
-
<mat-icon>content_copy</mat-icon>
|
|
4291
4318
|
</button>
|
|
4292
4319
|
</mat-form-field>
|
|
4293
4320
|
</div>
|
|
@@ -4363,7 +4390,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
4363
4390
|
</mat-progress-bar>
|
|
4364
4391
|
}
|
|
4365
4392
|
</div>
|
|
4366
|
-
`, styles: [".export-dialog{width:800px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column}.dialog-header{display:flex;align-items:center;gap:8px;font-weight:500}.dialog-content{flex:1;overflow:auto;max-height:calc(80vh - 120px)}.tab-content{padding:16px 0;min-height:0;max-height:calc(80vh - 180px);overflow-y:auto}.section{margin-bottom:24px}.section-title{margin:0 0 16px;color:var(--md-sys-color-primary);font-size:16px;font-weight:500}.format-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-bottom:16px}.format-card{cursor:pointer;transition:all .2s ease;border:2px solid transparent}.format-card:hover{border-color:var(--md-sys-color-primary-container);box-shadow:0 4px 8px var(--vb-shadow-low-color, rgba(0,0,0,.1))}.format-card.selected{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.format-description{font-size:13px;color:var(--md-sys-color-on-surface-variant);margin:8px 0;min-height:40px}.format-features{display:flex;gap:4px;flex-wrap:wrap}.options-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:16px}.full-width{width:100%}.batch-formats{margin-top:16px}.export-results,.integration-results{margin-top:24px}.result-panel{margin-bottom:8px}.success-icon{color:var(--md-sys-color-tertiary)}.error-icon{color:var(--md-sys-color-error)}.result-details{padding:16px 0}.detail-row{margin-bottom:8px;font-size:14px}.action-buttons{display:flex;gap:8px;margin-top:16px}.error-details{color:var(--md-sys-color-error)}.error-item{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);padding:8px;border-radius:4px;margin-bottom:4px}.system-info{margin-top:16px}.info-card{background:var(--md-sys-color-surface-variant)}.system-details,.integration-result{margin-bottom:16px}.success-card{border-left:4px solid var(--md-sys-color-tertiary)}.error-card{border-left:4px solid var(--md-sys-color-error)}.sharing-form{max-width:400px}.share-card{margin-top:16px;border-left:4px solid var(--md-sys-color-primary)}.share-url{margin-bottom:16px}.dialog-actions{display:flex;justify-content:space-between;align-items:center;padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);position:sticky;bottom:0;background:var(--md-sys-color-surface);border-top:1px solid var(--md-sys-color-outline-variant);z-index:2}.dialog-actions .action-buttons{display:flex;gap:8px}.progress-bar{position:absolute;bottom:0;left:0;right:0}@media(max-width:768px){.export-dialog{width:100vw;height:100vh;max-width:none;max-height:none}.format-grid,.options-grid{grid-template-columns:1fr}}.
|
|
4393
|
+
`, styles: [".export-dialog{width:800px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column}.dialog-header{display:flex;align-items:center;gap:8px;font-weight:500}.dialog-content{flex:1;overflow:auto;max-height:calc(80vh - 120px)}.tab-content{padding:16px 0;min-height:0;max-height:calc(80vh - 180px);overflow-y:auto}.section{margin-bottom:24px}.section-title{margin:0 0 16px;color:var(--md-sys-color-primary);font-size:16px;font-weight:500}.format-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-bottom:16px}.format-card{cursor:pointer;transition:all .2s ease;border:2px solid transparent}.format-card:hover{border-color:var(--md-sys-color-primary-container);box-shadow:0 4px 8px var(--vb-shadow-low-color, rgba(0,0,0,.1))}.format-card.selected{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.format-description{font-size:13px;color:var(--md-sys-color-on-surface-variant);margin:8px 0;min-height:40px}.format-features{display:flex;gap:4px;flex-wrap:wrap}.options-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:16px}.full-width{width:100%}.batch-formats{margin-top:16px}.export-results,.integration-results{margin-top:24px}.result-panel{margin-bottom:8px}.success-icon{color:var(--md-sys-color-tertiary)}.error-icon{color:var(--md-sys-color-error)}.result-details{padding:16px 0}.detail-row{margin-bottom:8px;font-size:14px}.action-buttons{display:flex;gap:8px;margin-top:16px}.error-details{color:var(--md-sys-color-error)}.error-item{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);padding:8px;border-radius:4px;margin-bottom:4px}.system-info{margin-top:16px}.info-card{background:var(--md-sys-color-surface-variant)}.system-details,.integration-result{margin-bottom:16px}.success-card{border-left:4px solid var(--md-sys-color-tertiary)}.error-card{border-left:4px solid var(--md-sys-color-error)}.sharing-form{max-width:400px}.share-card{margin-top:16px;border-left:4px solid var(--md-sys-color-primary)}.share-url{margin-bottom:16px}.dialog-actions{display:flex;justify-content:space-between;align-items:center;padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);position:sticky;bottom:0;background:var(--md-sys-color-surface);border-top:1px solid var(--md-sys-color-outline-variant);z-index:2}.dialog-actions .action-buttons{display:flex;gap:8px}.progress-bar{position:absolute;bottom:0;left:0;right:0}@media(max-width:768px){.export-dialog{width:100vw;height:100vh;max-width:none;max-height:none}.format-grid,.options-grid{grid-template-columns:1fr}}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
|
|
4367
4394
|
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
4368
4395
|
type: Inject,
|
|
4369
4396
|
args: [MAT_DIALOG_DATA]
|
|
@@ -4434,12 +4461,12 @@ class PropertyEffectEditorComponent {
|
|
|
4434
4461
|
clearValue(entry, branch) {
|
|
4435
4462
|
if (branch === 'true') {
|
|
4436
4463
|
entry.value = null;
|
|
4437
|
-
entry.jsonValue = entry.type
|
|
4464
|
+
entry.jsonValue = this.isStructuredJsonType(entry.type) ? '' : entry.value;
|
|
4438
4465
|
entry.error = undefined;
|
|
4439
4466
|
}
|
|
4440
4467
|
else {
|
|
4441
4468
|
entry.valueWhenFalse = null;
|
|
4442
|
-
entry.jsonValueWhenFalse = entry.type
|
|
4469
|
+
entry.jsonValueWhenFalse = this.isStructuredJsonType(entry.type) ? '' : entry.valueWhenFalse;
|
|
4443
4470
|
entry.errorWhenFalse = undefined;
|
|
4444
4471
|
}
|
|
4445
4472
|
this.emitChange();
|
|
@@ -4457,8 +4484,8 @@ class PropertyEffectEditorComponent {
|
|
|
4457
4484
|
entry.type = def.type;
|
|
4458
4485
|
entry.value = def.type === 'boolean' ? true : undefined;
|
|
4459
4486
|
entry.valueWhenFalse = undefined;
|
|
4460
|
-
entry.jsonValue = def.type
|
|
4461
|
-
entry.jsonValueWhenFalse = def.type
|
|
4487
|
+
entry.jsonValue = this.isStructuredJsonType(def.type) ? '' : undefined;
|
|
4488
|
+
entry.jsonValueWhenFalse = this.isStructuredJsonType(def.type) ? '' : undefined;
|
|
4462
4489
|
}
|
|
4463
4490
|
entry.error = undefined;
|
|
4464
4491
|
entry.errorWhenFalse = undefined;
|
|
@@ -4509,11 +4536,11 @@ class PropertyEffectEditorComponent {
|
|
|
4509
4536
|
return;
|
|
4510
4537
|
const entry = this.createEntry(def);
|
|
4511
4538
|
entry.property = name;
|
|
4512
|
-
entry.value = def.type
|
|
4513
|
-
entry.valueWhenFalse = def.type
|
|
4514
|
-
entry.jsonValue = def.type
|
|
4539
|
+
entry.value = this.isStructuredJsonType(def.type) ? undefined : props[name];
|
|
4540
|
+
entry.valueWhenFalse = this.isStructuredJsonType(def.type) ? undefined : propsFalse[name];
|
|
4541
|
+
entry.jsonValue = this.isStructuredJsonType(def.type) ? this.stringifyValue(props[name]) : undefined;
|
|
4515
4542
|
entry.jsonValueWhenFalse =
|
|
4516
|
-
def.type
|
|
4543
|
+
this.isStructuredJsonType(def.type) ? this.stringifyValue(propsFalse[name]) : undefined;
|
|
4517
4544
|
entries.push(entry);
|
|
4518
4545
|
});
|
|
4519
4546
|
if (!entries.length && this.properties.length) {
|
|
@@ -4532,8 +4559,8 @@ class PropertyEffectEditorComponent {
|
|
|
4532
4559
|
type: def.type,
|
|
4533
4560
|
value: def.type === 'boolean' ? true : undefined,
|
|
4534
4561
|
valueWhenFalse: undefined,
|
|
4535
|
-
jsonValue: def.type
|
|
4536
|
-
jsonValueWhenFalse: def.type
|
|
4562
|
+
jsonValue: this.isStructuredJsonType(def.type) ? '' : undefined,
|
|
4563
|
+
jsonValueWhenFalse: this.isStructuredJsonType(def.type) ? '' : undefined,
|
|
4537
4564
|
};
|
|
4538
4565
|
}
|
|
4539
4566
|
buildConfigFromEntries() {
|
|
@@ -4561,7 +4588,7 @@ class PropertyEffectEditorComponent {
|
|
|
4561
4588
|
}
|
|
4562
4589
|
normalizeValue(entry, branch) {
|
|
4563
4590
|
const type = entry.type;
|
|
4564
|
-
const raw = type
|
|
4591
|
+
const raw = this.isStructuredJsonType(type)
|
|
4565
4592
|
? branch === 'true'
|
|
4566
4593
|
? entry.jsonValue
|
|
4567
4594
|
: entry.jsonValueWhenFalse
|
|
@@ -4593,8 +4620,9 @@ class PropertyEffectEditorComponent {
|
|
|
4593
4620
|
}
|
|
4594
4621
|
case 'string':
|
|
4595
4622
|
return { ok: true, value: String(raw) };
|
|
4623
|
+
case 'array':
|
|
4596
4624
|
default: {
|
|
4597
|
-
const parsedResult = this.parseObject(raw, entry.property);
|
|
4625
|
+
const parsedResult = this.parseObject(raw, entry.property, type === 'array' ? 'array' : 'object');
|
|
4598
4626
|
if (!parsedResult.ok) {
|
|
4599
4627
|
return { ok: false, error: parsedResult.error || 'JSON inválido' };
|
|
4600
4628
|
}
|
|
@@ -4602,7 +4630,7 @@ class PropertyEffectEditorComponent {
|
|
|
4602
4630
|
}
|
|
4603
4631
|
}
|
|
4604
4632
|
}
|
|
4605
|
-
parseObject(raw, propertyName) {
|
|
4633
|
+
parseObject(raw, propertyName, expectedType = 'object') {
|
|
4606
4634
|
let value = raw;
|
|
4607
4635
|
if (typeof raw === 'string') {
|
|
4608
4636
|
try {
|
|
@@ -4612,6 +4640,11 @@ class PropertyEffectEditorComponent {
|
|
|
4612
4640
|
return { ok: false, error: 'JSON inválido' };
|
|
4613
4641
|
}
|
|
4614
4642
|
}
|
|
4643
|
+
if (expectedType === 'array') {
|
|
4644
|
+
return Array.isArray(value)
|
|
4645
|
+
? { ok: true, value }
|
|
4646
|
+
: { ok: false, error: 'Informe uma lista' };
|
|
4647
|
+
}
|
|
4615
4648
|
if (propertyName === 'options') {
|
|
4616
4649
|
if (Array.isArray(value)) {
|
|
4617
4650
|
return { ok: true, value: { items: value } };
|
|
@@ -4635,6 +4668,9 @@ class PropertyEffectEditorComponent {
|
|
|
4635
4668
|
return '';
|
|
4636
4669
|
}
|
|
4637
4670
|
}
|
|
4671
|
+
isStructuredJsonType(type) {
|
|
4672
|
+
return type === 'object' || type === 'array';
|
|
4673
|
+
}
|
|
4638
4674
|
signature(config) {
|
|
4639
4675
|
try {
|
|
4640
4676
|
return JSON.stringify(config || {});
|
|
@@ -4666,7 +4702,7 @@ class PropertyEffectEditorComponent {
|
|
|
4666
4702
|
</div>
|
|
4667
4703
|
}
|
|
4668
4704
|
|
|
4669
|
-
@for (entry of entries; track
|
|
4705
|
+
@for (entry of entries; track $index; let i = $index) {
|
|
4670
4706
|
<div
|
|
4671
4707
|
class="property-card"
|
|
4672
4708
|
[attr.data-testid]="'property-effect-entry-' + i"
|
|
@@ -4690,8 +4726,7 @@ class PropertyEffectEditorComponent {
|
|
|
4690
4726
|
(click)="$event.stopPropagation()"
|
|
4691
4727
|
autocomplete="off">
|
|
4692
4728
|
@if (searchControl.value) {
|
|
4693
|
-
<button matSuffix
|
|
4694
|
-
<mat-icon>close</mat-icon>
|
|
4729
|
+
<button matSuffix praxisIconButton="close" size="dense" aria-label="Limpar" (click)="clearSearch($event)">
|
|
4695
4730
|
</button>
|
|
4696
4731
|
}
|
|
4697
4732
|
</mat-form-field>
|
|
@@ -4716,25 +4751,24 @@ class PropertyEffectEditorComponent {
|
|
|
4716
4751
|
</mat-select>
|
|
4717
4752
|
@if (getDefinition(entry.property)?.description) {
|
|
4718
4753
|
<button
|
|
4719
|
-
|
|
4754
|
+
praxisIconButton="help_outline"
|
|
4755
|
+
size="dense"
|
|
4720
4756
|
matSuffix
|
|
4721
|
-
class="help-icon-button"
|
|
4722
4757
|
type="button"
|
|
4723
4758
|
[matTooltip]="getDefinition(entry.property)?.description"
|
|
4724
4759
|
matTooltipPosition="above"
|
|
4725
4760
|
>
|
|
4726
|
-
<mat-icon>help_outline</mat-icon>
|
|
4727
4761
|
</button>
|
|
4728
4762
|
}
|
|
4729
4763
|
</mat-form-field>
|
|
4730
4764
|
<button
|
|
4731
|
-
|
|
4732
|
-
|
|
4765
|
+
praxisIconButton="delete"
|
|
4766
|
+
size="dense"
|
|
4767
|
+
class="danger-action"
|
|
4733
4768
|
(click)="removeEntry(i)"
|
|
4734
4769
|
[disabled]="entries.length === 1 && !canAddEntry()"
|
|
4735
4770
|
matTooltip="Remover propriedade"
|
|
4736
4771
|
>
|
|
4737
|
-
<mat-icon>delete</mat-icon>
|
|
4738
4772
|
</button>
|
|
4739
4773
|
</div>
|
|
4740
4774
|
@if (entry.property) {
|
|
@@ -4743,12 +4777,12 @@ class PropertyEffectEditorComponent {
|
|
|
4743
4777
|
<div class="value-label">
|
|
4744
4778
|
Valor quando verdadeiro
|
|
4745
4779
|
<button
|
|
4746
|
-
|
|
4780
|
+
praxisIconButton="backspace"
|
|
4781
|
+
size="dense"
|
|
4747
4782
|
type="button"
|
|
4748
4783
|
(click)="clearValue(entry, 'true')"
|
|
4749
4784
|
matTooltip="Limpar (usa padrão / null)"
|
|
4750
4785
|
>
|
|
4751
|
-
<mat-icon>backspace</mat-icon>
|
|
4752
4786
|
</button>
|
|
4753
4787
|
</div>
|
|
4754
4788
|
@switch (entry.type) {
|
|
@@ -4836,12 +4870,12 @@ class PropertyEffectEditorComponent {
|
|
|
4836
4870
|
<div class="value-label">
|
|
4837
4871
|
Valor quando falso (opcional)
|
|
4838
4872
|
<button
|
|
4839
|
-
|
|
4873
|
+
praxisIconButton="backspace"
|
|
4874
|
+
size="dense"
|
|
4840
4875
|
type="button"
|
|
4841
4876
|
(click)="clearValue(entry, 'false')"
|
|
4842
4877
|
matTooltip="Limpar (usa padrão / null)"
|
|
4843
4878
|
>
|
|
4844
|
-
<mat-icon>backspace</mat-icon>
|
|
4845
4879
|
</button>
|
|
4846
4880
|
</div>
|
|
4847
4881
|
@switch (entry.type) {
|
|
@@ -4948,7 +4982,7 @@ class PropertyEffectEditorComponent {
|
|
|
4948
4982
|
</div>
|
|
4949
4983
|
}
|
|
4950
4984
|
</div>
|
|
4951
|
-
`, isInline: true, styles: [".property-effect-editor{display:flex;flex-direction:column;gap:16px}.header{display:flex;align-items:center;justify-content:space-between;gap:8px}.title{font-weight:600}.property-card{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-row{display:flex;gap:8px;align-items:center}.field{flex:1}.value-columns{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-top:12px}.value-block{display:flex;flex-direction:column;gap:8px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:8px;background:var(--md-sys-color-surface-container-low)}.value-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:600;color:var(--md-sys-color-on-surface-variant)}.preview{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:8px}.preview-title{font-size:14px;font-weight:600;margin-bottom:8px}.preview-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}.preview-pane{border:1px solid var(--md-sys-color-outline-variant);border-radius:6px;padding:8px;background:var(--md-sys-color-surface-container)}.pane-label{font-size:12px;color:var(--md-sys-color-on-surface-variant);margin-bottom:4px}pre{margin:0;background:transparent;font-size:12px;line-height:1.4}.empty{color:var(--md-sys-color-on-surface-variant);font-size:13px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:6px}.w-100{width:100%}.select-search-container{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface-container-lowest, #fff);padding:8px 16px;border-bottom:1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12))}.search-input-field{width:100%}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.option-content{display:flex;flex-direction:column;line-height:1.2;padding:4px 0}.option-label{font-weight:500}.option-id{font-size:11px;opacity:.6}.no-results{font-style:italic;font-size:13px;text-align:center}.
|
|
4985
|
+
`, isInline: true, styles: [".property-effect-editor{display:flex;flex-direction:column;gap:16px}.header{display:flex;align-items:center;justify-content:space-between;gap:8px}.title{font-weight:600}.property-card{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-row{display:flex;gap:8px;align-items:center}.field{flex:1}.value-columns{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-top:12px}.value-block{display:flex;flex-direction:column;gap:8px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:8px;background:var(--md-sys-color-surface-container-low)}.value-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:600;color:var(--md-sys-color-on-surface-variant)}.preview{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:8px}.preview-title{font-size:14px;font-weight:600;margin-bottom:8px}.preview-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}.preview-pane{border:1px solid var(--md-sys-color-outline-variant);border-radius:6px;padding:8px;background:var(--md-sys-color-surface-container)}.pane-label{font-size:12px;color:var(--md-sys-color-on-surface-variant);margin-bottom:4px}pre{margin:0;background:transparent;font-size:12px;line-height:1.4}.empty{color:var(--md-sys-color-on-surface-variant);font-size:13px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:6px}.w-100{width:100%}.select-search-container{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface-container-lowest, #fff);padding:8px 16px;border-bottom:1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12))}.search-input-field{width:100%}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.option-content{display:flex;flex-direction:column;line-height:1.2;padding:4px 0}.option-label{font-weight:500}.option-id{font-size:11px;opacity:.6}.no-results{font-style:italic;font-size:13px;text-align:center}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i7$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i7$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "pipe", type: i12$1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4952
4986
|
}
|
|
4953
4987
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PropertyEffectEditorComponent, decorators: [{
|
|
4954
4988
|
type: Component,
|
|
@@ -4963,6 +4997,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
4963
4997
|
MatIconModule,
|
|
4964
4998
|
MatTooltipModule,
|
|
4965
4999
|
MatButtonToggleModule,
|
|
5000
|
+
PraxisIconButtonComponent,
|
|
4966
5001
|
], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
4967
5002
|
<div class="property-effect-editor" data-testid="property-effect-editor">
|
|
4968
5003
|
<div class="header">
|
|
@@ -4985,7 +5020,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
4985
5020
|
</div>
|
|
4986
5021
|
}
|
|
4987
5022
|
|
|
4988
|
-
@for (entry of entries; track
|
|
5023
|
+
@for (entry of entries; track $index; let i = $index) {
|
|
4989
5024
|
<div
|
|
4990
5025
|
class="property-card"
|
|
4991
5026
|
[attr.data-testid]="'property-effect-entry-' + i"
|
|
@@ -5009,8 +5044,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
5009
5044
|
(click)="$event.stopPropagation()"
|
|
5010
5045
|
autocomplete="off">
|
|
5011
5046
|
@if (searchControl.value) {
|
|
5012
|
-
<button matSuffix
|
|
5013
|
-
<mat-icon>close</mat-icon>
|
|
5047
|
+
<button matSuffix praxisIconButton="close" size="dense" aria-label="Limpar" (click)="clearSearch($event)">
|
|
5014
5048
|
</button>
|
|
5015
5049
|
}
|
|
5016
5050
|
</mat-form-field>
|
|
@@ -5035,25 +5069,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
5035
5069
|
</mat-select>
|
|
5036
5070
|
@if (getDefinition(entry.property)?.description) {
|
|
5037
5071
|
<button
|
|
5038
|
-
|
|
5072
|
+
praxisIconButton="help_outline"
|
|
5073
|
+
size="dense"
|
|
5039
5074
|
matSuffix
|
|
5040
|
-
class="help-icon-button"
|
|
5041
5075
|
type="button"
|
|
5042
5076
|
[matTooltip]="getDefinition(entry.property)?.description"
|
|
5043
5077
|
matTooltipPosition="above"
|
|
5044
5078
|
>
|
|
5045
|
-
<mat-icon>help_outline</mat-icon>
|
|
5046
5079
|
</button>
|
|
5047
5080
|
}
|
|
5048
5081
|
</mat-form-field>
|
|
5049
5082
|
<button
|
|
5050
|
-
|
|
5051
|
-
|
|
5083
|
+
praxisIconButton="delete"
|
|
5084
|
+
size="dense"
|
|
5085
|
+
class="danger-action"
|
|
5052
5086
|
(click)="removeEntry(i)"
|
|
5053
5087
|
[disabled]="entries.length === 1 && !canAddEntry()"
|
|
5054
5088
|
matTooltip="Remover propriedade"
|
|
5055
5089
|
>
|
|
5056
|
-
<mat-icon>delete</mat-icon>
|
|
5057
5090
|
</button>
|
|
5058
5091
|
</div>
|
|
5059
5092
|
@if (entry.property) {
|
|
@@ -5062,12 +5095,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
5062
5095
|
<div class="value-label">
|
|
5063
5096
|
Valor quando verdadeiro
|
|
5064
5097
|
<button
|
|
5065
|
-
|
|
5098
|
+
praxisIconButton="backspace"
|
|
5099
|
+
size="dense"
|
|
5066
5100
|
type="button"
|
|
5067
5101
|
(click)="clearValue(entry, 'true')"
|
|
5068
5102
|
matTooltip="Limpar (usa padrão / null)"
|
|
5069
5103
|
>
|
|
5070
|
-
<mat-icon>backspace</mat-icon>
|
|
5071
5104
|
</button>
|
|
5072
5105
|
</div>
|
|
5073
5106
|
@switch (entry.type) {
|
|
@@ -5155,12 +5188,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
5155
5188
|
<div class="value-label">
|
|
5156
5189
|
Valor quando falso (opcional)
|
|
5157
5190
|
<button
|
|
5158
|
-
|
|
5191
|
+
praxisIconButton="backspace"
|
|
5192
|
+
size="dense"
|
|
5159
5193
|
type="button"
|
|
5160
5194
|
(click)="clearValue(entry, 'false')"
|
|
5161
5195
|
matTooltip="Limpar (usa padrão / null)"
|
|
5162
5196
|
>
|
|
5163
|
-
<mat-icon>backspace</mat-icon>
|
|
5164
5197
|
</button>
|
|
5165
5198
|
</div>
|
|
5166
5199
|
@switch (entry.type) {
|
|
@@ -5267,7 +5300,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
5267
5300
|
</div>
|
|
5268
5301
|
}
|
|
5269
5302
|
</div>
|
|
5270
|
-
`, styles: [".property-effect-editor{display:flex;flex-direction:column;gap:16px}.header{display:flex;align-items:center;justify-content:space-between;gap:8px}.title{font-weight:600}.property-card{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-row{display:flex;gap:8px;align-items:center}.field{flex:1}.value-columns{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-top:12px}.value-block{display:flex;flex-direction:column;gap:8px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:8px;background:var(--md-sys-color-surface-container-low)}.value-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:600;color:var(--md-sys-color-on-surface-variant)}.preview{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:8px}.preview-title{font-size:14px;font-weight:600;margin-bottom:8px}.preview-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}.preview-pane{border:1px solid var(--md-sys-color-outline-variant);border-radius:6px;padding:8px;background:var(--md-sys-color-surface-container)}.pane-label{font-size:12px;color:var(--md-sys-color-on-surface-variant);margin-bottom:4px}pre{margin:0;background:transparent;font-size:12px;line-height:1.4}.empty{color:var(--md-sys-color-on-surface-variant);font-size:13px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:6px}.w-100{width:100%}.select-search-container{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface-container-lowest, #fff);padding:8px 16px;border-bottom:1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12))}.search-input-field{width:100%}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.option-content{display:flex;flex-direction:column;line-height:1.2;padding:4px 0}.option-label{font-weight:500}.option-id{font-size:11px;opacity:.6}.no-results{font-style:italic;font-size:13px;text-align:center}.
|
|
5303
|
+
`, styles: [".property-effect-editor{display:flex;flex-direction:column;gap:16px}.header{display:flex;align-items:center;justify-content:space-between;gap:8px}.title{font-weight:600}.property-card{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-row{display:flex;gap:8px;align-items:center}.field{flex:1}.value-columns{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-top:12px}.value-block{display:flex;flex-direction:column;gap:8px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:8px;background:var(--md-sys-color-surface-container-low)}.value-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:600;color:var(--md-sys-color-on-surface-variant)}.preview{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:8px}.preview-title{font-size:14px;font-weight:600;margin-bottom:8px}.preview-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}.preview-pane{border:1px solid var(--md-sys-color-outline-variant);border-radius:6px;padding:8px;background:var(--md-sys-color-surface-container)}.pane-label{font-size:12px;color:var(--md-sys-color-on-surface-variant);margin-bottom:4px}pre{margin:0;background:transparent;font-size:12px;line-height:1.4}.empty{color:var(--md-sys-color-on-surface-variant);font-size:13px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:6px}.w-100{width:100%}.select-search-container{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface-container-lowest, #fff);padding:8px 16px;border-bottom:1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12))}.search-input-field{width:100%}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.option-content{display:flex;flex-direction:column;line-height:1.2;padding:4px 0}.option-label{font-weight:500}.option-id{font-size:11px;opacity:.6}.no-results{font-style:italic;font-size:13px;text-align:center}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
|
|
5271
5304
|
}], propDecorators: { properties: [{
|
|
5272
5305
|
type: Input
|
|
5273
5306
|
}], initialConfig: [{
|
|
@@ -5279,6 +5312,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
5279
5312
|
args: ['searchInput']
|
|
5280
5313
|
}] } });
|
|
5281
5314
|
|
|
5315
|
+
const VISUAL_SAFE_OPERATORS = new Set([
|
|
5316
|
+
'equals',
|
|
5317
|
+
'notEquals',
|
|
5318
|
+
'greaterThan',
|
|
5319
|
+
'greaterThanOrEqual',
|
|
5320
|
+
'lessThan',
|
|
5321
|
+
'lessThanOrEqual',
|
|
5322
|
+
'contains',
|
|
5323
|
+
'startsWith',
|
|
5324
|
+
'endsWith',
|
|
5325
|
+
'in',
|
|
5326
|
+
]);
|
|
5282
5327
|
class FieldConditionEditorComponent {
|
|
5283
5328
|
fb;
|
|
5284
5329
|
config = null;
|
|
@@ -5384,34 +5429,40 @@ class FieldConditionEditorComponent {
|
|
|
5384
5429
|
const normalizedFieldName = this.normalizeFieldName(this.config.fieldName);
|
|
5385
5430
|
const resolvedField = this.resolveFieldSchema(normalizedFieldName) || null;
|
|
5386
5431
|
const formFieldName = resolvedField?.name || normalizedFieldName;
|
|
5432
|
+
const valueType = this.normalizeValueTypeForVisualEditor(this.config.valueType);
|
|
5387
5433
|
this.conditionForm.patchValue({
|
|
5388
5434
|
fieldName: formFieldName || '',
|
|
5389
5435
|
operator: normalizedOperator || '',
|
|
5390
|
-
value:
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
|
|
5436
|
+
value: valueType === 'literal' && this.config.value !== undefined
|
|
5437
|
+
? this.config.value
|
|
5438
|
+
: '',
|
|
5439
|
+
valueType,
|
|
5440
|
+
compareToField: valueType === 'field' ? this.config.compareToField || '' : '',
|
|
5441
|
+
contextVariable: '',
|
|
5442
|
+
functionName: '',
|
|
5394
5443
|
});
|
|
5444
|
+
this.valueType = valueType;
|
|
5395
5445
|
if (formFieldName) {
|
|
5396
5446
|
this.onFieldChanged(formFieldName);
|
|
5397
5447
|
}
|
|
5398
5448
|
const opCtrl = this.conditionForm.get('operator');
|
|
5399
5449
|
if (opCtrl) {
|
|
5400
|
-
this.selectedOperator = opCtrl.value;
|
|
5450
|
+
this.selectedOperator = opCtrl.value || null;
|
|
5401
5451
|
}
|
|
5402
5452
|
}
|
|
5403
5453
|
emitConfigChange() {
|
|
5404
5454
|
if (!this.conditionForm.valid)
|
|
5405
5455
|
return;
|
|
5406
5456
|
const formValue = this.conditionForm.value;
|
|
5457
|
+
const valueType = this.normalizeValueTypeForVisualEditor(formValue.valueType);
|
|
5407
5458
|
const config = {
|
|
5408
5459
|
type: 'fieldCondition',
|
|
5409
5460
|
fieldName: formValue.fieldName,
|
|
5410
5461
|
operator: formValue.operator,
|
|
5411
|
-
value: this.processValue(formValue.value),
|
|
5412
|
-
valueType
|
|
5413
|
-
compareToField: formValue.compareToField,
|
|
5414
|
-
contextVariable:
|
|
5462
|
+
value: valueType === 'literal' ? this.processValue(formValue.value) : null,
|
|
5463
|
+
valueType,
|
|
5464
|
+
compareToField: valueType === 'field' ? formValue.compareToField : '',
|
|
5465
|
+
contextVariable: '',
|
|
5415
5466
|
};
|
|
5416
5467
|
this.configChanged.emit(config);
|
|
5417
5468
|
}
|
|
@@ -5487,6 +5538,9 @@ class FieldConditionEditorComponent {
|
|
|
5487
5538
|
return operator;
|
|
5488
5539
|
}
|
|
5489
5540
|
}
|
|
5541
|
+
normalizeValueTypeForVisualEditor(valueType) {
|
|
5542
|
+
return valueType === 'field' ? 'field' : 'literal';
|
|
5543
|
+
}
|
|
5490
5544
|
// Template methods
|
|
5491
5545
|
getFieldIcon(type) {
|
|
5492
5546
|
const icons = {
|
|
@@ -5644,8 +5698,7 @@ class FieldConditionEditorComponent {
|
|
|
5644
5698
|
}
|
|
5645
5699
|
this.selectedField = resolvedField;
|
|
5646
5700
|
if (this.selectedField) {
|
|
5647
|
-
this.availableOperators =
|
|
5648
|
-
FIELD_TYPE_OPERATORS[this.selectedField.type] || [];
|
|
5701
|
+
this.availableOperators = (FIELD_TYPE_OPERATORS[this.selectedField.type] || []).filter((operator) => VISUAL_SAFE_OPERATORS.has(operator));
|
|
5649
5702
|
// Reset operator if not compatible
|
|
5650
5703
|
const currentOperator = this.conditionForm.get('operator')?.value;
|
|
5651
5704
|
if (currentOperator &&
|
|
@@ -5664,9 +5717,10 @@ class FieldConditionEditorComponent {
|
|
|
5664
5717
|
this.conditionForm.patchValue({ value: '' });
|
|
5665
5718
|
}
|
|
5666
5719
|
onValueTypeChanged(event) {
|
|
5667
|
-
this.valueType = event.value;
|
|
5720
|
+
this.valueType = this.normalizeValueTypeForVisualEditor(event.value);
|
|
5668
5721
|
// Reset related fields
|
|
5669
5722
|
this.conditionForm.patchValue({
|
|
5723
|
+
valueType: this.valueType,
|
|
5670
5724
|
value: '',
|
|
5671
5725
|
compareToField: '',
|
|
5672
5726
|
contextVariable: '',
|
|
@@ -5689,6 +5743,11 @@ class FieldConditionEditorComponent {
|
|
|
5689
5743
|
const valueType = this.conditionForm.get('valueType')?.value;
|
|
5690
5744
|
const valueControl = this.conditionForm.get('value');
|
|
5691
5745
|
const valueProvided = valueControl && valueControl.value !== undefined && valueControl.value !== '';
|
|
5746
|
+
const normalizedValueType = this.normalizeValueTypeForVisualEditor(valueType);
|
|
5747
|
+
if (valueType !== normalizedValueType) {
|
|
5748
|
+
errors.push('Tipo de valor disponivel apenas por JSON avancado');
|
|
5749
|
+
return errors;
|
|
5750
|
+
}
|
|
5692
5751
|
switch (valueType) {
|
|
5693
5752
|
case 'literal':
|
|
5694
5753
|
if (!valueProvided) {
|
|
@@ -5745,8 +5804,7 @@ class FieldConditionEditorComponent {
|
|
|
5745
5804
|
(click)="$event.stopPropagation()"
|
|
5746
5805
|
autocomplete="off">
|
|
5747
5806
|
@if (searchControl.value) {
|
|
5748
|
-
<button matSuffix
|
|
5749
|
-
<mat-icon>close</mat-icon>
|
|
5807
|
+
<button matSuffix praxisIconButton="close" size="dense" aria-label="Limpar" (click)="clearSearch($event)">
|
|
5750
5808
|
</button>
|
|
5751
5809
|
}
|
|
5752
5810
|
</mat-form-field>
|
|
@@ -5785,14 +5843,13 @@ class FieldConditionEditorComponent {
|
|
|
5785
5843
|
</mat-select>
|
|
5786
5844
|
@if (selectedField?.description) {
|
|
5787
5845
|
<button
|
|
5788
|
-
|
|
5846
|
+
praxisIconButton="help_outline"
|
|
5847
|
+
size="dense"
|
|
5789
5848
|
matSuffix
|
|
5790
|
-
class="help-icon-button"
|
|
5791
5849
|
type="button"
|
|
5792
5850
|
[matTooltip]="selectedField?.description"
|
|
5793
5851
|
matTooltipPosition="above"
|
|
5794
5852
|
>
|
|
5795
|
-
<mat-icon>help_outline</mat-icon>
|
|
5796
5853
|
</button>
|
|
5797
5854
|
}
|
|
5798
5855
|
</mat-form-field>
|
|
@@ -5825,8 +5882,8 @@ class FieldConditionEditorComponent {
|
|
|
5825
5882
|
>
|
|
5826
5883
|
<mat-option value="literal">Valor digitado</mat-option>
|
|
5827
5884
|
<mat-option value="field">Outro campo</mat-option>
|
|
5828
|
-
<mat-option value="context">
|
|
5829
|
-
<mat-option value="function">
|
|
5885
|
+
<mat-option value="context" disabled>Contexto (JSON-only)</mat-option>
|
|
5886
|
+
<mat-option value="function" disabled>Função (JSON-only)</mat-option>
|
|
5830
5887
|
</mat-select>
|
|
5831
5888
|
</mat-form-field>
|
|
5832
5889
|
@switch (valueType) {
|
|
@@ -5845,14 +5902,13 @@ class FieldConditionEditorComponent {
|
|
|
5845
5902
|
[placeholder]="getValuePlaceholder()"
|
|
5846
5903
|
/>
|
|
5847
5904
|
<button
|
|
5848
|
-
|
|
5905
|
+
praxisIconButton="help_outline"
|
|
5906
|
+
size="dense"
|
|
5849
5907
|
matSuffix
|
|
5850
|
-
class="help-icon-button"
|
|
5851
5908
|
type="button"
|
|
5852
5909
|
[matTooltip]="getValueHint()"
|
|
5853
5910
|
matTooltipPosition="above"
|
|
5854
5911
|
>
|
|
5855
|
-
<mat-icon>help_outline</mat-icon>
|
|
5856
5912
|
</button>
|
|
5857
5913
|
</mat-form-field>
|
|
5858
5914
|
}
|
|
@@ -5978,15 +6034,6 @@ class FieldConditionEditorComponent {
|
|
|
5978
6034
|
</div>
|
|
5979
6035
|
}
|
|
5980
6036
|
|
|
5981
|
-
<!-- Ações -->
|
|
5982
|
-
<div class="actions-col">
|
|
5983
|
-
<button mat-icon-button type="button" aria-label="Duplicar" matTooltip="Duplicar (placeholder)">
|
|
5984
|
-
<mat-icon>content_copy</mat-icon>
|
|
5985
|
-
</button>
|
|
5986
|
-
<button mat-icon-button type="button" aria-label="Excluir" matTooltip="Excluir (placeholder)">
|
|
5987
|
-
<mat-icon>delete</mat-icon>
|
|
5988
|
-
</button>
|
|
5989
|
-
</div>
|
|
5990
6037
|
</div>
|
|
5991
6038
|
|
|
5992
6039
|
@if (!hasFieldOptions()) {
|
|
@@ -6012,7 +6059,7 @@ class FieldConditionEditorComponent {
|
|
|
6012
6059
|
</div>
|
|
6013
6060
|
}
|
|
6014
6061
|
</form>
|
|
6015
|
-
`, isInline: true, styles: [".field-condition-form{display:flex;flex-direction:column;gap:8px;min-width:300px;background:var(--md-sys-color-surface-container-low);border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:8px 10px;overflow:visible}.condition-row-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:4px}.condition-title{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--md-sys-color-on-surface)}.compact-grid{gap:12px}.condition-row{display:grid;grid-template-columns:minmax(180px,2fr) minmax(140px,1.5fr) minmax(220px,3fr) auto;gap:12px 4px;align-items:center}.compact-field{width:100%}.value-inline{display:grid;grid-template-columns:1.2fr 2fr;gap:8px;align-items:center}.value-field{width:100%}.
|
|
6062
|
+
`, isInline: true, styles: [".field-condition-form{display:flex;flex-direction:column;gap:8px;min-width:300px;background:var(--md-sys-color-surface-container-low);border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:8px 10px;overflow:visible}.condition-row-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:4px}.condition-title{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--md-sys-color-on-surface)}.compact-grid{gap:12px}.condition-row{display:grid;grid-template-columns:minmax(180px,2fr) minmax(140px,1.5fr) minmax(220px,3fr) auto;gap:12px 4px;align-items:center}.compact-field{width:100%}.value-inline{display:grid;grid-template-columns:1.2fr 2fr;gap:8px;align-items:center}.value-field{width:100%}.field-option,.context-option,.function-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.select-search-container{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface-container-lowest, #fff);padding:8px 16px;border-bottom:1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12))}.search-input-field{width:100%}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.no-results{font-style:italic;font-size:13px;text-align:center}.field-info{flex:1;display:flex;flex-direction:column;line-height:1.2;overflow:hidden}.field-name{font-size:10px;opacity:.6}.variable-name{font-family:monospace;font-weight:500;color:var(--md-sys-color-secondary)}.variable-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.function-name{font-weight:500;color:var(--md-sys-color-tertiary)}.function-desc{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.boolean-inline{display:flex;align-items:center;padding:4px 0}.condition-preview{background:var(--md-sys-color-surface-container);border-radius:8px;padding:8px 12px;border-left:4px solid var(--md-sys-color-primary);margin-top:2px}.preview-label{font-size:12px;font-weight:500;color:var(--md-sys-color-on-surface-variant);margin-bottom:2px}.preview-text{font-family:monospace;font-size:14px;color:var(--md-sys-color-on-surface);background:var(--md-sys-color-surface);padding:6px 8px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant)}.error-row{display:inline-flex;align-items:center;gap:6px;background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);border:1px solid var(--md-sys-color-error);border-radius:8px;padding:4px 10px;font-size:12px;min-height:32px}@media(max-width:1024px){.condition-row{grid-template-columns:repeat(2,minmax(180px,1fr))}.value-inline{grid-template-columns:1fr}}@media(max-width:768px){.condition-row{grid-template-columns:1fr}}.no-fields-hint{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--md-sys-color-on-surface-variant);padding:8px 0}:host ::ng-deep .mat-mdc-select-panel{scrollbar-width:thin;scrollbar-color:var(--md-sys-color-on-surface-variant) transparent}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar{width:8px}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar-thumb{background-color:var(--md-sys-color-on-surface-variant);border-radius:8px}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar-track{background-color:transparent}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i7$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i7$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i7$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
6016
6063
|
}
|
|
6017
6064
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FieldConditionEditorComponent, decorators: [{
|
|
6018
6065
|
type: Component,
|
|
@@ -6028,7 +6075,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
6028
6075
|
MatNativeDateModule,
|
|
6029
6076
|
MatChipsModule,
|
|
6030
6077
|
MatAutocompleteModule,
|
|
6031
|
-
MatTooltipModule
|
|
6078
|
+
MatTooltipModule,
|
|
6079
|
+
PraxisIconButtonComponent,
|
|
6032
6080
|
], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
6033
6081
|
<form [formGroup]="conditionForm" class="field-condition-form compact-grid">
|
|
6034
6082
|
<div class="condition-row">
|
|
@@ -6053,8 +6101,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
6053
6101
|
(click)="$event.stopPropagation()"
|
|
6054
6102
|
autocomplete="off">
|
|
6055
6103
|
@if (searchControl.value) {
|
|
6056
|
-
<button matSuffix
|
|
6057
|
-
<mat-icon>close</mat-icon>
|
|
6104
|
+
<button matSuffix praxisIconButton="close" size="dense" aria-label="Limpar" (click)="clearSearch($event)">
|
|
6058
6105
|
</button>
|
|
6059
6106
|
}
|
|
6060
6107
|
</mat-form-field>
|
|
@@ -6093,14 +6140,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
6093
6140
|
</mat-select>
|
|
6094
6141
|
@if (selectedField?.description) {
|
|
6095
6142
|
<button
|
|
6096
|
-
|
|
6143
|
+
praxisIconButton="help_outline"
|
|
6144
|
+
size="dense"
|
|
6097
6145
|
matSuffix
|
|
6098
|
-
class="help-icon-button"
|
|
6099
6146
|
type="button"
|
|
6100
6147
|
[matTooltip]="selectedField?.description"
|
|
6101
6148
|
matTooltipPosition="above"
|
|
6102
6149
|
>
|
|
6103
|
-
<mat-icon>help_outline</mat-icon>
|
|
6104
6150
|
</button>
|
|
6105
6151
|
}
|
|
6106
6152
|
</mat-form-field>
|
|
@@ -6133,8 +6179,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
6133
6179
|
>
|
|
6134
6180
|
<mat-option value="literal">Valor digitado</mat-option>
|
|
6135
6181
|
<mat-option value="field">Outro campo</mat-option>
|
|
6136
|
-
<mat-option value="context">
|
|
6137
|
-
<mat-option value="function">
|
|
6182
|
+
<mat-option value="context" disabled>Contexto (JSON-only)</mat-option>
|
|
6183
|
+
<mat-option value="function" disabled>Função (JSON-only)</mat-option>
|
|
6138
6184
|
</mat-select>
|
|
6139
6185
|
</mat-form-field>
|
|
6140
6186
|
@switch (valueType) {
|
|
@@ -6153,14 +6199,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
6153
6199
|
[placeholder]="getValuePlaceholder()"
|
|
6154
6200
|
/>
|
|
6155
6201
|
<button
|
|
6156
|
-
|
|
6202
|
+
praxisIconButton="help_outline"
|
|
6203
|
+
size="dense"
|
|
6157
6204
|
matSuffix
|
|
6158
|
-
class="help-icon-button"
|
|
6159
6205
|
type="button"
|
|
6160
6206
|
[matTooltip]="getValueHint()"
|
|
6161
6207
|
matTooltipPosition="above"
|
|
6162
6208
|
>
|
|
6163
|
-
<mat-icon>help_outline</mat-icon>
|
|
6164
6209
|
</button>
|
|
6165
6210
|
</mat-form-field>
|
|
6166
6211
|
}
|
|
@@ -6286,15 +6331,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
6286
6331
|
</div>
|
|
6287
6332
|
}
|
|
6288
6333
|
|
|
6289
|
-
<!-- Ações -->
|
|
6290
|
-
<div class="actions-col">
|
|
6291
|
-
<button mat-icon-button type="button" aria-label="Duplicar" matTooltip="Duplicar (placeholder)">
|
|
6292
|
-
<mat-icon>content_copy</mat-icon>
|
|
6293
|
-
</button>
|
|
6294
|
-
<button mat-icon-button type="button" aria-label="Excluir" matTooltip="Excluir (placeholder)">
|
|
6295
|
-
<mat-icon>delete</mat-icon>
|
|
6296
|
-
</button>
|
|
6297
|
-
</div>
|
|
6298
6334
|
</div>
|
|
6299
6335
|
|
|
6300
6336
|
@if (!hasFieldOptions()) {
|
|
@@ -6320,7 +6356,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
6320
6356
|
</div>
|
|
6321
6357
|
}
|
|
6322
6358
|
</form>
|
|
6323
|
-
`, styles: [".field-condition-form{display:flex;flex-direction:column;gap:8px;min-width:300px;background:var(--md-sys-color-surface-container-low);border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:8px 10px;overflow:visible}.condition-row-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:4px}.condition-title{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--md-sys-color-on-surface)}.compact-grid{gap:12px}.condition-row{display:grid;grid-template-columns:minmax(180px,2fr) minmax(140px,1.5fr) minmax(220px,3fr) auto;gap:12px 4px;align-items:center}.compact-field{width:100%}.value-inline{display:grid;grid-template-columns:1.2fr 2fr;gap:8px;align-items:center}.value-field{width:100%}.
|
|
6359
|
+
`, styles: [".field-condition-form{display:flex;flex-direction:column;gap:8px;min-width:300px;background:var(--md-sys-color-surface-container-low);border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:8px 10px;overflow:visible}.condition-row-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:4px}.condition-title{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--md-sys-color-on-surface)}.compact-grid{gap:12px}.condition-row{display:grid;grid-template-columns:minmax(180px,2fr) minmax(140px,1.5fr) minmax(220px,3fr) auto;gap:12px 4px;align-items:center}.compact-field{width:100%}.value-inline{display:grid;grid-template-columns:1.2fr 2fr;gap:8px;align-items:center}.value-field{width:100%}.field-option,.context-option,.function-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.select-search-container{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface-container-lowest, #fff);padding:8px 16px;border-bottom:1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12))}.search-input-field{width:100%}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.no-results{font-style:italic;font-size:13px;text-align:center}.field-info{flex:1;display:flex;flex-direction:column;line-height:1.2;overflow:hidden}.field-name{font-size:10px;opacity:.6}.variable-name{font-family:monospace;font-weight:500;color:var(--md-sys-color-secondary)}.variable-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.function-name{font-weight:500;color:var(--md-sys-color-tertiary)}.function-desc{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.boolean-inline{display:flex;align-items:center;padding:4px 0}.condition-preview{background:var(--md-sys-color-surface-container);border-radius:8px;padding:8px 12px;border-left:4px solid var(--md-sys-color-primary);margin-top:2px}.preview-label{font-size:12px;font-weight:500;color:var(--md-sys-color-on-surface-variant);margin-bottom:2px}.preview-text{font-family:monospace;font-size:14px;color:var(--md-sys-color-on-surface);background:var(--md-sys-color-surface);padding:6px 8px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant)}.error-row{display:inline-flex;align-items:center;gap:6px;background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);border:1px solid var(--md-sys-color-error);border-radius:8px;padding:4px 10px;font-size:12px;min-height:32px}@media(max-width:1024px){.condition-row{grid-template-columns:repeat(2,minmax(180px,1fr))}.value-inline{grid-template-columns:1fr}}@media(max-width:768px){.condition-row{grid-template-columns:1fr}}.no-fields-hint{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--md-sys-color-on-surface-variant);padding:8px 0}:host ::ng-deep .mat-mdc-select-panel{scrollbar-width:thin;scrollbar-color:var(--md-sys-color-on-surface-variant) transparent}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar{width:8px}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar-thumb{background-color:var(--md-sys-color-on-surface-variant);border-radius:8px}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar-track{background-color:transparent}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
|
|
6324
6360
|
}], ctorParameters: () => [{ type: i1$1.FormBuilder }], propDecorators: { config: [{
|
|
6325
6361
|
type: Input
|
|
6326
6362
|
}], fieldSchemas: [{
|
|
@@ -6699,132 +6735,132 @@ const PRAXIS_VISUAL_BUILDER_EN_US = {
|
|
|
6699
6735
|
|
|
6700
6736
|
const PRAXIS_VISUAL_BUILDER_PT_BR = {
|
|
6701
6737
|
'praxis.visualBuilder.expression.title': 'Editor de expressoes legadas',
|
|
6702
|
-
'praxis.visualBuilder.expression.tooltip.format': 'Formatar
|
|
6703
|
-
'praxis.visualBuilder.expression.tooltip.validate': 'Validar
|
|
6738
|
+
'praxis.visualBuilder.expression.tooltip.format': 'Formatar expressão',
|
|
6739
|
+
'praxis.visualBuilder.expression.tooltip.validate': 'Validar expressão',
|
|
6704
6740
|
'praxis.visualBuilder.expression.tooltip.help': 'Ajuda e exemplos',
|
|
6705
6741
|
'praxis.visualBuilder.expression.label.rules': 'Texto legado da regra',
|
|
6706
|
-
'praxis.visualBuilder.expression.validationTitle': 'Resultados da
|
|
6742
|
+
'praxis.visualBuilder.expression.validationTitle': 'Resultados da validação',
|
|
6707
6743
|
'praxis.visualBuilder.expression.validationIssues': 'Pontos a corrigir:',
|
|
6708
6744
|
'praxis.visualBuilder.expression.lineColumn': 'Linha {{line}}, Coluna {{column}}',
|
|
6709
|
-
'praxis.visualBuilder.expression.suggestion': '
|
|
6745
|
+
'praxis.visualBuilder.expression.suggestion': 'Sugestão:',
|
|
6710
6746
|
'praxis.visualBuilder.expression.performance': 'Desempenho:',
|
|
6711
|
-
'praxis.visualBuilder.expression.parseTime': 'Tempo de
|
|
6747
|
+
'praxis.visualBuilder.expression.parseTime': 'Tempo de análise:',
|
|
6712
6748
|
'praxis.visualBuilder.expression.complexity': 'Complexidade:',
|
|
6713
|
-
'praxis.visualBuilder.expression.generatedSpec': '
|
|
6714
|
-
'praxis.visualBuilder.expression.quickReference': '
|
|
6749
|
+
'praxis.visualBuilder.expression.generatedSpec': 'Especificação gerada:',
|
|
6750
|
+
'praxis.visualBuilder.expression.quickReference': 'Referência rápida',
|
|
6715
6751
|
'praxis.visualBuilder.expression.tab.operators': 'Operadores',
|
|
6716
|
-
'praxis.visualBuilder.expression.tab.functions': '
|
|
6717
|
-
'praxis.visualBuilder.expression.tab.variables': '
|
|
6718
|
-
'praxis.visualBuilder.expression.variablesScope': '
|
|
6719
|
-
'praxis.visualBuilder.expression.menu.toggleReference': 'Mostrar/ocultar
|
|
6752
|
+
'praxis.visualBuilder.expression.tab.functions': 'Funções',
|
|
6753
|
+
'praxis.visualBuilder.expression.tab.variables': 'Variáveis',
|
|
6754
|
+
'praxis.visualBuilder.expression.variablesScope': 'Variáveis ({{scope}})',
|
|
6755
|
+
'praxis.visualBuilder.expression.menu.toggleReference': 'Mostrar/ocultar referência rápida',
|
|
6720
6756
|
'praxis.visualBuilder.expression.menu.examples': 'Ver exemplos',
|
|
6721
|
-
'praxis.visualBuilder.expression.menu.docs': '
|
|
6757
|
+
'praxis.visualBuilder.expression.menu.docs': 'Documentação',
|
|
6722
6758
|
'praxis.visualBuilder.expression.placeholder': 'Digite o texto das regras (ex.: ${idade} > 18 && status == "ativo")',
|
|
6723
|
-
'praxis.visualBuilder.expression.group.logical': 'Operadores
|
|
6724
|
-
'praxis.visualBuilder.expression.group.comparison': 'Operadores de
|
|
6725
|
-
'praxis.visualBuilder.expression.op.and': 'E (AND)
|
|
6726
|
-
'praxis.visualBuilder.expression.op.or': 'OU (OR)
|
|
6727
|
-
'praxis.visualBuilder.expression.op.not': '
|
|
6759
|
+
'praxis.visualBuilder.expression.group.logical': 'Operadores lógicos',
|
|
6760
|
+
'praxis.visualBuilder.expression.group.comparison': 'Operadores de comparação',
|
|
6761
|
+
'praxis.visualBuilder.expression.op.and': 'E (AND) lógico',
|
|
6762
|
+
'praxis.visualBuilder.expression.op.or': 'OU (OR) lógico',
|
|
6763
|
+
'praxis.visualBuilder.expression.op.not': 'NÃO (NOT) lógico',
|
|
6728
6764
|
'praxis.visualBuilder.expression.op.xor': 'OU exclusivo (XOR)',
|
|
6729
|
-
'praxis.visualBuilder.expression.op.implies': 'Implica (se...
|
|
6765
|
+
'praxis.visualBuilder.expression.op.implies': 'Implica (se... então...)',
|
|
6730
6766
|
'praxis.visualBuilder.expression.op.eq': 'Igual a',
|
|
6731
6767
|
'praxis.visualBuilder.expression.op.neq': 'Diferente de',
|
|
6732
6768
|
'praxis.visualBuilder.expression.op.lt': 'Menor que',
|
|
6733
6769
|
'praxis.visualBuilder.expression.op.lte': 'Menor ou igual',
|
|
6734
6770
|
'praxis.visualBuilder.expression.op.gt': 'Maior que',
|
|
6735
6771
|
'praxis.visualBuilder.expression.op.gte': 'Maior ou igual',
|
|
6736
|
-
'praxis.visualBuilder.expression.op.in': '
|
|
6737
|
-
'praxis.visualBuilder.expression.group.textFunctions': '
|
|
6738
|
-
'praxis.visualBuilder.expression.group.listFunctions': '
|
|
6739
|
-
'praxis.visualBuilder.expression.group.conditionalFunctions': '
|
|
6740
|
-
'praxis.visualBuilder.expression.fn.contains': 'Verifica se o campo
|
|
6741
|
-
'praxis.visualBuilder.expression.fn.startsWith': 'Verifica se o campo
|
|
6772
|
+
'praxis.visualBuilder.expression.op.in': 'Contém o valor',
|
|
6773
|
+
'praxis.visualBuilder.expression.group.textFunctions': 'Funções de texto',
|
|
6774
|
+
'praxis.visualBuilder.expression.group.listFunctions': 'Funções para listas',
|
|
6775
|
+
'praxis.visualBuilder.expression.group.conditionalFunctions': 'Funções condicionais',
|
|
6776
|
+
'praxis.visualBuilder.expression.fn.contains': 'Verifica se o campo contém o valor',
|
|
6777
|
+
'praxis.visualBuilder.expression.fn.startsWith': 'Verifica se o campo começa com o prefixo',
|
|
6742
6778
|
'praxis.visualBuilder.expression.fn.endsWith': 'Verifica se o campo termina com o sufixo',
|
|
6743
6779
|
'praxis.visualBuilder.expression.fn.forEach': 'Todos os itens devem seguir a regra',
|
|
6744
|
-
'praxis.visualBuilder.expression.fn.uniqueBy': 'Os itens devem ser
|
|
6745
|
-
'praxis.visualBuilder.expression.fn.minLength': 'Tamanho
|
|
6746
|
-
'praxis.visualBuilder.expression.fn.maxLength': 'Tamanho
|
|
6747
|
-
'praxis.visualBuilder.expression.fn.requiredIf': 'Campo
|
|
6748
|
-
'praxis.visualBuilder.expression.fn.visibleIf': 'Campo
|
|
6749
|
-
'praxis.visualBuilder.expression.fn.disabledIf': 'Campo desabilitado quando a
|
|
6750
|
-
'praxis.visualBuilder.expression.fn.readonlyIf': 'Campo somente leitura quando a
|
|
6751
|
-
'praxis.visualBuilder.expression.error.parse': 'Erro ao interpretar a
|
|
6752
|
-
'praxis.visualBuilder.expression.error.validation': 'Erro de
|
|
6753
|
-
'praxis.visualBuilder.expression.hint.startTyping': 'Comece a digitar para ver
|
|
6754
|
-
'praxis.visualBuilder.expression.hint.valid': '
|
|
6780
|
+
'praxis.visualBuilder.expression.fn.uniqueBy': 'Os itens devem ser únicos pelo campo',
|
|
6781
|
+
'praxis.visualBuilder.expression.fn.minLength': 'Tamanho mínimo da lista',
|
|
6782
|
+
'praxis.visualBuilder.expression.fn.maxLength': 'Tamanho máximo da lista',
|
|
6783
|
+
'praxis.visualBuilder.expression.fn.requiredIf': 'Campo obrigatório quando a condição é verdadeira',
|
|
6784
|
+
'praxis.visualBuilder.expression.fn.visibleIf': 'Campo visível quando a condição é verdadeira',
|
|
6785
|
+
'praxis.visualBuilder.expression.fn.disabledIf': 'Campo desabilitado quando a condição é verdadeira',
|
|
6786
|
+
'praxis.visualBuilder.expression.fn.readonlyIf': 'Campo somente leitura quando a condição é verdadeira',
|
|
6787
|
+
'praxis.visualBuilder.expression.error.parse': 'Erro ao interpretar a expressão',
|
|
6788
|
+
'praxis.visualBuilder.expression.error.validation': 'Erro de validação',
|
|
6789
|
+
'praxis.visualBuilder.expression.hint.startTyping': 'Comece a digitar para ver sugestões...',
|
|
6790
|
+
'praxis.visualBuilder.expression.hint.valid': 'Expressão válida (complexidade {{complexity}})',
|
|
6755
6791
|
'praxis.visualBuilder.expression.hint.fixItems': '{{count}} ponto(s) para corrigir',
|
|
6756
6792
|
'praxis.visualBuilder.expression.hint.validating': 'Validando...',
|
|
6757
|
-
'praxis.visualBuilder.expression.summary.valid': '
|
|
6793
|
+
'praxis.visualBuilder.expression.summary.valid': 'Expressão válida e pronta para uso',
|
|
6758
6794
|
'praxis.visualBuilder.expression.summary.issues': '{{errors}} erro(s), {{warnings}} aviso(s)',
|
|
6759
6795
|
'praxis.visualBuilder.expression.operatorSuggestion': 'Operador {{value}}',
|
|
6760
6796
|
'praxis.visualBuilder.expression.keywordSuggestion': 'Palavra-chave {{value}}',
|
|
6761
6797
|
'praxis.visualBuilder.conditionalValidator.label.validatorType': 'Tipo de validador',
|
|
6762
6798
|
'praxis.visualBuilder.conditionalValidator.label.targetField': 'Campo alvo',
|
|
6763
|
-
'praxis.visualBuilder.conditionalValidator.label.logicOperator': 'Operador
|
|
6799
|
+
'praxis.visualBuilder.conditionalValidator.label.logicOperator': 'Operador lógico',
|
|
6764
6800
|
'praxis.visualBuilder.conditionalValidator.label.errorMessage': 'Mensagem de erro personalizada',
|
|
6765
|
-
'praxis.visualBuilder.conditionalValidator.label.animation': '
|
|
6766
|
-
'praxis.visualBuilder.conditionalValidator.label.disabledStyle': '
|
|
6801
|
+
'praxis.visualBuilder.conditionalValidator.label.animation': 'Animação ao ocultar/exibir',
|
|
6802
|
+
'praxis.visualBuilder.conditionalValidator.label.disabledStyle': 'Aparência quando desabilitado',
|
|
6767
6803
|
'praxis.visualBuilder.conditionalValidator.label.disabledMessage': 'Mensagem ao desabilitar',
|
|
6768
|
-
'praxis.visualBuilder.conditionalValidator.label.readonlyStyle': '
|
|
6769
|
-
'praxis.visualBuilder.conditionalValidator.label.logic': '
|
|
6770
|
-
'praxis.visualBuilder.conditionalValidator.type.requiredIf.label': '
|
|
6771
|
-
'praxis.visualBuilder.conditionalValidator.type.requiredIf.description': 'Campo
|
|
6772
|
-
'praxis.visualBuilder.conditionalValidator.type.visibleIf.label': '
|
|
6773
|
-
'praxis.visualBuilder.conditionalValidator.type.visibleIf.description': 'Campo aparece quando a
|
|
6804
|
+
'praxis.visualBuilder.conditionalValidator.label.readonlyStyle': 'Aparência em modo somente leitura',
|
|
6805
|
+
'praxis.visualBuilder.conditionalValidator.label.logic': 'Lógica:',
|
|
6806
|
+
'praxis.visualBuilder.conditionalValidator.type.requiredIf.label': 'Obrigatório se',
|
|
6807
|
+
'praxis.visualBuilder.conditionalValidator.type.requiredIf.description': 'Campo obrigatório quando a condição for atendida',
|
|
6808
|
+
'praxis.visualBuilder.conditionalValidator.type.visibleIf.label': 'Visível se',
|
|
6809
|
+
'praxis.visualBuilder.conditionalValidator.type.visibleIf.description': 'Campo aparece quando a condição for atendida',
|
|
6774
6810
|
'praxis.visualBuilder.conditionalValidator.type.disabledIf.label': 'Desabilitado se',
|
|
6775
|
-
'praxis.visualBuilder.conditionalValidator.type.disabledIf.description': 'Campo fica desabilitado quando a
|
|
6811
|
+
'praxis.visualBuilder.conditionalValidator.type.disabledIf.description': 'Campo fica desabilitado quando a condição for atendida',
|
|
6776
6812
|
'praxis.visualBuilder.conditionalValidator.type.readonlyIf.label': 'Somente leitura se',
|
|
6777
|
-
'praxis.visualBuilder.conditionalValidator.type.readonlyIf.description': 'Campo fica somente leitura quando a
|
|
6778
|
-
'praxis.visualBuilder.conditionalValidator.help.targetField': 'Escolha o campo que
|
|
6779
|
-
'praxis.visualBuilder.conditionalValidator.help.errorMessage': 'Substitui a mensagem
|
|
6780
|
-
'praxis.visualBuilder.conditionalValidator.section.condition': '
|
|
6781
|
-
'praxis.visualBuilder.conditionalValidator.section.validation': '
|
|
6782
|
-
'praxis.visualBuilder.conditionalValidator.section.uiBehavior': '
|
|
6783
|
-
'praxis.visualBuilder.conditionalValidator.section.preview': 'Pr
|
|
6784
|
-
'praxis.visualBuilder.conditionalValidator.mode.simple': '
|
|
6785
|
-
'praxis.visualBuilder.conditionalValidator.mode.advanced': '
|
|
6786
|
-
'praxis.visualBuilder.conditionalValidator.logic.and': 'E (AND) - todas as
|
|
6787
|
-
'praxis.visualBuilder.conditionalValidator.logic.or': 'OU (OR) - qualquer
|
|
6788
|
-
'praxis.visualBuilder.conditionalValidator.logic.not': '
|
|
6789
|
-
'praxis.visualBuilder.conditionalValidator.logic.xor': 'XOR - apenas uma
|
|
6790
|
-
'praxis.visualBuilder.conditionalValidator.action.addCondition': 'Adicionar
|
|
6791
|
-
'praxis.visualBuilder.conditionalValidator.placeholder.errorMessage': 'Este campo
|
|
6792
|
-
'praxis.visualBuilder.conditionalValidator.placeholder.disabledMessage': 'Este campo
|
|
6813
|
+
'praxis.visualBuilder.conditionalValidator.type.readonlyIf.description': 'Campo fica somente leitura quando a condição for atendida',
|
|
6814
|
+
'praxis.visualBuilder.conditionalValidator.help.targetField': 'Escolha o campo que será afetado por esta regra',
|
|
6815
|
+
'praxis.visualBuilder.conditionalValidator.help.errorMessage': 'Substitui a mensagem padrão exibida ao usuário',
|
|
6816
|
+
'praxis.visualBuilder.conditionalValidator.section.condition': 'Configuração da condição',
|
|
6817
|
+
'praxis.visualBuilder.conditionalValidator.section.validation': 'Configurações de validação',
|
|
6818
|
+
'praxis.visualBuilder.conditionalValidator.section.uiBehavior': 'Configurações de comportamento da interface',
|
|
6819
|
+
'praxis.visualBuilder.conditionalValidator.section.preview': 'Pré-visualização',
|
|
6820
|
+
'praxis.visualBuilder.conditionalValidator.mode.simple': 'Condição simples',
|
|
6821
|
+
'praxis.visualBuilder.conditionalValidator.mode.advanced': 'Lógica avançada',
|
|
6822
|
+
'praxis.visualBuilder.conditionalValidator.logic.and': 'E (AND) - todas as condições precisam ser verdadeiras',
|
|
6823
|
+
'praxis.visualBuilder.conditionalValidator.logic.or': 'OU (OR) - qualquer condição pode ser verdadeira',
|
|
6824
|
+
'praxis.visualBuilder.conditionalValidator.logic.not': 'NÃO (NOT) - a condição precisa ser falsa',
|
|
6825
|
+
'praxis.visualBuilder.conditionalValidator.logic.xor': 'XOR - apenas uma condição pode ser verdadeira',
|
|
6826
|
+
'praxis.visualBuilder.conditionalValidator.action.addCondition': 'Adicionar condição',
|
|
6827
|
+
'praxis.visualBuilder.conditionalValidator.placeholder.errorMessage': 'Este campo é obrigatório',
|
|
6828
|
+
'praxis.visualBuilder.conditionalValidator.placeholder.disabledMessage': 'Este campo está desabilitado no momento',
|
|
6793
6829
|
'praxis.visualBuilder.conditionalValidator.option.validateOnChange': 'Validar ao alterar o campo',
|
|
6794
6830
|
'praxis.visualBuilder.conditionalValidator.option.validateOnBlur': 'Validar ao sair do campo',
|
|
6795
|
-
'praxis.visualBuilder.conditionalValidator.option.showErrorImmediately': 'Exibir erro assim que a
|
|
6796
|
-
'praxis.visualBuilder.conditionalValidator.option.hideLabel': 'Ocultar
|
|
6797
|
-
'praxis.visualBuilder.conditionalValidator.option.preserveSpace': 'Preservar
|
|
6831
|
+
'praxis.visualBuilder.conditionalValidator.option.showErrorImmediately': 'Exibir erro assim que a condição for atendida',
|
|
6832
|
+
'praxis.visualBuilder.conditionalValidator.option.hideLabel': 'Ocultar rótulo do campo quando escondido',
|
|
6833
|
+
'praxis.visualBuilder.conditionalValidator.option.preserveSpace': 'Preservar espaço ao esconder',
|
|
6798
6834
|
'praxis.visualBuilder.conditionalValidator.option.clearOnDisable': 'Limpar valor ao desabilitar',
|
|
6799
6835
|
'praxis.visualBuilder.conditionalValidator.option.showDisabledMessage': 'Mostrar mensagem quando desabilitado',
|
|
6800
|
-
'praxis.visualBuilder.conditionalValidator.option.showReadonlyIndicator': 'Mostrar
|
|
6801
|
-
'praxis.visualBuilder.conditionalValidator.animation.none': 'Sem
|
|
6802
|
-
'praxis.visualBuilder.conditionalValidator.animation.fade': '
|
|
6836
|
+
'praxis.visualBuilder.conditionalValidator.option.showReadonlyIndicator': 'Mostrar ícone indicando somente leitura',
|
|
6837
|
+
'praxis.visualBuilder.conditionalValidator.animation.none': 'Sem animação',
|
|
6838
|
+
'praxis.visualBuilder.conditionalValidator.animation.fade': 'Transição suave (fade)',
|
|
6803
6839
|
'praxis.visualBuilder.conditionalValidator.animation.slide': 'Deslizante (vertical)',
|
|
6804
6840
|
'praxis.visualBuilder.conditionalValidator.animation.scale': 'Crescer/encolher',
|
|
6805
|
-
'praxis.visualBuilder.conditionalValidator.disabledStyle.default': '
|
|
6841
|
+
'praxis.visualBuilder.conditionalValidator.disabledStyle.default': 'Padrão (cinza)',
|
|
6806
6842
|
'praxis.visualBuilder.conditionalValidator.disabledStyle.faded': 'Esmaecido',
|
|
6807
6843
|
'praxis.visualBuilder.conditionalValidator.disabledStyle.hidden': 'Ocultar totalmente',
|
|
6808
|
-
'praxis.visualBuilder.conditionalValidator.readonlyStyle.default': '
|
|
6844
|
+
'praxis.visualBuilder.conditionalValidator.readonlyStyle.default': 'Padrão (não editável)',
|
|
6809
6845
|
'praxis.visualBuilder.conditionalValidator.readonlyStyle.display': 'Mostrar apenas o valor',
|
|
6810
6846
|
'praxis.visualBuilder.conditionalValidator.readonlyStyle.bordered': 'Valor com borda',
|
|
6811
6847
|
'praxis.visualBuilder.conditionalValidator.category.other': 'Outros',
|
|
6812
6848
|
'praxis.visualBuilder.conditionalValidator.selectField': 'Selecione um campo',
|
|
6813
|
-
'praxis.visualBuilder.conditionalValidator.summary.incomplete': 'Complete as
|
|
6814
|
-
'praxis.visualBuilder.conditionalValidator.summary.action.required': '
|
|
6815
|
-
'praxis.visualBuilder.conditionalValidator.summary.action.visible': '
|
|
6816
|
-
'praxis.visualBuilder.conditionalValidator.summary.action.disabled': '
|
|
6817
|
-
'praxis.visualBuilder.conditionalValidator.summary.action.readonly': '
|
|
6818
|
-
'praxis.visualBuilder.conditionalValidator.summary.simpleCondition': 'quando a
|
|
6819
|
-
'praxis.visualBuilder.conditionalValidator.summary.advancedCondition': 'quando as
|
|
6820
|
-
'praxis.visualBuilder.conditionalValidator.summary.logicPreview.one': '{{operator}} com 1
|
|
6821
|
-
'praxis.visualBuilder.conditionalValidator.summary.logicPreview.other': '{{operator}} com {{count}}
|
|
6849
|
+
'praxis.visualBuilder.conditionalValidator.summary.incomplete': 'Complete as informações da regra para ver o resumo',
|
|
6850
|
+
'praxis.visualBuilder.conditionalValidator.summary.action.required': 'ficará obrigatório',
|
|
6851
|
+
'praxis.visualBuilder.conditionalValidator.summary.action.visible': 'ficará visível',
|
|
6852
|
+
'praxis.visualBuilder.conditionalValidator.summary.action.disabled': 'ficará desabilitado',
|
|
6853
|
+
'praxis.visualBuilder.conditionalValidator.summary.action.readonly': 'ficará somente leitura',
|
|
6854
|
+
'praxis.visualBuilder.conditionalValidator.summary.simpleCondition': 'quando a condição for atendida',
|
|
6855
|
+
'praxis.visualBuilder.conditionalValidator.summary.advancedCondition': 'quando as condições ({{operator}}) forem atendidas',
|
|
6856
|
+
'praxis.visualBuilder.conditionalValidator.summary.logicPreview.one': '{{operator}} com 1 condição',
|
|
6857
|
+
'praxis.visualBuilder.conditionalValidator.summary.logicPreview.other': '{{operator}} com {{count}} condições',
|
|
6822
6858
|
'praxis.visualBuilder.conditionalValidator.error.validatorTypeRequired': 'Escolha o tipo de validador',
|
|
6823
|
-
'praxis.visualBuilder.conditionalValidator.error.targetFieldRequired': 'Informe o campo que
|
|
6824
|
-
'praxis.visualBuilder.conditionalValidator.error.conditionRequired': 'Adicione pelo menos uma
|
|
6859
|
+
'praxis.visualBuilder.conditionalValidator.error.targetFieldRequired': 'Informe o campo que será avaliado',
|
|
6860
|
+
'praxis.visualBuilder.conditionalValidator.error.conditionRequired': 'Adicione pelo menos uma condição',
|
|
6825
6861
|
'praxis.visualBuilder.ruleList.eyebrow': 'Regras',
|
|
6826
6862
|
'praxis.visualBuilder.ruleList.title': 'Regras',
|
|
6827
|
-
'praxis.visualBuilder.ruleList.subtitle': 'Visibilidade, estilo e comportamento em um fluxo
|
|
6863
|
+
'praxis.visualBuilder.ruleList.subtitle': 'Visibilidade, estilo e comportamento em um fluxo único.',
|
|
6828
6864
|
'praxis.visualBuilder.ruleList.headerCaption': 'ativas',
|
|
6829
6865
|
'praxis.visualBuilder.ruleList.searchPlaceholder': 'Buscar regras...',
|
|
6830
6866
|
'praxis.visualBuilder.ruleList.clearSearch': 'Limpar busca',
|
|
@@ -6833,11 +6869,11 @@ const PRAXIS_VISUAL_BUILDER_PT_BR = {
|
|
|
6833
6869
|
'praxis.visualBuilder.ruleList.aiButton': 'IA',
|
|
6834
6870
|
'praxis.visualBuilder.ruleList.listAria': 'Lista de regras',
|
|
6835
6871
|
'praxis.visualBuilder.ruleList.status.ready': 'Pronta',
|
|
6836
|
-
'praxis.visualBuilder.ruleList.status.valid': '
|
|
6872
|
+
'praxis.visualBuilder.ruleList.status.valid': 'Válida',
|
|
6837
6873
|
'praxis.visualBuilder.ruleList.status.incomplete': 'Incompleta',
|
|
6838
6874
|
'praxis.visualBuilder.ruleList.status.draft': 'Rascunho',
|
|
6839
6875
|
'praxis.visualBuilder.ruleList.status.error': 'Com erro',
|
|
6840
|
-
'praxis.visualBuilder.ruleList.summary.validLabel': '
|
|
6876
|
+
'praxis.visualBuilder.ruleList.summary.validLabel': 'Válidas',
|
|
6841
6877
|
'praxis.visualBuilder.ruleList.summary.incompleteLabel': 'Pendentes',
|
|
6842
6878
|
'praxis.visualBuilder.ruleList.summary.errorLabel': 'Com erro',
|
|
6843
6879
|
'praxis.visualBuilder.ruleList.filter.all': 'Todas',
|
|
@@ -6848,12 +6884,12 @@ const PRAXIS_VISUAL_BUILDER_PT_BR = {
|
|
|
6848
6884
|
'praxis.visualBuilder.ruleList.noResults': 'Nenhuma regra encontrada.',
|
|
6849
6885
|
'praxis.visualBuilder.ruleList.condition.with': 'Condicional',
|
|
6850
6886
|
'praxis.visualBuilder.ruleList.condition.without': 'Sempre',
|
|
6851
|
-
'praxis.visualBuilder.ruleList.condition.configured': '
|
|
6887
|
+
'praxis.visualBuilder.ruleList.condition.configured': 'Expressão configurada',
|
|
6852
6888
|
'praxis.visualBuilder.ruleList.targetType.fieldPlural': 'campos',
|
|
6853
|
-
'praxis.visualBuilder.ruleList.targetType.sectionPlural': '
|
|
6889
|
+
'praxis.visualBuilder.ruleList.targetType.sectionPlural': 'seções',
|
|
6854
6890
|
'praxis.visualBuilder.ruleList.targetType.rowPlural': 'linhas',
|
|
6855
6891
|
'praxis.visualBuilder.ruleList.targetType.columnPlural': 'colunas',
|
|
6856
|
-
'praxis.visualBuilder.ruleList.targetType.actionPlural': '
|
|
6892
|
+
'praxis.visualBuilder.ruleList.targetType.actionPlural': 'ações',
|
|
6857
6893
|
'praxis.visualBuilder.ruleList.targetType.visualBlockPlural': 'blocos visuais',
|
|
6858
6894
|
'praxis.visualBuilder.ruleList.target.none': 'Nenhum alvo',
|
|
6859
6895
|
'praxis.visualBuilder.ruleList.summary.when': 'Quando',
|
|
@@ -6873,98 +6909,98 @@ const PRAXIS_VISUAL_BUILDER_PT_BR = {
|
|
|
6873
6909
|
'praxis.visualBuilder.ruleList.summary.draft': 'Comece escolhendo um alvo e definindo o efeito principal.',
|
|
6874
6910
|
'praxis.visualBuilder.ruleList.summary.error': 'A regra precisa de ajuste antes de ser publicada.',
|
|
6875
6911
|
'praxis.visualBuilder.ruleList.insight.target': 'Alvo principal',
|
|
6876
|
-
'praxis.visualBuilder.ruleList.insight.condition': '
|
|
6912
|
+
'praxis.visualBuilder.ruleList.insight.condition': 'Condição',
|
|
6877
6913
|
'praxis.visualBuilder.ruleList.insight.effect': 'Efeito',
|
|
6878
6914
|
'praxis.visualBuilder.ruleList.effect.pending': 'Sem efeito',
|
|
6879
6915
|
'praxis.visualBuilder.ruleList.effect.whenFalse': 'quando falso',
|
|
6880
6916
|
'praxis.visualBuilder.ruleList.effect.visibleOn': 'mostrar',
|
|
6881
6917
|
'praxis.visualBuilder.ruleList.effect.visibleOff': 'ocultar',
|
|
6882
|
-
'praxis.visualBuilder.ruleList.effect.requiredOn': 'tornar
|
|
6918
|
+
'praxis.visualBuilder.ruleList.effect.requiredOn': 'tornar obrigatório',
|
|
6883
6919
|
'praxis.visualBuilder.ruleList.effect.requiredOff': 'tornar opcional',
|
|
6884
6920
|
'praxis.visualBuilder.ruleList.effect.disabledOn': 'desabilitar',
|
|
6885
6921
|
'praxis.visualBuilder.ruleList.effect.disabledOff': 'habilitar',
|
|
6886
6922
|
'praxis.visualBuilder.ruleList.effect.set': 'definir',
|
|
6887
6923
|
'praxis.visualBuilder.ruleList.time.now': 'Agora',
|
|
6888
|
-
'praxis.visualBuilder.ruleList.time.minute': 'min
|
|
6889
|
-
'praxis.visualBuilder.ruleList.time.minutes': 'min
|
|
6890
|
-
'praxis.visualBuilder.ruleList.time.hour': 'h
|
|
6891
|
-
'praxis.visualBuilder.ruleList.time.hours': 'h
|
|
6892
|
-
'praxis.visualBuilder.ruleList.time.day': 'dia
|
|
6893
|
-
'praxis.visualBuilder.ruleList.time.days': 'dias
|
|
6924
|
+
'praxis.visualBuilder.ruleList.time.minute': 'min atrás',
|
|
6925
|
+
'praxis.visualBuilder.ruleList.time.minutes': 'min atrás',
|
|
6926
|
+
'praxis.visualBuilder.ruleList.time.hour': 'h atrás',
|
|
6927
|
+
'praxis.visualBuilder.ruleList.time.hours': 'h atrás',
|
|
6928
|
+
'praxis.visualBuilder.ruleList.time.day': 'dia atrás',
|
|
6929
|
+
'praxis.visualBuilder.ruleList.time.days': 'dias atrás',
|
|
6894
6930
|
'praxis.visualBuilder.target.title': 'Alvos',
|
|
6895
6931
|
'praxis.visualBuilder.target.subtitle': 'Onde aplicar a regra',
|
|
6896
6932
|
'praxis.visualBuilder.target.description': 'Escolha um tipo de alvo e selecione os itens que a regra vai afetar.',
|
|
6897
6933
|
'praxis.visualBuilder.target.heroTitle': 'Selecione os alvos da regra',
|
|
6898
|
-
'praxis.visualBuilder.target.heroDescription': 'Defina onde esta regra
|
|
6899
|
-
'praxis.visualBuilder.target.heroHint': 'Escolha um tipo de alvo e selecione os elementos
|
|
6934
|
+
'praxis.visualBuilder.target.heroDescription': 'Defina onde esta regra será aplicada: campos, seções, linhas, colunas ou ações do formulário.',
|
|
6935
|
+
'praxis.visualBuilder.target.heroHint': 'Escolha um tipo de alvo e selecione os elementos específicos do formulário.',
|
|
6900
6936
|
'praxis.visualBuilder.target.selectTitle': 'Selecionar alvos',
|
|
6901
|
-
'praxis.visualBuilder.target.searchPlaceholder': 'Filtrar por
|
|
6937
|
+
'praxis.visualBuilder.target.searchPlaceholder': 'Filtrar por rótulo ou ID interno...',
|
|
6902
6938
|
'praxis.visualBuilder.target.searchClear': 'Limpar busca',
|
|
6903
6939
|
'praxis.visualBuilder.target.noResults': 'Nenhum alvo encontrado.',
|
|
6904
6940
|
'praxis.visualBuilder.target.selectedLabel': 'Alvos selecionados',
|
|
6905
6941
|
'praxis.visualBuilder.target.selectedSummary': 'selecionados',
|
|
6906
|
-
'praxis.visualBuilder.target.stats.available': '
|
|
6942
|
+
'praxis.visualBuilder.target.stats.available': 'disponíveis',
|
|
6907
6943
|
'praxis.visualBuilder.target.stats.selected': 'selecionados',
|
|
6908
|
-
'praxis.visualBuilder.target.group.availableSingular': '
|
|
6909
|
-
'praxis.visualBuilder.target.group.availablePlural': '
|
|
6944
|
+
'praxis.visualBuilder.target.group.availableSingular': 'disponível',
|
|
6945
|
+
'praxis.visualBuilder.target.group.availablePlural': 'disponíveis',
|
|
6910
6946
|
'praxis.visualBuilder.target.group.fields': 'Campos',
|
|
6911
6947
|
'praxis.visualBuilder.target.meta.internalId': 'ID interno',
|
|
6912
|
-
'praxis.visualBuilder.target.meta.scope': 'do
|
|
6948
|
+
'praxis.visualBuilder.target.meta.scope': 'do formulário',
|
|
6913
6949
|
'praxis.visualBuilder.target.type.field.label': 'Campo',
|
|
6914
6950
|
'praxis.visualBuilder.target.type.field.labelPlural': 'Campos',
|
|
6915
|
-
'praxis.visualBuilder.target.type.field.description': 'Campos
|
|
6916
|
-
'praxis.visualBuilder.target.type.section.label': '
|
|
6917
|
-
'praxis.visualBuilder.target.type.section.labelPlural': '
|
|
6918
|
-
'praxis.visualBuilder.target.type.section.description': '
|
|
6951
|
+
'praxis.visualBuilder.target.type.field.description': 'Campos específicos.',
|
|
6952
|
+
'praxis.visualBuilder.target.type.section.label': 'Seção',
|
|
6953
|
+
'praxis.visualBuilder.target.type.section.labelPlural': 'Seções',
|
|
6954
|
+
'praxis.visualBuilder.target.type.section.description': 'Seção inteira.',
|
|
6919
6955
|
'praxis.visualBuilder.target.type.row.label': 'Linha',
|
|
6920
6956
|
'praxis.visualBuilder.target.type.row.labelPlural': 'Linhas',
|
|
6921
6957
|
'praxis.visualBuilder.target.type.row.description': 'Linha do layout.',
|
|
6922
6958
|
'praxis.visualBuilder.target.type.column.label': 'Coluna',
|
|
6923
6959
|
'praxis.visualBuilder.target.type.column.labelPlural': 'Colunas',
|
|
6924
6960
|
'praxis.visualBuilder.target.type.column.description': 'Coluna do layout.',
|
|
6925
|
-
'praxis.visualBuilder.target.type.action.label': '
|
|
6926
|
-
'praxis.visualBuilder.target.type.action.labelPlural': '
|
|
6927
|
-
'praxis.visualBuilder.target.type.action.description': '
|
|
6961
|
+
'praxis.visualBuilder.target.type.action.label': 'Ação',
|
|
6962
|
+
'praxis.visualBuilder.target.type.action.labelPlural': 'Ações',
|
|
6963
|
+
'praxis.visualBuilder.target.type.action.description': 'Botões de ação.',
|
|
6928
6964
|
'praxis.visualBuilder.target.type.visualBlock.label': 'Bloco visual',
|
|
6929
6965
|
'praxis.visualBuilder.target.type.visualBlock.labelPlural': 'Blocos visuais',
|
|
6930
6966
|
'praxis.visualBuilder.target.type.visualBlock.description': 'Bloco editorial no layout.',
|
|
6931
6967
|
'praxis.visualBuilder.target.type.allPlural': 'Alvos',
|
|
6932
6968
|
'praxis.visualBuilder.ruleDefinition.step1.title': 'Alvos',
|
|
6933
6969
|
'praxis.visualBuilder.ruleDefinition.step1.subtitle': 'Onde aplicar',
|
|
6934
|
-
'praxis.visualBuilder.ruleDefinition.step1.question': 'Escolha onde essa regra entra em
|
|
6935
|
-
'praxis.visualBuilder.ruleDefinition.step2.title': '
|
|
6970
|
+
'praxis.visualBuilder.ruleDefinition.step1.question': 'Escolha onde essa regra entra em ação.',
|
|
6971
|
+
'praxis.visualBuilder.ruleDefinition.step2.title': 'Condição',
|
|
6936
6972
|
'praxis.visualBuilder.ruleDefinition.step2.subtitle': 'Quando executar',
|
|
6937
6973
|
'praxis.visualBuilder.ruleDefinition.step2.question': 'Quando a regra deve ser aplicada?',
|
|
6938
6974
|
'praxis.visualBuilder.ruleDefinition.step3.title': 'Efeitos',
|
|
6939
6975
|
'praxis.visualBuilder.ruleDefinition.step3.subtitle': 'O que fazer',
|
|
6940
|
-
'praxis.visualBuilder.ruleDefinition.step3.question': 'O que deve acontecer quando a
|
|
6941
|
-
'praxis.visualBuilder.ruleDefinition.step4.title': '
|
|
6976
|
+
'praxis.visualBuilder.ruleDefinition.step3.question': 'O que deve acontecer quando a condição for satisfeita?',
|
|
6977
|
+
'praxis.visualBuilder.ruleDefinition.step4.title': 'Revisão',
|
|
6942
6978
|
'praxis.visualBuilder.ruleDefinition.step4.subtitle': 'Confirmar regra',
|
|
6943
6979
|
'praxis.visualBuilder.ruleDefinition.step4.question': 'Revise e confirme a regra',
|
|
6944
|
-
'praxis.visualBuilder.ruleDefinition.action.next': '
|
|
6980
|
+
'praxis.visualBuilder.ruleDefinition.action.next': 'Próximo',
|
|
6945
6981
|
'praxis.visualBuilder.ruleDefinition.action.previous': 'Anterior',
|
|
6946
6982
|
'praxis.visualBuilder.ruleDefinition.action.cancel': 'Cancelar',
|
|
6947
6983
|
'praxis.visualBuilder.ruleDefinition.action.reset': 'Resetar',
|
|
6948
6984
|
'praxis.visualBuilder.ruleDefinition.action.save': 'Salvar regra',
|
|
6949
6985
|
'praxis.visualBuilder.ruleDefinition.conditionMode.always': 'Sempre',
|
|
6950
6986
|
'praxis.visualBuilder.ruleDefinition.conditionMode.visual': 'Visual',
|
|
6951
|
-
'praxis.visualBuilder.ruleDefinition.conditionWarning.tooltip': 'Altere o alvo ou ajuste os campos da
|
|
6987
|
+
'praxis.visualBuilder.ruleDefinition.conditionWarning.tooltip': 'Altere o alvo ou ajuste os campos da condição para este contexto.',
|
|
6952
6988
|
'praxis.visualBuilder.ruleDefinition.conditionWarning.prefix': 'Campos fora do contexto atual',
|
|
6953
|
-
'praxis.visualBuilder.ruleDefinition.conditionWarning.suffix': 'Eles
|
|
6954
|
-
'praxis.visualBuilder.ruleDefinition.condition.alwaysHint': 'A regra
|
|
6989
|
+
'praxis.visualBuilder.ruleDefinition.conditionWarning.suffix': 'Eles serão ignorados até você escolher campos compatíveis.',
|
|
6990
|
+
'praxis.visualBuilder.ruleDefinition.condition.alwaysHint': 'A regra será aplicada sempre.',
|
|
6955
6991
|
'praxis.visualBuilder.ruleDefinition.review.targets': 'Alvos selecionados',
|
|
6956
6992
|
'praxis.visualBuilder.ruleDefinition.review.heroTitle': 'Resumo da regra',
|
|
6957
6993
|
'praxis.visualBuilder.ruleDefinition.review.noTargets': 'Nenhum alvo selecionado.',
|
|
6958
|
-
'praxis.visualBuilder.ruleDefinition.review.condition': '
|
|
6994
|
+
'praxis.visualBuilder.ruleDefinition.review.condition': 'Condição',
|
|
6959
6995
|
'praxis.visualBuilder.ruleDefinition.review.mode': 'Modo',
|
|
6960
|
-
'praxis.visualBuilder.ruleDefinition.review.alwaysMode': 'Sempre (sem
|
|
6996
|
+
'praxis.visualBuilder.ruleDefinition.review.alwaysMode': 'Sempre (sem condição)',
|
|
6961
6997
|
'praxis.visualBuilder.ruleDefinition.review.effects': 'Efeitos',
|
|
6962
6998
|
'praxis.visualBuilder.ruleDefinition.review.whenFalse': 'Quando falso',
|
|
6963
|
-
'praxis.visualBuilder.ruleDefinition.review.whenFalseNone': 'Sem
|
|
6964
|
-
'praxis.visualBuilder.ruleDefinition.review.technical': 'Detalhes
|
|
6965
|
-
'praxis.visualBuilder.ruleDefinition.review.conditionJson': 'JSON da
|
|
6966
|
-
'praxis.visualBuilder.ruleDefinition.review.summary.always': 'sempre que o
|
|
6967
|
-
'praxis.visualBuilder.ruleDefinition.review.summary.conditional': 'quando a
|
|
6999
|
+
'praxis.visualBuilder.ruleDefinition.review.whenFalseNone': 'Sem ação adicional',
|
|
7000
|
+
'praxis.visualBuilder.ruleDefinition.review.technical': 'Detalhes técnicos',
|
|
7001
|
+
'praxis.visualBuilder.ruleDefinition.review.conditionJson': 'JSON da condição',
|
|
7002
|
+
'praxis.visualBuilder.ruleDefinition.review.summary.always': 'sempre que o formulário estiver neste contexto',
|
|
7003
|
+
'praxis.visualBuilder.ruleDefinition.review.summary.conditional': 'quando a condição configurada for satisfeita',
|
|
6968
7004
|
'praxis.visualBuilder.ruleDefinition.review.json': 'JSON da regra',
|
|
6969
7005
|
'praxis.visualBuilder.ruleDefinition.review.effects.noneEditorial': 'Nenhum efeito principal definido',
|
|
6970
7006
|
'praxis.visualBuilder.ruleDefinition.conditionDescription.always': 'Sempre',
|
|
@@ -6974,14 +7010,14 @@ const PRAXIS_VISUAL_BUILDER_PT_BR = {
|
|
|
6974
7010
|
'praxis.visualBuilder.ruleDefinition.effects.trueCount': 'efeito(s) verdadeiro(s)',
|
|
6975
7011
|
'praxis.visualBuilder.ruleDefinition.effects.falseCount': 'efeito(s) falso(s)',
|
|
6976
7012
|
'praxis.visualBuilder.ruleDefinition.targetType.fieldPlural': 'Campos',
|
|
6977
|
-
'praxis.visualBuilder.ruleDefinition.targetType.sectionPlural': '
|
|
7013
|
+
'praxis.visualBuilder.ruleDefinition.targetType.sectionPlural': 'Seções',
|
|
6978
7014
|
'praxis.visualBuilder.ruleDefinition.targetType.rowPlural': 'Linhas',
|
|
6979
7015
|
'praxis.visualBuilder.ruleDefinition.targetType.columnPlural': 'Colunas',
|
|
6980
|
-
'praxis.visualBuilder.ruleDefinition.targetType.actionPlural': '
|
|
7016
|
+
'praxis.visualBuilder.ruleDefinition.targetType.actionPlural': 'Ações',
|
|
6981
7017
|
'praxis.visualBuilder.ruleDefinition.targetType.visualBlockPlural': 'Blocos visuais',
|
|
6982
7018
|
'praxis.visualBuilder.ruleDefinition.effect.visibleOn': 'Mostrar os elementos selecionados',
|
|
6983
7019
|
'praxis.visualBuilder.ruleDefinition.effect.visibleOff': 'Ocultar os elementos selecionados',
|
|
6984
|
-
'praxis.visualBuilder.ruleDefinition.effect.requiredOn': 'Tornar os campos
|
|
7020
|
+
'praxis.visualBuilder.ruleDefinition.effect.requiredOn': 'Tornar os campos obrigatórios',
|
|
6985
7021
|
'praxis.visualBuilder.ruleDefinition.effect.requiredOff': 'Tornar os campos opcionais',
|
|
6986
7022
|
'praxis.visualBuilder.ruleDefinition.effect.disabledOn': 'Desabilitar os elementos selecionados',
|
|
6987
7023
|
'praxis.visualBuilder.ruleDefinition.effect.disabledOff': 'Habilitar os elementos selecionados',
|
|
@@ -6991,11 +7027,11 @@ const PRAXIS_VISUAL_BUILDER_PT_BR = {
|
|
|
6991
7027
|
'praxis.visualBuilder.ruleEditor.shell.breadcrumb': 'Editor de regras',
|
|
6992
7028
|
'praxis.visualBuilder.ruleEditor.shell.nav.layout': 'Layout',
|
|
6993
7029
|
'praxis.visualBuilder.ruleEditor.shell.nav.rules': 'Regras',
|
|
6994
|
-
'praxis.visualBuilder.ruleEditor.shell.nav.docs': '
|
|
6995
|
-
'praxis.visualBuilder.ruleEditor.shell.unsaved': '
|
|
7030
|
+
'praxis.visualBuilder.ruleEditor.shell.nav.docs': 'Documentação',
|
|
7031
|
+
'praxis.visualBuilder.ruleEditor.shell.unsaved': 'Alterações não salvas',
|
|
6996
7032
|
'praxis.visualBuilder.ruleEditor.toolbar.collapseList': 'Recolher painel lateral',
|
|
6997
7033
|
'praxis.visualBuilder.ruleEditor.toolbar.expandList': 'Expandir painel lateral',
|
|
6998
|
-
'praxis.visualBuilder.ruleEditor.toolbar.aiTooltip': 'Descreva sua regra e a IA monta o rascunho para
|
|
7034
|
+
'praxis.visualBuilder.ruleEditor.toolbar.aiTooltip': 'Descreva sua regra e a IA monta o rascunho para você',
|
|
6999
7035
|
'praxis.visualBuilder.ruleEditor.toolbar.newRule': 'Nova regra',
|
|
7000
7036
|
'praxis.visualBuilder.ruleEditor.toolbar.aiButton': 'Criar com IA',
|
|
7001
7037
|
'praxis.visualBuilder.ruleEditor.toolbar.undo': 'Desfazer',
|
|
@@ -7004,11 +7040,11 @@ const PRAXIS_VISUAL_BUILDER_PT_BR = {
|
|
|
7004
7040
|
'praxis.visualBuilder.ruleEditor.toolbar.export': 'Exportar',
|
|
7005
7041
|
'praxis.visualBuilder.ruleEditor.toolbar.importTooltip': 'Importar regras',
|
|
7006
7042
|
'praxis.visualBuilder.ruleEditor.toolbar.import': 'Importar',
|
|
7007
|
-
'praxis.visualBuilder.ruleEditor.toolbar.advanced': 'Mais
|
|
7008
|
-
'praxis.visualBuilder.ruleEditor.toolbar.devOptions': '
|
|
7043
|
+
'praxis.visualBuilder.ruleEditor.toolbar.advanced': 'Mais opções',
|
|
7044
|
+
'praxis.visualBuilder.ruleEditor.toolbar.devOptions': 'Opções de desenvolvedor',
|
|
7009
7045
|
'praxis.visualBuilder.ruleEditor.hero.eyebrow': 'Builder visual',
|
|
7010
7046
|
'praxis.visualBuilder.ruleEditor.hero.title': 'Construa regras com clareza visual',
|
|
7011
|
-
'praxis.visualBuilder.ruleEditor.hero.subtitle': 'Combine alvos,
|
|
7047
|
+
'praxis.visualBuilder.ruleEditor.hero.subtitle': 'Combine alvos, condições e efeitos em uma experiência guiada para usuários de negócio e usuários técnicos.',
|
|
7012
7048
|
'praxis.visualBuilder.ruleEditor.hero.progress': 'Progresso',
|
|
7013
7049
|
'praxis.visualBuilder.ruleEditor.hero.progressOf': 'de',
|
|
7014
7050
|
'praxis.visualBuilder.ruleEditor.hero.progressEmpty': '0 de 0',
|
|
@@ -7017,30 +7053,30 @@ const PRAXIS_VISUAL_BUILDER_PT_BR = {
|
|
|
7017
7053
|
'praxis.visualBuilder.ruleEditor.hero.healthError': 'Revisar',
|
|
7018
7054
|
'praxis.visualBuilder.ruleEditor.hero.healthProgress': 'Em progresso',
|
|
7019
7055
|
'praxis.visualBuilder.ruleEditor.hero.healthIdle': 'Em branco',
|
|
7020
|
-
'praxis.visualBuilder.ruleEditor.hero.selectedFallback': 'Regra em
|
|
7056
|
+
'praxis.visualBuilder.ruleEditor.hero.selectedFallback': 'Regra em edição',
|
|
7021
7057
|
'praxis.visualBuilder.ruleEditor.hero.targetCount': 'alvo(s)',
|
|
7022
7058
|
'praxis.visualBuilder.ruleEditor.hero.conditional': 'condicional',
|
|
7023
7059
|
'praxis.visualBuilder.ruleEditor.hero.always': 'sempre ativa',
|
|
7024
7060
|
'praxis.visualBuilder.ruleEditor.hero.effectCount': 'efeito(s)',
|
|
7025
|
-
'praxis.visualBuilder.ruleEditor.debug.show': 'Mostrar painel de
|
|
7026
|
-
'praxis.visualBuilder.ruleEditor.debug.hide': 'Ocultar painel de
|
|
7061
|
+
'praxis.visualBuilder.ruleEditor.debug.show': 'Mostrar painel de depuração (debug)',
|
|
7062
|
+
'praxis.visualBuilder.ruleEditor.debug.hide': 'Ocultar painel de depuração (debug)',
|
|
7027
7063
|
'praxis.visualBuilder.ruleEditor.debug.clearAll': 'Limpar tudo',
|
|
7028
|
-
'praxis.visualBuilder.ruleEditor.debug.title': 'Estado de
|
|
7029
|
-
'praxis.visualBuilder.ruleEditor.unsupported.title': 'Tipo de regra
|
|
7030
|
-
'praxis.visualBuilder.ruleEditor.unsupported.body': 'Este
|
|
7064
|
+
'praxis.visualBuilder.ruleEditor.debug.title': 'Estado de depuração (debug)',
|
|
7065
|
+
'praxis.visualBuilder.ruleEditor.unsupported.title': 'Tipo de regra não suportado',
|
|
7066
|
+
'praxis.visualBuilder.ruleEditor.unsupported.body': 'Este nó usa um formato legado. Remova e recrie como regra de propriedade.',
|
|
7031
7067
|
'praxis.visualBuilder.ruleEditor.empty.title': 'Selecione uma regra ou crie uma nova',
|
|
7032
|
-
'praxis.visualBuilder.ruleEditor.empty.body': 'Monte regras visuais com alvo,
|
|
7068
|
+
'praxis.visualBuilder.ruleEditor.empty.body': 'Monte regras visuais com alvo, condição e efeito em uma trilha guiada.',
|
|
7033
7069
|
'praxis.visualBuilder.ruleEditor.empty.cta': 'Criar regra',
|
|
7034
7070
|
'praxis.visualBuilder.ruleEditor.status.rules': 'Regras',
|
|
7035
|
-
'praxis.visualBuilder.ruleEditor.status.unsaved': '
|
|
7071
|
+
'praxis.visualBuilder.ruleEditor.status.unsaved': 'Não salvo',
|
|
7036
7072
|
'praxis.visualBuilder.ruleEditor.status.errors': 'erro(s)',
|
|
7037
|
-
'praxis.visualBuilder.ruleEditor.status.valid': '
|
|
7073
|
+
'praxis.visualBuilder.ruleEditor.status.valid': 'Válido',
|
|
7038
7074
|
'praxis.visualBuilder.ruleEditor.confirm.clearAll': 'Tem certeza que deseja apagar todas as regras?',
|
|
7039
7075
|
'praxis.visualBuilder.ruleEditor.confirm.removeRule': 'Remover esta regra?',
|
|
7040
7076
|
'praxis.visualBuilder.ruleEditor.action.close': 'Fechar',
|
|
7041
7077
|
'praxis.visualBuilder.ruleEditor.actionLabel.show': 'Mostrar',
|
|
7042
7078
|
'praxis.visualBuilder.ruleEditor.actionLabel.hide': 'Ocultar',
|
|
7043
|
-
'praxis.visualBuilder.ruleEditor.actionLabel.require': 'Tornar
|
|
7079
|
+
'praxis.visualBuilder.ruleEditor.actionLabel.require': 'Tornar obrigatório',
|
|
7044
7080
|
'praxis.visualBuilder.ruleEditor.actionLabel.optional': 'Tornar opcional',
|
|
7045
7081
|
'praxis.visualBuilder.ruleEditor.actionLabel.disable': 'Desabilitar',
|
|
7046
7082
|
'praxis.visualBuilder.ruleEditor.actionLabel.enable': 'Habilitar',
|
|
@@ -7048,12 +7084,12 @@ const PRAXIS_VISUAL_BUILDER_PT_BR = {
|
|
|
7048
7084
|
'praxis.visualBuilder.ruleEditor.label.ruleFor': 'Regra para',
|
|
7049
7085
|
'praxis.visualBuilder.ruleEditor.label.targets': 'alvo(s)',
|
|
7050
7086
|
'praxis.visualBuilder.ruleEditor.label.newWithoutTargets': 'Nova regra sem alvos',
|
|
7051
|
-
'praxis.visualBuilder.ruleEditor.label.withCondition': 'com
|
|
7052
|
-
'praxis.visualBuilder.ruleEditor.validation.found': 'erro(s) de
|
|
7087
|
+
'praxis.visualBuilder.ruleEditor.label.withCondition': 'com condição',
|
|
7088
|
+
'praxis.visualBuilder.ruleEditor.validation.found': 'erro(s) de validação encontrado(s)',
|
|
7053
7089
|
'praxis.visualBuilder.ruleEditor.validation.view': 'Ver',
|
|
7054
7090
|
'praxis.visualBuilder.ruleEditor.newRule': 'Nova regra',
|
|
7055
|
-
'praxis.visualBuilder.ruleEditor.duplicateCopy': '
|
|
7056
|
-
'praxis.visualBuilder.ruleEditor.import.success': '
|
|
7091
|
+
'praxis.visualBuilder.ruleEditor.duplicateCopy': 'cópia',
|
|
7092
|
+
'praxis.visualBuilder.ruleEditor.import.success': 'Importação concluída',
|
|
7057
7093
|
'praxis.visualBuilder.ruleEditor.import.failure': 'Falha ao importar regras',
|
|
7058
7094
|
'praxis.visualBuilder.ruleEditor.ai.applyError': 'Erro ao aplicar regra',
|
|
7059
7095
|
'praxis.visualBuilder.ruleEditor.ai.draftPrefix': 'IA',
|
|
@@ -7570,14 +7606,13 @@ class ConditionalValidatorEditorComponent {
|
|
|
7570
7606
|
}
|
|
7571
7607
|
</mat-select>
|
|
7572
7608
|
<button
|
|
7573
|
-
|
|
7609
|
+
praxisIconButton="help_outline"
|
|
7610
|
+
size="dense"
|
|
7574
7611
|
matSuffix
|
|
7575
|
-
class="help-icon-button"
|
|
7576
7612
|
type="button"
|
|
7577
7613
|
[matTooltip]="t('conditionalValidator.help.targetField', 'Choose the field affected by this rule')"
|
|
7578
7614
|
matTooltipPosition="above"
|
|
7579
7615
|
>
|
|
7580
|
-
<mat-icon>help_outline</mat-icon>
|
|
7581
7616
|
</button>
|
|
7582
7617
|
</mat-form-field>
|
|
7583
7618
|
</div>
|
|
@@ -7645,12 +7680,12 @@ class ConditionalValidatorEditorComponent {
|
|
|
7645
7680
|
<div class="condition-header">
|
|
7646
7681
|
<span class="condition-number">{{ i + 1 }}</span>
|
|
7647
7682
|
<button
|
|
7648
|
-
|
|
7649
|
-
|
|
7683
|
+
praxisIconButton="delete"
|
|
7684
|
+
size="dense"
|
|
7685
|
+
class="danger-action"
|
|
7650
7686
|
(click)="removeCondition(i)"
|
|
7651
7687
|
[disabled]="advancedConditions.length <= 1"
|
|
7652
7688
|
>
|
|
7653
|
-
<mat-icon>delete</mat-icon>
|
|
7654
7689
|
</button>
|
|
7655
7690
|
</div>
|
|
7656
7691
|
<praxis-field-condition-editor
|
|
@@ -7693,14 +7728,13 @@ class ConditionalValidatorEditorComponent {
|
|
|
7693
7728
|
[placeholder]="t('conditionalValidator.placeholder.errorMessage', 'This field is required')"
|
|
7694
7729
|
/>
|
|
7695
7730
|
<button
|
|
7696
|
-
|
|
7731
|
+
praxisIconButton="help_outline"
|
|
7732
|
+
size="dense"
|
|
7697
7733
|
matSuffix
|
|
7698
|
-
class="help-icon-button"
|
|
7699
7734
|
type="button"
|
|
7700
7735
|
[matTooltip]="t('conditionalValidator.help.errorMessage', 'Overrides the default message shown to the user')"
|
|
7701
7736
|
matTooltipPosition="above"
|
|
7702
7737
|
>
|
|
7703
|
-
<mat-icon>help_outline</mat-icon>
|
|
7704
7738
|
</button>
|
|
7705
7739
|
</mat-form-field>
|
|
7706
7740
|
<div class="validation-options">
|
|
@@ -7831,7 +7865,7 @@ class ConditionalValidatorEditorComponent {
|
|
|
7831
7865
|
</div>
|
|
7832
7866
|
}
|
|
7833
7867
|
</form>
|
|
7834
|
-
`, isInline: true, styles: [".conditional-validator-form{display:flex;flex-direction:column;gap:16px;width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-field-select{flex:1;min-width:200px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-trigger{display:inline-flex;align-items:center;gap:8px}.trigger-icon{font-size:18px}.trigger-label{font-weight:600}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-variant);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-variant)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.condition-mode-selector{margin-bottom:16px}.simple-condition,.advanced-condition{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.logic-operator{width:100%;margin-bottom:16px}.conditions-list{display:flex;flex-direction:column;gap:12px}.condition-item{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-variant)}.condition-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.condition-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.add-condition-button{align-self:flex-start}.validation-settings,.ui-settings{display:flex;flex-direction:column;gap:12px}.validation-options{display:flex;flex-direction:column;gap:8px}.error-message-input,.animation-select,.disabled-style-select,.readonly-style-select,.disabled-message-input{width:100%}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline)}.preview-logic{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-field-select{width:100%}}.
|
|
7868
|
+
`, isInline: true, styles: [".conditional-validator-form{display:flex;flex-direction:column;gap:16px;width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-field-select{flex:1;min-width:200px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-trigger{display:inline-flex;align-items:center;gap:8px}.trigger-icon{font-size:18px}.trigger-label{font-weight:600}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-variant);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-variant)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.condition-mode-selector{margin-bottom:16px}.simple-condition,.advanced-condition{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.logic-operator{width:100%;margin-bottom:16px}.conditions-list{display:flex;flex-direction:column;gap:12px}.condition-item{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-variant)}.condition-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.condition-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.add-condition-button{align-self:flex-start}.validation-settings,.ui-settings{display:flex;flex-direction:column;gap:12px}.validation-options{display:flex;flex-direction:column;gap:8px}.error-message-input,.animation-select,.disabled-style-select,.readonly-style-select,.disabled-message-input{width:100%}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline)}.preview-logic{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-field-select{width:100%}}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i7$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i7$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "component", type: FieldConditionEditorComponent, selector: "praxis-field-condition-editor", inputs: ["config", "fieldSchemas"], outputs: ["configChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7835
7869
|
}
|
|
7836
7870
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ConditionalValidatorEditorComponent, decorators: [{
|
|
7837
7871
|
type: Component,
|
|
@@ -7848,6 +7882,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
7848
7882
|
MatTooltipModule,
|
|
7849
7883
|
MatTabsModule,
|
|
7850
7884
|
MatDividerModule,
|
|
7885
|
+
PraxisIconButtonComponent,
|
|
7851
7886
|
FieldConditionEditorComponent
|
|
7852
7887
|
], changeDetection: ChangeDetectionStrategy.OnPush, providers: [providePraxisVisualBuilderI18n()], template: `
|
|
7853
7888
|
<form [formGroup]="validatorForm" class="conditional-validator-form">
|
|
@@ -7933,14 +7968,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
7933
7968
|
}
|
|
7934
7969
|
</mat-select>
|
|
7935
7970
|
<button
|
|
7936
|
-
|
|
7971
|
+
praxisIconButton="help_outline"
|
|
7972
|
+
size="dense"
|
|
7937
7973
|
matSuffix
|
|
7938
|
-
class="help-icon-button"
|
|
7939
7974
|
type="button"
|
|
7940
7975
|
[matTooltip]="t('conditionalValidator.help.targetField', 'Choose the field affected by this rule')"
|
|
7941
7976
|
matTooltipPosition="above"
|
|
7942
7977
|
>
|
|
7943
|
-
<mat-icon>help_outline</mat-icon>
|
|
7944
7978
|
</button>
|
|
7945
7979
|
</mat-form-field>
|
|
7946
7980
|
</div>
|
|
@@ -8008,12 +8042,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
8008
8042
|
<div class="condition-header">
|
|
8009
8043
|
<span class="condition-number">{{ i + 1 }}</span>
|
|
8010
8044
|
<button
|
|
8011
|
-
|
|
8012
|
-
|
|
8045
|
+
praxisIconButton="delete"
|
|
8046
|
+
size="dense"
|
|
8047
|
+
class="danger-action"
|
|
8013
8048
|
(click)="removeCondition(i)"
|
|
8014
8049
|
[disabled]="advancedConditions.length <= 1"
|
|
8015
8050
|
>
|
|
8016
|
-
<mat-icon>delete</mat-icon>
|
|
8017
8051
|
</button>
|
|
8018
8052
|
</div>
|
|
8019
8053
|
<praxis-field-condition-editor
|
|
@@ -8056,14 +8090,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
8056
8090
|
[placeholder]="t('conditionalValidator.placeholder.errorMessage', 'This field is required')"
|
|
8057
8091
|
/>
|
|
8058
8092
|
<button
|
|
8059
|
-
|
|
8093
|
+
praxisIconButton="help_outline"
|
|
8094
|
+
size="dense"
|
|
8060
8095
|
matSuffix
|
|
8061
|
-
class="help-icon-button"
|
|
8062
8096
|
type="button"
|
|
8063
8097
|
[matTooltip]="t('conditionalValidator.help.errorMessage', 'Overrides the default message shown to the user')"
|
|
8064
8098
|
matTooltipPosition="above"
|
|
8065
8099
|
>
|
|
8066
|
-
<mat-icon>help_outline</mat-icon>
|
|
8067
8100
|
</button>
|
|
8068
8101
|
</mat-form-field>
|
|
8069
8102
|
<div class="validation-options">
|
|
@@ -8194,7 +8227,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
8194
8227
|
</div>
|
|
8195
8228
|
}
|
|
8196
8229
|
</form>
|
|
8197
|
-
`, styles: [".conditional-validator-form{display:flex;flex-direction:column;gap:16px;width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-field-select{flex:1;min-width:200px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-trigger{display:inline-flex;align-items:center;gap:8px}.trigger-icon{font-size:18px}.trigger-label{font-weight:600}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-variant);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-variant)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.condition-mode-selector{margin-bottom:16px}.simple-condition,.advanced-condition{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.logic-operator{width:100%;margin-bottom:16px}.conditions-list{display:flex;flex-direction:column;gap:12px}.condition-item{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-variant)}.condition-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.condition-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.add-condition-button{align-self:flex-start}.validation-settings,.ui-settings{display:flex;flex-direction:column;gap:12px}.validation-options{display:flex;flex-direction:column;gap:8px}.error-message-input,.animation-select,.disabled-style-select,.readonly-style-select,.disabled-message-input{width:100%}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline)}.preview-logic{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-field-select{width:100%}}.
|
|
8230
|
+
`, styles: [".conditional-validator-form{display:flex;flex-direction:column;gap:16px;width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-field-select{flex:1;min-width:200px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-trigger{display:inline-flex;align-items:center;gap:8px}.trigger-icon{font-size:18px}.trigger-label{font-weight:600}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-variant);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-variant)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.condition-mode-selector{margin-bottom:16px}.simple-condition,.advanced-condition{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.logic-operator{width:100%;margin-bottom:16px}.conditions-list{display:flex;flex-direction:column;gap:12px}.condition-item{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-variant)}.condition-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.condition-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.add-condition-button{align-self:flex-start}.validation-settings,.ui-settings{display:flex;flex-direction:column;gap:12px}.validation-options{display:flex;flex-direction:column;gap:8px}.error-message-input,.animation-select,.disabled-style-select,.readonly-style-select,.disabled-message-input{width:100%}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline)}.preview-logic{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-field-select{width:100%}}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
|
|
8198
8231
|
}], ctorParameters: () => [{ type: i1$1.FormBuilder }, { type: i1$2.PraxisI18nService, decorators: [{
|
|
8199
8232
|
type: Optional
|
|
8200
8233
|
}] }], propDecorators: { config: [{
|
|
@@ -8603,14 +8636,13 @@ class CollectionValidatorEditorComponent {
|
|
|
8603
8636
|
}
|
|
8604
8637
|
</mat-select>
|
|
8605
8638
|
<button
|
|
8606
|
-
|
|
8639
|
+
praxisIconButton="help_outline"
|
|
8640
|
+
size="dense"
|
|
8607
8641
|
matSuffix
|
|
8608
|
-
class="help-icon-button"
|
|
8609
8642
|
type="button"
|
|
8610
8643
|
[matTooltip]="'Select the array/collection field this validator applies to'"
|
|
8611
8644
|
matTooltipPosition="above"
|
|
8612
8645
|
>
|
|
8613
|
-
<mat-icon>help_outline</mat-icon>
|
|
8614
8646
|
</button>
|
|
8615
8647
|
</mat-form-field>
|
|
8616
8648
|
</div>
|
|
@@ -8631,14 +8663,13 @@ class CollectionValidatorEditorComponent {
|
|
|
8631
8663
|
formControlName="itemVariable"
|
|
8632
8664
|
placeholder="item">
|
|
8633
8665
|
<button
|
|
8634
|
-
|
|
8666
|
+
praxisIconButton="help_outline"
|
|
8667
|
+
size="dense"
|
|
8635
8668
|
matSuffix
|
|
8636
|
-
class="help-icon-button"
|
|
8637
8669
|
type="button"
|
|
8638
8670
|
[matTooltip]="'Variable name to reference each item (e.g., \\'item\\', \\'record\\')'"
|
|
8639
8671
|
matTooltipPosition="above"
|
|
8640
8672
|
>
|
|
8641
|
-
<mat-icon>help_outline</mat-icon>
|
|
8642
8673
|
</button>
|
|
8643
8674
|
</mat-form-field>
|
|
8644
8675
|
<mat-form-field appearance="outline" class="index-variable-input">
|
|
@@ -8647,14 +8678,13 @@ class CollectionValidatorEditorComponent {
|
|
|
8647
8678
|
formControlName="indexVariable"
|
|
8648
8679
|
placeholder="index">
|
|
8649
8680
|
<button
|
|
8650
|
-
|
|
8681
|
+
praxisIconButton="help_outline"
|
|
8682
|
+
size="dense"
|
|
8651
8683
|
matSuffix
|
|
8652
|
-
class="help-icon-button"
|
|
8653
8684
|
type="button"
|
|
8654
8685
|
[matTooltip]="'Variable name to reference item index (optional)'"
|
|
8655
8686
|
matTooltipPosition="above"
|
|
8656
8687
|
>
|
|
8657
|
-
<mat-icon>help_outline</mat-icon>
|
|
8658
8688
|
</button>
|
|
8659
8689
|
</mat-form-field>
|
|
8660
8690
|
</div>
|
|
@@ -8667,11 +8697,11 @@ class CollectionValidatorEditorComponent {
|
|
|
8667
8697
|
[formGroupName]="i">
|
|
8668
8698
|
<div class="rule-header">
|
|
8669
8699
|
<span class="rule-number">{{ i + 1 }}</span>
|
|
8670
|
-
<button
|
|
8671
|
-
|
|
8700
|
+
<button praxisIconButton="delete"
|
|
8701
|
+
size="dense"
|
|
8702
|
+
class="danger-action"
|
|
8672
8703
|
(click)="removeItemValidationRule(i)"
|
|
8673
8704
|
[disabled]="itemValidationRules.length <= 1">
|
|
8674
|
-
<mat-icon>delete</mat-icon>
|
|
8675
8705
|
</button>
|
|
8676
8706
|
</div>
|
|
8677
8707
|
<div class="rule-config">
|
|
@@ -8690,14 +8720,13 @@ class CollectionValidatorEditorComponent {
|
|
|
8690
8720
|
formControlName="fieldPath"
|
|
8691
8721
|
placeholder="item.propertyName">
|
|
8692
8722
|
<button
|
|
8693
|
-
|
|
8723
|
+
praxisIconButton="help_outline"
|
|
8724
|
+
size="dense"
|
|
8694
8725
|
matSuffix
|
|
8695
|
-
class="help-icon-button"
|
|
8696
8726
|
type="button"
|
|
8697
8727
|
[matTooltip]="'Path to the field within each item'"
|
|
8698
8728
|
matTooltipPosition="above"
|
|
8699
8729
|
>
|
|
8700
|
-
<mat-icon>help_outline</mat-icon>
|
|
8701
8730
|
</button>
|
|
8702
8731
|
</mat-form-field>
|
|
8703
8732
|
<mat-form-field appearance="outline" class="rule-message-input">
|
|
@@ -8742,11 +8771,11 @@ class CollectionValidatorEditorComponent {
|
|
|
8742
8771
|
[formControlName]="i"
|
|
8743
8772
|
placeholder="item.propertyName">
|
|
8744
8773
|
</mat-form-field>
|
|
8745
|
-
<button
|
|
8746
|
-
|
|
8774
|
+
<button praxisIconButton="delete"
|
|
8775
|
+
size="dense"
|
|
8776
|
+
class="danger-action"
|
|
8747
8777
|
(click)="removeUniqueField(i)"
|
|
8748
8778
|
[disabled]="uniqueByFields.length <= 1">
|
|
8749
|
-
<mat-icon>delete</mat-icon>
|
|
8750
8779
|
</button>
|
|
8751
8780
|
</div>
|
|
8752
8781
|
}
|
|
@@ -8795,14 +8824,13 @@ class CollectionValidatorEditorComponent {
|
|
|
8795
8824
|
min="0"
|
|
8796
8825
|
placeholder="0">
|
|
8797
8826
|
<button
|
|
8798
|
-
|
|
8827
|
+
praxisIconButton="help_outline"
|
|
8828
|
+
size="dense"
|
|
8799
8829
|
matSuffix
|
|
8800
|
-
class="help-icon-button"
|
|
8801
8830
|
type="button"
|
|
8802
8831
|
[matTooltip]="'Minimum number of items required'"
|
|
8803
8832
|
matTooltipPosition="above"
|
|
8804
8833
|
>
|
|
8805
|
-
<mat-icon>help_outline</mat-icon>
|
|
8806
8834
|
</button>
|
|
8807
8835
|
</mat-form-field>
|
|
8808
8836
|
}
|
|
@@ -8815,14 +8843,13 @@ class CollectionValidatorEditorComponent {
|
|
|
8815
8843
|
min="1"
|
|
8816
8844
|
placeholder="100">
|
|
8817
8845
|
<button
|
|
8818
|
-
|
|
8846
|
+
praxisIconButton="help_outline"
|
|
8847
|
+
size="dense"
|
|
8819
8848
|
matSuffix
|
|
8820
|
-
class="help-icon-button"
|
|
8821
8849
|
type="button"
|
|
8822
8850
|
[matTooltip]="'Maximum number of items allowed'"
|
|
8823
8851
|
matTooltipPosition="above"
|
|
8824
8852
|
>
|
|
8825
|
-
<mat-icon>help_outline</mat-icon>
|
|
8826
8853
|
</button>
|
|
8827
8854
|
</mat-form-field>
|
|
8828
8855
|
}
|
|
@@ -8918,14 +8945,13 @@ class CollectionValidatorEditorComponent {
|
|
|
8918
8945
|
max="1000"
|
|
8919
8946
|
placeholder="50">
|
|
8920
8947
|
<button
|
|
8921
|
-
|
|
8948
|
+
praxisIconButton="help_outline"
|
|
8949
|
+
size="dense"
|
|
8922
8950
|
matSuffix
|
|
8923
|
-
class="help-icon-button"
|
|
8924
8951
|
type="button"
|
|
8925
8952
|
[matTooltip]="'Number of items to validate at once'"
|
|
8926
8953
|
matTooltipPosition="above"
|
|
8927
8954
|
>
|
|
8928
|
-
<mat-icon>help_outline</mat-icon>
|
|
8929
8955
|
</button>
|
|
8930
8956
|
</mat-form-field>
|
|
8931
8957
|
<mat-checkbox formControlName="debounceValidation">
|
|
@@ -8990,7 +9016,7 @@ class CollectionValidatorEditorComponent {
|
|
|
8990
9016
|
</div>
|
|
8991
9017
|
}
|
|
8992
9018
|
</form>
|
|
8993
|
-
`, isInline: true, styles: [".collection-validator-form{display:flex;flex-direction:column;gap:16px;max-width:900px}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-collection-select{flex:1;min-width:250px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-container)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-title h5{margin:16px 0 8px;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.foreach-config,.unique-config,.length-config{display:flex;flex-direction:column;gap:16px}.item-schema-info{display:flex;gap:12px}.item-variable-input,.index-variable-input{flex:1}.validation-rules{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.validation-rule-item,.unique-field-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;margin-bottom:12px;background:var(--md-sys-color-surface-container)}.rule-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.rule-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.rule-config{display:flex;flex-direction:column;gap:8px}.unique-field-item{display:flex;align-items:center;gap:8px}.field-path-input{flex:1}.length-inputs{display:flex;gap:12px}.length-input{flex:1}.length-slider{margin:16px 0}.length-slider label{display:block;margin-bottom:8px;font-size:13px;font-weight:500}.length-options,.unique-options{display:flex;flex-direction:column;gap:12px}.advanced-options{background:var(--md-sys-color-secondary-container);border-color:var(--md-sys-color-secondary)}.advanced-config{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.validation-timing,.error-handling,.performance-options{display:flex;flex-direction:column;gap:8px}.validation-timing h5,.error-handling h5,.performance-options h5{margin:0 0 8px;font-size:12px;font-weight:600;color:var(--md-sys-color-secondary);text-transform:uppercase}.add-rule-button,.add-field-button{align-self:flex-start}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant)}.preview-details{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:1024px){.advanced-config{grid-template-columns:1fr 1fr}}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-collection-select{width:100%}.item-schema-info,.length-inputs{flex-direction:column}.advanced-config{grid-template-columns:1fr}}.
|
|
9019
|
+
`, isInline: true, styles: [".collection-validator-form{display:flex;flex-direction:column;gap:16px;max-width:900px}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-collection-select{flex:1;min-width:250px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-container)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-title h5{margin:16px 0 8px;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.foreach-config,.unique-config,.length-config{display:flex;flex-direction:column;gap:16px}.item-schema-info{display:flex;gap:12px}.item-variable-input,.index-variable-input{flex:1}.validation-rules{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.validation-rule-item,.unique-field-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;margin-bottom:12px;background:var(--md-sys-color-surface-container)}.rule-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.rule-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.rule-config{display:flex;flex-direction:column;gap:8px}.unique-field-item{display:flex;align-items:center;gap:8px}.field-path-input{flex:1}.length-inputs{display:flex;gap:12px}.length-input{flex:1}.length-slider{margin:16px 0}.length-slider label{display:block;margin-bottom:8px;font-size:13px;font-weight:500}.length-options,.unique-options{display:flex;flex-direction:column;gap:12px}.advanced-options{background:var(--md-sys-color-secondary-container);border-color:var(--md-sys-color-secondary)}.advanced-config{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.validation-timing,.error-handling,.performance-options{display:flex;flex-direction:column;gap:8px}.validation-timing h5,.error-handling h5,.performance-options h5{margin:0 0 8px;font-size:12px;font-weight:600;color:var(--md-sys-color-secondary);text-transform:uppercase}.add-rule-button,.add-field-button{align-self:flex-start}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant)}.preview-details{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:1024px){.advanced-config{grid-template-columns:1fr 1fr}}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-collection-select{width:100%}.item-schema-info,.length-inputs{flex-direction:column}.advanced-config{grid-template-columns:1fr}}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatSliderModule }, { kind: "component", type: i9$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i9$1.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8994
9020
|
}
|
|
8995
9021
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CollectionValidatorEditorComponent, decorators: [{
|
|
8996
9022
|
type: Component,
|
|
@@ -9006,7 +9032,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
9006
9032
|
MatTooltipModule,
|
|
9007
9033
|
MatTabsModule,
|
|
9008
9034
|
MatDividerModule,
|
|
9009
|
-
MatSliderModule
|
|
9035
|
+
MatSliderModule,
|
|
9036
|
+
PraxisIconButtonComponent
|
|
9010
9037
|
], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
9011
9038
|
<form [formGroup]="collectionForm" class="collection-validator-form">
|
|
9012
9039
|
<!-- Validator Type Selection -->
|
|
@@ -9070,14 +9097,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
9070
9097
|
}
|
|
9071
9098
|
</mat-select>
|
|
9072
9099
|
<button
|
|
9073
|
-
|
|
9100
|
+
praxisIconButton="help_outline"
|
|
9101
|
+
size="dense"
|
|
9074
9102
|
matSuffix
|
|
9075
|
-
class="help-icon-button"
|
|
9076
9103
|
type="button"
|
|
9077
9104
|
[matTooltip]="'Select the array/collection field this validator applies to'"
|
|
9078
9105
|
matTooltipPosition="above"
|
|
9079
9106
|
>
|
|
9080
|
-
<mat-icon>help_outline</mat-icon>
|
|
9081
9107
|
</button>
|
|
9082
9108
|
</mat-form-field>
|
|
9083
9109
|
</div>
|
|
@@ -9098,14 +9124,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
9098
9124
|
formControlName="itemVariable"
|
|
9099
9125
|
placeholder="item">
|
|
9100
9126
|
<button
|
|
9101
|
-
|
|
9127
|
+
praxisIconButton="help_outline"
|
|
9128
|
+
size="dense"
|
|
9102
9129
|
matSuffix
|
|
9103
|
-
class="help-icon-button"
|
|
9104
9130
|
type="button"
|
|
9105
9131
|
[matTooltip]="'Variable name to reference each item (e.g., \\'item\\', \\'record\\')'"
|
|
9106
9132
|
matTooltipPosition="above"
|
|
9107
9133
|
>
|
|
9108
|
-
<mat-icon>help_outline</mat-icon>
|
|
9109
9134
|
</button>
|
|
9110
9135
|
</mat-form-field>
|
|
9111
9136
|
<mat-form-field appearance="outline" class="index-variable-input">
|
|
@@ -9114,14 +9139,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
9114
9139
|
formControlName="indexVariable"
|
|
9115
9140
|
placeholder="index">
|
|
9116
9141
|
<button
|
|
9117
|
-
|
|
9142
|
+
praxisIconButton="help_outline"
|
|
9143
|
+
size="dense"
|
|
9118
9144
|
matSuffix
|
|
9119
|
-
class="help-icon-button"
|
|
9120
9145
|
type="button"
|
|
9121
9146
|
[matTooltip]="'Variable name to reference item index (optional)'"
|
|
9122
9147
|
matTooltipPosition="above"
|
|
9123
9148
|
>
|
|
9124
|
-
<mat-icon>help_outline</mat-icon>
|
|
9125
9149
|
</button>
|
|
9126
9150
|
</mat-form-field>
|
|
9127
9151
|
</div>
|
|
@@ -9134,11 +9158,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
9134
9158
|
[formGroupName]="i">
|
|
9135
9159
|
<div class="rule-header">
|
|
9136
9160
|
<span class="rule-number">{{ i + 1 }}</span>
|
|
9137
|
-
<button
|
|
9138
|
-
|
|
9161
|
+
<button praxisIconButton="delete"
|
|
9162
|
+
size="dense"
|
|
9163
|
+
class="danger-action"
|
|
9139
9164
|
(click)="removeItemValidationRule(i)"
|
|
9140
9165
|
[disabled]="itemValidationRules.length <= 1">
|
|
9141
|
-
<mat-icon>delete</mat-icon>
|
|
9142
9166
|
</button>
|
|
9143
9167
|
</div>
|
|
9144
9168
|
<div class="rule-config">
|
|
@@ -9157,14 +9181,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
9157
9181
|
formControlName="fieldPath"
|
|
9158
9182
|
placeholder="item.propertyName">
|
|
9159
9183
|
<button
|
|
9160
|
-
|
|
9184
|
+
praxisIconButton="help_outline"
|
|
9185
|
+
size="dense"
|
|
9161
9186
|
matSuffix
|
|
9162
|
-
class="help-icon-button"
|
|
9163
9187
|
type="button"
|
|
9164
9188
|
[matTooltip]="'Path to the field within each item'"
|
|
9165
9189
|
matTooltipPosition="above"
|
|
9166
9190
|
>
|
|
9167
|
-
<mat-icon>help_outline</mat-icon>
|
|
9168
9191
|
</button>
|
|
9169
9192
|
</mat-form-field>
|
|
9170
9193
|
<mat-form-field appearance="outline" class="rule-message-input">
|
|
@@ -9209,11 +9232,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
9209
9232
|
[formControlName]="i"
|
|
9210
9233
|
placeholder="item.propertyName">
|
|
9211
9234
|
</mat-form-field>
|
|
9212
|
-
<button
|
|
9213
|
-
|
|
9235
|
+
<button praxisIconButton="delete"
|
|
9236
|
+
size="dense"
|
|
9237
|
+
class="danger-action"
|
|
9214
9238
|
(click)="removeUniqueField(i)"
|
|
9215
9239
|
[disabled]="uniqueByFields.length <= 1">
|
|
9216
|
-
<mat-icon>delete</mat-icon>
|
|
9217
9240
|
</button>
|
|
9218
9241
|
</div>
|
|
9219
9242
|
}
|
|
@@ -9262,14 +9285,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
9262
9285
|
min="0"
|
|
9263
9286
|
placeholder="0">
|
|
9264
9287
|
<button
|
|
9265
|
-
|
|
9288
|
+
praxisIconButton="help_outline"
|
|
9289
|
+
size="dense"
|
|
9266
9290
|
matSuffix
|
|
9267
|
-
class="help-icon-button"
|
|
9268
9291
|
type="button"
|
|
9269
9292
|
[matTooltip]="'Minimum number of items required'"
|
|
9270
9293
|
matTooltipPosition="above"
|
|
9271
9294
|
>
|
|
9272
|
-
<mat-icon>help_outline</mat-icon>
|
|
9273
9295
|
</button>
|
|
9274
9296
|
</mat-form-field>
|
|
9275
9297
|
}
|
|
@@ -9282,14 +9304,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
9282
9304
|
min="1"
|
|
9283
9305
|
placeholder="100">
|
|
9284
9306
|
<button
|
|
9285
|
-
|
|
9307
|
+
praxisIconButton="help_outline"
|
|
9308
|
+
size="dense"
|
|
9286
9309
|
matSuffix
|
|
9287
|
-
class="help-icon-button"
|
|
9288
9310
|
type="button"
|
|
9289
9311
|
[matTooltip]="'Maximum number of items allowed'"
|
|
9290
9312
|
matTooltipPosition="above"
|
|
9291
9313
|
>
|
|
9292
|
-
<mat-icon>help_outline</mat-icon>
|
|
9293
9314
|
</button>
|
|
9294
9315
|
</mat-form-field>
|
|
9295
9316
|
}
|
|
@@ -9385,14 +9406,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
9385
9406
|
max="1000"
|
|
9386
9407
|
placeholder="50">
|
|
9387
9408
|
<button
|
|
9388
|
-
|
|
9409
|
+
praxisIconButton="help_outline"
|
|
9410
|
+
size="dense"
|
|
9389
9411
|
matSuffix
|
|
9390
|
-
class="help-icon-button"
|
|
9391
9412
|
type="button"
|
|
9392
9413
|
[matTooltip]="'Number of items to validate at once'"
|
|
9393
9414
|
matTooltipPosition="above"
|
|
9394
9415
|
>
|
|
9395
|
-
<mat-icon>help_outline</mat-icon>
|
|
9396
9416
|
</button>
|
|
9397
9417
|
</mat-form-field>
|
|
9398
9418
|
<mat-checkbox formControlName="debounceValidation">
|
|
@@ -9457,7 +9477,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
9457
9477
|
</div>
|
|
9458
9478
|
}
|
|
9459
9479
|
</form>
|
|
9460
|
-
`, styles: [".collection-validator-form{display:flex;flex-direction:column;gap:16px;max-width:900px}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-collection-select{flex:1;min-width:250px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-container)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-title h5{margin:16px 0 8px;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.foreach-config,.unique-config,.length-config{display:flex;flex-direction:column;gap:16px}.item-schema-info{display:flex;gap:12px}.item-variable-input,.index-variable-input{flex:1}.validation-rules{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.validation-rule-item,.unique-field-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;margin-bottom:12px;background:var(--md-sys-color-surface-container)}.rule-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.rule-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.rule-config{display:flex;flex-direction:column;gap:8px}.unique-field-item{display:flex;align-items:center;gap:8px}.field-path-input{flex:1}.length-inputs{display:flex;gap:12px}.length-input{flex:1}.length-slider{margin:16px 0}.length-slider label{display:block;margin-bottom:8px;font-size:13px;font-weight:500}.length-options,.unique-options{display:flex;flex-direction:column;gap:12px}.advanced-options{background:var(--md-sys-color-secondary-container);border-color:var(--md-sys-color-secondary)}.advanced-config{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.validation-timing,.error-handling,.performance-options{display:flex;flex-direction:column;gap:8px}.validation-timing h5,.error-handling h5,.performance-options h5{margin:0 0 8px;font-size:12px;font-weight:600;color:var(--md-sys-color-secondary);text-transform:uppercase}.add-rule-button,.add-field-button{align-self:flex-start}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant)}.preview-details{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:1024px){.advanced-config{grid-template-columns:1fr 1fr}}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-collection-select{width:100%}.item-schema-info,.length-inputs{flex-direction:column}.advanced-config{grid-template-columns:1fr}}.
|
|
9480
|
+
`, styles: [".collection-validator-form{display:flex;flex-direction:column;gap:16px;max-width:900px}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-collection-select{flex:1;min-width:250px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-container)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-title h5{margin:16px 0 8px;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.foreach-config,.unique-config,.length-config{display:flex;flex-direction:column;gap:16px}.item-schema-info{display:flex;gap:12px}.item-variable-input,.index-variable-input{flex:1}.validation-rules{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.validation-rule-item,.unique-field-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;margin-bottom:12px;background:var(--md-sys-color-surface-container)}.rule-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.rule-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.rule-config{display:flex;flex-direction:column;gap:8px}.unique-field-item{display:flex;align-items:center;gap:8px}.field-path-input{flex:1}.length-inputs{display:flex;gap:12px}.length-input{flex:1}.length-slider{margin:16px 0}.length-slider label{display:block;margin-bottom:8px;font-size:13px;font-weight:500}.length-options,.unique-options{display:flex;flex-direction:column;gap:12px}.advanced-options{background:var(--md-sys-color-secondary-container);border-color:var(--md-sys-color-secondary)}.advanced-config{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.validation-timing,.error-handling,.performance-options{display:flex;flex-direction:column;gap:8px}.validation-timing h5,.error-handling h5,.performance-options h5{margin:0 0 8px;font-size:12px;font-weight:600;color:var(--md-sys-color-secondary);text-transform:uppercase}.add-rule-button,.add-field-button{align-self:flex-start}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant)}.preview-details{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:1024px){.advanced-config{grid-template-columns:1fr 1fr}}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-collection-select{width:100%}.item-schema-info,.length-inputs{flex-direction:column}.advanced-config{grid-template-columns:1fr}}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
|
|
9461
9481
|
}], ctorParameters: () => [{ type: i1$1.FormBuilder }], propDecorators: { config: [{
|
|
9462
9482
|
type: Input
|
|
9463
9483
|
}], fieldSchemas: [{
|
|
@@ -9782,11 +9802,12 @@ class RuleNodeComponent {
|
|
|
9782
9802
|
|
|
9783
9803
|
<!-- Node Menu -->
|
|
9784
9804
|
<button
|
|
9785
|
-
|
|
9805
|
+
praxisIconButton="more_vert"
|
|
9806
|
+
size="dense"
|
|
9807
|
+
aria-label="Ações da regra"
|
|
9786
9808
|
[matMenuTriggerFor]="nodeMenu"
|
|
9787
9809
|
(click)="$event.stopPropagation()"
|
|
9788
9810
|
>
|
|
9789
|
-
<mat-icon>more_vert</mat-icon>
|
|
9790
9811
|
</button>
|
|
9791
9812
|
|
|
9792
9813
|
<mat-menu #nodeMenu="matMenu">
|
|
@@ -9996,19 +10017,19 @@ class RuleNodeComponent {
|
|
|
9996
10017
|
@if (canHaveChildren()) {
|
|
9997
10018
|
<div class="add-child-area">
|
|
9998
10019
|
<button
|
|
9999
|
-
|
|
10000
|
-
|
|
10020
|
+
praxisIconButton="add_circle"
|
|
10021
|
+
size="dense"
|
|
10022
|
+
aria-label="Adicionar regra filha"
|
|
10001
10023
|
(click)="showAddChildMenu()"
|
|
10002
10024
|
class="add-child-button"
|
|
10003
10025
|
>
|
|
10004
|
-
<mat-icon>add_circle</mat-icon>
|
|
10005
10026
|
</button>
|
|
10006
10027
|
</div>
|
|
10007
10028
|
}
|
|
10008
10029
|
</div>
|
|
10009
10030
|
}
|
|
10010
10031
|
</div>
|
|
10011
|
-
`, isInline: true, styles: [":host{--vb-shadow-low-color: var(--sicoob-shadow-low, rgba(0,0,0,.08));--vb-shadow-medium-color: var(--sicoob-shadow-medium, rgba(0,0,0,.18));--vb-shadow-high-color: var(--sicoob-shadow-high, rgba(0,0,0,.32))}.rule-node-container{position:relative;margin-bottom:8px}.rule-node{min-width:300px;border:1px solid var(--md-sys-color-outline-variant);cursor:pointer;transition:all .2s ease;position:relative;border-radius:8px}.rule-node:hover{border-color:var(--md-sys-color-primary);box-shadow:0 4px 8px var(--vb-shadow-low-color)}.rule-node.selected{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container);box-shadow:0 4px 12px var(--vb-shadow-medium-color)}.rule-node-container.has-errors .rule-node{border-color:var(--md-sys-color-error)}.node-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--md-sys-color-outline);background:var(--md-sys-color-surface-variant)}.node-type{display:flex;align-items:center;gap:8px}.type-icon{font-size:20px;width:20px;height:20px}.type-icon.field-condition{color:var(--md-sys-color-primary)}.type-icon.boolean-group{color:var(--md-sys-color-secondary)}.type-icon.conditional-validator{color:var(--md-sys-color-tertiary)}.type-icon.collection-validation{color:var(--md-sys-color-error)}.type-label{font-weight:500;font-size:14px}.node-actions{display:flex;align-items:center;gap:4px}.error-badge{color:var(--md-sys-color-error);font-size:18px}.node-content{padding:12px}.field-condition-content,.boolean-group-content,.conditional-validator-content,.collection-validation-content{min-height:60px}.group-operator{display:flex;justify-content:center}.operator-select{width:120px}.metadata-preview{margin-top:12px;padding-top:12px;border-top:1px solid var(--md-sys-color-outline)}.metadata-chips{margin-bottom:8px}.metadata-chip{font-size:11px;height:20px}.code-chip{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.tag-chip{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.metadata-message{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.validation-errors{border-top:1px solid var(--md-sys-color-error);background:var(--md-sys-color-error-container);padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:12px}.validation-error:last-child{margin-bottom:0}.validation-error.error{color:var(--md-sys-color-on-error-container)}.validation-error.warning{color:var(--md-sys-color-secondary)}.error-icon{font-size:14px;width:14px;height:14px}.children-container{margin-left:24px;position:relative}.children-connector{position:absolute;left:-12px;top:0;width:12px;height:24px}.connector-line{width:2px;height:100%;background:var(--md-sys-color-outline);margin-left:10px}.children-list{padding-left:12px;border-left:2px solid var(--md-sys-color-outline)}.child-wrapper{position:relative}.child-connector{display:flex;flex-direction:column;align-items:center;margin:8px 0}.child-connector .connector-line{width:2px;height:12px;background:var(--md-sys-color-outline)}.connector-operator{background:var(--md-sys-color-secondary);color:var(--md-sys-color-on-secondary);padding:2px 6px;border-radius:8px;font-size:10px;font-weight:600;margin-top:-1px}.add-child-area{display:flex;justify-content:center;margin-top:16px;padding:8px;border:1px dashed var(--md-sys-color-outline);border-radius:8px;background:var(--md-sys-color-surface-variant)}.add-child-button{color:var(--md-sys-color-primary)}.level-1{margin-left:20px}.level-2{margin-left:40px}.level-3{margin-left:60px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.children-list.cdk-drop-list-dragging .child-wrapper:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.delete-action{color:var(--md-sys-color-error)}\n"], dependencies: [{ kind: "component", type: RuleNodeComponent, selector: "praxis-rule-node", inputs: ["node", "nodes", "fieldSchemas", "level", "isSelected", "validationErrors"], outputs: ["nodeClicked", "nodeUpdated", "nodeDeleted", "childAdded", "childMoved"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "
|
|
10032
|
+
`, isInline: true, styles: [":host{--vb-shadow-low-color: var(--sicoob-shadow-low, rgba(0,0,0,.08));--vb-shadow-medium-color: var(--sicoob-shadow-medium, rgba(0,0,0,.18));--vb-shadow-high-color: var(--sicoob-shadow-high, rgba(0,0,0,.32))}.rule-node-container{position:relative;margin-bottom:8px}.rule-node{min-width:300px;border:1px solid var(--md-sys-color-outline-variant);cursor:pointer;transition:all .2s ease;position:relative;border-radius:8px}.rule-node:hover{border-color:var(--md-sys-color-primary);box-shadow:0 4px 8px var(--vb-shadow-low-color)}.rule-node.selected{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container);box-shadow:0 4px 12px var(--vb-shadow-medium-color)}.rule-node-container.has-errors .rule-node{border-color:var(--md-sys-color-error)}.node-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--md-sys-color-outline);background:var(--md-sys-color-surface-variant)}.node-type{display:flex;align-items:center;gap:8px}.type-icon{font-size:20px;width:20px;height:20px}.type-icon.field-condition{color:var(--md-sys-color-primary)}.type-icon.boolean-group{color:var(--md-sys-color-secondary)}.type-icon.conditional-validator{color:var(--md-sys-color-tertiary)}.type-icon.collection-validation{color:var(--md-sys-color-error)}.type-label{font-weight:500;font-size:14px}.node-actions{display:flex;align-items:center;gap:4px}.error-badge{color:var(--md-sys-color-error);font-size:18px}.node-content{padding:12px}.field-condition-content,.boolean-group-content,.conditional-validator-content,.collection-validation-content{min-height:60px}.group-operator{display:flex;justify-content:center}.operator-select{width:120px}.metadata-preview{margin-top:12px;padding-top:12px;border-top:1px solid var(--md-sys-color-outline)}.metadata-chips{margin-bottom:8px}.metadata-chip{font-size:11px;height:20px}.code-chip{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.tag-chip{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.metadata-message{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.validation-errors{border-top:1px solid var(--md-sys-color-error);background:var(--md-sys-color-error-container);padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:12px}.validation-error:last-child{margin-bottom:0}.validation-error.error{color:var(--md-sys-color-on-error-container)}.validation-error.warning{color:var(--md-sys-color-secondary)}.error-icon{font-size:14px;width:14px;height:14px}.children-container{margin-left:24px;position:relative}.children-connector{position:absolute;left:-12px;top:0;width:12px;height:24px}.connector-line{width:2px;height:100%;background:var(--md-sys-color-outline);margin-left:10px}.children-list{padding-left:12px;border-left:2px solid var(--md-sys-color-outline)}.child-wrapper{position:relative}.child-connector{display:flex;flex-direction:column;align-items:center;margin:8px 0}.child-connector .connector-line{width:2px;height:12px;background:var(--md-sys-color-outline)}.connector-operator{background:var(--md-sys-color-secondary);color:var(--md-sys-color-on-secondary);padding:2px 6px;border-radius:8px;font-size:10px;font-weight:600;margin-top:-1px}.add-child-area{display:flex;justify-content:center;margin-top:16px;padding:8px;border:1px dashed var(--md-sys-color-outline);border-radius:8px;background:var(--md-sys-color-surface-variant)}.add-child-button{color:var(--md-sys-color-primary)}.level-1{margin-left:20px}.level-2{margin-left:40px}.level-3{margin-left:60px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.children-list.cdk-drop-list-dragging .child-wrapper:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.delete-action{color:var(--md-sys-color-error)}\n"], dependencies: [{ kind: "component", type: RuleNodeComponent, selector: "praxis-rule-node", inputs: ["node", "nodes", "fieldSchemas", "level", "isSelected", "validationErrors"], outputs: ["nodeClicked", "nodeUpdated", "nodeDeleted", "childAdded", "childMoved"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i9$2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i11$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i11$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: FieldConditionEditorComponent, selector: "praxis-field-condition-editor", inputs: ["config", "fieldSchemas"], outputs: ["configChanged"] }, { kind: "component", type: ConditionalValidatorEditorComponent, selector: "praxis-conditional-validator-editor", inputs: ["config", "fieldSchemas"], outputs: ["configChanged"] }, { kind: "component", type: CollectionValidatorEditorComponent, selector: "praxis-collection-validator-editor", inputs: ["config", "fieldSchemas"], outputs: ["configChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10012
10033
|
}
|
|
10013
10034
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RuleNodeComponent, decorators: [{
|
|
10014
10035
|
type: Component,
|
|
@@ -10025,6 +10046,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10025
10046
|
MatChipsModule,
|
|
10026
10047
|
MatBadgeModule,
|
|
10027
10048
|
MatDividerModule,
|
|
10049
|
+
PraxisIconButtonComponent,
|
|
10028
10050
|
DragDropModule,
|
|
10029
10051
|
FieldConditionEditorComponent,
|
|
10030
10052
|
ConditionalValidatorEditorComponent,
|
|
@@ -10067,11 +10089,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10067
10089
|
|
|
10068
10090
|
<!-- Node Menu -->
|
|
10069
10091
|
<button
|
|
10070
|
-
|
|
10092
|
+
praxisIconButton="more_vert"
|
|
10093
|
+
size="dense"
|
|
10094
|
+
aria-label="Ações da regra"
|
|
10071
10095
|
[matMenuTriggerFor]="nodeMenu"
|
|
10072
10096
|
(click)="$event.stopPropagation()"
|
|
10073
10097
|
>
|
|
10074
|
-
<mat-icon>more_vert</mat-icon>
|
|
10075
10098
|
</button>
|
|
10076
10099
|
|
|
10077
10100
|
<mat-menu #nodeMenu="matMenu">
|
|
@@ -10281,12 +10304,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10281
10304
|
@if (canHaveChildren()) {
|
|
10282
10305
|
<div class="add-child-area">
|
|
10283
10306
|
<button
|
|
10284
|
-
|
|
10285
|
-
|
|
10307
|
+
praxisIconButton="add_circle"
|
|
10308
|
+
size="dense"
|
|
10309
|
+
aria-label="Adicionar regra filha"
|
|
10286
10310
|
(click)="showAddChildMenu()"
|
|
10287
10311
|
class="add-child-button"
|
|
10288
10312
|
>
|
|
10289
|
-
<mat-icon>add_circle</mat-icon>
|
|
10290
10313
|
</button>
|
|
10291
10314
|
</div>
|
|
10292
10315
|
}
|
|
@@ -11151,11 +11174,11 @@ class TargetSelectorComponent {
|
|
|
11151
11174
|
@if (searchControl.value) {
|
|
11152
11175
|
<button
|
|
11153
11176
|
matSuffix
|
|
11154
|
-
|
|
11177
|
+
praxisIconButton="close"
|
|
11178
|
+
size="dense"
|
|
11155
11179
|
[attr.aria-label]="t('target.searchClear', 'Limpar busca')"
|
|
11156
11180
|
(click)="clearSearch($event)"
|
|
11157
11181
|
>
|
|
11158
|
-
<mat-icon>close</mat-icon>
|
|
11159
11182
|
</button>
|
|
11160
11183
|
}
|
|
11161
11184
|
</mat-form-field>
|
|
@@ -11231,7 +11254,7 @@ class TargetSelectorComponent {
|
|
|
11231
11254
|
</div>
|
|
11232
11255
|
}
|
|
11233
11256
|
</div>
|
|
11234
|
-
`, isInline: true, styles: [".target-selector-container{--_pvb-target-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-target-surface: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-target-surface-strong: var(--md-sys-color-surface-container, var(--md-sys-color-surface));--_pvb-target-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-target-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));display:flex;flex-direction:column;gap:16px}.section-header{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:12px 0 8px}.hero-icon{width:74px;height:74px;border-radius:20px;display:inline-flex;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--_pvb-target-accent) 24%,transparent);background:radial-gradient(circle at 30% 30%,color-mix(in srgb,var(--_pvb-target-accent) 22%,transparent) 0%,transparent 55%),color-mix(in srgb,var(--_pvb-target-surface) 98%,black 2%);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 18px 34px color-mix(in srgb,var(--_pvb-target-accent) 12%,transparent)}.hero-icon mat-icon{color:var(--_pvb-target-accent);font-size:30px;width:30px;height:30px}.section-title{font-weight:600;font-size:18px;color:var(--md-sys-color-on-surface)}.section-description{max-width:680px;font-size:14px;color:var(--_pvb-target-text-soft);line-height:1.5}.hero-pill{display:inline-flex;align-items:center;gap:8px;min-height:34px;padding:0 16px;border-radius:999px;border:1px solid color-mix(in srgb,var(--_pvb-target-border) 72%,transparent);background:color-mix(in srgb,var(--_pvb-target-surface-strong) 96%,black 4%);font-size:12px;color:var(--_pvb-target-text-soft);box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.type-toggle-group{display:grid;grid-template-columns:repeat(auto-fit,minmax(136px,1fr));gap:12px}.type-toggle{min-height:88px;height:100%;text-align:left;display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 16px;line-height:1.3;border:1px solid color-mix(in srgb,var(--_pvb-target-border) 72%,transparent);box-sizing:border-box;border-radius:16px;background:color-mix(in srgb,var(--_pvb-target-surface) 92%,black 8%);transition:border-color .22s ease,background .22s ease,transform .22s ease,box-shadow .22s ease;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 12px 26px color-mix(in srgb,black 12%,transparent)}.type-toggle:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--_pvb-target-accent) 36%,transparent)}.type-toggle.mat-button-toggle-checked{border-color:color-mix(in srgb,var(--_pvb-target-accent) 54%,transparent);background:color-mix(in srgb,var(--_pvb-target-accent) 12%,var(--_pvb-target-surface) 88%);box-shadow:inset 0 1px color-mix(in srgb,white 7%,transparent),0 18px 34px color-mix(in srgb,var(--_pvb-target-accent) 14%,transparent)}.type-text{display:flex;flex-direction:column;gap:2px;max-width:100%}.type-label{font-weight:600}.type-desc{font-size:12px;color:var(--_pvb-target-text-soft);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.target-list-selector{margin-top:8px;border-top:1px solid color-mix(in srgb,var(--_pvb-target-border) 52%,transparent);padding-top:14px}.w-100{width:100%}.list-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0;flex-wrap:wrap}.list-title{font-weight:600}.list-stats{font-size:13px;color:var(--_pvb-target-text-soft);white-space:nowrap}.search-input-field{width:260px;align-self:center;display:flex;align-items:center}.search-input-field ::ng-deep .mat-mdc-text-field-wrapper{border-radius:14px;background:color-mix(in srgb,var(--_pvb-target-surface-strong) 94%,black 6%)}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.target-groups{display:flex;flex-direction:column;gap:12px;max-height:340px;overflow:auto;padding-right:4px}.card-list{display:flex;flex-direction:column;gap:8px}.target-card{display:flex;gap:12px;padding:12px 16px;border:1px solid color-mix(in srgb,var(--_pvb-target-border) 78%,transparent);border-radius:14px;cursor:pointer;transition:border-color .22s ease,background .22s ease,transform .22s ease,box-shadow .22s ease;align-items:center;background:color-mix(in srgb,var(--_pvb-target-surface) 96%,black 4%);min-height:72px;box-shadow:inset 0 1px color-mix(in srgb,white 4%,transparent),0 10px 22px color-mix(in srgb,black 10%,transparent)}.target-card:hover{border-color:color-mix(in srgb,var(--_pvb-target-accent) 40%,transparent);transform:translateY(-1px);box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 16px 28px color-mix(in srgb,var(--_pvb-target-accent) 10%,transparent)}.target-card.selected{border-color:color-mix(in srgb,var(--_pvb-target-accent) 64%,transparent);background:color-mix(in srgb,var(--_pvb-target-accent) 12%,var(--_pvb-target-surface) 88%);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 18px 30px color-mix(in srgb,var(--_pvb-target-accent) 12%,transparent)}.card-icon{color:var(--_pvb-target-accent);filter:drop-shadow(0 0 10px color-mix(in srgb,var(--_pvb-target-accent) 16%,transparent))}.card-content{display:flex;flex-direction:column;gap:4px}.card-title{font-weight:600}.card-subtitle{font-size:13px;color:var(--_pvb-target-text-soft)}.card-meta{font-size:12px;color:var(--_pvb-target-text-soft)}.selected-wrapper{background:color-mix(in srgb,var(--_pvb-target-surface) 96%,black 4%);border:1px solid color-mix(in srgb,var(--_pvb-target-border) 78%,transparent);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;margin-top:12px;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.selected-label{font-weight:600;font-size:13px;color:var(--md-sys-color-on-surface)}.selected-targets-chips{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:2px}.chip-icon{margin-right:4px}.selected-summary{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px dashed color-mix(in srgb,var(--_pvb-target-border) 82%,transparent);border-radius:16px;font-size:13px;color:var(--md-sys-color-on-surface)}.no-results{font-style:italic;font-size:13px;text-align:center;padding:12px 0;color:var(--_pvb-target-text-soft)}.target-accordion .mat-expansion-panel-header{padding-top:8px;padding-bottom:8px}.target-accordion .mat-expansion-panel-body{padding-top:4px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: i10.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i8$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i8$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i11$1.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i11$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i11$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i11$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i11$1.MatExpansionPanelDescription, selector: "mat-panel-description" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11257
|
+
`, isInline: true, styles: [".target-selector-container{--_pvb-target-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-target-surface: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-target-surface-strong: var(--md-sys-color-surface-container, var(--md-sys-color-surface));--_pvb-target-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-target-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));display:flex;flex-direction:column;gap:16px}.section-header{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:12px 0 8px}.hero-icon{width:74px;height:74px;border-radius:20px;display:inline-flex;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--_pvb-target-accent) 24%,transparent);background:radial-gradient(circle at 30% 30%,color-mix(in srgb,var(--_pvb-target-accent) 22%,transparent) 0%,transparent 55%),color-mix(in srgb,var(--_pvb-target-surface) 98%,black 2%);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 18px 34px color-mix(in srgb,var(--_pvb-target-accent) 12%,transparent)}.hero-icon mat-icon{color:var(--_pvb-target-accent);font-size:30px;width:30px;height:30px}.section-title{font-weight:600;font-size:18px;color:var(--md-sys-color-on-surface)}.section-description{max-width:680px;font-size:14px;color:var(--_pvb-target-text-soft);line-height:1.5}.hero-pill{display:inline-flex;align-items:center;gap:8px;min-height:34px;padding:0 16px;border-radius:999px;border:1px solid color-mix(in srgb,var(--_pvb-target-border) 72%,transparent);background:color-mix(in srgb,var(--_pvb-target-surface-strong) 96%,black 4%);font-size:12px;color:var(--_pvb-target-text-soft);box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.type-toggle-group{display:grid;grid-template-columns:repeat(auto-fit,minmax(136px,1fr));gap:12px}.type-toggle{min-height:88px;height:100%;text-align:left;display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 16px;line-height:1.3;border:1px solid color-mix(in srgb,var(--_pvb-target-border) 72%,transparent);box-sizing:border-box;border-radius:16px;background:color-mix(in srgb,var(--_pvb-target-surface) 92%,black 8%);transition:border-color .22s ease,background .22s ease,transform .22s ease,box-shadow .22s ease;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 12px 26px color-mix(in srgb,black 12%,transparent)}.type-toggle:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--_pvb-target-accent) 36%,transparent)}.type-toggle.mat-button-toggle-checked{border-color:color-mix(in srgb,var(--_pvb-target-accent) 54%,transparent);background:color-mix(in srgb,var(--_pvb-target-accent) 12%,var(--_pvb-target-surface) 88%);box-shadow:inset 0 1px color-mix(in srgb,white 7%,transparent),0 18px 34px color-mix(in srgb,var(--_pvb-target-accent) 14%,transparent)}.type-text{display:flex;flex-direction:column;gap:2px;max-width:100%}.type-label{font-weight:600}.type-desc{font-size:12px;color:var(--_pvb-target-text-soft);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.target-list-selector{margin-top:8px;border-top:1px solid color-mix(in srgb,var(--_pvb-target-border) 52%,transparent);padding-top:14px}.w-100{width:100%}.list-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0;flex-wrap:wrap}.list-title{font-weight:600}.list-stats{font-size:13px;color:var(--_pvb-target-text-soft);white-space:nowrap}.search-input-field{width:260px;align-self:center;display:flex;align-items:center}.search-input-field ::ng-deep .mat-mdc-text-field-wrapper{border-radius:14px;background:color-mix(in srgb,var(--_pvb-target-surface-strong) 94%,black 6%)}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.target-groups{display:flex;flex-direction:column;gap:12px;max-height:340px;overflow:auto;padding-right:4px}.card-list{display:flex;flex-direction:column;gap:8px}.target-card{display:flex;gap:12px;padding:12px 16px;border:1px solid color-mix(in srgb,var(--_pvb-target-border) 78%,transparent);border-radius:14px;cursor:pointer;transition:border-color .22s ease,background .22s ease,transform .22s ease,box-shadow .22s ease;align-items:center;background:color-mix(in srgb,var(--_pvb-target-surface) 96%,black 4%);min-height:72px;box-shadow:inset 0 1px color-mix(in srgb,white 4%,transparent),0 10px 22px color-mix(in srgb,black 10%,transparent)}.target-card:hover{border-color:color-mix(in srgb,var(--_pvb-target-accent) 40%,transparent);transform:translateY(-1px);box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 16px 28px color-mix(in srgb,var(--_pvb-target-accent) 10%,transparent)}.target-card.selected{border-color:color-mix(in srgb,var(--_pvb-target-accent) 64%,transparent);background:color-mix(in srgb,var(--_pvb-target-accent) 12%,var(--_pvb-target-surface) 88%);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 18px 30px color-mix(in srgb,var(--_pvb-target-accent) 12%,transparent)}.card-icon{color:var(--_pvb-target-accent);filter:drop-shadow(0 0 10px color-mix(in srgb,var(--_pvb-target-accent) 16%,transparent))}.card-content{display:flex;flex-direction:column;gap:4px}.card-title{font-weight:600}.card-subtitle{font-size:13px;color:var(--_pvb-target-text-soft)}.card-meta{font-size:12px;color:var(--_pvb-target-text-soft)}.selected-wrapper{background:color-mix(in srgb,var(--_pvb-target-surface) 96%,black 4%);border:1px solid color-mix(in srgb,var(--_pvb-target-border) 78%,transparent);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;margin-top:12px;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.selected-label{font-weight:600;font-size:13px;color:var(--md-sys-color-on-surface)}.selected-targets-chips{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:2px}.chip-icon{margin-right:4px}.selected-summary{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px dashed color-mix(in srgb,var(--_pvb-target-border) 82%,transparent);border-radius:16px;font-size:13px;color:var(--md-sys-color-on-surface)}.no-results{font-style:italic;font-size:13px;text-align:center;padding:12px 0;color:var(--_pvb-target-text-soft)}.target-accordion .mat-expansion-panel-header{padding-top:8px;padding-bottom:8px}.target-accordion .mat-expansion-panel-body{padding-top:4px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: i10.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i7$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i7$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i10$1.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i10$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i10$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i10$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i10$1.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11235
11258
|
}
|
|
11236
11259
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TargetSelectorComponent, decorators: [{
|
|
11237
11260
|
type: Component,
|
|
@@ -11247,7 +11270,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11247
11270
|
MatButtonToggleModule,
|
|
11248
11271
|
MatCheckboxModule,
|
|
11249
11272
|
MatTooltipModule,
|
|
11250
|
-
MatExpansionModule
|
|
11273
|
+
MatExpansionModule,
|
|
11274
|
+
PraxisIconButtonComponent
|
|
11251
11275
|
], changeDetection: ChangeDetectionStrategy.OnPush, providers: [providePraxisVisualBuilderI18n()], template: `
|
|
11252
11276
|
<div class="target-selector-container">
|
|
11253
11277
|
<div class="section-header">
|
|
@@ -11310,11 +11334,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11310
11334
|
@if (searchControl.value) {
|
|
11311
11335
|
<button
|
|
11312
11336
|
matSuffix
|
|
11313
|
-
|
|
11337
|
+
praxisIconButton="close"
|
|
11338
|
+
size="dense"
|
|
11314
11339
|
[attr.aria-label]="t('target.searchClear', 'Limpar busca')"
|
|
11315
11340
|
(click)="clearSearch($event)"
|
|
11316
11341
|
>
|
|
11317
|
-
<mat-icon>close</mat-icon>
|
|
11318
11342
|
</button>
|
|
11319
11343
|
}
|
|
11320
11344
|
</mat-form-field>
|
|
@@ -12126,6 +12150,7 @@ class RuleDefinitionComponent {
|
|
|
12126
12150
|
<button
|
|
12127
12151
|
mat-stroked-button
|
|
12128
12152
|
type="button"
|
|
12153
|
+
data-testid="rule-definition-previous"
|
|
12129
12154
|
(click)="goPrevious()"
|
|
12130
12155
|
[disabled]="selectedStepIndex === 0"
|
|
12131
12156
|
>
|
|
@@ -12135,6 +12160,7 @@ class RuleDefinitionComponent {
|
|
|
12135
12160
|
mat-flat-button
|
|
12136
12161
|
color="primary"
|
|
12137
12162
|
type="button"
|
|
12163
|
+
[attr.data-testid]="selectedStepIndex === 3 ? 'rule-definition-save' : 'rule-definition-next'"
|
|
12138
12164
|
(click)="goNext()"
|
|
12139
12165
|
[disabled]="!canAdvance()"
|
|
12140
12166
|
>
|
|
@@ -12143,7 +12169,7 @@ class RuleDefinitionComponent {
|
|
|
12143
12169
|
</div>
|
|
12144
12170
|
</div>
|
|
12145
12171
|
</div>
|
|
12146
|
-
`, isInline: true, styles: [".rule-definition-container{--_pvb-definition-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-definition-surface: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-definition-surface-strong: var(--md-sys-color-surface-container, var(--md-sys-color-surface));--_pvb-definition-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-definition-success: var(--md-sys-color-tertiary, #2dcc8f);--_pvb-definition-shadow: color-mix(in srgb, var(--_pvb-definition-accent) 18%, transparent);display:flex;flex-direction:column;gap:8px;padding:6px 16px 12px;overflow-y:auto;height:100%;min-height:0;flex:1;box-sizing:border-box;background:radial-gradient(circle at top center,color-mix(in srgb,var(--_pvb-definition-accent) 8%,transparent) 0%,transparent 34%),var(--_pvb-definition-surface)}.rule-canvas-wrapper{width:100%;min-height:0;margin:0}.rule-stepper{background:transparent;flex:1}.wizard-progress{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;gap:10px;padding:6px 0 14px}.wizard-progress.mobile{grid-template-columns:1fr}.progress-step{display:flex;align-items:center;gap:12px;min-height:62px;padding:10px 12px;border-radius:18px;border:1px solid transparent;background:transparent;color:var(--md-sys-color-on-surface-variant);text-align:left;transition:background .22s ease,border-color .22s ease,box-shadow .22s ease,color .22s ease,transform .22s ease}.progress-step:disabled{cursor:default;opacity:1}.progress-step:not(:disabled){cursor:pointer}.progress-step:not(:disabled):hover{transform:translateY(-1px);background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 82%,transparent);border-color:color-mix(in srgb,var(--_pvb-definition-border) 72%,transparent)}.progress-step.is-current{background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 90%,black 10%);border-color:color-mix(in srgb,var(--_pvb-definition-accent) 34%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--_pvb-definition-accent) 12%,transparent),0 16px 36px color-mix(in srgb,var(--_pvb-definition-shadow) 28%,transparent);color:var(--md-sys-color-on-surface)}.progress-step.is-complete{color:var(--md-sys-color-on-surface)}.progress-step.is-pending{color:var(--md-sys-color-on-surface-variant)}.progress-step-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:36px;height:36px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 52%,transparent);background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 94%,black 6%);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent)}.progress-step.is-current .progress-step-icon{background:color-mix(in srgb,var(--_pvb-definition-accent) 14%,transparent);border-color:color-mix(in srgb,var(--_pvb-definition-accent) 42%,transparent);color:var(--_pvb-definition-accent);box-shadow:inset 0 1px color-mix(in srgb,white 8%,transparent),0 0 18px color-mix(in srgb,var(--_pvb-definition-accent) 18%,transparent)}.progress-step.is-complete .progress-step-icon{background:color-mix(in srgb,var(--_pvb-definition-success) 16%,transparent);border-color:color-mix(in srgb,var(--_pvb-definition-success) 46%,transparent);color:var(--_pvb-definition-success);box-shadow:0 0 18px color-mix(in srgb,var(--_pvb-definition-success) 18%,transparent)}.progress-step-copy{display:flex;flex-direction:column;gap:3px;min-width:0}.progress-step-title{font-size:14px;font-weight:600;color:inherit}.progress-step-subtitle{font-size:11px;line-height:1.2;color:var(--md-sys-color-on-surface-variant)}.progress-connector{height:1px;background:color-mix(in srgb,var(--_pvb-definition-border) 44%,transparent);margin:0 -2px;position:relative;overflow:hidden}.progress-connector.active{background:color-mix(in srgb,var(--_pvb-definition-success) 54%,transparent)}.progress-connector.active:after{content:\"\";position:absolute;inset:-1px auto -1px -20%;width:36%;background:linear-gradient(90deg,transparent 0%,color-mix(in srgb,var(--_pvb-definition-success) 54%,white 16%) 50%,transparent 100%);animation:pvbProgressPulse 2.6s ease-in-out infinite}.panel-content{display:flex;flex-direction:column;gap:12px;padding:0}.mode-selector{margin-bottom:12px;display:flex;justify-content:flex-start}.small-toggles ::ng-deep .mat-button-toggle-label-content{line-height:32px!important;padding:0 12px!important;font-size:13px}.step-question{font-weight:600;font-size:16px;color:var(--md-sys-color-on-surface);margin-top:8px;margin-bottom:8px}.step-label-stack{display:inline-flex;flex-direction:column;gap:2px;line-height:1.1}.step-label-main{font-size:14px;font-weight:600}.step-label-sub{font-size:11px;color:var(--md-sys-color-on-surface-variant)}.step-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-left:0}.step-footer{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 0 0;margin-top:8px;border-top:1px solid color-mix(in srgb,var(--_pvb-definition-border) 52%,transparent);position:sticky;bottom:0;z-index:2;background:linear-gradient(180deg,color-mix(in srgb,var(--_pvb-definition-surface) 2%,transparent),color-mix(in srgb,var(--_pvb-definition-surface) 96%,black 4%) 36%);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.footer-actions-left,.footer-actions-right{display:flex;align-items:center;gap:10px}.step-footer button[mat-stroked-button],.step-footer button[mat-button],.step-footer button[mat-flat-button]{min-height:40px;border-radius:12px}.step-footer button[mat-flat-button]{min-width:108px;box-shadow:0 10px 24px color-mix(in srgb,var(--_pvb-definition-accent) 22%,transparent)}.step-footer button[mat-flat-button]:not([disabled]){animation:pvbPrimaryGlow 2.8s ease-in-out infinite}.condition-warning{display:flex;align-items:flex-start;gap:8px;padding:12px;margin-bottom:12px;border:1px solid var(--md-sys-color-error);border-radius:10px;background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);font-size:13px}.visual-editor-box{height:auto;min-height:0;border:1px solid var(--_pvb-definition-border);border-radius:12px;overflow:visible;box-shadow:none}.w-100{width:100%}.always-hint{font-size:13px;color:var(--md-sys-color-on-surface-variant)}.review-block{display:flex;flex-direction:column;gap:8px;padding:14px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 72%,transparent);background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%);box-shadow:inset 0 1px color-mix(in srgb,white 4%,transparent)}.review-title{font-weight:600}.review-hero{display:flex;flex-direction:column;gap:8px;padding:16px 18px;border-radius:18px;border:1px solid color-mix(in srgb,var(--_pvb-definition-accent) 22%,transparent);background:linear-gradient(135deg,color-mix(in srgb,var(--_pvb-definition-accent) 12%,var(--_pvb-definition-surface-strong) 88%),color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%));box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 18px 42px color-mix(in srgb,var(--_pvb-definition-shadow) 14%,transparent)}.review-hero-title{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--md-sys-color-on-surface-variant)}.review-hero-body{font-size:16px;line-height:1.5;font-weight:500}.review-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.review-block.highlight{grid-column:span 3}.review-kicker{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--md-sys-color-on-surface-variant)}.review-body{font-size:14px;line-height:1.5}.code-block{font-family:Roboto Mono,monospace;font-size:12px;padding:8px;border-radius:8px;background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%);border:1px solid var(--_pvb-definition-border);white-space:pre-wrap;word-break:break-word}.muted{color:var(--md-sys-color-on-surface-variant);font-size:13px}.pill{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:14px;background:color-mix(in srgb,var(--_pvb-definition-accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 78%,transparent);font-size:13px;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.technical-details{border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 72%,transparent);border-radius:14px;padding:12px 14px;background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%)}.technical-details summary{cursor:pointer;font-weight:600}.technical-details[open]{display:flex;flex-direction:column;gap:12px}.review-block.compact{padding:0;border:0;background:transparent}.condition-panel{width:100%;margin-left:0}.condition-editor{border:1px solid var(--_pvb-definition-border);border-radius:12px;padding:10px;box-shadow:none;background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%);width:100%;min-height:unset;overflow:visible}.manual-editor-box ::ng-deep .mat-mdc-form-field-flex{border-radius:8px}::ng-deep .mat-horizontal-stepper-header-container{display:none}::ng-deep .mat-horizontal-content-container{padding:2px 0 0}@media(max-width:768px){.review-grid{grid-template-columns:1fr}.review-block.highlight{grid-column:span 1}.step-footer{flex-direction:column;align-items:stretch}.footer-actions-left,.footer-actions-right{width:100%;justify-content:space-between}.progress-connector{display:none}}@keyframes pvbPrimaryGlow{0%,to{box-shadow:0 10px 24px color-mix(in srgb,var(--_pvb-definition-accent) 22%,transparent)}50%{box-shadow:0 14px 30px color-mix(in srgb,var(--_pvb-definition-accent) 28%,transparent),0 0 0 1px color-mix(in srgb,var(--_pvb-definition-accent) 16%,transparent)}}@keyframes pvbProgressPulse{0%{transform:translate(0);opacity:0}18%{opacity:1}to{transform:translate(340%);opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i8$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i8$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatStepperModule }, { kind: "component", type: i7$3.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i7$3.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i7$3.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["disableRipple", "color", "labelPosition", "headerPosition", "aria-label", "headerPrefix", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i7$3.MatStepperIcon, selector: "ng-template[matStepperIcon]", inputs: ["matStepperIcon"] }, { kind: "component", type: TargetSelectorComponent, selector: "praxis-target-selector", inputs: ["fieldSchemas", "targetSchemas", "initialType", "initialSelection"], outputs: ["selectionChanged"] }, { kind: "component", type: PropertyEffectEditorComponent, selector: "praxis-property-effect-editor", inputs: ["properties", "initialConfig"], outputs: ["configChanged"] }, { kind: "component", type: RuleCanvasComponent, selector: "praxis-rule-canvas", inputs: ["conditionOnly", "state", "fieldSchemas", "validationErrors"], outputs: ["nodeSelected", "nodeAdded", "nodeUpdated", "nodeRemoved"] }, { kind: "pipe", type: i12$1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12172
|
+
`, isInline: true, styles: [".rule-definition-container{--_pvb-definition-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-definition-surface: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-definition-surface-strong: var(--md-sys-color-surface-container, var(--md-sys-color-surface));--_pvb-definition-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-definition-success: var(--md-sys-color-tertiary, #2dcc8f);--_pvb-definition-shadow: color-mix(in srgb, var(--_pvb-definition-accent) 18%, transparent);display:flex;flex-direction:column;gap:8px;padding:6px 16px 12px;overflow-y:auto;height:100%;min-height:0;flex:1;box-sizing:border-box;background:radial-gradient(circle at top center,color-mix(in srgb,var(--_pvb-definition-accent) 8%,transparent) 0%,transparent 34%),var(--_pvb-definition-surface)}.rule-canvas-wrapper{width:100%;min-height:0;margin:0}.rule-stepper{background:transparent;flex:1}.wizard-progress{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;gap:10px;padding:6px 0 14px}.wizard-progress.mobile{grid-template-columns:1fr}.progress-step{display:flex;align-items:center;gap:12px;min-height:62px;padding:10px 12px;border-radius:18px;border:1px solid transparent;background:transparent;color:var(--md-sys-color-on-surface-variant);text-align:left;transition:background .22s ease,border-color .22s ease,box-shadow .22s ease,color .22s ease,transform .22s ease}.progress-step:disabled{cursor:default;opacity:1}.progress-step:not(:disabled){cursor:pointer}.progress-step:not(:disabled):hover{transform:translateY(-1px);background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 82%,transparent);border-color:color-mix(in srgb,var(--_pvb-definition-border) 72%,transparent)}.progress-step.is-current{background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 90%,black 10%);border-color:color-mix(in srgb,var(--_pvb-definition-accent) 34%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--_pvb-definition-accent) 12%,transparent),0 16px 36px color-mix(in srgb,var(--_pvb-definition-shadow) 28%,transparent);color:var(--md-sys-color-on-surface)}.progress-step.is-complete{color:var(--md-sys-color-on-surface)}.progress-step.is-pending{color:var(--md-sys-color-on-surface-variant)}.progress-step-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:36px;height:36px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 52%,transparent);background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 94%,black 6%);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent)}.progress-step.is-current .progress-step-icon{background:color-mix(in srgb,var(--_pvb-definition-accent) 14%,transparent);border-color:color-mix(in srgb,var(--_pvb-definition-accent) 42%,transparent);color:var(--_pvb-definition-accent);box-shadow:inset 0 1px color-mix(in srgb,white 8%,transparent),0 0 18px color-mix(in srgb,var(--_pvb-definition-accent) 18%,transparent)}.progress-step.is-complete .progress-step-icon{background:color-mix(in srgb,var(--_pvb-definition-success) 16%,transparent);border-color:color-mix(in srgb,var(--_pvb-definition-success) 46%,transparent);color:var(--_pvb-definition-success);box-shadow:0 0 18px color-mix(in srgb,var(--_pvb-definition-success) 18%,transparent)}.progress-step-copy{display:flex;flex-direction:column;gap:3px;min-width:0}.progress-step-title{font-size:14px;font-weight:600;color:inherit}.progress-step-subtitle{font-size:11px;line-height:1.2;color:var(--md-sys-color-on-surface-variant)}.progress-connector{height:1px;background:color-mix(in srgb,var(--_pvb-definition-border) 44%,transparent);margin:0 -2px;position:relative;overflow:hidden}.progress-connector.active{background:color-mix(in srgb,var(--_pvb-definition-success) 54%,transparent)}.progress-connector.active:after{content:\"\";position:absolute;inset:-1px auto -1px -20%;width:36%;background:linear-gradient(90deg,transparent 0%,color-mix(in srgb,var(--_pvb-definition-success) 54%,white 16%) 50%,transparent 100%);animation:pvbProgressPulse 2.6s ease-in-out infinite}.panel-content{display:flex;flex-direction:column;gap:12px;padding:0}.mode-selector{margin-bottom:12px;display:flex;justify-content:flex-start}.small-toggles ::ng-deep .mat-button-toggle-label-content{line-height:32px!important;padding:0 12px!important;font-size:13px}.step-question{font-weight:600;font-size:16px;color:var(--md-sys-color-on-surface);margin-top:8px;margin-bottom:8px}.step-label-stack{display:inline-flex;flex-direction:column;gap:2px;line-height:1.1}.step-label-main{font-size:14px;font-weight:600}.step-label-sub{font-size:11px;color:var(--md-sys-color-on-surface-variant)}.step-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-left:0}.step-footer{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 0 0;margin-top:8px;border-top:1px solid color-mix(in srgb,var(--_pvb-definition-border) 52%,transparent);position:sticky;bottom:0;z-index:2;background:linear-gradient(180deg,color-mix(in srgb,var(--_pvb-definition-surface) 2%,transparent),color-mix(in srgb,var(--_pvb-definition-surface) 96%,black 4%) 36%);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.footer-actions-left,.footer-actions-right{display:flex;align-items:center;gap:10px}.step-footer button[mat-stroked-button],.step-footer button[mat-button],.step-footer button[mat-flat-button]{min-height:40px;border-radius:12px}.step-footer button[mat-flat-button]{min-width:108px;box-shadow:0 10px 24px color-mix(in srgb,var(--_pvb-definition-accent) 22%,transparent)}.step-footer button[mat-flat-button]:not([disabled]){animation:pvbPrimaryGlow 2.8s ease-in-out infinite}.condition-warning{display:flex;align-items:flex-start;gap:8px;padding:12px;margin-bottom:12px;border:1px solid var(--md-sys-color-error);border-radius:10px;background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);font-size:13px}.visual-editor-box{height:auto;min-height:0;border:1px solid var(--_pvb-definition-border);border-radius:12px;overflow:visible;box-shadow:none}.w-100{width:100%}.always-hint{font-size:13px;color:var(--md-sys-color-on-surface-variant)}.review-block{display:flex;flex-direction:column;gap:8px;padding:14px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 72%,transparent);background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%);box-shadow:inset 0 1px color-mix(in srgb,white 4%,transparent)}.review-title{font-weight:600}.review-hero{display:flex;flex-direction:column;gap:8px;padding:16px 18px;border-radius:18px;border:1px solid color-mix(in srgb,var(--_pvb-definition-accent) 22%,transparent);background:linear-gradient(135deg,color-mix(in srgb,var(--_pvb-definition-accent) 12%,var(--_pvb-definition-surface-strong) 88%),color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%));box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 18px 42px color-mix(in srgb,var(--_pvb-definition-shadow) 14%,transparent)}.review-hero-title{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--md-sys-color-on-surface-variant)}.review-hero-body{font-size:16px;line-height:1.5;font-weight:500}.review-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.review-block.highlight{grid-column:span 3}.review-kicker{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--md-sys-color-on-surface-variant)}.review-body{font-size:14px;line-height:1.5}.code-block{font-family:Roboto Mono,monospace;font-size:12px;padding:8px;border-radius:8px;background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%);border:1px solid var(--_pvb-definition-border);white-space:pre-wrap;word-break:break-word}.muted{color:var(--md-sys-color-on-surface-variant);font-size:13px}.pill{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:14px;background:color-mix(in srgb,var(--_pvb-definition-accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 78%,transparent);font-size:13px;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.technical-details{border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 72%,transparent);border-radius:14px;padding:12px 14px;background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%)}.technical-details summary{cursor:pointer;font-weight:600}.technical-details[open]{display:flex;flex-direction:column;gap:12px}.review-block.compact{padding:0;border:0;background:transparent}.condition-panel{width:100%;margin-left:0}.condition-editor{border:1px solid var(--_pvb-definition-border);border-radius:12px;padding:10px;box-shadow:none;background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%);width:100%;min-height:unset;overflow:visible}.manual-editor-box ::ng-deep .mat-mdc-form-field-flex{border-radius:8px}::ng-deep .mat-horizontal-stepper-header-container{display:none}::ng-deep .mat-horizontal-content-container{padding:2px 0 0}@media(max-width:768px){.review-grid{grid-template-columns:1fr}.review-block.highlight{grid-column:span 1}.step-footer{flex-direction:column;align-items:stretch}.footer-actions-left,.footer-actions-right{width:100%;justify-content:space-between}.progress-connector{display:none}}@keyframes pvbPrimaryGlow{0%,to{box-shadow:0 10px 24px color-mix(in srgb,var(--_pvb-definition-accent) 22%,transparent)}50%{box-shadow:0 14px 30px color-mix(in srgb,var(--_pvb-definition-accent) 28%,transparent),0 0 0 1px color-mix(in srgb,var(--_pvb-definition-accent) 16%,transparent)}}@keyframes pvbProgressPulse{0%{transform:translate(0);opacity:0}18%{opacity:1}to{transform:translate(340%);opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i7$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i7$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatStepperModule }, { kind: "component", type: i7$3.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i7$3.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i7$3.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["disableRipple", "color", "labelPosition", "headerPosition", "aria-label", "headerPrefix", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i7$3.MatStepperIcon, selector: "ng-template[matStepperIcon]", inputs: ["matStepperIcon"] }, { kind: "component", type: TargetSelectorComponent, selector: "praxis-target-selector", inputs: ["fieldSchemas", "targetSchemas", "initialType", "initialSelection"], outputs: ["selectionChanged"] }, { kind: "component", type: PropertyEffectEditorComponent, selector: "praxis-property-effect-editor", inputs: ["properties", "initialConfig"], outputs: ["configChanged"] }, { kind: "component", type: RuleCanvasComponent, selector: "praxis-rule-canvas", inputs: ["conditionOnly", "state", "fieldSchemas", "validationErrors"], outputs: ["nodeSelected", "nodeAdded", "nodeUpdated", "nodeRemoved"] }, { kind: "pipe", type: i12$1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12147
12173
|
}
|
|
12148
12174
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RuleDefinitionComponent, decorators: [{
|
|
12149
12175
|
type: Component,
|
|
@@ -12428,6 +12454,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
12428
12454
|
<button
|
|
12429
12455
|
mat-stroked-button
|
|
12430
12456
|
type="button"
|
|
12457
|
+
data-testid="rule-definition-previous"
|
|
12431
12458
|
(click)="goPrevious()"
|
|
12432
12459
|
[disabled]="selectedStepIndex === 0"
|
|
12433
12460
|
>
|
|
@@ -12437,6 +12464,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
12437
12464
|
mat-flat-button
|
|
12438
12465
|
color="primary"
|
|
12439
12466
|
type="button"
|
|
12467
|
+
[attr.data-testid]="selectedStepIndex === 3 ? 'rule-definition-save' : 'rule-definition-next'"
|
|
12440
12468
|
(click)="goNext()"
|
|
12441
12469
|
[disabled]="!canAdvance()"
|
|
12442
12470
|
>
|
|
@@ -12779,11 +12807,11 @@ class RuleListComponent {
|
|
|
12779
12807
|
@if (searchTerm) {
|
|
12780
12808
|
<button
|
|
12781
12809
|
matSuffix
|
|
12782
|
-
|
|
12810
|
+
praxisIconButton="close"
|
|
12811
|
+
size="dense"
|
|
12783
12812
|
[attr.aria-label]="t('ruleList.clearSearch', 'Limpar busca')"
|
|
12784
12813
|
(click)="searchTerm = ''"
|
|
12785
12814
|
>
|
|
12786
|
-
<mat-icon>close</mat-icon>
|
|
12787
12815
|
</button>
|
|
12788
12816
|
}
|
|
12789
12817
|
</mat-form-field>
|
|
@@ -12886,23 +12914,22 @@ class RuleListComponent {
|
|
|
12886
12914
|
</div>
|
|
12887
12915
|
<div class="card-actions">
|
|
12888
12916
|
<button
|
|
12889
|
-
|
|
12917
|
+
praxisIconButton="content_copy"
|
|
12918
|
+
size="dense"
|
|
12890
12919
|
class="card-action"
|
|
12891
12920
|
(click)="onDuplicate(item, $event)"
|
|
12892
12921
|
[matTooltip]="t('ruleList.duplicate', 'Duplicar regra')"
|
|
12893
12922
|
[attr.aria-label]="t('ruleList.duplicate', 'Duplicar regra')"
|
|
12894
12923
|
>
|
|
12895
|
-
<mat-icon>content_copy</mat-icon>
|
|
12896
12924
|
</button>
|
|
12897
12925
|
<button
|
|
12898
|
-
|
|
12899
|
-
|
|
12900
|
-
class="card-action"
|
|
12926
|
+
praxisIconButton="delete"
|
|
12927
|
+
size="dense"
|
|
12928
|
+
class="card-action danger-action"
|
|
12901
12929
|
(click)="onDelete(item, $event)"
|
|
12902
12930
|
[matTooltip]="t('ruleList.remove', 'Remover regra')"
|
|
12903
12931
|
[attr.aria-label]="t('ruleList.remove', 'Remover regra')"
|
|
12904
12932
|
>
|
|
12905
|
-
<mat-icon>delete</mat-icon>
|
|
12906
12933
|
</button>
|
|
12907
12934
|
</div>
|
|
12908
12935
|
</div>
|
|
@@ -12937,7 +12964,7 @@ class RuleListComponent {
|
|
|
12937
12964
|
</div>
|
|
12938
12965
|
}
|
|
12939
12966
|
</div>
|
|
12940
|
-
`, isInline: true, styles: [":host{--_pvb-list-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-list-surface: var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));--_pvb-list-surface-strong: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-list-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-list-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));--_pvb-list-success: var(--md-sys-color-primary, var(--_pvb-list-accent));--_pvb-list-warning: var(--md-sys-color-tertiary, #ffb347);--_pvb-list-error: var(--md-sys-color-error, #ff5f5f);display:flex;flex-direction:column;border-right:1px solid var(--md-sys-color-outline-variant);background:radial-gradient(circle at top left,color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent) 0%,transparent 34%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-surface-strong) 94%,black 6%),color-mix(in srgb,var(--_pvb-list-surface) 96%,black 4%));overflow:hidden;min-width:0;color:var(--md-sys-color-on-surface)}.panel-header{padding:18px 18px 12px;display:flex;justify-content:space-between;gap:12px;align-items:flex-start;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 84%,transparent)}.panel-heading{display:flex;flex-direction:column;gap:4px}.eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--_pvb-list-accent)}.panel-header h3{margin:0;font-size:18px;font-weight:600}.header-badge-stack{display:flex;flex-direction:column;align-items:center}.header-badge{min-width:34px;height:34px;padding:0 10px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 92%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 22%,transparent);color:color-mix(in srgb,var(--_pvb-list-accent) 72%,var(--md-sys-color-on-surface) 28%);font-size:13px;font-weight:700}.search-box{padding:0 18px}.w-100,.search-box mat-form-field{width:100%}.search-box ::ng-deep .mat-mdc-text-field-wrapper{background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);border-radius:14px}.search-box ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.filter-row{display:flex;flex-wrap:wrap;gap:8px;padding:10px 18px 0}.filter-chip{min-height:30px;border-radius:999px!important;font-size:12px;color:var(--_pvb-list-text-soft);border-color:color-mix(in srgb,var(--_pvb-list-border) 74%,transparent)!important}.filter-chip.active{color:var(--_pvb-list-accent);background:color-mix(in srgb,var(--_pvb-list-accent) 10%,transparent);border-color:color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent)!important}.panel-actions{padding:12px 18px 14px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.new-rule-button{min-height:42px;border-radius:12px;background:linear-gradient(135deg,color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent),color-mix(in srgb,var(--_pvb-list-accent) 16%,transparent))!important;border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 44%,transparent);color:var(--_pvb-list-accent)!important;font-weight:700}.ai-rule-button{min-width:52px;min-height:42px;border-radius:12px!important;border-color:color-mix(in srgb,var(--_pvb-list-accent) 28%,transparent)!important;color:var(--_pvb-list-accent)!important;padding:0 12px!important}.list-content{flex:1;overflow-y:auto;padding:0 10px 14px}mat-list{padding:0}.rule-list-item{padding:0;margin-bottom:10px;cursor:pointer;height:auto!important;min-height:0}::ng-deep .rule-list-item .mdc-list-item__content{width:100%;padding:0!important}.rule-card{width:100%;display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-list-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);transition:border-color .22s ease,transform .22s ease,box-shadow .22s ease,background .22s ease;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 10px 24px color-mix(in srgb,black 18%,transparent)}.rule-card.has-error{border-color:color-mix(in srgb,var(--_pvb-list-error) 30%,transparent)}.rule-list-item:hover .rule-card{transform:translateY(-1px);border-color:color-mix(in srgb,var(--_pvb-list-accent) 34%,transparent);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 16px 30px color-mix(in srgb,var(--_pvb-list-accent) 12%,transparent)}.rule-list-item.selected .rule-card{border-color:color-mix(in srgb,var(--_pvb-list-accent) 68%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent),0 16px 34px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-accent) 10%,var(--_pvb-list-surface-strong) 90%),color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%))}.rule-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.rule-card-title-group{display:flex;flex-direction:column;gap:10px;min-width:0;flex:1}.rule-title-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}.rule-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;width:fit-content}.rule-status.valid{color:var(--_pvb-list-success)}.rule-status.incomplete{color:var(--_pvb-list-warning)}.rule-status.draft{color:var(--_pvb-list-text-soft)}.rule-status.error{color:var(--_pvb-list-error)}.status-dot{width:8px;height:8px;border-radius:999px;background:currentColor}.card-actions{display:flex;align-items:center;gap:2px}.card-action{opacity:.72;width:30px;height:30px;transition:transform .18s ease,opacity .18s ease,color .18s ease}.card-action:hover{transform:translateY(-1px) scale(1.02);opacity:1}.rule-card-meta{display:flex;flex-wrap:wrap;gap:8px}.meta-pill{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;background:color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent);color:color-mix(in srgb,var(--_pvb-list-accent) 82%,var(--md-sys-color-on-surface) 18%);font-size:12px;box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent)}.meta-pill.subtle{background:color-mix(in srgb,var(--_pvb-list-border) 16%,transparent);color:var(--_pvb-list-text-soft)}.rule-summary{font-size:12px;line-height:1.45;color:var(--_pvb-list-text-soft)}.rule-tags{display:flex;flex-wrap:wrap;gap:6px}.rule-card-footer{display:flex;justify-content:flex-end;align-items:center;min-height:18px}.rule-time{font-size:12px;color:var(--_pvb-list-text-soft);letter-spacing:.01em}.tag{display:inline-flex;align-items:center;min-height:20px;padding:0 8px;border-radius:999px;background:color-mix(in srgb,var(--_pvb-list-accent) 12%,transparent);color:var(--_pvb-list-accent);font-size:11px;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.rule-name{font-weight:600;font-size:15px;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}.empty-list{padding:28px 18px;text-align:center;color:var(--_pvb-list-text-soft);font-size:13px;line-height:1.5}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i12$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i8.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i8.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12967
|
+
`, isInline: true, styles: [":host{--_pvb-list-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-list-surface: var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));--_pvb-list-surface-strong: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-list-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-list-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));--_pvb-list-success: var(--md-sys-color-primary, var(--_pvb-list-accent));--_pvb-list-warning: var(--md-sys-color-tertiary, #ffb347);--_pvb-list-error: var(--md-sys-color-error, #ff5f5f);display:flex;flex-direction:column;border-right:1px solid var(--md-sys-color-outline-variant);background:radial-gradient(circle at top left,color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent) 0%,transparent 34%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-surface-strong) 94%,black 6%),color-mix(in srgb,var(--_pvb-list-surface) 96%,black 4%));overflow:hidden;min-width:0;color:var(--md-sys-color-on-surface)}.panel-header{padding:18px 18px 12px;display:flex;justify-content:space-between;gap:12px;align-items:flex-start;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 84%,transparent)}.panel-heading{display:flex;flex-direction:column;gap:4px}.eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--_pvb-list-accent)}.panel-header h3{margin:0;font-size:18px;font-weight:600}.header-badge-stack{display:flex;flex-direction:column;align-items:center}.header-badge{min-width:34px;height:34px;padding:0 10px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 92%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 22%,transparent);color:color-mix(in srgb,var(--_pvb-list-accent) 72%,var(--md-sys-color-on-surface) 28%);font-size:13px;font-weight:700}.search-box{padding:0 18px}.w-100,.search-box mat-form-field{width:100%}.search-box ::ng-deep .mat-mdc-text-field-wrapper{background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);border-radius:14px}.search-box ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.filter-row{display:flex;flex-wrap:wrap;gap:8px;padding:10px 18px 0}.filter-chip{min-height:30px;border-radius:999px!important;font-size:12px;color:var(--_pvb-list-text-soft);border-color:color-mix(in srgb,var(--_pvb-list-border) 74%,transparent)!important}.filter-chip.active{color:var(--_pvb-list-accent);background:color-mix(in srgb,var(--_pvb-list-accent) 10%,transparent);border-color:color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent)!important}.panel-actions{padding:12px 18px 14px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.new-rule-button{min-height:42px;border-radius:12px;background:linear-gradient(135deg,color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent),color-mix(in srgb,var(--_pvb-list-accent) 16%,transparent))!important;border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 44%,transparent);color:var(--_pvb-list-accent)!important;font-weight:700}.ai-rule-button{min-width:52px;min-height:42px;border-radius:12px!important;border-color:color-mix(in srgb,var(--_pvb-list-accent) 28%,transparent)!important;color:var(--_pvb-list-accent)!important;padding:0 12px!important}.list-content{flex:1;overflow-y:auto;padding:0 10px 14px}mat-list{padding:0}.rule-list-item{padding:0;margin-bottom:10px;cursor:pointer;height:auto!important;min-height:0}::ng-deep .rule-list-item .mdc-list-item__content{width:100%;padding:0!important}.rule-card{width:100%;display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-list-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);transition:border-color .22s ease,transform .22s ease,box-shadow .22s ease,background .22s ease;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 10px 24px color-mix(in srgb,black 18%,transparent)}.rule-card.has-error{border-color:color-mix(in srgb,var(--_pvb-list-error) 30%,transparent)}.rule-list-item:hover .rule-card{transform:translateY(-1px);border-color:color-mix(in srgb,var(--_pvb-list-accent) 34%,transparent);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 16px 30px color-mix(in srgb,var(--_pvb-list-accent) 12%,transparent)}.rule-list-item.selected .rule-card{border-color:color-mix(in srgb,var(--_pvb-list-accent) 68%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent),0 16px 34px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-accent) 10%,var(--_pvb-list-surface-strong) 90%),color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%))}.rule-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.rule-card-title-group{display:flex;flex-direction:column;gap:10px;min-width:0;flex:1}.rule-title-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}.rule-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;width:fit-content}.rule-status.valid{color:var(--_pvb-list-success)}.rule-status.incomplete{color:var(--_pvb-list-warning)}.rule-status.draft{color:var(--_pvb-list-text-soft)}.rule-status.error{color:var(--_pvb-list-error)}.status-dot{width:8px;height:8px;border-radius:999px;background:currentColor}.card-actions{display:flex;align-items:center;gap:2px}.card-action{opacity:.72;transition:transform .18s ease,opacity .18s ease,color .18s ease}.danger-action{color:var(--md-sys-color-error)}.card-action:hover{transform:translateY(-1px) scale(1.02);opacity:1}.rule-card-meta{display:flex;flex-wrap:wrap;gap:8px}.meta-pill{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;background:color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent);color:color-mix(in srgb,var(--_pvb-list-accent) 82%,var(--md-sys-color-on-surface) 18%);font-size:12px;box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent)}.meta-pill.subtle{background:color-mix(in srgb,var(--_pvb-list-border) 16%,transparent);color:var(--_pvb-list-text-soft)}.rule-summary{font-size:12px;line-height:1.45;color:var(--_pvb-list-text-soft)}.rule-tags{display:flex;flex-wrap:wrap;gap:6px}.rule-card-footer{display:flex;justify-content:flex-end;align-items:center;min-height:18px}.rule-time{font-size:12px;color:var(--_pvb-list-text-soft);letter-spacing:.01em}.tag{display:inline-flex;align-items:center;min-height:20px;padding:0 8px;border-radius:999px;background:color-mix(in srgb,var(--_pvb-list-accent) 12%,transparent);color:var(--_pvb-list-accent);font-size:11px;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.rule-name{font-weight:600;font-size:15px;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}.empty-list{padding:28px 18px;text-align:center;color:var(--_pvb-list-text-soft);font-size:13px;line-height:1.5}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i12$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i8.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i8.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12941
12968
|
}
|
|
12942
12969
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RuleListComponent, decorators: [{
|
|
12943
12970
|
type: Component,
|
|
@@ -12951,6 +12978,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
12951
12978
|
MatInputModule,
|
|
12952
12979
|
MatListModule,
|
|
12953
12980
|
MatTooltipModule,
|
|
12981
|
+
PraxisIconButtonComponent,
|
|
12954
12982
|
], changeDetection: ChangeDetectionStrategy.OnPush, providers: [providePraxisVisualBuilderI18n()], host: { class: 'rule-list-panel' }, template: `
|
|
12955
12983
|
<div class="panel-header">
|
|
12956
12984
|
<div class="panel-heading">
|
|
@@ -12974,11 +13002,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
12974
13002
|
@if (searchTerm) {
|
|
12975
13003
|
<button
|
|
12976
13004
|
matSuffix
|
|
12977
|
-
|
|
13005
|
+
praxisIconButton="close"
|
|
13006
|
+
size="dense"
|
|
12978
13007
|
[attr.aria-label]="t('ruleList.clearSearch', 'Limpar busca')"
|
|
12979
13008
|
(click)="searchTerm = ''"
|
|
12980
13009
|
>
|
|
12981
|
-
<mat-icon>close</mat-icon>
|
|
12982
13010
|
</button>
|
|
12983
13011
|
}
|
|
12984
13012
|
</mat-form-field>
|
|
@@ -13081,23 +13109,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
13081
13109
|
</div>
|
|
13082
13110
|
<div class="card-actions">
|
|
13083
13111
|
<button
|
|
13084
|
-
|
|
13112
|
+
praxisIconButton="content_copy"
|
|
13113
|
+
size="dense"
|
|
13085
13114
|
class="card-action"
|
|
13086
13115
|
(click)="onDuplicate(item, $event)"
|
|
13087
13116
|
[matTooltip]="t('ruleList.duplicate', 'Duplicar regra')"
|
|
13088
13117
|
[attr.aria-label]="t('ruleList.duplicate', 'Duplicar regra')"
|
|
13089
13118
|
>
|
|
13090
|
-
<mat-icon>content_copy</mat-icon>
|
|
13091
13119
|
</button>
|
|
13092
13120
|
<button
|
|
13093
|
-
|
|
13094
|
-
|
|
13095
|
-
class="card-action"
|
|
13121
|
+
praxisIconButton="delete"
|
|
13122
|
+
size="dense"
|
|
13123
|
+
class="card-action danger-action"
|
|
13096
13124
|
(click)="onDelete(item, $event)"
|
|
13097
13125
|
[matTooltip]="t('ruleList.remove', 'Remover regra')"
|
|
13098
13126
|
[attr.aria-label]="t('ruleList.remove', 'Remover regra')"
|
|
13099
13127
|
>
|
|
13100
|
-
<mat-icon>delete</mat-icon>
|
|
13101
13128
|
</button>
|
|
13102
13129
|
</div>
|
|
13103
13130
|
</div>
|
|
@@ -13132,7 +13159,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
13132
13159
|
</div>
|
|
13133
13160
|
}
|
|
13134
13161
|
</div>
|
|
13135
|
-
`, styles: [":host{--_pvb-list-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-list-surface: var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));--_pvb-list-surface-strong: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-list-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-list-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));--_pvb-list-success: var(--md-sys-color-primary, var(--_pvb-list-accent));--_pvb-list-warning: var(--md-sys-color-tertiary, #ffb347);--_pvb-list-error: var(--md-sys-color-error, #ff5f5f);display:flex;flex-direction:column;border-right:1px solid var(--md-sys-color-outline-variant);background:radial-gradient(circle at top left,color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent) 0%,transparent 34%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-surface-strong) 94%,black 6%),color-mix(in srgb,var(--_pvb-list-surface) 96%,black 4%));overflow:hidden;min-width:0;color:var(--md-sys-color-on-surface)}.panel-header{padding:18px 18px 12px;display:flex;justify-content:space-between;gap:12px;align-items:flex-start;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 84%,transparent)}.panel-heading{display:flex;flex-direction:column;gap:4px}.eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--_pvb-list-accent)}.panel-header h3{margin:0;font-size:18px;font-weight:600}.header-badge-stack{display:flex;flex-direction:column;align-items:center}.header-badge{min-width:34px;height:34px;padding:0 10px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 92%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 22%,transparent);color:color-mix(in srgb,var(--_pvb-list-accent) 72%,var(--md-sys-color-on-surface) 28%);font-size:13px;font-weight:700}.search-box{padding:0 18px}.w-100,.search-box mat-form-field{width:100%}.search-box ::ng-deep .mat-mdc-text-field-wrapper{background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);border-radius:14px}.search-box ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.filter-row{display:flex;flex-wrap:wrap;gap:8px;padding:10px 18px 0}.filter-chip{min-height:30px;border-radius:999px!important;font-size:12px;color:var(--_pvb-list-text-soft);border-color:color-mix(in srgb,var(--_pvb-list-border) 74%,transparent)!important}.filter-chip.active{color:var(--_pvb-list-accent);background:color-mix(in srgb,var(--_pvb-list-accent) 10%,transparent);border-color:color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent)!important}.panel-actions{padding:12px 18px 14px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.new-rule-button{min-height:42px;border-radius:12px;background:linear-gradient(135deg,color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent),color-mix(in srgb,var(--_pvb-list-accent) 16%,transparent))!important;border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 44%,transparent);color:var(--_pvb-list-accent)!important;font-weight:700}.ai-rule-button{min-width:52px;min-height:42px;border-radius:12px!important;border-color:color-mix(in srgb,var(--_pvb-list-accent) 28%,transparent)!important;color:var(--_pvb-list-accent)!important;padding:0 12px!important}.list-content{flex:1;overflow-y:auto;padding:0 10px 14px}mat-list{padding:0}.rule-list-item{padding:0;margin-bottom:10px;cursor:pointer;height:auto!important;min-height:0}::ng-deep .rule-list-item .mdc-list-item__content{width:100%;padding:0!important}.rule-card{width:100%;display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-list-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);transition:border-color .22s ease,transform .22s ease,box-shadow .22s ease,background .22s ease;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 10px 24px color-mix(in srgb,black 18%,transparent)}.rule-card.has-error{border-color:color-mix(in srgb,var(--_pvb-list-error) 30%,transparent)}.rule-list-item:hover .rule-card{transform:translateY(-1px);border-color:color-mix(in srgb,var(--_pvb-list-accent) 34%,transparent);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 16px 30px color-mix(in srgb,var(--_pvb-list-accent) 12%,transparent)}.rule-list-item.selected .rule-card{border-color:color-mix(in srgb,var(--_pvb-list-accent) 68%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent),0 16px 34px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-accent) 10%,var(--_pvb-list-surface-strong) 90%),color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%))}.rule-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.rule-card-title-group{display:flex;flex-direction:column;gap:10px;min-width:0;flex:1}.rule-title-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}.rule-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;width:fit-content}.rule-status.valid{color:var(--_pvb-list-success)}.rule-status.incomplete{color:var(--_pvb-list-warning)}.rule-status.draft{color:var(--_pvb-list-text-soft)}.rule-status.error{color:var(--_pvb-list-error)}.status-dot{width:8px;height:8px;border-radius:999px;background:currentColor}.card-actions{display:flex;align-items:center;gap:2px}.card-action{opacity:.72;
|
|
13162
|
+
`, styles: [":host{--_pvb-list-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-list-surface: var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));--_pvb-list-surface-strong: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-list-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-list-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));--_pvb-list-success: var(--md-sys-color-primary, var(--_pvb-list-accent));--_pvb-list-warning: var(--md-sys-color-tertiary, #ffb347);--_pvb-list-error: var(--md-sys-color-error, #ff5f5f);display:flex;flex-direction:column;border-right:1px solid var(--md-sys-color-outline-variant);background:radial-gradient(circle at top left,color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent) 0%,transparent 34%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-surface-strong) 94%,black 6%),color-mix(in srgb,var(--_pvb-list-surface) 96%,black 4%));overflow:hidden;min-width:0;color:var(--md-sys-color-on-surface)}.panel-header{padding:18px 18px 12px;display:flex;justify-content:space-between;gap:12px;align-items:flex-start;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 84%,transparent)}.panel-heading{display:flex;flex-direction:column;gap:4px}.eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--_pvb-list-accent)}.panel-header h3{margin:0;font-size:18px;font-weight:600}.header-badge-stack{display:flex;flex-direction:column;align-items:center}.header-badge{min-width:34px;height:34px;padding:0 10px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 92%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 22%,transparent);color:color-mix(in srgb,var(--_pvb-list-accent) 72%,var(--md-sys-color-on-surface) 28%);font-size:13px;font-weight:700}.search-box{padding:0 18px}.w-100,.search-box mat-form-field{width:100%}.search-box ::ng-deep .mat-mdc-text-field-wrapper{background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);border-radius:14px}.search-box ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.filter-row{display:flex;flex-wrap:wrap;gap:8px;padding:10px 18px 0}.filter-chip{min-height:30px;border-radius:999px!important;font-size:12px;color:var(--_pvb-list-text-soft);border-color:color-mix(in srgb,var(--_pvb-list-border) 74%,transparent)!important}.filter-chip.active{color:var(--_pvb-list-accent);background:color-mix(in srgb,var(--_pvb-list-accent) 10%,transparent);border-color:color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent)!important}.panel-actions{padding:12px 18px 14px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.new-rule-button{min-height:42px;border-radius:12px;background:linear-gradient(135deg,color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent),color-mix(in srgb,var(--_pvb-list-accent) 16%,transparent))!important;border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 44%,transparent);color:var(--_pvb-list-accent)!important;font-weight:700}.ai-rule-button{min-width:52px;min-height:42px;border-radius:12px!important;border-color:color-mix(in srgb,var(--_pvb-list-accent) 28%,transparent)!important;color:var(--_pvb-list-accent)!important;padding:0 12px!important}.list-content{flex:1;overflow-y:auto;padding:0 10px 14px}mat-list{padding:0}.rule-list-item{padding:0;margin-bottom:10px;cursor:pointer;height:auto!important;min-height:0}::ng-deep .rule-list-item .mdc-list-item__content{width:100%;padding:0!important}.rule-card{width:100%;display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-list-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);transition:border-color .22s ease,transform .22s ease,box-shadow .22s ease,background .22s ease;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 10px 24px color-mix(in srgb,black 18%,transparent)}.rule-card.has-error{border-color:color-mix(in srgb,var(--_pvb-list-error) 30%,transparent)}.rule-list-item:hover .rule-card{transform:translateY(-1px);border-color:color-mix(in srgb,var(--_pvb-list-accent) 34%,transparent);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 16px 30px color-mix(in srgb,var(--_pvb-list-accent) 12%,transparent)}.rule-list-item.selected .rule-card{border-color:color-mix(in srgb,var(--_pvb-list-accent) 68%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent),0 16px 34px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-accent) 10%,var(--_pvb-list-surface-strong) 90%),color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%))}.rule-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.rule-card-title-group{display:flex;flex-direction:column;gap:10px;min-width:0;flex:1}.rule-title-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}.rule-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;width:fit-content}.rule-status.valid{color:var(--_pvb-list-success)}.rule-status.incomplete{color:var(--_pvb-list-warning)}.rule-status.draft{color:var(--_pvb-list-text-soft)}.rule-status.error{color:var(--_pvb-list-error)}.status-dot{width:8px;height:8px;border-radius:999px;background:currentColor}.card-actions{display:flex;align-items:center;gap:2px}.card-action{opacity:.72;transition:transform .18s ease,opacity .18s ease,color .18s ease}.danger-action{color:var(--md-sys-color-error)}.card-action:hover{transform:translateY(-1px) scale(1.02);opacity:1}.rule-card-meta{display:flex;flex-wrap:wrap;gap:8px}.meta-pill{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;background:color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent);color:color-mix(in srgb,var(--_pvb-list-accent) 82%,var(--md-sys-color-on-surface) 18%);font-size:12px;box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent)}.meta-pill.subtle{background:color-mix(in srgb,var(--_pvb-list-border) 16%,transparent);color:var(--_pvb-list-text-soft)}.rule-summary{font-size:12px;line-height:1.45;color:var(--_pvb-list-text-soft)}.rule-tags{display:flex;flex-wrap:wrap;gap:6px}.rule-card-footer{display:flex;justify-content:flex-end;align-items:center;min-height:18px}.rule-time{font-size:12px;color:var(--_pvb-list-text-soft);letter-spacing:.01em}.tag{display:inline-flex;align-items:center;min-height:20px;padding:0 8px;border-radius:999px;background:color-mix(in srgb,var(--_pvb-list-accent) 12%,transparent);color:var(--_pvb-list-accent);font-size:11px;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.rule-name{font-weight:600;font-size:15px;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}.empty-list{padding:28px 18px;text-align:center;color:var(--_pvb-list-text-soft);font-size:13px;line-height:1.5}\n"] }]
|
|
13136
13163
|
}], ctorParameters: () => [{ type: i1$2.PraxisI18nService, decorators: [{
|
|
13137
13164
|
type: Optional
|
|
13138
13165
|
}] }], propDecorators: { rules: [{
|
|
@@ -13548,12 +13575,12 @@ class RuleEditorComponent {
|
|
|
13548
13575
|
<div class="builder-shell-header">
|
|
13549
13576
|
<div class="shell-brand">
|
|
13550
13577
|
<button
|
|
13551
|
-
|
|
13578
|
+
[praxisIconButton]="isListPanelOpen ? 'menu_open' : 'menu'"
|
|
13579
|
+
size="dense"
|
|
13552
13580
|
class="shell-menu"
|
|
13553
13581
|
(click)="toggleListPanel()"
|
|
13554
13582
|
[matTooltip]="isListPanelOpen ? t('ruleEditor.toolbar.collapseList', 'Collapse side panel') : t('ruleEditor.toolbar.expandList', 'Expand side panel')"
|
|
13555
13583
|
>
|
|
13556
|
-
<mat-icon>{{ isListPanelOpen ? 'menu_open' : 'menu' }}</mat-icon>
|
|
13557
13584
|
</button>
|
|
13558
13585
|
<div class="brand-mark">
|
|
13559
13586
|
<mat-icon>rule</mat-icon>
|
|
@@ -13577,18 +13604,16 @@ class RuleEditorComponent {
|
|
|
13577
13604
|
<span>{{ t('ruleEditor.shell.unsaved', 'Unsaved changes') }}</span>
|
|
13578
13605
|
</div>
|
|
13579
13606
|
}
|
|
13580
|
-
<button
|
|
13581
|
-
<mat-icon>undo</mat-icon>
|
|
13607
|
+
<button praxisIconButton="undo" size="dense" [disabled]="!canUndo" (click)="undo()" [matTooltip]="t('ruleEditor.toolbar.undo', 'Undo')">
|
|
13582
13608
|
</button>
|
|
13583
|
-
<button
|
|
13584
|
-
<mat-icon>redo</mat-icon>
|
|
13609
|
+
<button praxisIconButton="redo" size="dense" [disabled]="!canRedo" (click)="redo()" [matTooltip]="t('ruleEditor.toolbar.redo', 'Redo')">
|
|
13585
13610
|
</button>
|
|
13586
13611
|
<button
|
|
13587
|
-
|
|
13612
|
+
praxisIconButton="more_horiz"
|
|
13613
|
+
size="dense"
|
|
13588
13614
|
[matMenuTriggerFor]="devMenu"
|
|
13589
13615
|
[matTooltip]="t('ruleEditor.toolbar.advanced', 'More options')"
|
|
13590
13616
|
>
|
|
13591
|
-
<mat-icon>more_horiz</mat-icon>
|
|
13592
13617
|
</button>
|
|
13593
13618
|
</div>
|
|
13594
13619
|
</div>
|
|
@@ -13627,8 +13652,7 @@ class RuleEditorComponent {
|
|
|
13627
13652
|
<h3>{{ t('ruleEditor.conditionOnly.title', 'Condicao') }}</h3>
|
|
13628
13653
|
<p>{{ t('ruleEditor.conditionOnly.subtitle', 'Monte apenas a expressao JSON Logic da condicao.') }}</p>
|
|
13629
13654
|
</div>
|
|
13630
|
-
<button
|
|
13631
|
-
<mat-icon>delete_forever</mat-icon>
|
|
13655
|
+
<button praxisIconButton="delete_forever" size="compact" class="danger-action" (click)="clearRules()" [matTooltip]="t('ruleEditor.debug.clearAll', 'Clear all')">
|
|
13632
13656
|
</button>
|
|
13633
13657
|
</div>
|
|
13634
13658
|
}
|
|
@@ -13726,8 +13750,7 @@ class RuleEditorComponent {
|
|
|
13726
13750
|
<div class="debug-panel">
|
|
13727
13751
|
<div class="debug-header">
|
|
13728
13752
|
<h3>{{ t('ruleEditor.debug.title', 'Debug state') }}</h3>
|
|
13729
|
-
<button
|
|
13730
|
-
<mat-icon>close</mat-icon>
|
|
13753
|
+
<button praxisIconButton="close" size="compact" (click)="showDebugPanel = false">
|
|
13731
13754
|
</button>
|
|
13732
13755
|
</div>
|
|
13733
13756
|
<div class="debug-content">
|
|
@@ -13744,7 +13767,7 @@ class RuleEditorComponent {
|
|
|
13744
13767
|
(change)="onFileSelected($event)"
|
|
13745
13768
|
/>
|
|
13746
13769
|
</div>
|
|
13747
|
-
`, isInline: true, styles: [".rule-editor-container{--_pvb-editor-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-editor-accent-soft: color-mix(in srgb, var(--_pvb-editor-accent) 16%, transparent);--_pvb-editor-surface: var(--md-sys-color-surface, var(--sicoob-background-primary));--_pvb-editor-surface-low: var(--md-sys-color-surface-container-low, var(--sicoob-background-secondary));--_pvb-editor-surface-strong: var(--md-sys-color-surface-container, var(--sicoob-background-tertiary));--_pvb-editor-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-editor-text: var(--md-sys-color-on-surface, var(--sicoob-text-default));--_pvb-editor-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));display:flex;flex-direction:column;height:100%;background:radial-gradient(circle at top center,color-mix(in srgb,var(--_pvb-editor-accent) 12%,transparent) 0%,transparent 32%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-editor-surface-low) 96%,black 4%),color-mix(in srgb,var(--_pvb-editor-surface) 98%,black 2%));overflow:hidden;position:relative;color:var(--_pvb-editor-text)}.rule-editor-container.embedded{height:100%}.condition-only-editor{display:flex;flex-direction:column;height:100%;min-height:360px;overflow:hidden}.condition-only-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%)}.condition-only-header h3{margin:0;font-size:16px;font-weight:600}.condition-only-header p{margin:4px 0 0;font-size:12px;color:var(--_pvb-editor-text-soft)}.condition-only-canvas{flex:1;min-height:0}.builder-shell-header{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:54px;padding:0 18px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%);flex-shrink:0}.shell-brand{display:flex;align-items:center;gap:10px;min-width:0}.shell-menu{margin-right:2px}.brand-mark{width:32px;height:32px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-editor-accent) 24%,transparent)}.brand-mark mat-icon{display:flex;align-items:center;justify-content:center;font-size:18px;width:18px;height:18px;color:var(--_pvb-editor-accent)}.brand-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.brand-title{font-size:14px;font-weight:700}.brand-breadcrumb{font-size:12px;color:var(--_pvb-editor-text-soft)}.shell-nav{display:inline-flex;align-items:center;gap:10px;padding:4px;border-radius:14px;background:color-mix(in srgb,var(--_pvb-editor-surface-low) 94%,black 6%);border:1px solid color-mix(in srgb,var(--_pvb-editor-border) 56%,transparent)}.nav-pill{min-width:96px;height:34px;border:0;border-radius:10px;background:transparent;color:var(--_pvb-editor-text-soft);font:inherit;font-size:13px;cursor:default}.nav-pill.active{color:var(--_pvb-editor-text);background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--_pvb-editor-accent) 34%,transparent)}.shell-status{display:flex;align-items:center;gap:6px}.unsaved-indicator{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--_pvb-editor-text);margin-right:6px}.unsaved-dot{width:8px;height:8px;border-radius:999px;background:#f0b429;box-shadow:0 0 12px #f0b42973}.
|
|
13770
|
+
`, isInline: true, styles: [".rule-editor-container{--_pvb-editor-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-editor-accent-soft: color-mix(in srgb, var(--_pvb-editor-accent) 16%, transparent);--_pvb-editor-surface: var(--md-sys-color-surface, var(--sicoob-background-primary));--_pvb-editor-surface-low: var(--md-sys-color-surface-container-low, var(--sicoob-background-secondary));--_pvb-editor-surface-strong: var(--md-sys-color-surface-container, var(--sicoob-background-tertiary));--_pvb-editor-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-editor-text: var(--md-sys-color-on-surface, var(--sicoob-text-default));--_pvb-editor-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));display:flex;flex-direction:column;height:100%;background:radial-gradient(circle at top center,color-mix(in srgb,var(--_pvb-editor-accent) 12%,transparent) 0%,transparent 32%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-editor-surface-low) 96%,black 4%),color-mix(in srgb,var(--_pvb-editor-surface) 98%,black 2%));overflow:hidden;position:relative;color:var(--_pvb-editor-text)}.rule-editor-container.embedded{height:100%}.condition-only-editor{display:flex;flex-direction:column;height:100%;min-height:360px;overflow:hidden}.condition-only-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%)}.condition-only-header h3{margin:0;font-size:16px;font-weight:600}.condition-only-header p{margin:4px 0 0;font-size:12px;color:var(--_pvb-editor-text-soft)}.condition-only-canvas{flex:1;min-height:0}.builder-shell-header{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:54px;padding:0 18px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%);flex-shrink:0}.shell-brand{display:flex;align-items:center;gap:10px;min-width:0}.shell-menu{margin-right:2px}.brand-mark{width:32px;height:32px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-editor-accent) 24%,transparent)}.brand-mark mat-icon{display:flex;align-items:center;justify-content:center;font-size:18px;width:18px;height:18px;color:var(--_pvb-editor-accent)}.brand-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.brand-title{font-size:14px;font-weight:700}.brand-breadcrumb{font-size:12px;color:var(--_pvb-editor-text-soft)}.shell-nav{display:inline-flex;align-items:center;gap:10px;padding:4px;border-radius:14px;background:color-mix(in srgb,var(--_pvb-editor-surface-low) 94%,black 6%);border:1px solid color-mix(in srgb,var(--_pvb-editor-border) 56%,transparent)}.nav-pill{min-width:96px;height:34px;border:0;border-radius:10px;background:transparent;color:var(--_pvb-editor-text-soft);font:inherit;font-size:13px;cursor:default}.nav-pill.active{color:var(--_pvb-editor-text);background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--_pvb-editor-accent) 34%,transparent)}.shell-status{display:flex;align-items:center;gap:6px}.unsaved-indicator{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--_pvb-editor-text);margin-right:6px}.unsaved-dot{width:8px;height:8px;border-radius:999px;background:#f0b429;box-shadow:0 0 12px #f0b42973}.danger-action{color:var(--md-sys-color-error)}.editor-content-grid{display:grid;grid-template-columns:360px 1fr;flex:1;overflow:hidden;min-height:0;min-width:0;transition:grid-template-columns .2s ease}.editor-content-grid.list-closed{grid-template-columns:0 1fr}.rule-list-panel{border-right:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-low) 94%,black 6%);display:flex;flex-direction:column;overflow:hidden;min-width:0}.rule-definition-panel{background:radial-gradient(circle at 50% 0%,color-mix(in srgb,var(--_pvb-editor-accent) 8%,transparent) 0%,transparent 26%),transparent;overflow:hidden;display:flex;flex-direction:column;position:relative;min-height:0;min-width:0;flex:1}.empty-state,.unsupported-node{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--_pvb-editor-text-soft);gap:16px;text-align:center;padding:32px}.empty-state mat-icon,.unsupported-node mat-icon{font-size:64px;width:64px;height:64px;opacity:.9;color:var(--_pvb-editor-accent)}.status-bar{height:32px;background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 92%,black 8%);border-top:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent);display:flex;align-items:center;justify-content:space-between;padding:0 16px;font-size:12px;color:var(--_pvb-editor-text-soft);flex-shrink:0}.status-left,.status-center{display:flex;align-items:center;gap:8px}.validation-status{display:flex;align-items:center;gap:4px}.validation-status.error{color:var(--md-sys-color-error)}.validation-status.success{color:var(--md-sys-color-tertiary)}.validation-status mat-icon{font-size:16px;width:16px;height:16px}.debug-panel{position:absolute;top:0;right:0;bottom:0;width:400px;background:var(--_pvb-editor-surface);border-left:1px solid var(--_pvb-editor-border);box-shadow:-2px 0 8px #0000001a;z-index:var(--praxis-layer-authoring-toolbar, 340);display:flex;flex-direction:column}.debug-header{padding:8px 16px;border-bottom:1px solid var(--_pvb-editor-border);display:flex;align-items:center;justify-content:space-between;background:var(--_pvb-editor-surface-strong)}.debug-content{flex:1;overflow:auto;padding:16px;font-family:monospace;font-size:12px}@media(max-width:1180px){.builder-shell-header{flex-wrap:wrap;justify-content:flex-start;padding:10px 14px}.shell-nav{order:3;width:100%;justify-content:center}.shell-status{margin-left:auto}}@media(max-width:720px){.editor-content-grid,.editor-content-grid.list-closed{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(360px,1fr);overflow-y:auto}.rule-list-panel{max-height:min(360px,48vh);border-right:0;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent)}.rule-definition-panel{min-height:360px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i9$2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "component", type: RuleListComponent, selector: "praxis-rule-list", inputs: ["rules", "selectedRuleId", "nodeMap", "validationErrors"], outputs: ["ruleSelected", "ruleDeleted", "ruleDuplicated", "ruleAdded", "aiRequested"] }, { kind: "component", type: RuleDefinitionComponent, selector: "praxis-rule-definition", inputs: ["ruleNode", "fieldSchemas", "targetSchemas", "propertySchema"], outputs: ["ruleChanged"] }, { kind: "component", type: RuleCanvasComponent, selector: "praxis-rule-canvas", inputs: ["conditionOnly", "state", "fieldSchemas", "validationErrors"], outputs: ["nodeSelected", "nodeAdded", "nodeUpdated", "nodeRemoved"] }, { kind: "pipe", type: i12$1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
13748
13771
|
}
|
|
13749
13772
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RuleEditorComponent, decorators: [{
|
|
13750
13773
|
type: Component,
|
|
@@ -13763,6 +13786,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
13763
13786
|
MatDialogModule,
|
|
13764
13787
|
MatBadgeModule,
|
|
13765
13788
|
MatMenuModule,
|
|
13789
|
+
PraxisIconButtonComponent,
|
|
13766
13790
|
RuleListComponent,
|
|
13767
13791
|
RuleDefinitionComponent,
|
|
13768
13792
|
RuleCanvasComponent,
|
|
@@ -13776,12 +13800,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
13776
13800
|
<div class="builder-shell-header">
|
|
13777
13801
|
<div class="shell-brand">
|
|
13778
13802
|
<button
|
|
13779
|
-
|
|
13803
|
+
[praxisIconButton]="isListPanelOpen ? 'menu_open' : 'menu'"
|
|
13804
|
+
size="dense"
|
|
13780
13805
|
class="shell-menu"
|
|
13781
13806
|
(click)="toggleListPanel()"
|
|
13782
13807
|
[matTooltip]="isListPanelOpen ? t('ruleEditor.toolbar.collapseList', 'Collapse side panel') : t('ruleEditor.toolbar.expandList', 'Expand side panel')"
|
|
13783
13808
|
>
|
|
13784
|
-
<mat-icon>{{ isListPanelOpen ? 'menu_open' : 'menu' }}</mat-icon>
|
|
13785
13809
|
</button>
|
|
13786
13810
|
<div class="brand-mark">
|
|
13787
13811
|
<mat-icon>rule</mat-icon>
|
|
@@ -13805,18 +13829,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
13805
13829
|
<span>{{ t('ruleEditor.shell.unsaved', 'Unsaved changes') }}</span>
|
|
13806
13830
|
</div>
|
|
13807
13831
|
}
|
|
13808
|
-
<button
|
|
13809
|
-
<mat-icon>undo</mat-icon>
|
|
13832
|
+
<button praxisIconButton="undo" size="dense" [disabled]="!canUndo" (click)="undo()" [matTooltip]="t('ruleEditor.toolbar.undo', 'Undo')">
|
|
13810
13833
|
</button>
|
|
13811
|
-
<button
|
|
13812
|
-
<mat-icon>redo</mat-icon>
|
|
13834
|
+
<button praxisIconButton="redo" size="dense" [disabled]="!canRedo" (click)="redo()" [matTooltip]="t('ruleEditor.toolbar.redo', 'Redo')">
|
|
13813
13835
|
</button>
|
|
13814
13836
|
<button
|
|
13815
|
-
|
|
13837
|
+
praxisIconButton="more_horiz"
|
|
13838
|
+
size="dense"
|
|
13816
13839
|
[matMenuTriggerFor]="devMenu"
|
|
13817
13840
|
[matTooltip]="t('ruleEditor.toolbar.advanced', 'More options')"
|
|
13818
13841
|
>
|
|
13819
|
-
<mat-icon>more_horiz</mat-icon>
|
|
13820
13842
|
</button>
|
|
13821
13843
|
</div>
|
|
13822
13844
|
</div>
|
|
@@ -13855,8 +13877,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
13855
13877
|
<h3>{{ t('ruleEditor.conditionOnly.title', 'Condicao') }}</h3>
|
|
13856
13878
|
<p>{{ t('ruleEditor.conditionOnly.subtitle', 'Monte apenas a expressao JSON Logic da condicao.') }}</p>
|
|
13857
13879
|
</div>
|
|
13858
|
-
<button
|
|
13859
|
-
<mat-icon>delete_forever</mat-icon>
|
|
13880
|
+
<button praxisIconButton="delete_forever" size="compact" class="danger-action" (click)="clearRules()" [matTooltip]="t('ruleEditor.debug.clearAll', 'Clear all')">
|
|
13860
13881
|
</button>
|
|
13861
13882
|
</div>
|
|
13862
13883
|
}
|
|
@@ -13954,8 +13975,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
13954
13975
|
<div class="debug-panel">
|
|
13955
13976
|
<div class="debug-header">
|
|
13956
13977
|
<h3>{{ t('ruleEditor.debug.title', 'Debug state') }}</h3>
|
|
13957
|
-
<button
|
|
13958
|
-
<mat-icon>close</mat-icon>
|
|
13978
|
+
<button praxisIconButton="close" size="compact" (click)="showDebugPanel = false">
|
|
13959
13979
|
</button>
|
|
13960
13980
|
</div>
|
|
13961
13981
|
<div class="debug-content">
|
|
@@ -13972,7 +13992,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
13972
13992
|
(change)="onFileSelected($event)"
|
|
13973
13993
|
/>
|
|
13974
13994
|
</div>
|
|
13975
|
-
`, styles: [".rule-editor-container{--_pvb-editor-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-editor-accent-soft: color-mix(in srgb, var(--_pvb-editor-accent) 16%, transparent);--_pvb-editor-surface: var(--md-sys-color-surface, var(--sicoob-background-primary));--_pvb-editor-surface-low: var(--md-sys-color-surface-container-low, var(--sicoob-background-secondary));--_pvb-editor-surface-strong: var(--md-sys-color-surface-container, var(--sicoob-background-tertiary));--_pvb-editor-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-editor-text: var(--md-sys-color-on-surface, var(--sicoob-text-default));--_pvb-editor-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));display:flex;flex-direction:column;height:100%;background:radial-gradient(circle at top center,color-mix(in srgb,var(--_pvb-editor-accent) 12%,transparent) 0%,transparent 32%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-editor-surface-low) 96%,black 4%),color-mix(in srgb,var(--_pvb-editor-surface) 98%,black 2%));overflow:hidden;position:relative;color:var(--_pvb-editor-text)}.rule-editor-container.embedded{height:100%}.condition-only-editor{display:flex;flex-direction:column;height:100%;min-height:360px;overflow:hidden}.condition-only-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%)}.condition-only-header h3{margin:0;font-size:16px;font-weight:600}.condition-only-header p{margin:4px 0 0;font-size:12px;color:var(--_pvb-editor-text-soft)}.condition-only-canvas{flex:1;min-height:0}.builder-shell-header{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:54px;padding:0 18px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%);flex-shrink:0}.shell-brand{display:flex;align-items:center;gap:10px;min-width:0}.shell-menu{margin-right:2px}.brand-mark{width:32px;height:32px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-editor-accent) 24%,transparent)}.brand-mark mat-icon{display:flex;align-items:center;justify-content:center;font-size:18px;width:18px;height:18px;color:var(--_pvb-editor-accent)}.brand-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.brand-title{font-size:14px;font-weight:700}.brand-breadcrumb{font-size:12px;color:var(--_pvb-editor-text-soft)}.shell-nav{display:inline-flex;align-items:center;gap:10px;padding:4px;border-radius:14px;background:color-mix(in srgb,var(--_pvb-editor-surface-low) 94%,black 6%);border:1px solid color-mix(in srgb,var(--_pvb-editor-border) 56%,transparent)}.nav-pill{min-width:96px;height:34px;border:0;border-radius:10px;background:transparent;color:var(--_pvb-editor-text-soft);font:inherit;font-size:13px;cursor:default}.nav-pill.active{color:var(--_pvb-editor-text);background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--_pvb-editor-accent) 34%,transparent)}.shell-status{display:flex;align-items:center;gap:6px}.unsaved-indicator{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--_pvb-editor-text);margin-right:6px}.unsaved-dot{width:8px;height:8px;border-radius:999px;background:#f0b429;box-shadow:0 0 12px #f0b42973}.
|
|
13995
|
+
`, styles: [".rule-editor-container{--_pvb-editor-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-editor-accent-soft: color-mix(in srgb, var(--_pvb-editor-accent) 16%, transparent);--_pvb-editor-surface: var(--md-sys-color-surface, var(--sicoob-background-primary));--_pvb-editor-surface-low: var(--md-sys-color-surface-container-low, var(--sicoob-background-secondary));--_pvb-editor-surface-strong: var(--md-sys-color-surface-container, var(--sicoob-background-tertiary));--_pvb-editor-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-editor-text: var(--md-sys-color-on-surface, var(--sicoob-text-default));--_pvb-editor-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));display:flex;flex-direction:column;height:100%;background:radial-gradient(circle at top center,color-mix(in srgb,var(--_pvb-editor-accent) 12%,transparent) 0%,transparent 32%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-editor-surface-low) 96%,black 4%),color-mix(in srgb,var(--_pvb-editor-surface) 98%,black 2%));overflow:hidden;position:relative;color:var(--_pvb-editor-text)}.rule-editor-container.embedded{height:100%}.condition-only-editor{display:flex;flex-direction:column;height:100%;min-height:360px;overflow:hidden}.condition-only-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%)}.condition-only-header h3{margin:0;font-size:16px;font-weight:600}.condition-only-header p{margin:4px 0 0;font-size:12px;color:var(--_pvb-editor-text-soft)}.condition-only-canvas{flex:1;min-height:0}.builder-shell-header{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:54px;padding:0 18px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%);flex-shrink:0}.shell-brand{display:flex;align-items:center;gap:10px;min-width:0}.shell-menu{margin-right:2px}.brand-mark{width:32px;height:32px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-editor-accent) 24%,transparent)}.brand-mark mat-icon{display:flex;align-items:center;justify-content:center;font-size:18px;width:18px;height:18px;color:var(--_pvb-editor-accent)}.brand-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.brand-title{font-size:14px;font-weight:700}.brand-breadcrumb{font-size:12px;color:var(--_pvb-editor-text-soft)}.shell-nav{display:inline-flex;align-items:center;gap:10px;padding:4px;border-radius:14px;background:color-mix(in srgb,var(--_pvb-editor-surface-low) 94%,black 6%);border:1px solid color-mix(in srgb,var(--_pvb-editor-border) 56%,transparent)}.nav-pill{min-width:96px;height:34px;border:0;border-radius:10px;background:transparent;color:var(--_pvb-editor-text-soft);font:inherit;font-size:13px;cursor:default}.nav-pill.active{color:var(--_pvb-editor-text);background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--_pvb-editor-accent) 34%,transparent)}.shell-status{display:flex;align-items:center;gap:6px}.unsaved-indicator{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--_pvb-editor-text);margin-right:6px}.unsaved-dot{width:8px;height:8px;border-radius:999px;background:#f0b429;box-shadow:0 0 12px #f0b42973}.danger-action{color:var(--md-sys-color-error)}.editor-content-grid{display:grid;grid-template-columns:360px 1fr;flex:1;overflow:hidden;min-height:0;min-width:0;transition:grid-template-columns .2s ease}.editor-content-grid.list-closed{grid-template-columns:0 1fr}.rule-list-panel{border-right:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-low) 94%,black 6%);display:flex;flex-direction:column;overflow:hidden;min-width:0}.rule-definition-panel{background:radial-gradient(circle at 50% 0%,color-mix(in srgb,var(--_pvb-editor-accent) 8%,transparent) 0%,transparent 26%),transparent;overflow:hidden;display:flex;flex-direction:column;position:relative;min-height:0;min-width:0;flex:1}.empty-state,.unsupported-node{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--_pvb-editor-text-soft);gap:16px;text-align:center;padding:32px}.empty-state mat-icon,.unsupported-node mat-icon{font-size:64px;width:64px;height:64px;opacity:.9;color:var(--_pvb-editor-accent)}.status-bar{height:32px;background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 92%,black 8%);border-top:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent);display:flex;align-items:center;justify-content:space-between;padding:0 16px;font-size:12px;color:var(--_pvb-editor-text-soft);flex-shrink:0}.status-left,.status-center{display:flex;align-items:center;gap:8px}.validation-status{display:flex;align-items:center;gap:4px}.validation-status.error{color:var(--md-sys-color-error)}.validation-status.success{color:var(--md-sys-color-tertiary)}.validation-status mat-icon{font-size:16px;width:16px;height:16px}.debug-panel{position:absolute;top:0;right:0;bottom:0;width:400px;background:var(--_pvb-editor-surface);border-left:1px solid var(--_pvb-editor-border);box-shadow:-2px 0 8px #0000001a;z-index:var(--praxis-layer-authoring-toolbar, 340);display:flex;flex-direction:column}.debug-header{padding:8px 16px;border-bottom:1px solid var(--_pvb-editor-border);display:flex;align-items:center;justify-content:space-between;background:var(--_pvb-editor-surface-strong)}.debug-content{flex:1;overflow:auto;padding:16px;font-family:monospace;font-size:12px}@media(max-width:1180px){.builder-shell-header{flex-wrap:wrap;justify-content:flex-start;padding:10px 14px}.shell-nav{order:3;width:100%;justify-content:center}.shell-status{margin-left:auto}}@media(max-width:720px){.editor-content-grid,.editor-content-grid.list-closed{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(360px,1fr);overflow-y:auto}.rule-list-panel{max-height:min(360px,48vh);border-right:0;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent)}.rule-definition-panel{min-height:360px}}\n"] }]
|
|
13976
13996
|
}], ctorParameters: () => [{ type: RuleBuilderService }, { type: FieldSchemaService }, { type: i3$1.AiResponseValidatorService }, { type: i4.MatSnackBar }, { type: i1.MatDialog }, { type: i0.ChangeDetectorRef }, { type: i1$2.PraxisI18nService, decorators: [{
|
|
13977
13997
|
type: Optional
|
|
13978
13998
|
}] }], propDecorators: { embedded: [{
|
|
@@ -14075,6 +14095,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
14075
14095
|
type: Output
|
|
14076
14096
|
}] } });
|
|
14077
14097
|
|
|
14098
|
+
/** Metadata for Praxis Visual Builder component */
|
|
14099
|
+
const PRAXIS_VISUAL_BUILDER_COMPONENT_METADATA = {
|
|
14100
|
+
id: 'praxis-visual-builder',
|
|
14101
|
+
selector: 'praxis-visual-builder',
|
|
14102
|
+
component: PraxisVisualBuilder,
|
|
14103
|
+
friendlyName: 'Praxis Visual Builder',
|
|
14104
|
+
description: 'Visual rule builder with JSON Logic authoring and governed compatibility for legacy payloads.',
|
|
14105
|
+
inputs: [
|
|
14106
|
+
{
|
|
14107
|
+
name: 'config',
|
|
14108
|
+
type: 'RuleBuilderConfig | null',
|
|
14109
|
+
label: 'Configuracao',
|
|
14110
|
+
description: 'Configuracao do builder (schemas, templates, UI e validacoes).',
|
|
14111
|
+
},
|
|
14112
|
+
{
|
|
14113
|
+
name: 'initialRules',
|
|
14114
|
+
type: 'any',
|
|
14115
|
+
label: 'Regras iniciais',
|
|
14116
|
+
description: 'Estado inicial de regras para carregar no editor.',
|
|
14117
|
+
},
|
|
14118
|
+
],
|
|
14119
|
+
outputs: [
|
|
14120
|
+
{
|
|
14121
|
+
name: 'rulesChanged',
|
|
14122
|
+
type: 'RuleBuilderState',
|
|
14123
|
+
label: 'Regras alteradas',
|
|
14124
|
+
description: 'Disparado quando o grafo/estado de regras e alterado.',
|
|
14125
|
+
},
|
|
14126
|
+
{
|
|
14127
|
+
name: 'exportRequested',
|
|
14128
|
+
type: 'ExportOptions',
|
|
14129
|
+
label: 'Exportacao solicitada',
|
|
14130
|
+
description: 'Disparado quando o usuario solicita exportacao.',
|
|
14131
|
+
},
|
|
14132
|
+
{
|
|
14133
|
+
name: 'importRequested',
|
|
14134
|
+
type: 'ImportOptions',
|
|
14135
|
+
label: 'Importacao solicitada',
|
|
14136
|
+
description: 'Disparado quando o usuario solicita importacao.',
|
|
14137
|
+
},
|
|
14138
|
+
],
|
|
14139
|
+
tags: ['widget', 'rules', 'configurable'],
|
|
14140
|
+
lib: '@praxisui/visual-builder',
|
|
14141
|
+
};
|
|
14142
|
+
/** Provider para auto-registrar metadados do componente Visual Builder. */
|
|
14143
|
+
function providePraxisVisualBuilderMetadata() {
|
|
14144
|
+
return {
|
|
14145
|
+
provide: ENVIRONMENT_INITIALIZER,
|
|
14146
|
+
multi: true,
|
|
14147
|
+
useFactory: (registry) => () => {
|
|
14148
|
+
registry.register(PRAXIS_VISUAL_BUILDER_COMPONENT_METADATA);
|
|
14149
|
+
},
|
|
14150
|
+
deps: [ComponentMetadataRegistry],
|
|
14151
|
+
};
|
|
14152
|
+
}
|
|
14153
|
+
|
|
14078
14154
|
const nodeAddSchema = {
|
|
14079
14155
|
type: 'object',
|
|
14080
14156
|
required: ['nodeId', 'nodeType'],
|
|
@@ -14164,7 +14240,6 @@ const variableAddSchema = {
|
|
|
14164
14240
|
name: { type: 'string' },
|
|
14165
14241
|
scope: { type: 'string' },
|
|
14166
14242
|
type: { enum: ['string', 'number', 'boolean', 'object', 'array'] },
|
|
14167
|
-
valueType: { enum: ['literal', 'field', 'context', 'function'] },
|
|
14168
14243
|
defaultValue: {},
|
|
14169
14244
|
description: { type: 'string' },
|
|
14170
14245
|
},
|
|
@@ -14221,7 +14296,7 @@ const PRAXIS_VISUAL_BUILDER_AUTHORING_MANIFEST = {
|
|
|
14221
14296
|
editableTargets: [
|
|
14222
14297
|
{ kind: 'node', resolver: 'rule-node-by-id', description: 'Visual rule graph node keyed by stable RuleNode.id.' },
|
|
14223
14298
|
{ kind: 'edge', resolver: 'rule-node-edge-by-source-target', description: 'Parent-child or semantic graph edge between existing rule nodes.' },
|
|
14224
|
-
{ kind: 'variable', resolver: 'context-variable-by-name-scope', description: 'Context variable
|
|
14299
|
+
{ kind: 'variable', resolver: 'context-variable-by-name-scope', description: 'Context variable governed by ContextManagementService for contextual/template flows; visual field-condition references are not authorable until a canonical JSON Logic shape exists.' },
|
|
14225
14300
|
{ kind: 'condition', resolver: 'json-logic-condition-by-node', description: 'JSON Logic condition attached to a node or represented by condition nodes.' },
|
|
14226
14301
|
{ kind: 'effect', resolver: 'property-effect-by-node', description: 'Targeted property effect persisted as propertyRule/FormLayoutRule semantics.' },
|
|
14227
14302
|
{ kind: 'dslDocument', resolver: 'rule-builder-json-logic-document', description: 'Serialized JSON Logic/form-config document produced from the visual model.' },
|
|
@@ -14350,7 +14425,7 @@ const PRAXIS_VISUAL_BUILDER_AUTHORING_MANIFEST = {
|
|
|
14350
14425
|
identityKeys: ['scope', 'name'],
|
|
14351
14426
|
inputSchema: variableAddSchema,
|
|
14352
14427
|
failureModes: ['duplicate-variable', 'scope-not-found', 'variable-type-invalid', 'context-token-conflict'],
|
|
14353
|
-
description: 'Adds a governed context variable
|
|
14428
|
+
description: 'Adds a governed context variable to ContextManagementService for contextual/template flows. Field-condition references stay unsupported until a canonical JSON Logic shape exists.',
|
|
14354
14429
|
} }],
|
|
14355
14430
|
validators: ['variable-id-unique', 'variable-scope-exists', 'context-variable-reference-valid', 'dsl-round-trip-stable'],
|
|
14356
14431
|
affectedPaths: ['RuleBuilderConfig.contextVariables', 'ContextManagementService'],
|
|
@@ -14372,7 +14447,7 @@ const PRAXIS_VISUAL_BUILDER_AUTHORING_MANIFEST = {
|
|
|
14372
14447
|
identityKeys: ['nodeId'],
|
|
14373
14448
|
inputSchema: conditionSetSchema,
|
|
14374
14449
|
failureModes: ['node-not-found', 'json-logic-invalid', 'unsupported-operator', 'visual-parse-failed', 'dsl-round-trip-failed'],
|
|
14375
|
-
description: 'Sets a canonical JSON Logic condition and proves it can parse back into the visual graph.',
|
|
14450
|
+
description: 'Sets a canonical JSON Logic condition within the runtime-supported visual subset and proves it can parse back into the visual graph.',
|
|
14376
14451
|
} }],
|
|
14377
14452
|
validators: ['json-logic-valid', 'condition-operators-supported', 'condition-fields-known', 'dsl-round-trip-stable'],
|
|
14378
14453
|
affectedPaths: ['RuleBuilderState.nodes[].config.condition', 'RuleBuilderState.currentJSON'],
|
|
@@ -14439,10 +14514,10 @@ const PRAXIS_VISUAL_BUILDER_AUTHORING_MANIFEST = {
|
|
|
14439
14514
|
{ validatorId: 'destructive-removal-confirmed', level: 'error', code: 'VISUAL_BUILDER_DESTRUCTIVE_REMOVAL_CONFIRMED', description: 'Destructive node or edge removal requires explicit confirmation.' },
|
|
14440
14515
|
{ validatorId: 'variable-id-unique', level: 'error', code: 'VISUAL_BUILDER_VARIABLE_ID_UNIQUE', description: 'Context variable name and scope must be unique.' },
|
|
14441
14516
|
{ validatorId: 'variable-scope-exists', level: 'error', code: 'VISUAL_BUILDER_VARIABLE_SCOPE_EXISTS', description: 'Context variable scope must exist in ContextManagementService before variables are added.' },
|
|
14442
|
-
{ validatorId: 'context-variable-reference-valid', level: 'error', code: 'VISUAL_BUILDER_CONTEXT_VARIABLE_VALID', description: '
|
|
14517
|
+
{ validatorId: 'context-variable-reference-valid', level: 'error', code: 'VISUAL_BUILDER_CONTEXT_VARIABLE_VALID', description: 'Contextual/template variable references must resolve to declared variables.' },
|
|
14443
14518
|
{ validatorId: 'json-logic-valid', level: 'error', code: 'VISUAL_BUILDER_JSON_LOGIC_VALID', description: 'Conditions must be valid JSON Logic objects, not JavaScript or legacy textual DSL.' },
|
|
14444
14519
|
{ validatorId: 'condition-operators-supported', level: 'error', code: 'VISUAL_BUILDER_CONDITION_OPERATORS_SUPPORTED', description: 'Condition operators must be supported by visual parsing and export.' },
|
|
14445
|
-
{ validatorId: 'condition-fields-known', level: 'error', code: 'VISUAL_BUILDER_CONDITION_FIELDS_KNOWN', description: 'Condition field references must resolve to configured field schemas
|
|
14520
|
+
{ validatorId: 'condition-fields-known', level: 'error', code: 'VISUAL_BUILDER_CONDITION_FIELDS_KNOWN', description: 'Condition field references must resolve to configured field schemas; field-to-field comparisons use JSON Logic var operands.' },
|
|
14446
14521
|
{ validatorId: 'effect-targets-exist', level: 'error', code: 'VISUAL_BUILDER_EFFECT_TARGETS_EXIST', description: 'Effect targets must exist in configured target schemas.' },
|
|
14447
14522
|
{ validatorId: 'effect-properties-governed', level: 'error', code: 'VISUAL_BUILDER_EFFECT_PROPERTIES_GOVERNED', description: 'Effect properties must be allowed for the target type.' },
|
|
14448
14523
|
{ validatorId: 'effect-values-valid', level: 'error', code: 'VISUAL_BUILDER_EFFECT_VALUES_VALID', description: 'Effect property values must satisfy target property schema types.' },
|
|
@@ -14451,11 +14526,11 @@ const PRAXIS_VISUAL_BUILDER_AUTHORING_MANIFEST = {
|
|
|
14451
14526
|
],
|
|
14452
14527
|
roundTripRequirements: [
|
|
14453
14528
|
'RuleBuilderState is the visual source of truth; JSON export must import back without semantic drift.',
|
|
14454
|
-
'RuleNode.id and context variable scope/name are canonical identities; array indexes are not canonical identities.',
|
|
14529
|
+
'RuleNode.id and context variable scope/name are canonical identities for their own surfaces; array indexes are not canonical identities.',
|
|
14455
14530
|
'Edges must reference existing nodes and must not create cycles in hierarchical rule graphs.',
|
|
14456
14531
|
'Conditions are canonical JSON Logic objects. JavaScript expressions and legacy textual DSL must not be introduced as persisted authoring payloads.',
|
|
14457
14532
|
'Effects must be constrained by target property schemas and RULE_PROPERTY_SCHEMA so exported FormLayoutRule payloads stay deterministic.',
|
|
14458
|
-
'Component-specific configuration belongs to child component manifests; visual-builder owns graph, JSON Logic,
|
|
14533
|
+
'Component-specific configuration belongs to child component manifests; visual-builder owns graph, supported JSON Logic, context-variable registry and property-effect orchestration.',
|
|
14459
14534
|
],
|
|
14460
14535
|
examples: [
|
|
14461
14536
|
{ id: 'add-field-condition', request: 'Add a condition that age is greater than 18.', operationId: 'node.add', params: { nodeId: 'age-gt-18', nodeType: 'fieldCondition', label: 'Age over 18', config: { type: 'fieldCondition', fieldName: 'age', operator: 'gt', value: 18 } }, isPositive: true },
|
|
@@ -14463,7 +14538,7 @@ const PRAXIS_VISUAL_BUILDER_AUTHORING_MANIFEST = {
|
|
|
14463
14538
|
{ id: 'configure-node', request: 'Rename the eligibility rule and mark it expanded.', operationId: 'node.configure', params: { nodeId: 'eligibility', label: 'Eligibility rule', expanded: true }, isPositive: true },
|
|
14464
14539
|
{ id: 'connect-edge', request: 'Make the age condition a child of the AND group.', operationId: 'edge.connect', params: { sourceNodeId: 'eligibility-and', targetNodeId: 'age-gt-18', edgeKind: 'child' }, isPositive: true },
|
|
14465
14540
|
{ id: 'remove-edge', request: 'Disconnect the age condition from the AND group.', operationId: 'edge.remove', params: { sourceNodeId: 'eligibility-and', targetNodeId: 'age-gt-18', edgeKind: 'child' }, isPositive: true },
|
|
14466
|
-
{ id: 'add-variable', request: 'Add a global variable for current tenant.', operationId: 'variable.add', params: { name: 'tenantId', scope: 'global', type: 'string',
|
|
14541
|
+
{ id: 'add-variable', request: 'Add a global variable for current tenant.', operationId: 'variable.add', params: { name: 'tenantId', scope: 'global', type: 'string', description: 'Current tenant id' }, isPositive: true },
|
|
14467
14542
|
{ id: 'set-condition', request: 'Set this condition to require country equal Brazil.', operationId: 'condition.set', params: { nodeId: 'country-br', condition: { '===': [{ var: 'country' }, 'BR'] }, source: 'jsonLogic' }, isPositive: true },
|
|
14468
14543
|
{ id: 'set-effect', request: 'Make the salary field readonly when the condition is true.', operationId: 'effect.set', params: { nodeId: 'salary-readonly', targetType: 'field', targets: ['salary'], properties: { readonly: true } }, isPositive: true },
|
|
14469
14544
|
{ id: 'validate-round-trip', request: 'Validate that this graph exports and imports without drift.', operationId: 'dsl.roundTrip.validate', params: { format: 'json', requireStableIds: true, compareMode: 'semantic' }, isPositive: true },
|
|
@@ -17017,11 +17092,13 @@ class MetadataEditorComponent {
|
|
|
17017
17092
|
</div>
|
|
17018
17093
|
</div>
|
|
17019
17094
|
<div class="header-actions">
|
|
17020
|
-
<button
|
|
17021
|
-
[
|
|
17095
|
+
<button
|
|
17096
|
+
[praxisIconButton]="hasUnsavedChanges ? 'edit' : 'check_circle'"
|
|
17097
|
+
size="compact"
|
|
17098
|
+
[class.danger-action]="hasUnsavedChanges"
|
|
17099
|
+
[attr.aria-label]="hasUnsavedChanges ? 'Há alterações não salvas' : 'Tudo salvo'"
|
|
17022
17100
|
[matTooltip]="hasUnsavedChanges ? 'Há alterações não salvas' : 'Tudo salvo'"
|
|
17023
17101
|
[disabled]="!hasUnsavedChanges">
|
|
17024
|
-
<mat-icon [praxisIcon]="hasUnsavedChanges ? 'edit' : 'check_circle'"></mat-icon>
|
|
17025
17102
|
</button>
|
|
17026
17103
|
</div>
|
|
17027
17104
|
</div>
|
|
@@ -17037,14 +17114,13 @@ class MetadataEditorComponent {
|
|
|
17037
17114
|
formControlName="code"
|
|
17038
17115
|
placeholder="REGRA_001">
|
|
17039
17116
|
<button
|
|
17040
|
-
|
|
17117
|
+
praxisIconButton="help_outline"
|
|
17118
|
+
size="dense"
|
|
17041
17119
|
matSuffix
|
|
17042
|
-
class="help-icon-button"
|
|
17043
17120
|
type="button"
|
|
17044
17121
|
[matTooltip]="'Identificador único desta regra'"
|
|
17045
17122
|
matTooltipPosition="above"
|
|
17046
17123
|
>
|
|
17047
|
-
<mat-icon>help_outline</mat-icon>
|
|
17048
17124
|
</button>
|
|
17049
17125
|
</mat-form-field>
|
|
17050
17126
|
<!-- Message -->
|
|
@@ -17056,14 +17132,13 @@ class MetadataEditorComponent {
|
|
|
17056
17132
|
placeholder="Texto que será mostrado ao usuário">
|
|
17057
17133
|
</textarea>
|
|
17058
17134
|
<button
|
|
17059
|
-
|
|
17135
|
+
praxisIconButton="help_outline"
|
|
17136
|
+
size="dense"
|
|
17060
17137
|
matSuffix
|
|
17061
|
-
class="help-icon-button"
|
|
17062
17138
|
type="button"
|
|
17063
17139
|
[matTooltip]="'Mensagem exibida quando a regra for acionada'"
|
|
17064
17140
|
matTooltipPosition="above"
|
|
17065
17141
|
>
|
|
17066
|
-
<mat-icon>help_outline</mat-icon>
|
|
17067
17142
|
</button>
|
|
17068
17143
|
</mat-form-field>
|
|
17069
17144
|
<!-- Tag -->
|
|
@@ -17081,14 +17156,13 @@ class MetadataEditorComponent {
|
|
|
17081
17156
|
}
|
|
17082
17157
|
</mat-autocomplete>
|
|
17083
17158
|
<button
|
|
17084
|
-
|
|
17159
|
+
praxisIconButton="help_outline"
|
|
17160
|
+
size="dense"
|
|
17085
17161
|
matSuffix
|
|
17086
|
-
class="help-icon-button"
|
|
17087
17162
|
type="button"
|
|
17088
17163
|
[matTooltip]="'Categoria para organizar regras semelhantes'"
|
|
17089
17164
|
matTooltipPosition="above"
|
|
17090
17165
|
>
|
|
17091
|
-
<mat-icon>help_outline</mat-icon>
|
|
17092
17166
|
</button>
|
|
17093
17167
|
</mat-form-field>
|
|
17094
17168
|
<!-- Description -->
|
|
@@ -17100,14 +17174,13 @@ class MetadataEditorComponent {
|
|
|
17100
17174
|
placeholder="Explique o objetivo e quando aplicar esta regra">
|
|
17101
17175
|
</textarea>
|
|
17102
17176
|
<button
|
|
17103
|
-
|
|
17177
|
+
praxisIconButton="help_outline"
|
|
17178
|
+
size="dense"
|
|
17104
17179
|
matSuffix
|
|
17105
|
-
class="help-icon-button"
|
|
17106
17180
|
type="button"
|
|
17107
17181
|
[matTooltip]="'Texto interno para documentação'"
|
|
17108
17182
|
matTooltipPosition="above"
|
|
17109
17183
|
>
|
|
17110
|
-
<mat-icon>help_outline</mat-icon>
|
|
17111
17184
|
</button>
|
|
17112
17185
|
</mat-form-field>
|
|
17113
17186
|
<!-- Priority -->
|
|
@@ -17147,14 +17220,13 @@ class MetadataEditorComponent {
|
|
|
17147
17220
|
</mat-option>
|
|
17148
17221
|
</mat-select>
|
|
17149
17222
|
<button
|
|
17150
|
-
|
|
17223
|
+
praxisIconButton="help_outline"
|
|
17224
|
+
size="dense"
|
|
17151
17225
|
matSuffix
|
|
17152
|
-
class="help-icon-button"
|
|
17153
17226
|
type="button"
|
|
17154
17227
|
[matTooltip]="'Define a prioridade e a experiência para o usuário'"
|
|
17155
17228
|
matTooltipPosition="above"
|
|
17156
17229
|
>
|
|
17157
|
-
<mat-icon>help_outline</mat-icon>
|
|
17158
17230
|
</button>
|
|
17159
17231
|
</mat-form-field>
|
|
17160
17232
|
</div>
|
|
@@ -17337,11 +17409,11 @@ class MetadataEditorComponent {
|
|
|
17337
17409
|
[formGroupName]="i">
|
|
17338
17410
|
<div class="property-header">
|
|
17339
17411
|
<span class="property-number">{{ i + 1 }}</span>
|
|
17340
|
-
<button
|
|
17341
|
-
|
|
17412
|
+
<button praxisIconButton="delete"
|
|
17413
|
+
size="dense"
|
|
17414
|
+
class="danger-action"
|
|
17342
17415
|
(click)="removeCustomProperty(i)"
|
|
17343
17416
|
[disabled]="customProperties.length <= 0">
|
|
17344
|
-
<mat-icon>delete</mat-icon>
|
|
17345
17417
|
</button>
|
|
17346
17418
|
</div>
|
|
17347
17419
|
<div class="property-form">
|
|
@@ -17407,14 +17479,13 @@ class MetadataEditorComponent {
|
|
|
17407
17479
|
placeholder='{"===": [{"var": "form.status"}, "premium"]}'>
|
|
17408
17480
|
</textarea>
|
|
17409
17481
|
<button
|
|
17410
|
-
|
|
17482
|
+
praxisIconButton="help_outline"
|
|
17483
|
+
size="dense"
|
|
17411
17484
|
matSuffix
|
|
17412
|
-
class="help-icon-button"
|
|
17413
17485
|
type="button"
|
|
17414
17486
|
[matTooltip]="'Expressão que define quando aplicar estes metadados'"
|
|
17415
17487
|
matTooltipPosition="above"
|
|
17416
17488
|
>
|
|
17417
|
-
<mat-icon>help_outline</mat-icon>
|
|
17418
17489
|
</button>
|
|
17419
17490
|
</mat-form-field>
|
|
17420
17491
|
<mat-form-field appearance="outline" class="fallback-input">
|
|
@@ -17468,10 +17539,10 @@ class MetadataEditorComponent {
|
|
|
17468
17539
|
[formControlName]="i"
|
|
17469
17540
|
placeholder="https://docs.example.com">
|
|
17470
17541
|
</mat-form-field>
|
|
17471
|
-
<button
|
|
17472
|
-
|
|
17542
|
+
<button praxisIconButton="delete"
|
|
17543
|
+
size="dense"
|
|
17544
|
+
class="danger-action"
|
|
17473
17545
|
(click)="removeDocumentationLink(i)">
|
|
17474
|
-
<mat-icon>delete</mat-icon>
|
|
17475
17546
|
</button>
|
|
17476
17547
|
</div>
|
|
17477
17548
|
}
|
|
@@ -17513,7 +17584,7 @@ class MetadataEditorComponent {
|
|
|
17513
17584
|
</div>
|
|
17514
17585
|
</div>
|
|
17515
17586
|
}
|
|
17516
|
-
`, isInline: true, styles: [".metadata-editor-container{display:flex;flex-direction:column;height:100%;overflow:hidden}.editor-header{display:flex;justify-content:space-between;align-items:center;padding:16px;background:var(--md-sys-color-surface-container);border-bottom:1px solid var(--md-sys-color-outline-variant)}.node-info{display:flex;align-items:center;gap:12px}.node-icon{font-size:24px;width:24px;height:24px;color:var(--md-sys-color-primary)}.node-details{display:flex;flex-direction:column}.node-title{margin:0;font-size:16px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-subtitle{margin:0;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.header-actions{display:flex;gap:8px}.metadata-form{flex:1;overflow:auto;padding:16px}.tab-content{padding:16px 0;display:flex;flex-direction:column;gap:16px}.full-width{width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.form-row>*{flex:1}.config-panel{margin-bottom:16px}.panel-content{padding:16px;display:flex;flex-direction:column;gap:16px}.priority-option,.icon-option{display:flex;align-items:center;gap:8px}.priority-option small,.icon-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.toggle-options,.display-options,.animation-options{display:flex;flex-direction:column;gap:8px}.custom-properties{display:flex;flex-direction:column;gap:12px}.custom-property-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.property-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.property-form{display:flex;gap:8px}.property-key,.property-value{flex:2}.property-type{flex:1}.conditional-config{display:flex;flex-direction:column;gap:12px}.conditional-rules{display:flex;flex-direction:column;gap:12px;padding:12px;background:var(--md-sys-color-surface);border-radius:8px;border:1px solid var(--md-sys-color-outline-variant)}.documentation-links{display:flex;flex-direction:column;gap:8px}.documentation-links h5{margin:0;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.doc-link-item{display:flex;gap:8px;align-items:center}.link-title,.link-url{flex:1}.add-property-button,.add-link-button{align-self:flex-start}.preview-section{margin-top:24px;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;overflow:hidden}.preview-title{display:flex;align-items:center;gap:8px;margin:0;padding:12px 16px;background:var(--md-sys-color-primary-container);border-bottom:1px solid var(--md-sys-color-outline-variant);font-size:14px;font-weight:500}.preview-content{padding:16px;background:var(--md-sys-color-surface)}.preview-json{font-family:Courier New,monospace;font-size:12px;color:var(--md-sys-color-on-surface);margin:0;white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant);max-height:200px;overflow-y:auto}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;text-align:center}.empty-state-content{max-width:300px}.empty-icon{font-size:64px;width:64px;height:64px;color:var(--md-sys-color-on-surface-variant);margin-bottom:16px}.empty-state h3{margin:0 0 8px;color:var(--md-sys-color-on-surface);font-weight:500}.empty-state p{margin:0;color:var(--md-sys-color-on-surface-variant);line-height:1.4}@media(max-width:768px){.form-row,.property-form{flex-direction:column}.doc-link-item{flex-direction:column;align-items:stretch}}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i7.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i11$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i11$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i11$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i11$1.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i11$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i11$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "pipe", type: i12$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17587
|
+
`, isInline: true, styles: [".metadata-editor-container{display:flex;flex-direction:column;height:100%;overflow:hidden}.editor-header{display:flex;justify-content:space-between;align-items:center;padding:16px;background:var(--md-sys-color-surface-container);border-bottom:1px solid var(--md-sys-color-outline-variant)}.node-info{display:flex;align-items:center;gap:12px}.node-icon{font-size:24px;width:24px;height:24px;color:var(--md-sys-color-primary)}.node-details{display:flex;flex-direction:column}.node-title{margin:0;font-size:16px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-subtitle{margin:0;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.header-actions{display:flex;gap:8px}.metadata-form{flex:1;overflow:auto;padding:16px}.tab-content{padding:16px 0;display:flex;flex-direction:column;gap:16px}.full-width{width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.form-row>*{flex:1}.config-panel{margin-bottom:16px}.panel-content{padding:16px;display:flex;flex-direction:column;gap:16px}.priority-option,.icon-option{display:flex;align-items:center;gap:8px}.priority-option small,.icon-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.toggle-options,.display-options,.animation-options{display:flex;flex-direction:column;gap:8px}.custom-properties{display:flex;flex-direction:column;gap:12px}.custom-property-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.property-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.property-form{display:flex;gap:8px}.property-key,.property-value{flex:2}.property-type{flex:1}.conditional-config{display:flex;flex-direction:column;gap:12px}.conditional-rules{display:flex;flex-direction:column;gap:12px;padding:12px;background:var(--md-sys-color-surface);border-radius:8px;border:1px solid var(--md-sys-color-outline-variant)}.documentation-links{display:flex;flex-direction:column;gap:8px}.documentation-links h5{margin:0;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.doc-link-item{display:flex;gap:8px;align-items:center}.link-title,.link-url{flex:1}.add-property-button,.add-link-button{align-self:flex-start}.preview-section{margin-top:24px;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;overflow:hidden}.preview-title{display:flex;align-items:center;gap:8px;margin:0;padding:12px 16px;background:var(--md-sys-color-primary-container);border-bottom:1px solid var(--md-sys-color-outline-variant);font-size:14px;font-weight:500}.preview-content{padding:16px;background:var(--md-sys-color-surface)}.preview-json{font-family:Courier New,monospace;font-size:12px;color:var(--md-sys-color-on-surface);margin:0;white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant);max-height:200px;overflow-y:auto}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;text-align:center}.empty-state-content{max-width:300px}.empty-icon{font-size:64px;width:64px;height:64px;color:var(--md-sys-color-on-surface-variant);margin-bottom:16px}.empty-state h3{margin:0 0 8px;color:var(--md-sys-color-on-surface);font-weight:500}.empty-state p{margin:0;color:var(--md-sys-color-on-surface-variant);line-height:1.4}@media(max-width:768px){.form-row,.property-form{flex-direction:column}.doc-link-item{flex-direction:column;align-items:stretch}}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i7.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i10$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i10$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i10$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i10$1.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i11$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i11$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "pipe", type: i12$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17517
17588
|
}
|
|
17518
17589
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MetadataEditorComponent, decorators: [{
|
|
17519
17590
|
type: Component,
|
|
@@ -17525,6 +17596,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
17525
17596
|
MatInputModule,
|
|
17526
17597
|
MatButtonModule,
|
|
17527
17598
|
MatIconModule,
|
|
17599
|
+
PraxisIconButtonComponent,
|
|
17528
17600
|
PraxisIconDirective,
|
|
17529
17601
|
MatCheckboxModule,
|
|
17530
17602
|
MatChipsModule,
|
|
@@ -17547,11 +17619,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
17547
17619
|
</div>
|
|
17548
17620
|
</div>
|
|
17549
17621
|
<div class="header-actions">
|
|
17550
|
-
<button
|
|
17551
|
-
[
|
|
17622
|
+
<button
|
|
17623
|
+
[praxisIconButton]="hasUnsavedChanges ? 'edit' : 'check_circle'"
|
|
17624
|
+
size="compact"
|
|
17625
|
+
[class.danger-action]="hasUnsavedChanges"
|
|
17626
|
+
[attr.aria-label]="hasUnsavedChanges ? 'Há alterações não salvas' : 'Tudo salvo'"
|
|
17552
17627
|
[matTooltip]="hasUnsavedChanges ? 'Há alterações não salvas' : 'Tudo salvo'"
|
|
17553
17628
|
[disabled]="!hasUnsavedChanges">
|
|
17554
|
-
<mat-icon [praxisIcon]="hasUnsavedChanges ? 'edit' : 'check_circle'"></mat-icon>
|
|
17555
17629
|
</button>
|
|
17556
17630
|
</div>
|
|
17557
17631
|
</div>
|
|
@@ -17567,14 +17641,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
17567
17641
|
formControlName="code"
|
|
17568
17642
|
placeholder="REGRA_001">
|
|
17569
17643
|
<button
|
|
17570
|
-
|
|
17644
|
+
praxisIconButton="help_outline"
|
|
17645
|
+
size="dense"
|
|
17571
17646
|
matSuffix
|
|
17572
|
-
class="help-icon-button"
|
|
17573
17647
|
type="button"
|
|
17574
17648
|
[matTooltip]="'Identificador único desta regra'"
|
|
17575
17649
|
matTooltipPosition="above"
|
|
17576
17650
|
>
|
|
17577
|
-
<mat-icon>help_outline</mat-icon>
|
|
17578
17651
|
</button>
|
|
17579
17652
|
</mat-form-field>
|
|
17580
17653
|
<!-- Message -->
|
|
@@ -17586,14 +17659,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
17586
17659
|
placeholder="Texto que será mostrado ao usuário">
|
|
17587
17660
|
</textarea>
|
|
17588
17661
|
<button
|
|
17589
|
-
|
|
17662
|
+
praxisIconButton="help_outline"
|
|
17663
|
+
size="dense"
|
|
17590
17664
|
matSuffix
|
|
17591
|
-
class="help-icon-button"
|
|
17592
17665
|
type="button"
|
|
17593
17666
|
[matTooltip]="'Mensagem exibida quando a regra for acionada'"
|
|
17594
17667
|
matTooltipPosition="above"
|
|
17595
17668
|
>
|
|
17596
|
-
<mat-icon>help_outline</mat-icon>
|
|
17597
17669
|
</button>
|
|
17598
17670
|
</mat-form-field>
|
|
17599
17671
|
<!-- Tag -->
|
|
@@ -17611,14 +17683,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
17611
17683
|
}
|
|
17612
17684
|
</mat-autocomplete>
|
|
17613
17685
|
<button
|
|
17614
|
-
|
|
17686
|
+
praxisIconButton="help_outline"
|
|
17687
|
+
size="dense"
|
|
17615
17688
|
matSuffix
|
|
17616
|
-
class="help-icon-button"
|
|
17617
17689
|
type="button"
|
|
17618
17690
|
[matTooltip]="'Categoria para organizar regras semelhantes'"
|
|
17619
17691
|
matTooltipPosition="above"
|
|
17620
17692
|
>
|
|
17621
|
-
<mat-icon>help_outline</mat-icon>
|
|
17622
17693
|
</button>
|
|
17623
17694
|
</mat-form-field>
|
|
17624
17695
|
<!-- Description -->
|
|
@@ -17630,14 +17701,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
17630
17701
|
placeholder="Explique o objetivo e quando aplicar esta regra">
|
|
17631
17702
|
</textarea>
|
|
17632
17703
|
<button
|
|
17633
|
-
|
|
17704
|
+
praxisIconButton="help_outline"
|
|
17705
|
+
size="dense"
|
|
17634
17706
|
matSuffix
|
|
17635
|
-
class="help-icon-button"
|
|
17636
17707
|
type="button"
|
|
17637
17708
|
[matTooltip]="'Texto interno para documentação'"
|
|
17638
17709
|
matTooltipPosition="above"
|
|
17639
17710
|
>
|
|
17640
|
-
<mat-icon>help_outline</mat-icon>
|
|
17641
17711
|
</button>
|
|
17642
17712
|
</mat-form-field>
|
|
17643
17713
|
<!-- Priority -->
|
|
@@ -17677,14 +17747,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
17677
17747
|
</mat-option>
|
|
17678
17748
|
</mat-select>
|
|
17679
17749
|
<button
|
|
17680
|
-
|
|
17750
|
+
praxisIconButton="help_outline"
|
|
17751
|
+
size="dense"
|
|
17681
17752
|
matSuffix
|
|
17682
|
-
class="help-icon-button"
|
|
17683
17753
|
type="button"
|
|
17684
17754
|
[matTooltip]="'Define a prioridade e a experiência para o usuário'"
|
|
17685
17755
|
matTooltipPosition="above"
|
|
17686
17756
|
>
|
|
17687
|
-
<mat-icon>help_outline</mat-icon>
|
|
17688
17757
|
</button>
|
|
17689
17758
|
</mat-form-field>
|
|
17690
17759
|
</div>
|
|
@@ -17867,11 +17936,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
17867
17936
|
[formGroupName]="i">
|
|
17868
17937
|
<div class="property-header">
|
|
17869
17938
|
<span class="property-number">{{ i + 1 }}</span>
|
|
17870
|
-
<button
|
|
17871
|
-
|
|
17939
|
+
<button praxisIconButton="delete"
|
|
17940
|
+
size="dense"
|
|
17941
|
+
class="danger-action"
|
|
17872
17942
|
(click)="removeCustomProperty(i)"
|
|
17873
17943
|
[disabled]="customProperties.length <= 0">
|
|
17874
|
-
<mat-icon>delete</mat-icon>
|
|
17875
17944
|
</button>
|
|
17876
17945
|
</div>
|
|
17877
17946
|
<div class="property-form">
|
|
@@ -17937,14 +18006,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
17937
18006
|
placeholder='{"===": [{"var": "form.status"}, "premium"]}'>
|
|
17938
18007
|
</textarea>
|
|
17939
18008
|
<button
|
|
17940
|
-
|
|
18009
|
+
praxisIconButton="help_outline"
|
|
18010
|
+
size="dense"
|
|
17941
18011
|
matSuffix
|
|
17942
|
-
class="help-icon-button"
|
|
17943
18012
|
type="button"
|
|
17944
18013
|
[matTooltip]="'Expressão que define quando aplicar estes metadados'"
|
|
17945
18014
|
matTooltipPosition="above"
|
|
17946
18015
|
>
|
|
17947
|
-
<mat-icon>help_outline</mat-icon>
|
|
17948
18016
|
</button>
|
|
17949
18017
|
</mat-form-field>
|
|
17950
18018
|
<mat-form-field appearance="outline" class="fallback-input">
|
|
@@ -17998,10 +18066,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
17998
18066
|
[formControlName]="i"
|
|
17999
18067
|
placeholder="https://docs.example.com">
|
|
18000
18068
|
</mat-form-field>
|
|
18001
|
-
<button
|
|
18002
|
-
|
|
18069
|
+
<button praxisIconButton="delete"
|
|
18070
|
+
size="dense"
|
|
18071
|
+
class="danger-action"
|
|
18003
18072
|
(click)="removeDocumentationLink(i)">
|
|
18004
|
-
<mat-icon>delete</mat-icon>
|
|
18005
18073
|
</button>
|
|
18006
18074
|
</div>
|
|
18007
18075
|
}
|
|
@@ -18043,7 +18111,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
18043
18111
|
</div>
|
|
18044
18112
|
</div>
|
|
18045
18113
|
}
|
|
18046
|
-
`, styles: [".metadata-editor-container{display:flex;flex-direction:column;height:100%;overflow:hidden}.editor-header{display:flex;justify-content:space-between;align-items:center;padding:16px;background:var(--md-sys-color-surface-container);border-bottom:1px solid var(--md-sys-color-outline-variant)}.node-info{display:flex;align-items:center;gap:12px}.node-icon{font-size:24px;width:24px;height:24px;color:var(--md-sys-color-primary)}.node-details{display:flex;flex-direction:column}.node-title{margin:0;font-size:16px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-subtitle{margin:0;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.header-actions{display:flex;gap:8px}.metadata-form{flex:1;overflow:auto;padding:16px}.tab-content{padding:16px 0;display:flex;flex-direction:column;gap:16px}.full-width{width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.form-row>*{flex:1}.config-panel{margin-bottom:16px}.panel-content{padding:16px;display:flex;flex-direction:column;gap:16px}.priority-option,.icon-option{display:flex;align-items:center;gap:8px}.priority-option small,.icon-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.toggle-options,.display-options,.animation-options{display:flex;flex-direction:column;gap:8px}.custom-properties{display:flex;flex-direction:column;gap:12px}.custom-property-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.property-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.property-form{display:flex;gap:8px}.property-key,.property-value{flex:2}.property-type{flex:1}.conditional-config{display:flex;flex-direction:column;gap:12px}.conditional-rules{display:flex;flex-direction:column;gap:12px;padding:12px;background:var(--md-sys-color-surface);border-radius:8px;border:1px solid var(--md-sys-color-outline-variant)}.documentation-links{display:flex;flex-direction:column;gap:8px}.documentation-links h5{margin:0;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.doc-link-item{display:flex;gap:8px;align-items:center}.link-title,.link-url{flex:1}.add-property-button,.add-link-button{align-self:flex-start}.preview-section{margin-top:24px;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;overflow:hidden}.preview-title{display:flex;align-items:center;gap:8px;margin:0;padding:12px 16px;background:var(--md-sys-color-primary-container);border-bottom:1px solid var(--md-sys-color-outline-variant);font-size:14px;font-weight:500}.preview-content{padding:16px;background:var(--md-sys-color-surface)}.preview-json{font-family:Courier New,monospace;font-size:12px;color:var(--md-sys-color-on-surface);margin:0;white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant);max-height:200px;overflow-y:auto}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;text-align:center}.empty-state-content{max-width:300px}.empty-icon{font-size:64px;width:64px;height:64px;color:var(--md-sys-color-on-surface-variant);margin-bottom:16px}.empty-state h3{margin:0 0 8px;color:var(--md-sys-color-on-surface);font-weight:500}.empty-state p{margin:0;color:var(--md-sys-color-on-surface-variant);line-height:1.4}@media(max-width:768px){.form-row,.property-form{flex-direction:column}.doc-link-item{flex-direction:column;align-items:stretch}}.
|
|
18114
|
+
`, styles: [".metadata-editor-container{display:flex;flex-direction:column;height:100%;overflow:hidden}.editor-header{display:flex;justify-content:space-between;align-items:center;padding:16px;background:var(--md-sys-color-surface-container);border-bottom:1px solid var(--md-sys-color-outline-variant)}.node-info{display:flex;align-items:center;gap:12px}.node-icon{font-size:24px;width:24px;height:24px;color:var(--md-sys-color-primary)}.node-details{display:flex;flex-direction:column}.node-title{margin:0;font-size:16px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-subtitle{margin:0;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.header-actions{display:flex;gap:8px}.metadata-form{flex:1;overflow:auto;padding:16px}.tab-content{padding:16px 0;display:flex;flex-direction:column;gap:16px}.full-width{width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.form-row>*{flex:1}.config-panel{margin-bottom:16px}.panel-content{padding:16px;display:flex;flex-direction:column;gap:16px}.priority-option,.icon-option{display:flex;align-items:center;gap:8px}.priority-option small,.icon-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.toggle-options,.display-options,.animation-options{display:flex;flex-direction:column;gap:8px}.custom-properties{display:flex;flex-direction:column;gap:12px}.custom-property-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.property-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.property-form{display:flex;gap:8px}.property-key,.property-value{flex:2}.property-type{flex:1}.conditional-config{display:flex;flex-direction:column;gap:12px}.conditional-rules{display:flex;flex-direction:column;gap:12px;padding:12px;background:var(--md-sys-color-surface);border-radius:8px;border:1px solid var(--md-sys-color-outline-variant)}.documentation-links{display:flex;flex-direction:column;gap:8px}.documentation-links h5{margin:0;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.doc-link-item{display:flex;gap:8px;align-items:center}.link-title,.link-url{flex:1}.add-property-button,.add-link-button{align-self:flex-start}.preview-section{margin-top:24px;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;overflow:hidden}.preview-title{display:flex;align-items:center;gap:8px;margin:0;padding:12px 16px;background:var(--md-sys-color-primary-container);border-bottom:1px solid var(--md-sys-color-outline-variant);font-size:14px;font-weight:500}.preview-content{padding:16px;background:var(--md-sys-color-surface)}.preview-json{font-family:Courier New,monospace;font-size:12px;color:var(--md-sys-color-on-surface);margin:0;white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant);max-height:200px;overflow-y:auto}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;text-align:center}.empty-state-content{max-width:300px}.empty-icon{font-size:64px;width:64px;height:64px;color:var(--md-sys-color-on-surface-variant);margin-bottom:16px}.empty-state h3{margin:0 0 8px;color:var(--md-sys-color-on-surface);font-weight:500}.empty-state p{margin:0;color:var(--md-sys-color-on-surface-variant);line-height:1.4}@media(max-width:768px){.form-row,.property-form{flex-direction:column}.doc-link-item{flex-direction:column;align-items:stretch}}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
|
|
18047
18115
|
}], ctorParameters: () => [{ type: i1$1.FormBuilder }], propDecorators: { selectedNode: [{
|
|
18048
18116
|
type: Input
|
|
18049
18117
|
}], metadataUpdated: [{
|
|
@@ -18220,37 +18288,40 @@ class JsonViewerComponent {
|
|
|
18220
18288
|
<mat-divider vertical></mat-divider>
|
|
18221
18289
|
|
|
18222
18290
|
<!-- Actions -->
|
|
18223
|
-
<button
|
|
18291
|
+
<button praxisIconButton="auto_fix_high"
|
|
18292
|
+
size="dense"
|
|
18293
|
+
aria-label="Format JSON"
|
|
18224
18294
|
[disabled]="!editable"
|
|
18225
18295
|
(click)="formatJson()"
|
|
18226
18296
|
matTooltip="Format JSON">
|
|
18227
|
-
<mat-icon [praxisIcon]="'auto_fix_high'"></mat-icon>
|
|
18228
18297
|
</button>
|
|
18229
18298
|
|
|
18230
|
-
<button
|
|
18299
|
+
<button praxisIconButton="check_circle"
|
|
18300
|
+
size="dense"
|
|
18301
|
+
aria-label="Validate JSON"
|
|
18231
18302
|
[disabled]="!editable"
|
|
18232
18303
|
(click)="validateJson()"
|
|
18233
18304
|
matTooltip="Validate JSON">
|
|
18234
|
-
<mat-icon [praxisIcon]="'check_circle'"></mat-icon>
|
|
18235
18305
|
</button>
|
|
18236
18306
|
|
|
18237
|
-
<button
|
|
18307
|
+
<button praxisIconButton="save"
|
|
18308
|
+
size="dense"
|
|
18309
|
+
aria-label="Apply Changes"
|
|
18238
18310
|
[disabled]="!editable || !hasChanges"
|
|
18239
18311
|
(click)="applyChanges()"
|
|
18240
18312
|
matTooltip="Apply Changes">
|
|
18241
|
-
<mat-icon [praxisIcon]="'save'"></mat-icon>
|
|
18242
18313
|
</button>
|
|
18243
18314
|
|
|
18244
|
-
<button
|
|
18315
|
+
<button praxisIconButton="undo"
|
|
18316
|
+
size="dense"
|
|
18317
|
+
aria-label="Discard Changes"
|
|
18245
18318
|
[disabled]="!editable || !hasChanges"
|
|
18246
18319
|
(click)="discardChanges()"
|
|
18247
18320
|
matTooltip="Discard Changes">
|
|
18248
|
-
<mat-icon [praxisIcon]="'undo'"></mat-icon>
|
|
18249
18321
|
</button>
|
|
18250
18322
|
|
|
18251
18323
|
<!-- More Actions Menu -->
|
|
18252
|
-
<button
|
|
18253
|
-
<mat-icon [praxisIcon]="'more_vert'"></mat-icon>
|
|
18324
|
+
<button praxisIconButton="more_vert" size="dense" aria-label="More actions" [matMenuTriggerFor]="moreMenu">
|
|
18254
18325
|
</button>
|
|
18255
18326
|
|
|
18256
18327
|
<mat-menu #moreMenu="matMenu">
|
|
@@ -18340,13 +18411,14 @@ class JsonViewerComponent {
|
|
|
18340
18411
|
</div>
|
|
18341
18412
|
</div>
|
|
18342
18413
|
</div>
|
|
18343
|
-
`, isInline: true, styles: [".json-viewer-container{display:flex;flex-direction:column;height:100%;overflow:hidden;min-width:0}.json-toolbar{flex-shrink:0;padding:0 16px}.toolbar-title{display:flex;align-items:center;gap:8px;font-weight:500}.toolbar-spacer{flex:1}.toolbar-actions{display:flex;align-items:center;gap:8px}.toolbar-actions .
|
|
18414
|
+
`, isInline: true, styles: [".json-viewer-container{display:flex;flex-direction:column;height:100%;overflow:hidden;min-width:0}.json-toolbar{flex-shrink:0;padding:0 16px}.toolbar-title{display:flex;align-items:center;gap:8px;font-weight:500}.toolbar-spacer{flex:1}.toolbar-actions{display:flex;align-items:center;gap:8px}.toolbar-actions .praxis-icon-button{color:var(--md-sys-color-on-primary)}.toolbar-actions .praxis-icon-button:hover{color:var(--md-sys-color-on-primary-container)}.toolbar-actions .praxis-icon-button:disabled{color:var(--md-sys-color-on-surface)}.validation-status{display:flex;align-items:center;gap:4px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500}.validation-status.valid{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.validation-status.invalid{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.validation-status mat-icon{font-size:16px;width:16px;height:16px}.editor-container{flex:1;position:relative;overflow:hidden;min-width:0}.json-editor{position:relative;height:100%;display:flex;min-width:0;width:100%}.json-textarea{flex:1;width:100%;border:none;outline:none;resize:none;font-family:Courier New,monospace;font-size:14px;line-height:1.5;padding:16px;background:var(--md-sys-color-surface, #f5f7fb);color:var(--md-sys-color-on-surface, #0f172a);caret-color:var(--md-sys-color-on-surface, #0f172a);white-space:pre;overflow-wrap:normal;overflow:auto;box-sizing:border-box}.json-textarea.has-line-numbers{padding-left:60px}.json-textarea.word-wrap{white-space:pre-wrap;overflow-wrap:break-word}.json-textarea:read-only{background:var(--md-sys-color-surface-container, #e7edf7);color:var(--md-sys-color-on-surface, #0f172a)}.line-numbers-panel{position:absolute;left:0;top:0;width:50px;height:100%;background:var(--md-sys-color-surface-container);border-right:1px solid var(--md-sys-color-outline-variant);padding:16px 8px;font-family:Courier New,monospace;font-size:14px;line-height:1.5;color:var(--md-sys-color-on-surface-variant);text-align:right;overflow:hidden;-webkit-user-select:none;user-select:none}.line-numbers-panel .line-number{height:21px}.readonly-overlay{position:absolute;top:8px;right:8px;z-index:100}.readonly-message{display:flex;align-items:center;gap:4px;background:var(--md-sys-color-surface-container);padding:4px 8px;border-radius:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant);box-shadow:0 2px 4px var(--vb-shadow-low-color, rgba(0,0,0,.1))}.readonly-message mat-icon{font-size:14px;width:14px;height:14px}.status-bar{display:flex;justify-content:space-between;align-items:center;padding:4px 16px;background:var(--md-sys-color-surface-container);border-top:1px solid var(--md-sys-color-outline-variant);font-size:12px;color:var(--md-sys-color-on-surface-variant);flex-shrink:0}.status-left,.status-center,.status-right{display:flex;align-items:center;gap:12px}.validation-error{display:flex;align-items:center;gap:4px;color:var(--md-sys-color-error)}.validation-error mat-icon{font-size:14px;width:14px;height:14px}.language-mode{font-family:monospace;font-weight:600}.unsaved-indicator{color:var(--md-sys-color-primary);font-weight:700;font-size:16px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i4$2.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatSnackBarModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
18344
18415
|
}
|
|
18345
18416
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: JsonViewerComponent, decorators: [{
|
|
18346
18417
|
type: Component,
|
|
18347
18418
|
args: [{ selector: 'praxis-json-viewer', standalone: true, imports: [
|
|
18348
18419
|
MatButtonModule,
|
|
18349
18420
|
MatIconModule,
|
|
18421
|
+
PraxisIconButtonComponent,
|
|
18350
18422
|
PraxisIconDirective,
|
|
18351
18423
|
MatTooltipModule,
|
|
18352
18424
|
MatToolbarModule,
|
|
@@ -18374,37 +18446,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
18374
18446
|
<mat-divider vertical></mat-divider>
|
|
18375
18447
|
|
|
18376
18448
|
<!-- Actions -->
|
|
18377
|
-
<button
|
|
18449
|
+
<button praxisIconButton="auto_fix_high"
|
|
18450
|
+
size="dense"
|
|
18451
|
+
aria-label="Format JSON"
|
|
18378
18452
|
[disabled]="!editable"
|
|
18379
18453
|
(click)="formatJson()"
|
|
18380
18454
|
matTooltip="Format JSON">
|
|
18381
|
-
<mat-icon [praxisIcon]="'auto_fix_high'"></mat-icon>
|
|
18382
18455
|
</button>
|
|
18383
18456
|
|
|
18384
|
-
<button
|
|
18457
|
+
<button praxisIconButton="check_circle"
|
|
18458
|
+
size="dense"
|
|
18459
|
+
aria-label="Validate JSON"
|
|
18385
18460
|
[disabled]="!editable"
|
|
18386
18461
|
(click)="validateJson()"
|
|
18387
18462
|
matTooltip="Validate JSON">
|
|
18388
|
-
<mat-icon [praxisIcon]="'check_circle'"></mat-icon>
|
|
18389
18463
|
</button>
|
|
18390
18464
|
|
|
18391
|
-
<button
|
|
18465
|
+
<button praxisIconButton="save"
|
|
18466
|
+
size="dense"
|
|
18467
|
+
aria-label="Apply Changes"
|
|
18392
18468
|
[disabled]="!editable || !hasChanges"
|
|
18393
18469
|
(click)="applyChanges()"
|
|
18394
18470
|
matTooltip="Apply Changes">
|
|
18395
|
-
<mat-icon [praxisIcon]="'save'"></mat-icon>
|
|
18396
18471
|
</button>
|
|
18397
18472
|
|
|
18398
|
-
<button
|
|
18473
|
+
<button praxisIconButton="undo"
|
|
18474
|
+
size="dense"
|
|
18475
|
+
aria-label="Discard Changes"
|
|
18399
18476
|
[disabled]="!editable || !hasChanges"
|
|
18400
18477
|
(click)="discardChanges()"
|
|
18401
18478
|
matTooltip="Discard Changes">
|
|
18402
|
-
<mat-icon [praxisIcon]="'undo'"></mat-icon>
|
|
18403
18479
|
</button>
|
|
18404
18480
|
|
|
18405
18481
|
<!-- More Actions Menu -->
|
|
18406
|
-
<button
|
|
18407
|
-
<mat-icon [praxisIcon]="'more_vert'"></mat-icon>
|
|
18482
|
+
<button praxisIconButton="more_vert" size="dense" aria-label="More actions" [matMenuTriggerFor]="moreMenu">
|
|
18408
18483
|
</button>
|
|
18409
18484
|
|
|
18410
18485
|
<mat-menu #moreMenu="matMenu">
|
|
@@ -18494,7 +18569,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
18494
18569
|
</div>
|
|
18495
18570
|
</div>
|
|
18496
18571
|
</div>
|
|
18497
|
-
`, styles: [".json-viewer-container{display:flex;flex-direction:column;height:100%;overflow:hidden;min-width:0}.json-toolbar{flex-shrink:0;padding:0 16px}.toolbar-title{display:flex;align-items:center;gap:8px;font-weight:500}.toolbar-spacer{flex:1}.toolbar-actions{display:flex;align-items:center;gap:8px}.toolbar-actions .
|
|
18572
|
+
`, styles: [".json-viewer-container{display:flex;flex-direction:column;height:100%;overflow:hidden;min-width:0}.json-toolbar{flex-shrink:0;padding:0 16px}.toolbar-title{display:flex;align-items:center;gap:8px;font-weight:500}.toolbar-spacer{flex:1}.toolbar-actions{display:flex;align-items:center;gap:8px}.toolbar-actions .praxis-icon-button{color:var(--md-sys-color-on-primary)}.toolbar-actions .praxis-icon-button:hover{color:var(--md-sys-color-on-primary-container)}.toolbar-actions .praxis-icon-button:disabled{color:var(--md-sys-color-on-surface)}.validation-status{display:flex;align-items:center;gap:4px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500}.validation-status.valid{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.validation-status.invalid{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.validation-status mat-icon{font-size:16px;width:16px;height:16px}.editor-container{flex:1;position:relative;overflow:hidden;min-width:0}.json-editor{position:relative;height:100%;display:flex;min-width:0;width:100%}.json-textarea{flex:1;width:100%;border:none;outline:none;resize:none;font-family:Courier New,monospace;font-size:14px;line-height:1.5;padding:16px;background:var(--md-sys-color-surface, #f5f7fb);color:var(--md-sys-color-on-surface, #0f172a);caret-color:var(--md-sys-color-on-surface, #0f172a);white-space:pre;overflow-wrap:normal;overflow:auto;box-sizing:border-box}.json-textarea.has-line-numbers{padding-left:60px}.json-textarea.word-wrap{white-space:pre-wrap;overflow-wrap:break-word}.json-textarea:read-only{background:var(--md-sys-color-surface-container, #e7edf7);color:var(--md-sys-color-on-surface, #0f172a)}.line-numbers-panel{position:absolute;left:0;top:0;width:50px;height:100%;background:var(--md-sys-color-surface-container);border-right:1px solid var(--md-sys-color-outline-variant);padding:16px 8px;font-family:Courier New,monospace;font-size:14px;line-height:1.5;color:var(--md-sys-color-on-surface-variant);text-align:right;overflow:hidden;-webkit-user-select:none;user-select:none}.line-numbers-panel .line-number{height:21px}.readonly-overlay{position:absolute;top:8px;right:8px;z-index:100}.readonly-message{display:flex;align-items:center;gap:4px;background:var(--md-sys-color-surface-container);padding:4px 8px;border-radius:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant);box-shadow:0 2px 4px var(--vb-shadow-low-color, rgba(0,0,0,.1))}.readonly-message mat-icon{font-size:14px;width:14px;height:14px}.status-bar{display:flex;justify-content:space-between;align-items:center;padding:4px 16px;background:var(--md-sys-color-surface-container);border-top:1px solid var(--md-sys-color-outline-variant);font-size:12px;color:var(--md-sys-color-on-surface-variant);flex-shrink:0}.status-left,.status-center,.status-right{display:flex;align-items:center;gap:12px}.validation-error{display:flex;align-items:center;gap:4px;color:var(--md-sys-color-error)}.validation-error mat-icon{font-size:14px;width:14px;height:14px}.language-mode{font-family:monospace;font-weight:600}.unsaved-indicator{color:var(--md-sys-color-primary);font-weight:700;font-size:16px}\n"] }]
|
|
18498
18573
|
}], ctorParameters: () => [{ type: i4.MatSnackBar }], propDecorators: { json: [{
|
|
18499
18574
|
type: Input
|
|
18500
18575
|
}], editable: [{
|
|
@@ -19005,14 +19080,13 @@ class TemplateEditorDialogComponent {
|
|
|
19005
19080
|
(matChipInputTokenEnd)="addTag($event)">
|
|
19006
19081
|
</mat-chip-grid>
|
|
19007
19082
|
<button
|
|
19008
|
-
|
|
19083
|
+
praxisIconButton="help_outline"
|
|
19084
|
+
size="dense"
|
|
19009
19085
|
matSuffix
|
|
19010
|
-
class="help-icon-button"
|
|
19011
19086
|
type="button"
|
|
19012
19087
|
[matTooltip]="'Tags help organize and find templates. Press Enter to add.'"
|
|
19013
19088
|
matTooltipPosition="above"
|
|
19014
19089
|
>
|
|
19015
|
-
<mat-icon>help_outline</mat-icon>
|
|
19016
19090
|
</button>
|
|
19017
19091
|
</mat-form-field>
|
|
19018
19092
|
</div>
|
|
@@ -19085,14 +19159,13 @@ class TemplateEditorDialogComponent {
|
|
|
19085
19159
|
(matChipInputTokenEnd)="addRequiredField($event)">
|
|
19086
19160
|
</mat-chip-grid>
|
|
19087
19161
|
<button
|
|
19088
|
-
|
|
19162
|
+
praxisIconButton="help_outline"
|
|
19163
|
+
size="dense"
|
|
19089
19164
|
matSuffix
|
|
19090
|
-
class="help-icon-button"
|
|
19091
19165
|
type="button"
|
|
19092
19166
|
[matTooltip]="'Field names that must exist for the template to work correctly'"
|
|
19093
19167
|
matTooltipPosition="above"
|
|
19094
19168
|
>
|
|
19095
|
-
<mat-icon>help_outline</mat-icon>
|
|
19096
19169
|
</button>
|
|
19097
19170
|
</mat-form-field>
|
|
19098
19171
|
</div>
|
|
@@ -19163,14 +19236,13 @@ class TemplateEditorDialogComponent {
|
|
|
19163
19236
|
formControlName="version"
|
|
19164
19237
|
placeholder="1.0.0">
|
|
19165
19238
|
<button
|
|
19166
|
-
|
|
19239
|
+
praxisIconButton="help_outline"
|
|
19240
|
+
size="dense"
|
|
19167
19241
|
matSuffix
|
|
19168
|
-
class="help-icon-button"
|
|
19169
19242
|
type="button"
|
|
19170
19243
|
[matTooltip]="'Semantic version (major.minor.patch)'"
|
|
19171
19244
|
matTooltipPosition="above"
|
|
19172
19245
|
>
|
|
19173
|
-
<mat-icon>help_outline</mat-icon>
|
|
19174
19246
|
</button>
|
|
19175
19247
|
</mat-form-field>
|
|
19176
19248
|
</div>
|
|
@@ -19249,7 +19321,7 @@ class TemplateEditorDialogComponent {
|
|
|
19249
19321
|
</button>
|
|
19250
19322
|
</div>
|
|
19251
19323
|
</div>
|
|
19252
|
-
`, isInline: true, styles: [".template-editor-dialog{min-width:600px;max-width:800px;max-height:90vh}.dialog-title{display:flex;align-items:center;gap:8px;margin:0;padding:24px 24px 0;font-size:20px;font-weight:500}.dialog-content{padding:16px 24px;max-height:calc(90vh - 120px);overflow-y:auto}.step-form{padding:16px 0;min-height:400px}.form-row{display:flex;gap:16px;margin-bottom:16px}.name-field,.category-field{flex:1}.description-field,.tags-input,.required-fields-input,.example-field,.organization-field{width:100%}.icon-field,.version-field,.author-name,.author-email{flex:1}.category-option,.icon-option{display:flex;align-items:center;gap:8px}.tags-section,.required-fields-section,.template-variables-section,.author-section,.example-section{margin-bottom:24px}.tags-section h4,.author-section h5,.example-section h5,.required-fields-section h5,.template-variables-section h5{margin:0 0 8px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-header{margin-bottom:16px}.section-header h4{margin:0 0 4px;font-size:16px;font-weight:500}.section-description,.field-description{margin:0;font-size:13px;color:var(--md-sys-color-on-surface-variant)}.rules-preview{background:var(--md-sys-color-surface-container);border-radius:8px;padding:16px;margin-bottom:24px}.preview-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-count{font-weight:400;color:var(--md-sys-color-on-surface-variant)}.nodes-tree{max-height:200px;overflow-y:auto}.tree-node{border-left:2px solid transparent;padding:8px 0 8px 16px}.tree-node.root-node{border-left-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.node-content{display:flex;align-items:center;gap:8px}.node-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.node-label{flex:1;font-size:13px}.node-type-chip{font-size:10px;height:18px;line-height:18px}.detected-variables{margin-top:8px}.no-variables{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic;margin:8px 0}.step-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:24px;padding-top:16px;border-top:1px solid var(--md-sys-color-outline-variant)}.dialog-actions{padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);display:flex;align-items:center;gap:8px}.actions-spacer{flex:1}::ng-deep .mat-stepper-horizontal{margin-top:8px}::ng-deep .mat-step-header{pointer-events:none}::ng-deep .mat-step-header.cdk-keyboard-focused,::ng-deep .mat-step-header.cdk-program-focused,::ng-deep .mat-step-header:hover{background-color:transparent}@media(max-width:768px){.template-editor-dialog{min-width:320px;max-width:95vw}.form-row{flex-direction:column}.name-field,.category-field,.icon-field,.version-field,.author-name,.author-email{flex:none;width:100%}}.
|
|
19324
|
+
`, isInline: true, styles: [".template-editor-dialog{min-width:600px;max-width:800px;max-height:90vh}.dialog-title{display:flex;align-items:center;gap:8px;margin:0;padding:24px 24px 0;font-size:20px;font-weight:500}.dialog-content{padding:16px 24px;max-height:calc(90vh - 120px);overflow-y:auto}.step-form{padding:16px 0;min-height:400px}.form-row{display:flex;gap:16px;margin-bottom:16px}.name-field,.category-field{flex:1}.description-field,.tags-input,.required-fields-input,.example-field,.organization-field{width:100%}.icon-field,.version-field,.author-name,.author-email{flex:1}.category-option,.icon-option{display:flex;align-items:center;gap:8px}.tags-section,.required-fields-section,.template-variables-section,.author-section,.example-section{margin-bottom:24px}.tags-section h4,.author-section h5,.example-section h5,.required-fields-section h5,.template-variables-section h5{margin:0 0 8px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-header{margin-bottom:16px}.section-header h4{margin:0 0 4px;font-size:16px;font-weight:500}.section-description,.field-description{margin:0;font-size:13px;color:var(--md-sys-color-on-surface-variant)}.rules-preview{background:var(--md-sys-color-surface-container);border-radius:8px;padding:16px;margin-bottom:24px}.preview-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-count{font-weight:400;color:var(--md-sys-color-on-surface-variant)}.nodes-tree{max-height:200px;overflow-y:auto}.tree-node{border-left:2px solid transparent;padding:8px 0 8px 16px}.tree-node.root-node{border-left-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.node-content{display:flex;align-items:center;gap:8px}.node-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.node-label{flex:1;font-size:13px}.node-type-chip{font-size:10px;height:18px;line-height:18px}.detected-variables{margin-top:8px}.no-variables{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic;margin:8px 0}.step-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:24px;padding-top:16px;border-top:1px solid var(--md-sys-color-outline-variant)}.dialog-actions{padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);display:flex;align-items:center;gap:8px}.actions-spacer{flex:1}::ng-deep .mat-stepper-horizontal{margin-top:8px}::ng-deep .mat-step-header{pointer-events:none}::ng-deep .mat-step-header.cdk-keyboard-focused,::ng-deep .mat-step-header.cdk-program-focused,::ng-deep .mat-step-header:hover{background-color:transparent}@media(max-width:768px){.template-editor-dialog{min-width:320px;max-width:95vw}.form-row{flex-direction:column}.name-field,.category-field,.icon-field,.version-field,.author-name,.author-email{flex:none;width:100%}}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i10.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled", "readonly", "matChipInputDisabledInteractive"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i10.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i10.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatStepperModule }, { kind: "component", type: i7$3.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "component", type: i7$3.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["disableRipple", "color", "labelPosition", "headerPosition", "aria-label", "headerPrefix", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i7$3.MatStepperNext, selector: "button[matStepperNext]" }, { kind: "directive", type: i7$3.MatStepperPrevious, selector: "button[matStepperPrevious]" }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatSnackBarModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
19253
19325
|
}
|
|
19254
19326
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TemplateEditorDialogComponent, decorators: [{
|
|
19255
19327
|
type: Component,
|
|
@@ -19261,6 +19333,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
19261
19333
|
MatSelectModule,
|
|
19262
19334
|
MatButtonModule,
|
|
19263
19335
|
MatIconModule,
|
|
19336
|
+
PraxisIconButtonComponent,
|
|
19264
19337
|
MatChipsModule,
|
|
19265
19338
|
MatTooltipModule,
|
|
19266
19339
|
MatStepperModule,
|
|
@@ -19356,14 +19429,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
19356
19429
|
(matChipInputTokenEnd)="addTag($event)">
|
|
19357
19430
|
</mat-chip-grid>
|
|
19358
19431
|
<button
|
|
19359
|
-
|
|
19432
|
+
praxisIconButton="help_outline"
|
|
19433
|
+
size="dense"
|
|
19360
19434
|
matSuffix
|
|
19361
|
-
class="help-icon-button"
|
|
19362
19435
|
type="button"
|
|
19363
19436
|
[matTooltip]="'Tags help organize and find templates. Press Enter to add.'"
|
|
19364
19437
|
matTooltipPosition="above"
|
|
19365
19438
|
>
|
|
19366
|
-
<mat-icon>help_outline</mat-icon>
|
|
19367
19439
|
</button>
|
|
19368
19440
|
</mat-form-field>
|
|
19369
19441
|
</div>
|
|
@@ -19436,14 +19508,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
19436
19508
|
(matChipInputTokenEnd)="addRequiredField($event)">
|
|
19437
19509
|
</mat-chip-grid>
|
|
19438
19510
|
<button
|
|
19439
|
-
|
|
19511
|
+
praxisIconButton="help_outline"
|
|
19512
|
+
size="dense"
|
|
19440
19513
|
matSuffix
|
|
19441
|
-
class="help-icon-button"
|
|
19442
19514
|
type="button"
|
|
19443
19515
|
[matTooltip]="'Field names that must exist for the template to work correctly'"
|
|
19444
19516
|
matTooltipPosition="above"
|
|
19445
19517
|
>
|
|
19446
|
-
<mat-icon>help_outline</mat-icon>
|
|
19447
19518
|
</button>
|
|
19448
19519
|
</mat-form-field>
|
|
19449
19520
|
</div>
|
|
@@ -19514,14 +19585,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
19514
19585
|
formControlName="version"
|
|
19515
19586
|
placeholder="1.0.0">
|
|
19516
19587
|
<button
|
|
19517
|
-
|
|
19588
|
+
praxisIconButton="help_outline"
|
|
19589
|
+
size="dense"
|
|
19518
19590
|
matSuffix
|
|
19519
|
-
class="help-icon-button"
|
|
19520
19591
|
type="button"
|
|
19521
19592
|
[matTooltip]="'Semantic version (major.minor.patch)'"
|
|
19522
19593
|
matTooltipPosition="above"
|
|
19523
19594
|
>
|
|
19524
|
-
<mat-icon>help_outline</mat-icon>
|
|
19525
19595
|
</button>
|
|
19526
19596
|
</mat-form-field>
|
|
19527
19597
|
</div>
|
|
@@ -19600,7 +19670,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
19600
19670
|
</button>
|
|
19601
19671
|
</div>
|
|
19602
19672
|
</div>
|
|
19603
|
-
`, styles: [".template-editor-dialog{min-width:600px;max-width:800px;max-height:90vh}.dialog-title{display:flex;align-items:center;gap:8px;margin:0;padding:24px 24px 0;font-size:20px;font-weight:500}.dialog-content{padding:16px 24px;max-height:calc(90vh - 120px);overflow-y:auto}.step-form{padding:16px 0;min-height:400px}.form-row{display:flex;gap:16px;margin-bottom:16px}.name-field,.category-field{flex:1}.description-field,.tags-input,.required-fields-input,.example-field,.organization-field{width:100%}.icon-field,.version-field,.author-name,.author-email{flex:1}.category-option,.icon-option{display:flex;align-items:center;gap:8px}.tags-section,.required-fields-section,.template-variables-section,.author-section,.example-section{margin-bottom:24px}.tags-section h4,.author-section h5,.example-section h5,.required-fields-section h5,.template-variables-section h5{margin:0 0 8px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-header{margin-bottom:16px}.section-header h4{margin:0 0 4px;font-size:16px;font-weight:500}.section-description,.field-description{margin:0;font-size:13px;color:var(--md-sys-color-on-surface-variant)}.rules-preview{background:var(--md-sys-color-surface-container);border-radius:8px;padding:16px;margin-bottom:24px}.preview-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-count{font-weight:400;color:var(--md-sys-color-on-surface-variant)}.nodes-tree{max-height:200px;overflow-y:auto}.tree-node{border-left:2px solid transparent;padding:8px 0 8px 16px}.tree-node.root-node{border-left-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.node-content{display:flex;align-items:center;gap:8px}.node-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.node-label{flex:1;font-size:13px}.node-type-chip{font-size:10px;height:18px;line-height:18px}.detected-variables{margin-top:8px}.no-variables{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic;margin:8px 0}.step-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:24px;padding-top:16px;border-top:1px solid var(--md-sys-color-outline-variant)}.dialog-actions{padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);display:flex;align-items:center;gap:8px}.actions-spacer{flex:1}::ng-deep .mat-stepper-horizontal{margin-top:8px}::ng-deep .mat-step-header{pointer-events:none}::ng-deep .mat-step-header.cdk-keyboard-focused,::ng-deep .mat-step-header.cdk-program-focused,::ng-deep .mat-step-header:hover{background-color:transparent}@media(max-width:768px){.template-editor-dialog{min-width:320px;max-width:95vw}.form-row{flex-direction:column}.name-field,.category-field,.icon-field,.version-field,.author-name,.author-email{flex:none;width:100%}}.
|
|
19673
|
+
`, styles: [".template-editor-dialog{min-width:600px;max-width:800px;max-height:90vh}.dialog-title{display:flex;align-items:center;gap:8px;margin:0;padding:24px 24px 0;font-size:20px;font-weight:500}.dialog-content{padding:16px 24px;max-height:calc(90vh - 120px);overflow-y:auto}.step-form{padding:16px 0;min-height:400px}.form-row{display:flex;gap:16px;margin-bottom:16px}.name-field,.category-field{flex:1}.description-field,.tags-input,.required-fields-input,.example-field,.organization-field{width:100%}.icon-field,.version-field,.author-name,.author-email{flex:1}.category-option,.icon-option{display:flex;align-items:center;gap:8px}.tags-section,.required-fields-section,.template-variables-section,.author-section,.example-section{margin-bottom:24px}.tags-section h4,.author-section h5,.example-section h5,.required-fields-section h5,.template-variables-section h5{margin:0 0 8px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-header{margin-bottom:16px}.section-header h4{margin:0 0 4px;font-size:16px;font-weight:500}.section-description,.field-description{margin:0;font-size:13px;color:var(--md-sys-color-on-surface-variant)}.rules-preview{background:var(--md-sys-color-surface-container);border-radius:8px;padding:16px;margin-bottom:24px}.preview-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-count{font-weight:400;color:var(--md-sys-color-on-surface-variant)}.nodes-tree{max-height:200px;overflow-y:auto}.tree-node{border-left:2px solid transparent;padding:8px 0 8px 16px}.tree-node.root-node{border-left-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.node-content{display:flex;align-items:center;gap:8px}.node-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.node-label{flex:1;font-size:13px}.node-type-chip{font-size:10px;height:18px;line-height:18px}.detected-variables{margin-top:8px}.no-variables{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic;margin:8px 0}.step-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:24px;padding-top:16px;border-top:1px solid var(--md-sys-color-outline-variant)}.dialog-actions{padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);display:flex;align-items:center;gap:8px}.actions-spacer{flex:1}::ng-deep .mat-stepper-horizontal{margin-top:8px}::ng-deep .mat-step-header{pointer-events:none}::ng-deep .mat-step-header.cdk-keyboard-focused,::ng-deep .mat-step-header.cdk-program-focused,::ng-deep .mat-step-header:hover{background-color:transparent}@media(max-width:768px){.template-editor-dialog{min-width:320px;max-width:95vw}.form-row{flex-direction:column}.name-field,.category-field,.icon-field,.version-field,.author-name,.author-email{flex:none;width:100%}}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
|
|
19604
19674
|
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
19605
19675
|
type: Inject,
|
|
19606
19676
|
args: [MAT_DIALOG_DATA]
|
|
@@ -19957,7 +20027,7 @@ class TemplatePreviewDialogComponent {
|
|
|
19957
20027
|
</button>
|
|
19958
20028
|
</div>
|
|
19959
20029
|
</div>
|
|
19960
|
-
`, isInline: true, styles: [".template-preview-dialog{min-width:500px;max-width:700px}.dialog-title{padding:24px 24px 0;margin:0}.title-content{display:flex;align-items:center;gap:12px;margin-bottom:8px}.title-content mat-icon{font-size:32px;width:32px;height:32px;color:var(--md-sys-color-primary)}.title-text h2{margin:0;font-size:24px;font-weight:500}.template-category{margin:4px 0 0;font-size:14px;color:var(--md-sys-color-on-surface-variant);text-transform:capitalize}.title-actions{display:flex;justify-content:flex-end;margin-bottom:16px}.complexity-chip{font-size:11px}.complexity-simple{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.complexity-medium{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.complexity-complex{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.dialog-content{padding:16px 24px;max-height:70vh;overflow-y:auto}.template-info h3,.template-metadata h3,.rule-structure h3,.required-fields h3,.example-usage h3{margin:0 0 12px;font-size:16px;font-weight:500;color:var(--md-sys-color-primary)}.template-description{margin:0 0 16px;line-height:1.5}.template-tags h4{margin:0 0 8px;font-size:14px;font-weight:500}.tag-chip{margin-right:4px;margin-bottom:4px}.metadata-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-bottom:16px}.metadata-item{display:flex;align-items:center;gap:8px;padding:8px;background:var(--md-sys-color-surface-variant);border-radius:8px}.metadata-item mat-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.metadata-item .label{font-weight:500;color:var(--md-sys-color-on-surface)}.metadata-item .value{color:var(--md-sys-color-on-surface-variant)}.structure-container{margin-top:8px}.root-node-panel{margin-bottom:8px}.node-details{padding:0 16px 16px}.tree-node{margin-bottom:8px;padding:8px;border-left:2px solid var(--md-sys-color-outline);background:var(--md-sys-color-surface-variant);border-radius:4px}.node-content{display:flex;align-items:center;gap:8px;margin-bottom:4px}.node-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.node-label{flex:1;font-weight:500}.node-type-chip{font-size:10px;height:20px;line-height:20px}.node-config{margin-top:4px}.config-preview{font-size:11px;margin:0;padding:4px 8px;background:var(--md-sys-color-surface);border-radius:4px;border:1px solid var(--md-sys-color-outline);overflow-x:auto}.required-field-chip{margin-right:4px;margin-bottom:4px}.fields-note{margin:12px 0 0;font-size:13px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.example-content{background:var(--md-sys-color-surface-variant);border-radius:8px;padding:16px}.example-code{margin:0;font-family:Courier New,monospace;font-size:12px;line-height:1.4;overflow-x:auto}.dialog-actions{padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);display:flex;align-items:center;gap:8px}.actions-spacer{flex:1}mat-divider{margin:16px 0}@media(max-width:768px){.template-preview-dialog{min-width:320px;max-width:95vw}.metadata-grid{grid-template-columns:1fr}.title-content{flex-direction:column;align-items:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type:
|
|
20030
|
+
`, isInline: true, styles: [".template-preview-dialog{min-width:500px;max-width:700px}.dialog-title{padding:24px 24px 0;margin:0}.title-content{display:flex;align-items:center;gap:12px;margin-bottom:8px}.title-content mat-icon{font-size:32px;width:32px;height:32px;color:var(--md-sys-color-primary)}.title-text h2{margin:0;font-size:24px;font-weight:500}.template-category{margin:4px 0 0;font-size:14px;color:var(--md-sys-color-on-surface-variant);text-transform:capitalize}.title-actions{display:flex;justify-content:flex-end;margin-bottom:16px}.complexity-chip{font-size:11px}.complexity-simple{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.complexity-medium{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.complexity-complex{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.dialog-content{padding:16px 24px;max-height:70vh;overflow-y:auto}.template-info h3,.template-metadata h3,.rule-structure h3,.required-fields h3,.example-usage h3{margin:0 0 12px;font-size:16px;font-weight:500;color:var(--md-sys-color-primary)}.template-description{margin:0 0 16px;line-height:1.5}.template-tags h4{margin:0 0 8px;font-size:14px;font-weight:500}.tag-chip{margin-right:4px;margin-bottom:4px}.metadata-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-bottom:16px}.metadata-item{display:flex;align-items:center;gap:8px;padding:8px;background:var(--md-sys-color-surface-variant);border-radius:8px}.metadata-item mat-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.metadata-item .label{font-weight:500;color:var(--md-sys-color-on-surface)}.metadata-item .value{color:var(--md-sys-color-on-surface-variant)}.structure-container{margin-top:8px}.root-node-panel{margin-bottom:8px}.node-details{padding:0 16px 16px}.tree-node{margin-bottom:8px;padding:8px;border-left:2px solid var(--md-sys-color-outline);background:var(--md-sys-color-surface-variant);border-radius:4px}.node-content{display:flex;align-items:center;gap:8px;margin-bottom:4px}.node-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.node-label{flex:1;font-weight:500}.node-type-chip{font-size:10px;height:20px;line-height:20px}.node-config{margin-top:4px}.config-preview{font-size:11px;margin:0;padding:4px 8px;background:var(--md-sys-color-surface);border-radius:4px;border:1px solid var(--md-sys-color-outline);overflow-x:auto}.required-field-chip{margin-right:4px;margin-bottom:4px}.fields-note{margin:12px 0 0;font-size:13px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.example-content{background:var(--md-sys-color-surface-variant);border-radius:8px;padding:16px}.example-code{margin:0;font-family:Courier New,monospace;font-size:12px;line-height:1.4;overflow-x:auto}.dialog-actions{padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);display:flex;align-items:center;gap:8px}.actions-spacer{flex:1}mat-divider{margin:16px 0}@media(max-width:768px){.template-preview-dialog{min-width:320px;max-width:95vw}.metadata-grid{grid-template-columns:1fr}.title-content{flex-direction:column;align-items:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i10$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i10$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i10$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i10$1.MatExpansionPanelDescription, selector: "mat-panel-description" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
19961
20031
|
}
|
|
19962
20032
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TemplatePreviewDialogComponent, decorators: [{
|
|
19963
20033
|
type: Component,
|
|
@@ -20623,11 +20693,12 @@ class TemplateGalleryComponent {
|
|
|
20623
20693
|
</button>
|
|
20624
20694
|
|
|
20625
20695
|
<button
|
|
20626
|
-
|
|
20696
|
+
praxisIconButton="view_module"
|
|
20697
|
+
size="dense"
|
|
20698
|
+
aria-label="View options"
|
|
20627
20699
|
[matMenuTriggerFor]="viewMenu"
|
|
20628
20700
|
matTooltip="View options"
|
|
20629
20701
|
>
|
|
20630
|
-
<mat-icon [praxisIcon]="'view_module'"></mat-icon>
|
|
20631
20702
|
</button>
|
|
20632
20703
|
|
|
20633
20704
|
<mat-menu #viewMenu="matMenu">
|
|
@@ -20861,11 +20932,12 @@ class TemplateGalleryComponent {
|
|
|
20861
20932
|
<mat-card-subtitle>{{ template.category }}</mat-card-subtitle>
|
|
20862
20933
|
<div class="card-actions">
|
|
20863
20934
|
<button
|
|
20864
|
-
|
|
20935
|
+
praxisIconButton="more_vert"
|
|
20936
|
+
size="dense"
|
|
20937
|
+
aria-label="Template actions"
|
|
20865
20938
|
[matMenuTriggerFor]="templateMenu"
|
|
20866
20939
|
(click)="$event.stopPropagation()"
|
|
20867
20940
|
>
|
|
20868
|
-
<mat-icon>more_vert</mat-icon>
|
|
20869
20941
|
</button>
|
|
20870
20942
|
<mat-menu #templateMenu="matMenu">
|
|
20871
20943
|
<button mat-menu-item (click)="applyTemplate(template)">
|
|
@@ -21030,10 +21102,11 @@ class TemplateGalleryComponent {
|
|
|
21030
21102
|
Preview
|
|
21031
21103
|
</button>
|
|
21032
21104
|
<button
|
|
21033
|
-
|
|
21105
|
+
praxisIconButton="more_vert"
|
|
21106
|
+
size="dense"
|
|
21107
|
+
aria-label="Template actions"
|
|
21034
21108
|
[matMenuTriggerFor]="listTemplateMenu"
|
|
21035
21109
|
>
|
|
21036
|
-
<mat-icon>more_vert</mat-icon>
|
|
21037
21110
|
</button>
|
|
21038
21111
|
<mat-menu #listTemplateMenu="matMenu">
|
|
21039
21112
|
<button mat-menu-item (click)="editTemplate(template)">
|
|
@@ -21072,18 +21145,20 @@ class TemplateGalleryComponent {
|
|
|
21072
21145
|
</div>
|
|
21073
21146
|
<div class="compact-actions">
|
|
21074
21147
|
<button
|
|
21075
|
-
|
|
21148
|
+
praxisIconButton="play_arrow"
|
|
21149
|
+
size="dense"
|
|
21150
|
+
aria-label="Apply template"
|
|
21076
21151
|
(click)="applyTemplate(template)"
|
|
21077
21152
|
matTooltip="Apply template"
|
|
21078
21153
|
>
|
|
21079
|
-
<mat-icon>play_arrow</mat-icon>
|
|
21080
21154
|
</button>
|
|
21081
21155
|
<button
|
|
21082
|
-
|
|
21156
|
+
praxisIconButton="preview"
|
|
21157
|
+
size="dense"
|
|
21158
|
+
aria-label="Preview template"
|
|
21083
21159
|
(click)="previewTemplate(template)"
|
|
21084
21160
|
matTooltip="Preview template"
|
|
21085
21161
|
>
|
|
21086
|
-
<mat-icon>preview</mat-icon>
|
|
21087
21162
|
</button>
|
|
21088
21163
|
</div>
|
|
21089
21164
|
</div>
|
|
@@ -21108,7 +21183,7 @@ class TemplateGalleryComponent {
|
|
|
21108
21183
|
</div>
|
|
21109
21184
|
</div>
|
|
21110
21185
|
</div>
|
|
21111
|
-
`, isInline: true, styles: [":host{--vb-shadow-low-color: var(--sicoob-shadow-low, rgba(0,0,0,.08));--vb-shadow-medium-color: var(--sicoob-shadow-medium, rgba(0,0,0,.18));--vb-shadow-high-color: var(--sicoob-shadow-high, rgba(0,0,0,.32))}.template-gallery{display:flex;flex-direction:column;height:100%;background:var(--md-sys-color-background)}.gallery-header{background:var(--md-sys-color-surface);border-bottom:1px solid var(--md-sys-color-outline);padding:16px 24px}.header-content{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.title-section{flex:1}.gallery-title{display:flex;align-items:center;gap:8px;margin:0;font-size:24px;font-weight:500;color:var(--md-sys-color-on-surface)}.gallery-subtitle{margin:4px 0 0 32px;color:var(--md-sys-color-on-surface-variant);font-size:14px}.header-actions{display:flex;gap:8px;align-items:center}.stats-bar{display:flex;gap:24px;padding:12px 0;border-top:1px solid var(--md-sys-color-outline)}.stat-item{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--md-sys-color-on-surface-variant)}.stat-item mat-icon{font-size:16px;width:16px;height:16px}.search-section{padding:16px 24px;background:var(--md-sys-color-surface-variant);border-bottom:1px solid var(--md-sys-color-outline)}.search-form{display:flex;flex-direction:column;gap:16px}.search-row{display:flex;gap:16px;align-items:flex-start}.search-input{flex:2;min-width:300px}.category-select,.complexity-select,.sort-select{flex:1;min-width:150px}.category-option{display:flex;align-items:center;gap:8px;width:100%}.tags-section{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.tags-label{font-size:13px;font-weight:500;color:var(--md-sys-color-on-surface-variant)}.tags-list{flex:1}.active-filters{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--md-sys-color-outline)}.filters-label{font-size:13px;font-weight:500;color:var(--md-sys-color-on-surface-variant)}.filter-chips{flex:1}.clear-all-button{font-size:12px}.recently-used-section{padding:16px 24px}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:16px;font-weight:500;color:var(--md-sys-color-on-surface)}.template-count{font-size:14px;font-weight:400;color:var(--md-sys-color-on-surface-variant)}.recent-templates{display:flex;gap:12px;flex-wrap:wrap}.recent-template-button{display:flex;align-items:center;gap:8px;padding:8px 16px}.templates-section{flex:1;padding:0 24px 24px;overflow:auto}.templates-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.view-toggle{display:flex;align-items:center;gap:8px}.templates-container{min-height:200px}.templates-container.grid-view{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:16px}.template-grid-card{height:fit-content;transition:transform .2s ease,box-shadow .2s ease}.template-grid-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px var(--vb-shadow-medium-color)}.template-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.card-actions{margin-left:auto}.template-description{font-size:14px;line-height:1.4;margin:0 0 12px;color:var(--md-sys-color-on-surface-variant)}.template-tags{margin-bottom:12px}.template-tag{font-size:11px;height:20px;line-height:20px}.more-tags{background:var(--md-sys-color-surface-variant);color:var(--md-sys-color-on-surface-variant)}.template-metadata{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:12px}.metadata-item{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.metadata-item mat-icon{font-size:14px;width:14px;height:14px}.template-preview{margin-top:12px;padding:8px;background:var(--md-sys-color-surface-variant);border-radius:4px}.preview-header{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:500;margin-bottom:8px;color:var(--md-sys-color-on-surface-variant)}.preview-header mat-icon{font-size:14px;width:14px;height:14px}.node-tree{font-size:11px;font-family:monospace}.root-node{padding:2px 0;color:var(--md-sys-color-on-surface)}.templates-container.list-view{display:flex;flex-direction:column;gap:8px}.template-list-card{padding:12px 16px}.list-card-content{display:flex;justify-content:space-between;align-items:center;gap:16px}.template-info{flex:1;display:flex;flex-direction:column;gap:8px}.template-header{display:flex;align-items:center;gap:12px}.template-details{flex:1}.template-name{margin:0;font-size:16px;font-weight:500}.template-meta{display:flex;gap:8px;align-items:center}.category-badge,.complexity-badge{font-size:11px;padding:2px 6px;border-radius:12px;background:var(--md-sys-color-surface-variant);color:var(--md-sys-color-on-surface-variant)}.complexity-simple{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.complexity-medium{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.complexity-complex{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.usage-count{font-size:11px;color:var(--md-sys-color-on-surface-variant)}.template-actions{display:flex;gap:8px;align-items:center}.templates-container.compact-view{display:flex;flex-direction:column;gap:4px}.template-compact-card{padding:8px 12px;border:1px solid var(--md-sys-color-outline);border-radius:4px;background:var(--md-sys-color-surface)}.compact-content{display:flex;align-items:center;gap:12px}.compact-icon{color:var(--md-sys-color-primary)}.compact-info{flex:1;display:flex;flex-direction:column}.compact-name{font-size:14px;font-weight:500}.compact-category{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.compact-actions{display:flex;gap:4px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center;color:var(--md-sys-color-on-surface-variant)}.empty-icon{font-size:64px;width:64px;height:64px;margin-bottom:16px;color:var(--md-sys-color-outline)}.empty-state h3{margin:0 0 8px;color:var(--md-sys-color-on-surface)}.empty-state p{margin:0 0 16px;max-width:400px}@media(max-width:1024px){.templates-container.grid-view{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.search-row{flex-wrap:wrap}.search-input{flex:1 1 100%}}@media(max-width:768px){.header-content{flex-direction:column;gap:16px;align-items:flex-start}.templates-container.grid-view{grid-template-columns:1fr}.stats-bar{flex-wrap:wrap;gap:12px}.gallery-subtitle{margin-left:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i5$1.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "directive", type: i5$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i5$1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i5$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i10.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: i10.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i7$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i10$1.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "pipe", type: i12$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
21186
|
+
`, isInline: true, styles: [":host{--vb-shadow-low-color: var(--sicoob-shadow-low, rgba(0,0,0,.08));--vb-shadow-medium-color: var(--sicoob-shadow-medium, rgba(0,0,0,.18));--vb-shadow-high-color: var(--sicoob-shadow-high, rgba(0,0,0,.32))}.template-gallery{display:flex;flex-direction:column;height:100%;background:var(--md-sys-color-background)}.gallery-header{background:var(--md-sys-color-surface);border-bottom:1px solid var(--md-sys-color-outline);padding:16px 24px}.header-content{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.title-section{flex:1}.gallery-title{display:flex;align-items:center;gap:8px;margin:0;font-size:24px;font-weight:500;color:var(--md-sys-color-on-surface)}.gallery-subtitle{margin:4px 0 0 32px;color:var(--md-sys-color-on-surface-variant);font-size:14px}.header-actions{display:flex;gap:8px;align-items:center}.stats-bar{display:flex;gap:24px;padding:12px 0;border-top:1px solid var(--md-sys-color-outline)}.stat-item{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--md-sys-color-on-surface-variant)}.stat-item mat-icon{font-size:16px;width:16px;height:16px}.search-section{padding:16px 24px;background:var(--md-sys-color-surface-variant);border-bottom:1px solid var(--md-sys-color-outline)}.search-form{display:flex;flex-direction:column;gap:16px}.search-row{display:flex;gap:16px;align-items:flex-start}.search-input{flex:2;min-width:300px}.category-select,.complexity-select,.sort-select{flex:1;min-width:150px}.category-option{display:flex;align-items:center;gap:8px;width:100%}.tags-section{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.tags-label{font-size:13px;font-weight:500;color:var(--md-sys-color-on-surface-variant)}.tags-list{flex:1}.active-filters{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--md-sys-color-outline)}.filters-label{font-size:13px;font-weight:500;color:var(--md-sys-color-on-surface-variant)}.filter-chips{flex:1}.clear-all-button{font-size:12px}.recently-used-section{padding:16px 24px}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:16px;font-weight:500;color:var(--md-sys-color-on-surface)}.template-count{font-size:14px;font-weight:400;color:var(--md-sys-color-on-surface-variant)}.recent-templates{display:flex;gap:12px;flex-wrap:wrap}.recent-template-button{display:flex;align-items:center;gap:8px;padding:8px 16px}.templates-section{flex:1;padding:0 24px 24px;overflow:auto}.templates-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.view-toggle{display:flex;align-items:center;gap:8px}.templates-container{min-height:200px}.templates-container.grid-view{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:16px}.template-grid-card{height:fit-content;transition:transform .2s ease,box-shadow .2s ease}.template-grid-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px var(--vb-shadow-medium-color)}.template-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.card-actions{margin-left:auto}.template-description{font-size:14px;line-height:1.4;margin:0 0 12px;color:var(--md-sys-color-on-surface-variant)}.template-tags{margin-bottom:12px}.template-tag{font-size:11px;height:20px;line-height:20px}.more-tags{background:var(--md-sys-color-surface-variant);color:var(--md-sys-color-on-surface-variant)}.template-metadata{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:12px}.metadata-item{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.metadata-item mat-icon{font-size:14px;width:14px;height:14px}.template-preview{margin-top:12px;padding:8px;background:var(--md-sys-color-surface-variant);border-radius:4px}.preview-header{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:500;margin-bottom:8px;color:var(--md-sys-color-on-surface-variant)}.preview-header mat-icon{font-size:14px;width:14px;height:14px}.node-tree{font-size:11px;font-family:monospace}.root-node{padding:2px 0;color:var(--md-sys-color-on-surface)}.templates-container.list-view{display:flex;flex-direction:column;gap:8px}.template-list-card{padding:12px 16px}.list-card-content{display:flex;justify-content:space-between;align-items:center;gap:16px}.template-info{flex:1;display:flex;flex-direction:column;gap:8px}.template-header{display:flex;align-items:center;gap:12px}.template-details{flex:1}.template-name{margin:0;font-size:16px;font-weight:500}.template-meta{display:flex;gap:8px;align-items:center}.category-badge,.complexity-badge{font-size:11px;padding:2px 6px;border-radius:12px;background:var(--md-sys-color-surface-variant);color:var(--md-sys-color-on-surface-variant)}.complexity-simple{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.complexity-medium{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.complexity-complex{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.usage-count{font-size:11px;color:var(--md-sys-color-on-surface-variant)}.template-actions{display:flex;gap:8px;align-items:center}.templates-container.compact-view{display:flex;flex-direction:column;gap:4px}.template-compact-card{padding:8px 12px;border:1px solid var(--md-sys-color-outline);border-radius:4px;background:var(--md-sys-color-surface)}.compact-content{display:flex;align-items:center;gap:12px}.compact-icon{color:var(--md-sys-color-primary)}.compact-info{flex:1;display:flex;flex-direction:column}.compact-name{font-size:14px;font-weight:500}.compact-category{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.compact-actions{display:flex;gap:4px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center;color:var(--md-sys-color-on-surface-variant)}.empty-icon{font-size:64px;width:64px;height:64px;margin-bottom:16px;color:var(--md-sys-color-outline)}.empty-state h3{margin:0 0 8px;color:var(--md-sys-color-on-surface)}.empty-state p{margin:0 0 16px;max-width:400px}@media(max-width:1024px){.templates-container.grid-view{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.search-row{flex-wrap:wrap}.search-input{flex:1 1 100%}}@media(max-width:768px){.header-content{flex-direction:column;gap:16px;align-items:flex-start}.templates-container.grid-view{grid-template-columns:1fr}.stats-bar{flex-wrap:wrap;gap:12px}.gallery-subtitle{margin-left:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i5$1.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "directive", type: i5$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i5$1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i5$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i10.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: i10.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i9$2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "pipe", type: i12$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
21112
21187
|
}
|
|
21113
21188
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TemplateGalleryComponent, decorators: [{
|
|
21114
21189
|
type: Component,
|
|
@@ -21132,6 +21207,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
21132
21207
|
MatExpansionModule,
|
|
21133
21208
|
MatDividerModule,
|
|
21134
21209
|
MatSlideToggleModule,
|
|
21210
|
+
PraxisIconButtonComponent,
|
|
21135
21211
|
PraxisIconDirective,
|
|
21136
21212
|
], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
21137
21213
|
<div class="template-gallery">
|
|
@@ -21169,11 +21245,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
21169
21245
|
</button>
|
|
21170
21246
|
|
|
21171
21247
|
<button
|
|
21172
|
-
|
|
21248
|
+
praxisIconButton="view_module"
|
|
21249
|
+
size="dense"
|
|
21250
|
+
aria-label="View options"
|
|
21173
21251
|
[matMenuTriggerFor]="viewMenu"
|
|
21174
21252
|
matTooltip="View options"
|
|
21175
21253
|
>
|
|
21176
|
-
<mat-icon [praxisIcon]="'view_module'"></mat-icon>
|
|
21177
21254
|
</button>
|
|
21178
21255
|
|
|
21179
21256
|
<mat-menu #viewMenu="matMenu">
|
|
@@ -21407,11 +21484,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
21407
21484
|
<mat-card-subtitle>{{ template.category }}</mat-card-subtitle>
|
|
21408
21485
|
<div class="card-actions">
|
|
21409
21486
|
<button
|
|
21410
|
-
|
|
21487
|
+
praxisIconButton="more_vert"
|
|
21488
|
+
size="dense"
|
|
21489
|
+
aria-label="Template actions"
|
|
21411
21490
|
[matMenuTriggerFor]="templateMenu"
|
|
21412
21491
|
(click)="$event.stopPropagation()"
|
|
21413
21492
|
>
|
|
21414
|
-
<mat-icon>more_vert</mat-icon>
|
|
21415
21493
|
</button>
|
|
21416
21494
|
<mat-menu #templateMenu="matMenu">
|
|
21417
21495
|
<button mat-menu-item (click)="applyTemplate(template)">
|
|
@@ -21576,10 +21654,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
21576
21654
|
Preview
|
|
21577
21655
|
</button>
|
|
21578
21656
|
<button
|
|
21579
|
-
|
|
21657
|
+
praxisIconButton="more_vert"
|
|
21658
|
+
size="dense"
|
|
21659
|
+
aria-label="Template actions"
|
|
21580
21660
|
[matMenuTriggerFor]="listTemplateMenu"
|
|
21581
21661
|
>
|
|
21582
|
-
<mat-icon>more_vert</mat-icon>
|
|
21583
21662
|
</button>
|
|
21584
21663
|
<mat-menu #listTemplateMenu="matMenu">
|
|
21585
21664
|
<button mat-menu-item (click)="editTemplate(template)">
|
|
@@ -21618,18 +21697,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
21618
21697
|
</div>
|
|
21619
21698
|
<div class="compact-actions">
|
|
21620
21699
|
<button
|
|
21621
|
-
|
|
21700
|
+
praxisIconButton="play_arrow"
|
|
21701
|
+
size="dense"
|
|
21702
|
+
aria-label="Apply template"
|
|
21622
21703
|
(click)="applyTemplate(template)"
|
|
21623
21704
|
matTooltip="Apply template"
|
|
21624
21705
|
>
|
|
21625
|
-
<mat-icon>play_arrow</mat-icon>
|
|
21626
21706
|
</button>
|
|
21627
21707
|
<button
|
|
21628
|
-
|
|
21708
|
+
praxisIconButton="preview"
|
|
21709
|
+
size="dense"
|
|
21710
|
+
aria-label="Preview template"
|
|
21629
21711
|
(click)="previewTemplate(template)"
|
|
21630
21712
|
matTooltip="Preview template"
|
|
21631
21713
|
>
|
|
21632
|
-
<mat-icon>preview</mat-icon>
|
|
21633
21714
|
</button>
|
|
21634
21715
|
</div>
|
|
21635
21716
|
</div>
|
|
@@ -21674,4 +21755,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
21674
21755
|
* Generated bundle index. Do not edit.
|
|
21675
21756
|
*/
|
|
21676
21757
|
|
|
21677
|
-
export { ArrayFieldAnalyzer, CollectionValidatorEditorComponent, ConditionalValidatorEditorComponent, ConditionalValidatorType, ConfigurationError, ContextError, ContextManagementService, ConversionError, ErrorCategory, ErrorHandler, ErrorSeverity, ExportDialogComponent, ExportIntegrationService, ExpressionError, FIELD_TYPE_OPERATORS, FieldConditionEditorComponent, FieldSchemaService, FieldType, InternalError, JsonViewerComponent, MetadataEditorComponent, OPERATOR_LABELS, PRAXIS_VISUAL_BUILDER_AUTHORING_MANIFEST, PraxisVisualBuilder, RegistryError, RuleBuilderService, RuleCanvasComponent, RuleEditorComponent, RuleListComponent, RuleNodeComponent, RuleNodeRegistryService, RuleNodeType, RuleTemplateService, RuleValidationService, TemplateEditorDialogComponent, TemplateGalleryComponent, TemplatePreviewDialogComponent, ValidationError as VBValidationError, ValidationCategory, ValidationSeverity, VisualBuilderError, VisualRuleBuilderComponent, WebhookIntegrationService, createError, getArrayItemFieldPaths, globalErrorHandler, isArrayFieldSchema };
|
|
21758
|
+
export { ArrayFieldAnalyzer, CollectionValidatorEditorComponent, ConditionalValidatorEditorComponent, ConditionalValidatorType, ConfigurationError, ContextError, ContextManagementService, ConversionError, ErrorCategory, ErrorHandler, ErrorSeverity, ExportDialogComponent, ExportIntegrationService, ExpressionError, FIELD_TYPE_OPERATORS, FieldConditionEditorComponent, FieldSchemaService, FieldType, InternalError, JsonViewerComponent, MetadataEditorComponent, OPERATOR_LABELS, PRAXIS_VISUAL_BUILDER_AUTHORING_MANIFEST, PRAXIS_VISUAL_BUILDER_COMPONENT_METADATA, PraxisVisualBuilder, RegistryError, RuleBuilderService, RuleCanvasComponent, RuleEditorComponent, RuleListComponent, RuleNodeComponent, RuleNodeRegistryService, RuleNodeType, RuleTemplateService, RuleValidationService, TemplateEditorDialogComponent, TemplateGalleryComponent, TemplatePreviewDialogComponent, ValidationError as VBValidationError, ValidationCategory, ValidationSeverity, VisualBuilderError, VisualRuleBuilderComponent, WebhookIntegrationService, createError, getArrayItemFieldPaths, globalErrorHandler, isArrayFieldSchema, providePraxisVisualBuilderMetadata };
|