@praxisui/metadata-editor 1.0.0-beta.41 → 1.0.0-beta.43
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.
|
@@ -51,10 +51,10 @@ class ConfigRegistryService {
|
|
|
51
51
|
count: props.length,
|
|
52
52
|
}));
|
|
53
53
|
}
|
|
54
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
55
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConfigRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
55
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConfigRegistryService, providedIn: 'root' });
|
|
56
56
|
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConfigRegistryService, decorators: [{
|
|
58
58
|
type: Injectable,
|
|
59
59
|
args: [{ providedIn: 'root' }]
|
|
60
60
|
}] });
|
|
@@ -69,10 +69,10 @@ class ContextValidatorRegistryService {
|
|
|
69
69
|
get(controlType) {
|
|
70
70
|
return this.map.get(controlType) ?? [];
|
|
71
71
|
}
|
|
72
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
73
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
72
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ContextValidatorRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
73
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ContextValidatorRegistryService, providedIn: 'root' });
|
|
74
74
|
}
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ContextValidatorRegistryService, decorators: [{
|
|
76
76
|
type: Injectable,
|
|
77
77
|
args: [{ providedIn: 'root' }]
|
|
78
78
|
}] });
|
|
@@ -182,10 +182,10 @@ class SchemaNormalizerService {
|
|
|
182
182
|
getByPath(obj, path) {
|
|
183
183
|
return path.split('.').reduce((acc, key) => (acc == null ? acc : acc[key]), obj);
|
|
184
184
|
}
|
|
185
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
186
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
185
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SchemaNormalizerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
186
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SchemaNormalizerService, providedIn: 'root' });
|
|
187
187
|
}
|
|
188
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
188
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SchemaNormalizerService, decorators: [{
|
|
189
189
|
type: Injectable,
|
|
190
190
|
args: [{ providedIn: 'root' }]
|
|
191
191
|
}] });
|
|
@@ -276,10 +276,10 @@ class DynamicFormFactoryService {
|
|
|
276
276
|
}
|
|
277
277
|
return result;
|
|
278
278
|
}
|
|
279
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
280
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
279
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicFormFactoryService, deps: [{ token: i3.FormBuilder }, { token: ContextValidatorRegistryService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
280
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicFormFactoryService, providedIn: 'root' });
|
|
281
281
|
}
|
|
282
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
282
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicFormFactoryService, decorators: [{
|
|
283
283
|
type: Injectable,
|
|
284
284
|
args: [{ providedIn: 'root' }]
|
|
285
285
|
}], ctorParameters: () => [{ type: i3.FormBuilder }, { type: ContextValidatorRegistryService }] });
|
|
@@ -305,10 +305,10 @@ class EditorComponentRegistryService {
|
|
|
305
305
|
isRegistered(editorType) {
|
|
306
306
|
return this.registry.has(editorType);
|
|
307
307
|
}
|
|
308
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
309
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
308
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: EditorComponentRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
309
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: EditorComponentRegistryService, providedIn: 'root' });
|
|
310
310
|
}
|
|
311
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
311
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: EditorComponentRegistryService, decorators: [{
|
|
312
312
|
type: Injectable,
|
|
313
313
|
args: [{ providedIn: 'root' }]
|
|
314
314
|
}] });
|
|
@@ -349,8 +349,8 @@ class RegexHelpDialogComponent {
|
|
|
349
349
|
choose(pattern) {
|
|
350
350
|
this.dialogRef.close(pattern);
|
|
351
351
|
}
|
|
352
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
353
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.
|
|
352
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: RegexHelpDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
353
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: RegexHelpDialogComponent, isStandalone: true, selector: "praxis-regex-help-dialog", ngImport: i0, template: `
|
|
354
354
|
<h2 mat-dialog-title>Modelos de Expressões Regulares</h2>
|
|
355
355
|
<div mat-dialog-content>
|
|
356
356
|
<p>Selecione um dos modelos abaixo para preencher o campo ou use como base:</p>
|
|
@@ -373,7 +373,7 @@ class RegexHelpDialogComponent {
|
|
|
373
373
|
</div>
|
|
374
374
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { 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: MatListModule }, { kind: "component", type: i2.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i2.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatButtonModule }] });
|
|
375
375
|
}
|
|
376
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
376
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: RegexHelpDialogComponent, decorators: [{
|
|
377
377
|
type: Component,
|
|
378
378
|
args: [{
|
|
379
379
|
selector: 'praxis-regex-help-dialog',
|
|
@@ -683,8 +683,8 @@ class DynamicEditorRendererComponent {
|
|
|
683
683
|
this.form?.markAsDirty();
|
|
684
684
|
}
|
|
685
685
|
}
|
|
686
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
687
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.
|
|
686
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicEditorRendererComponent, deps: [{ token: i1.MatDialog }, { token: i2$1.IconPickerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
687
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: DynamicEditorRendererComponent, isStandalone: true, selector: "praxis-dynamic-editor-renderer", inputs: { properties: "properties", form: "form" }, usesOnChanges: true, ngImport: i0, template: `
|
|
688
688
|
<ng-template #item let-field="field" let-index="index" let-content="content">
|
|
689
689
|
<div class="editor-item" [attr.data-control-type]="field.controlType">
|
|
690
690
|
<ng-container [ngTemplateOutlet]="content"></ng-container>
|
|
@@ -755,7 +755,7 @@ class DynamicEditorRendererComponent {
|
|
|
755
755
|
</div>
|
|
756
756
|
`, isInline: true, styles: [":host{display:block}.editor-surface{padding:8px 0 2px;border-radius:12px;background:transparent}.section-accordion{display:block}.section-card{margin:6px 0 8px;border-radius:12px;border:1px solid var(--md-sys-color-outline-variant);overflow:hidden}.section-card.mat-expanded{border-color:var(--md-sys-color-primary);box-shadow:0 2px 10px #0000000d}.section-card .mat-expansion-panel-body{background:var(--md-sys-color-surface-container-low)}.section-header{background:var(--md-sys-color-surface-container-low);border-bottom:1px solid var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));padding:2px 8px;min-height:32px;display:flex;align-items:center;color:var(--md-sys-color-on-surface)}.section-header .mat-expansion-panel-header-title,.section-header .mat-expansion-panel-header-description{display:flex;align-items:center;color:var(--md-sys-color-on-surface)}.section-title{display:inline-flex;align-items:center;gap:6px;font-weight:600;letter-spacing:.2px;color:var(--md-sys-color-on-surface);font-size:.9rem;line-height:1.2}.section-icon{color:var(--md-sys-color-primary, var(--md-sys-color-primary, #3f51b5));opacity:.9}.editor-row{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap;margin-bottom:8px}.editor-row>praxis-field-shell{flex:1 1 100%;min-width:280px}.editor-row praxis-field-shell .mat-mdc-form-field{width:100%;margin-bottom:8px}.editor-row.row-inline>praxis-field-shell{flex:0 0 auto}.editor-row.row-2>praxis-field-shell{flex:1 1 calc(50% - 12px);min-width:260px}.editor-row.row-3>praxis-field-shell{flex:1 1 calc(33.333% - 12px);min-width:220px}.editor-row>praxis-field-shell[data-field-name=controlType],.editor-row>praxis-field-shell[data-field-name=label],.editor-row>praxis-field-shell[data-field-name=placeholder]{flex:1 1 calc(50% - 12px);min-width:300px}praxis-field-shell[data-field-name=label] .mdc-floating-label,praxis-field-shell[data-field-name=placeholder] .mdc-floating-label{font-weight:600}.editor-row>praxis-field-shell[data-field-name=prefix],.editor-row>praxis-field-shell[data-field-name=suffix]{flex:0 0 200px;min-width:160px}.editor-row>praxis-field-shell[data-field-name=prefixIcon],.editor-row>praxis-field-shell[data-field-name=suffixIcon],.editor-row>praxis-field-shell[data-field-name=prefixIconColor],.editor-row>praxis-field-shell[data-field-name=suffixIconColor]{flex:1 1 auto;min-width:160px}.editor-item{display:flex;align-items:flex-start;gap:4px}.editor-item>ng-container,.editor-item>praxis-field-shell{flex:1;min-width:0}.actions-container{display:flex;align-items:center;gap:0;margin-top:12px;flex-shrink:0}.decorator-btn{position:static;color:var(--md-sys-color-primary, #3f51b5);opacity:.6;transform:scale(.8);width:32px;height:32px;line-height:32px;padding:0}.decorator-btn:hover{opacity:1}.icon-picker-btn,.hint-btn,.hint-btn.has-icon-picker{right:auto}.editor-row .mat-mdc-form-field-subscript-wrapper mat-hint{display:none!important}.editor-row .mat-mdc-form-field-subscript-wrapper mat-error{display:block!important}praxis-field-shell[data-field-name=showCharCount] .mdc-switch{transform:scale(1.05)}praxis-field-shell[data-field-name=showCharCount] .mat-mdc-slide-toggle{font-weight:600}praxis-field-shell[data-field-name=controlType] .mat-mdc-form-field-hint{display:flex;align-items:center;gap:8px;background:var(--md-sys-color-tertiary-container);border:1px solid var(--md-sys-color-tertiary);color:var(--md-sys-color-on-tertiary-container);padding:8px 10px;border-radius:6px;line-height:1.3;white-space:normal}praxis-field-shell[data-field-name=controlType] .mat-mdc-form-field-hint:before{content:\"\\26a0\\fe0f\";display:inline-block}praxis-field-shell[data-field-name=controlType] .mat-mdc-form-field-subscript-wrapper{margin-top:6px;margin-bottom:10px;min-height:auto}praxis-field-shell[data-field-name=controlType] .mat-mdc-form-field{margin-bottom:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: DynamicFieldLoaderDirective, selector: "[dynamicFieldLoader]", inputs: ["fields", "formGroup", "enableExternalControlBinding", "itemTemplate", "debugTrace", "debugTraceLabel", "readonlyMode", "disabledMode", "presentationMode", "visible", "canvasMode"], outputs: ["componentsCreated", "fieldCreated", "fieldDestroyed", "renderError", "canvasMouseEnter", "canvasMouseLeave", "canvasClick"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i5.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i5.MatExpansionPanelTitle, selector: "mat-panel-title" }, { 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$1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
757
757
|
}
|
|
758
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
758
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicEditorRendererComponent, decorators: [{
|
|
759
759
|
type: Component,
|
|
760
760
|
args: [{ selector: 'praxis-dynamic-editor-renderer', standalone: true, imports: [
|
|
761
761
|
CommonModule,
|
|
@@ -3678,6 +3678,156 @@ function minLenLeMaxLen(group) {
|
|
|
3678
3678
|
return null;
|
|
3679
3679
|
}
|
|
3680
3680
|
|
|
3681
|
+
const HEX_PATTERN = /^#([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i;
|
|
3682
|
+
function clampChannel(value) {
|
|
3683
|
+
return Math.max(0, Math.min(255, Math.round(value)));
|
|
3684
|
+
}
|
|
3685
|
+
function parseHexColor(raw) {
|
|
3686
|
+
const normalized = raw.trim();
|
|
3687
|
+
if (!HEX_PATTERN.test(normalized)) {
|
|
3688
|
+
return null;
|
|
3689
|
+
}
|
|
3690
|
+
const hex = normalized.slice(1);
|
|
3691
|
+
if (hex.length === 3 || hex.length === 4) {
|
|
3692
|
+
return {
|
|
3693
|
+
r: Number.parseInt(hex[0] + hex[0], 16),
|
|
3694
|
+
g: Number.parseInt(hex[1] + hex[1], 16),
|
|
3695
|
+
b: Number.parseInt(hex[2] + hex[2], 16),
|
|
3696
|
+
};
|
|
3697
|
+
}
|
|
3698
|
+
return {
|
|
3699
|
+
r: Number.parseInt(hex.slice(0, 2), 16),
|
|
3700
|
+
g: Number.parseInt(hex.slice(2, 4), 16),
|
|
3701
|
+
b: Number.parseInt(hex.slice(4, 6), 16),
|
|
3702
|
+
};
|
|
3703
|
+
}
|
|
3704
|
+
function parseRgbChannel(token) {
|
|
3705
|
+
const value = token.trim();
|
|
3706
|
+
if (!value.length)
|
|
3707
|
+
return null;
|
|
3708
|
+
if (value.endsWith('%')) {
|
|
3709
|
+
const pct = Number.parseFloat(value.slice(0, -1));
|
|
3710
|
+
if (!Number.isFinite(pct))
|
|
3711
|
+
return null;
|
|
3712
|
+
return clampChannel((pct / 100) * 255);
|
|
3713
|
+
}
|
|
3714
|
+
const numeric = Number.parseFloat(value);
|
|
3715
|
+
if (!Number.isFinite(numeric))
|
|
3716
|
+
return null;
|
|
3717
|
+
return clampChannel(numeric);
|
|
3718
|
+
}
|
|
3719
|
+
function parseRgbColor(raw) {
|
|
3720
|
+
const normalized = raw.trim().toLowerCase();
|
|
3721
|
+
if (!normalized.startsWith('rgb')) {
|
|
3722
|
+
return null;
|
|
3723
|
+
}
|
|
3724
|
+
const parts = normalized.match(/[\d.]+%?/g) ?? [];
|
|
3725
|
+
if (parts.length < 3) {
|
|
3726
|
+
return null;
|
|
3727
|
+
}
|
|
3728
|
+
const [rRaw, gRaw, bRaw] = parts;
|
|
3729
|
+
if (rRaw === undefined || gRaw === undefined || bRaw === undefined) {
|
|
3730
|
+
return null;
|
|
3731
|
+
}
|
|
3732
|
+
const r = parseRgbChannel(rRaw);
|
|
3733
|
+
const g = parseRgbChannel(gRaw);
|
|
3734
|
+
const b = parseRgbChannel(bRaw);
|
|
3735
|
+
if (r === null || g === null || b === null) {
|
|
3736
|
+
return null;
|
|
3737
|
+
}
|
|
3738
|
+
return { r, g, b };
|
|
3739
|
+
}
|
|
3740
|
+
function parseComputedRgbColor(raw) {
|
|
3741
|
+
if (typeof document === 'undefined') {
|
|
3742
|
+
return null;
|
|
3743
|
+
}
|
|
3744
|
+
const probe = document.createElement('span');
|
|
3745
|
+
probe.style.color = '';
|
|
3746
|
+
probe.style.color = raw;
|
|
3747
|
+
if (!probe.style.color) {
|
|
3748
|
+
return null;
|
|
3749
|
+
}
|
|
3750
|
+
const host = document.body ?? document.documentElement;
|
|
3751
|
+
let computed = probe.style.color;
|
|
3752
|
+
if (host) {
|
|
3753
|
+
host.appendChild(probe);
|
|
3754
|
+
try {
|
|
3755
|
+
computed = getComputedStyle(probe).color || computed;
|
|
3756
|
+
}
|
|
3757
|
+
finally {
|
|
3758
|
+
probe.remove();
|
|
3759
|
+
}
|
|
3760
|
+
}
|
|
3761
|
+
return parseRgbColor(computed) ?? parseHexColor(computed);
|
|
3762
|
+
}
|
|
3763
|
+
function normalizeCssColorToRgb(value) {
|
|
3764
|
+
const raw = String(value ?? '').trim();
|
|
3765
|
+
if (!raw.length) {
|
|
3766
|
+
return null;
|
|
3767
|
+
}
|
|
3768
|
+
return parseHexColor(raw) ?? parseRgbColor(raw) ?? parseComputedRgbColor(raw);
|
|
3769
|
+
}
|
|
3770
|
+
function relativeLuminance({ r, g, b }) {
|
|
3771
|
+
const normalize = (channel) => {
|
|
3772
|
+
const value = channel / 255;
|
|
3773
|
+
return value <= 0.03928 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4;
|
|
3774
|
+
};
|
|
3775
|
+
return 0.2126 * normalize(r) + 0.7152 * normalize(g) + 0.0722 * normalize(b);
|
|
3776
|
+
}
|
|
3777
|
+
function contrastRatio(a, b) {
|
|
3778
|
+
const lumA = relativeLuminance(a);
|
|
3779
|
+
const lumB = relativeLuminance(b);
|
|
3780
|
+
const lighter = Math.max(lumA, lumB);
|
|
3781
|
+
const darker = Math.min(lumA, lumB);
|
|
3782
|
+
return (lighter + 0.05) / (darker + 0.05);
|
|
3783
|
+
}
|
|
3784
|
+
function gradientColorStopValidator(options) {
|
|
3785
|
+
const label = String(options.label || 'Cor').trim() || 'Cor';
|
|
3786
|
+
const compareWith = options.compareWith ?? [];
|
|
3787
|
+
const minContrastRatio = Math.max(1, Number(options.minContrastRatio ?? 1.4));
|
|
3788
|
+
return (control) => {
|
|
3789
|
+
const rawValue = String(control.value ?? '').trim();
|
|
3790
|
+
if (!rawValue.length) {
|
|
3791
|
+
return null;
|
|
3792
|
+
}
|
|
3793
|
+
const currentColor = normalizeCssColorToRgb(rawValue);
|
|
3794
|
+
if (!currentColor) {
|
|
3795
|
+
return {
|
|
3796
|
+
invalidColor: {
|
|
3797
|
+
message: `${label}: informe uma cor CSS valida (ex.: #22c55e).`,
|
|
3798
|
+
},
|
|
3799
|
+
};
|
|
3800
|
+
}
|
|
3801
|
+
const parent = control.parent;
|
|
3802
|
+
if (!parent || !compareWith.length) {
|
|
3803
|
+
return null;
|
|
3804
|
+
}
|
|
3805
|
+
for (const target of compareWith) {
|
|
3806
|
+
const siblingRaw = String(parent.get(target.field)?.value ?? '').trim();
|
|
3807
|
+
if (!siblingRaw.length) {
|
|
3808
|
+
continue;
|
|
3809
|
+
}
|
|
3810
|
+
const siblingColor = normalizeCssColorToRgb(siblingRaw);
|
|
3811
|
+
if (!siblingColor) {
|
|
3812
|
+
continue;
|
|
3813
|
+
}
|
|
3814
|
+
const ratio = contrastRatio(currentColor, siblingColor);
|
|
3815
|
+
if (ratio < minContrastRatio) {
|
|
3816
|
+
return {
|
|
3817
|
+
gradientContrast: {
|
|
3818
|
+
message: `${label}: contraste baixo com ${target.label} ` +
|
|
3819
|
+
`(${ratio.toFixed(2)}:1). Use ao menos ${minContrastRatio.toFixed(1)}:1.`,
|
|
3820
|
+
ratio,
|
|
3821
|
+
minContrastRatio,
|
|
3822
|
+
comparedField: target.field,
|
|
3823
|
+
},
|
|
3824
|
+
};
|
|
3825
|
+
}
|
|
3826
|
+
}
|
|
3827
|
+
return null;
|
|
3828
|
+
};
|
|
3829
|
+
}
|
|
3830
|
+
|
|
3681
3831
|
function cloneProperty$6(prop) {
|
|
3682
3832
|
return {
|
|
3683
3833
|
...prop,
|
|
@@ -3803,6 +3953,61 @@ const filterInlineDistanceRadiusProperties = [
|
|
|
3803
3953
|
group: 'Aparencia',
|
|
3804
3954
|
hint: 'Cor do glow ao redor do centro radial.',
|
|
3805
3955
|
},
|
|
3956
|
+
{
|
|
3957
|
+
name: 'distanceGradientLowColor',
|
|
3958
|
+
label: 'Gradiente baixo',
|
|
3959
|
+
editorType: 'color',
|
|
3960
|
+
group: 'Aparencia',
|
|
3961
|
+
row: 'distance-gradient-colors',
|
|
3962
|
+
inline: true,
|
|
3963
|
+
hint: 'Cor para valores baixos (fallback padrao: verde).',
|
|
3964
|
+
validators: [
|
|
3965
|
+
gradientColorStopValidator({
|
|
3966
|
+
label: 'Gradiente baixo',
|
|
3967
|
+
compareWith: [{ field: 'distanceGradientMidColor', label: 'Gradiente medio' }],
|
|
3968
|
+
}),
|
|
3969
|
+
],
|
|
3970
|
+
},
|
|
3971
|
+
{
|
|
3972
|
+
name: 'distanceGradientMidColor',
|
|
3973
|
+
label: 'Gradiente medio',
|
|
3974
|
+
editorType: 'color',
|
|
3975
|
+
group: 'Aparencia',
|
|
3976
|
+
row: 'distance-gradient-colors',
|
|
3977
|
+
inline: true,
|
|
3978
|
+
hint: 'Cor para valores medios (fallback padrao: amarelo/ambar).',
|
|
3979
|
+
validators: [
|
|
3980
|
+
gradientColorStopValidator({
|
|
3981
|
+
label: 'Gradiente medio',
|
|
3982
|
+
compareWith: [
|
|
3983
|
+
{ field: 'distanceGradientLowColor', label: 'Gradiente baixo' },
|
|
3984
|
+
{ field: 'distanceGradientHighColor', label: 'Gradiente alto' },
|
|
3985
|
+
],
|
|
3986
|
+
}),
|
|
3987
|
+
],
|
|
3988
|
+
},
|
|
3989
|
+
{
|
|
3990
|
+
name: 'distanceGradientHighColor',
|
|
3991
|
+
label: 'Gradiente alto',
|
|
3992
|
+
editorType: 'color',
|
|
3993
|
+
group: 'Aparencia',
|
|
3994
|
+
row: 'distance-gradient-colors',
|
|
3995
|
+
inline: true,
|
|
3996
|
+
hint: 'Cor para valores altos (fallback padrao: vermelho).',
|
|
3997
|
+
validators: [
|
|
3998
|
+
gradientColorStopValidator({
|
|
3999
|
+
label: 'Gradiente alto',
|
|
4000
|
+
compareWith: [{ field: 'distanceGradientMidColor', label: 'Gradiente medio' }],
|
|
4001
|
+
}),
|
|
4002
|
+
],
|
|
4003
|
+
},
|
|
4004
|
+
{
|
|
4005
|
+
name: 'distanceRangeBandOpacity',
|
|
4006
|
+
label: 'Opacidade da faixa (0-1)',
|
|
4007
|
+
editorType: 'number',
|
|
4008
|
+
group: 'Aparencia',
|
|
4009
|
+
hint: 'Opcional. Sobrescreve a opacidade automatica da faixa radial no modo range.',
|
|
4010
|
+
},
|
|
3806
4011
|
{
|
|
3807
4012
|
name: 'materialDesign.density',
|
|
3808
4013
|
label: 'Densidade',
|
|
@@ -3854,6 +4059,48 @@ const filterInlineRelativePeriodProperties = [
|
|
|
3854
4059
|
editorType: 'checkbox',
|
|
3855
4060
|
group: 'Formato/Comportamento',
|
|
3856
4061
|
},
|
|
4062
|
+
{
|
|
4063
|
+
name: 'relativePeriodProgressGradientLowColor',
|
|
4064
|
+
label: 'Gradiente progresso (inicio)',
|
|
4065
|
+
editorType: 'color',
|
|
4066
|
+
group: 'Aparencia',
|
|
4067
|
+
hint: 'Cor inicial da barra de progresso relativa.',
|
|
4068
|
+
validators: [
|
|
4069
|
+
gradientColorStopValidator({
|
|
4070
|
+
label: 'Gradiente progresso (inicio)',
|
|
4071
|
+
compareWith: [{ field: 'relativePeriodProgressGradientMidColor', label: 'Gradiente progresso (meio)' }],
|
|
4072
|
+
}),
|
|
4073
|
+
],
|
|
4074
|
+
},
|
|
4075
|
+
{
|
|
4076
|
+
name: 'relativePeriodProgressGradientMidColor',
|
|
4077
|
+
label: 'Gradiente progresso (meio)',
|
|
4078
|
+
editorType: 'color',
|
|
4079
|
+
group: 'Aparencia',
|
|
4080
|
+
hint: 'Cor intermediaria da barra de progresso relativa.',
|
|
4081
|
+
validators: [
|
|
4082
|
+
gradientColorStopValidator({
|
|
4083
|
+
label: 'Gradiente progresso (meio)',
|
|
4084
|
+
compareWith: [
|
|
4085
|
+
{ field: 'relativePeriodProgressGradientLowColor', label: 'Gradiente progresso (inicio)' },
|
|
4086
|
+
{ field: 'relativePeriodProgressGradientHighColor', label: 'Gradiente progresso (fim)' },
|
|
4087
|
+
],
|
|
4088
|
+
}),
|
|
4089
|
+
],
|
|
4090
|
+
},
|
|
4091
|
+
{
|
|
4092
|
+
name: 'relativePeriodProgressGradientHighColor',
|
|
4093
|
+
label: 'Gradiente progresso (fim)',
|
|
4094
|
+
editorType: 'color',
|
|
4095
|
+
group: 'Aparencia',
|
|
4096
|
+
hint: 'Cor final da barra de progresso relativa.',
|
|
4097
|
+
validators: [
|
|
4098
|
+
gradientColorStopValidator({
|
|
4099
|
+
label: 'Gradiente progresso (fim)',
|
|
4100
|
+
compareWith: [{ field: 'relativePeriodProgressGradientMidColor', label: 'Gradiente progresso (meio)' }],
|
|
4101
|
+
}),
|
|
4102
|
+
],
|
|
4103
|
+
},
|
|
3857
4104
|
{
|
|
3858
4105
|
name: 'relativePeriodColumns',
|
|
3859
4106
|
label: 'Colunas do grid',
|
|
@@ -3992,6 +4239,48 @@ const filterInlineSentimentProperties = [
|
|
|
3992
4239
|
group: 'Aparencia',
|
|
3993
4240
|
hint: 'Cores fallback usadas quando a opcao nao informar color.',
|
|
3994
4241
|
},
|
|
4242
|
+
{
|
|
4243
|
+
name: 'sentimentGradientLowColor',
|
|
4244
|
+
label: 'Gradiente sentimento (inicio)',
|
|
4245
|
+
editorType: 'color',
|
|
4246
|
+
group: 'Aparencia',
|
|
4247
|
+
hint: 'Cor inicial do gradiente fallback de sentimento.',
|
|
4248
|
+
validators: [
|
|
4249
|
+
gradientColorStopValidator({
|
|
4250
|
+
label: 'Gradiente sentimento (inicio)',
|
|
4251
|
+
compareWith: [{ field: 'sentimentGradientMidColor', label: 'Gradiente sentimento (meio)' }],
|
|
4252
|
+
}),
|
|
4253
|
+
],
|
|
4254
|
+
},
|
|
4255
|
+
{
|
|
4256
|
+
name: 'sentimentGradientMidColor',
|
|
4257
|
+
label: 'Gradiente sentimento (meio)',
|
|
4258
|
+
editorType: 'color',
|
|
4259
|
+
group: 'Aparencia',
|
|
4260
|
+
hint: 'Cor intermediaria do gradiente fallback de sentimento.',
|
|
4261
|
+
validators: [
|
|
4262
|
+
gradientColorStopValidator({
|
|
4263
|
+
label: 'Gradiente sentimento (meio)',
|
|
4264
|
+
compareWith: [
|
|
4265
|
+
{ field: 'sentimentGradientLowColor', label: 'Gradiente sentimento (inicio)' },
|
|
4266
|
+
{ field: 'sentimentGradientHighColor', label: 'Gradiente sentimento (fim)' },
|
|
4267
|
+
],
|
|
4268
|
+
}),
|
|
4269
|
+
],
|
|
4270
|
+
},
|
|
4271
|
+
{
|
|
4272
|
+
name: 'sentimentGradientHighColor',
|
|
4273
|
+
label: 'Gradiente sentimento (fim)',
|
|
4274
|
+
editorType: 'color',
|
|
4275
|
+
group: 'Aparencia',
|
|
4276
|
+
hint: 'Cor final do gradiente fallback de sentimento.',
|
|
4277
|
+
validators: [
|
|
4278
|
+
gradientColorStopValidator({
|
|
4279
|
+
label: 'Gradiente sentimento (fim)',
|
|
4280
|
+
compareWith: [{ field: 'sentimentGradientMidColor', label: 'Gradiente sentimento (meio)' }],
|
|
4281
|
+
}),
|
|
4282
|
+
],
|
|
4283
|
+
},
|
|
3995
4284
|
{
|
|
3996
4285
|
name: 'sentimentShowBar',
|
|
3997
4286
|
label: 'Mostrar barra de sentimento',
|
|
@@ -4362,6 +4651,48 @@ const filterInlinePipelineStatusProperties = [
|
|
|
4362
4651
|
group: 'Aparencia',
|
|
4363
4652
|
hint: 'Cores fallback quando a opcao nao informar color.',
|
|
4364
4653
|
},
|
|
4654
|
+
{
|
|
4655
|
+
name: 'pipelineGradientLowColor',
|
|
4656
|
+
label: 'Gradiente pipeline (inicio)',
|
|
4657
|
+
editorType: 'color',
|
|
4658
|
+
group: 'Aparencia',
|
|
4659
|
+
hint: 'Cor inicial do gradiente fallback da barra/segmentos.',
|
|
4660
|
+
validators: [
|
|
4661
|
+
gradientColorStopValidator({
|
|
4662
|
+
label: 'Gradiente pipeline (inicio)',
|
|
4663
|
+
compareWith: [{ field: 'pipelineGradientMidColor', label: 'Gradiente pipeline (meio)' }],
|
|
4664
|
+
}),
|
|
4665
|
+
],
|
|
4666
|
+
},
|
|
4667
|
+
{
|
|
4668
|
+
name: 'pipelineGradientMidColor',
|
|
4669
|
+
label: 'Gradiente pipeline (meio)',
|
|
4670
|
+
editorType: 'color',
|
|
4671
|
+
group: 'Aparencia',
|
|
4672
|
+
hint: 'Cor intermediaria do gradiente fallback da barra/segmentos.',
|
|
4673
|
+
validators: [
|
|
4674
|
+
gradientColorStopValidator({
|
|
4675
|
+
label: 'Gradiente pipeline (meio)',
|
|
4676
|
+
compareWith: [
|
|
4677
|
+
{ field: 'pipelineGradientLowColor', label: 'Gradiente pipeline (inicio)' },
|
|
4678
|
+
{ field: 'pipelineGradientHighColor', label: 'Gradiente pipeline (fim)' },
|
|
4679
|
+
],
|
|
4680
|
+
}),
|
|
4681
|
+
],
|
|
4682
|
+
},
|
|
4683
|
+
{
|
|
4684
|
+
name: 'pipelineGradientHighColor',
|
|
4685
|
+
label: 'Gradiente pipeline (fim)',
|
|
4686
|
+
editorType: 'color',
|
|
4687
|
+
group: 'Aparencia',
|
|
4688
|
+
hint: 'Cor final do gradiente fallback da barra/segmentos.',
|
|
4689
|
+
validators: [
|
|
4690
|
+
gradientColorStopValidator({
|
|
4691
|
+
label: 'Gradiente pipeline (fim)',
|
|
4692
|
+
compareWith: [{ field: 'pipelineGradientMidColor', label: 'Gradiente pipeline (meio)' }],
|
|
4693
|
+
}),
|
|
4694
|
+
],
|
|
4695
|
+
},
|
|
4365
4696
|
{
|
|
4366
4697
|
name: 'pipelineEmptyStateText',
|
|
4367
4698
|
label: 'Texto de estado vazio',
|
|
@@ -4542,6 +4873,48 @@ const filterInlineRatingProperties = [
|
|
|
4542
4873
|
group: 'Aparência',
|
|
4543
4874
|
hint: 'Cor para estrelas de notas altas (fallback: verde).',
|
|
4544
4875
|
},
|
|
4876
|
+
{
|
|
4877
|
+
name: 'ratingGradientLowColor',
|
|
4878
|
+
label: 'Gradiente estrelas (inicio)',
|
|
4879
|
+
editorType: 'color',
|
|
4880
|
+
group: 'Aparência',
|
|
4881
|
+
hint: 'Cor inicial do gradiente aplicado na escala de estrelas.',
|
|
4882
|
+
validators: [
|
|
4883
|
+
gradientColorStopValidator({
|
|
4884
|
+
label: 'Gradiente estrelas (inicio)',
|
|
4885
|
+
compareWith: [{ field: 'ratingGradientMidColor', label: 'Gradiente estrelas (meio)' }],
|
|
4886
|
+
}),
|
|
4887
|
+
],
|
|
4888
|
+
},
|
|
4889
|
+
{
|
|
4890
|
+
name: 'ratingGradientMidColor',
|
|
4891
|
+
label: 'Gradiente estrelas (meio)',
|
|
4892
|
+
editorType: 'color',
|
|
4893
|
+
group: 'Aparência',
|
|
4894
|
+
hint: 'Cor intermediaria do gradiente aplicado na escala de estrelas.',
|
|
4895
|
+
validators: [
|
|
4896
|
+
gradientColorStopValidator({
|
|
4897
|
+
label: 'Gradiente estrelas (meio)',
|
|
4898
|
+
compareWith: [
|
|
4899
|
+
{ field: 'ratingGradientLowColor', label: 'Gradiente estrelas (inicio)' },
|
|
4900
|
+
{ field: 'ratingGradientHighColor', label: 'Gradiente estrelas (fim)' },
|
|
4901
|
+
],
|
|
4902
|
+
}),
|
|
4903
|
+
],
|
|
4904
|
+
},
|
|
4905
|
+
{
|
|
4906
|
+
name: 'ratingGradientHighColor',
|
|
4907
|
+
label: 'Gradiente estrelas (fim)',
|
|
4908
|
+
editorType: 'color',
|
|
4909
|
+
group: 'Aparência',
|
|
4910
|
+
hint: 'Cor final do gradiente aplicado na escala de estrelas.',
|
|
4911
|
+
validators: [
|
|
4912
|
+
gradientColorStopValidator({
|
|
4913
|
+
label: 'Gradiente estrelas (fim)',
|
|
4914
|
+
compareWith: [{ field: 'ratingGradientMidColor', label: 'Gradiente estrelas (meio)' }],
|
|
4915
|
+
}),
|
|
4916
|
+
],
|
|
4917
|
+
},
|
|
4545
4918
|
{
|
|
4546
4919
|
name: 'ratingBadgeColor',
|
|
4547
4920
|
label: 'Cor ícone badges',
|
|
@@ -4735,6 +5108,48 @@ const filterInlineScorePriorityProperties = [
|
|
|
4735
5108
|
group: 'Aparencia',
|
|
4736
5109
|
hint: 'Cores usadas quando uma faixa nao informa color.',
|
|
4737
5110
|
},
|
|
5111
|
+
{
|
|
5112
|
+
name: 'scoreGradientLowColor',
|
|
5113
|
+
label: 'Gradiente score (inicio)',
|
|
5114
|
+
editorType: 'color',
|
|
5115
|
+
group: 'Aparencia',
|
|
5116
|
+
hint: 'Cor inicial do gradiente fallback da trilha.',
|
|
5117
|
+
validators: [
|
|
5118
|
+
gradientColorStopValidator({
|
|
5119
|
+
label: 'Gradiente score (inicio)',
|
|
5120
|
+
compareWith: [{ field: 'scoreGradientMidColor', label: 'Gradiente score (meio)' }],
|
|
5121
|
+
}),
|
|
5122
|
+
],
|
|
5123
|
+
},
|
|
5124
|
+
{
|
|
5125
|
+
name: 'scoreGradientMidColor',
|
|
5126
|
+
label: 'Gradiente score (meio)',
|
|
5127
|
+
editorType: 'color',
|
|
5128
|
+
group: 'Aparencia',
|
|
5129
|
+
hint: 'Cor intermediaria do gradiente fallback da trilha.',
|
|
5130
|
+
validators: [
|
|
5131
|
+
gradientColorStopValidator({
|
|
5132
|
+
label: 'Gradiente score (meio)',
|
|
5133
|
+
compareWith: [
|
|
5134
|
+
{ field: 'scoreGradientLowColor', label: 'Gradiente score (inicio)' },
|
|
5135
|
+
{ field: 'scoreGradientHighColor', label: 'Gradiente score (fim)' },
|
|
5136
|
+
],
|
|
5137
|
+
}),
|
|
5138
|
+
],
|
|
5139
|
+
},
|
|
5140
|
+
{
|
|
5141
|
+
name: 'scoreGradientHighColor',
|
|
5142
|
+
label: 'Gradiente score (fim)',
|
|
5143
|
+
editorType: 'color',
|
|
5144
|
+
group: 'Aparencia',
|
|
5145
|
+
hint: 'Cor final do gradiente fallback da trilha.',
|
|
5146
|
+
validators: [
|
|
5147
|
+
gradientColorStopValidator({
|
|
5148
|
+
label: 'Gradiente score (fim)',
|
|
5149
|
+
compareWith: [{ field: 'scoreGradientMidColor', label: 'Gradiente score (meio)' }],
|
|
5150
|
+
}),
|
|
5151
|
+
],
|
|
5152
|
+
},
|
|
4738
5153
|
{
|
|
4739
5154
|
name: 'scoreValueFallbackColor',
|
|
4740
5155
|
label: 'Cor fallback valor',
|
|
@@ -5621,8 +6036,8 @@ class FieldMetadataEditorComponent {
|
|
|
5621
6036
|
if (value != null)
|
|
5622
6037
|
this.onControlTypeChange(value);
|
|
5623
6038
|
}
|
|
5624
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
5625
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.
|
|
6039
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: FieldMetadataEditorComponent, deps: [{ token: ConfigRegistryService }, { token: SchemaNormalizerService }, { token: DynamicFormFactoryService }, { token: ContextValidatorRegistryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
6040
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: FieldMetadataEditorComponent, isStandalone: true, selector: "praxis-field-metadata-editor", inputs: { controlType: "controlType", seed: "seed" }, outputs: { applied: "applied", cancel: "cancel" }, ngImport: i0, template: `
|
|
5626
6041
|
<div class="p-3" *ngIf="form">
|
|
5627
6042
|
<praxis-dynamic-editor-renderer
|
|
5628
6043
|
[properties]="normalizedProps"
|
|
@@ -5631,7 +6046,7 @@ class FieldMetadataEditorComponent {
|
|
|
5631
6046
|
</div>
|
|
5632
6047
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: DynamicEditorRendererComponent, selector: "praxis-dynamic-editor-renderer", inputs: ["properties", "form"] }] });
|
|
5633
6048
|
}
|
|
5634
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
6049
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: FieldMetadataEditorComponent, decorators: [{
|
|
5635
6050
|
type: Component,
|
|
5636
6051
|
args: [{
|
|
5637
6052
|
selector: 'praxis-field-metadata-editor',
|
|
@@ -5707,10 +6122,10 @@ class CascadeRulesService {
|
|
|
5707
6122
|
dependencyValuePath: rule.dependencyValuePath || inferredValueKey || 'id',
|
|
5708
6123
|
};
|
|
5709
6124
|
}
|
|
5710
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
5711
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
6125
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: CascadeRulesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6126
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: CascadeRulesService, providedIn: 'root' });
|
|
5712
6127
|
}
|
|
5713
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
6128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: CascadeRulesService, decorators: [{
|
|
5714
6129
|
type: Injectable,
|
|
5715
6130
|
args: [{ providedIn: 'root' }]
|
|
5716
6131
|
}] });
|
|
@@ -6079,8 +6494,8 @@ class CascadeManagerTabComponent {
|
|
|
6079
6494
|
}
|
|
6080
6495
|
return [...new Set(suggestions)];
|
|
6081
6496
|
}
|
|
6082
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
6083
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.
|
|
6497
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: CascadeManagerTabComponent, deps: [{ token: CascadeRulesService }], target: i0.ɵɵFactoryTarget.Component });
|
|
6498
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: CascadeManagerTabComponent, isStandalone: true, selector: "praxis-cascade-manager-tab", inputs: { fields: "fields", connections: "connections" }, outputs: { apply: "apply", cancel: "cancel" }, usesOnChanges: true, ngImport: i0, template: `
|
|
6084
6499
|
<div class="cm-root">
|
|
6085
6500
|
<!-- Left: Fields list -->
|
|
6086
6501
|
<div class="cm-left">
|
|
@@ -6354,7 +6769,7 @@ class CascadeManagerTabComponent {
|
|
|
6354
6769
|
</div>
|
|
6355
6770
|
`, isInline: true, styles: [":host{display:block}.cm-root{display:grid;grid-template-columns:320px 1fr;gap:16px;min-height:420px}.cm-left{border-right:1px solid var(--md-sys-color-outline-variant);padding-right:8px}.cm-search{width:100%;margin-bottom:8px}.cm-right{padding-left:8px}.field-item{display:flex;align-items:center;justify-content:space-between;padding:8px 6px;cursor:pointer;border-radius:10px;transition:background .12s ease,border .12s ease;border:1px solid transparent}.field-item:hover{background:var(--md-sys-color-surface-container-high)}.field-item.selected{background:var(--md-sys-color-surface-container-highest);border-color:var(--md-sys-color-outline-variant)}.rule-badges{display:inline-flex;gap:6px}.rule-badge{font-size:11px;padding:2px 8px;border-radius:999px;font-weight:600}.b-active{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.b-manual{background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant)}.b-immediate{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.b-conflict{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.cm-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.rules-empty{opacity:.8;font-style:italic;padding:8px 0;color:var(--md-sys-color-on-surface-variant)}.rule-row{display:grid;grid-template-columns:1fr auto;align-items:center;padding:10px 0;border-bottom:1px dashed var(--md-sys-color-outline-variant)}.rule-actions button{margin-left:4px}.banner{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container);padding:10px 12px;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;margin-bottom:10px;display:flex;gap:8px;align-items:center}.import-panel{background:var(--md-sys-color-surface-container-high);border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:10px;margin-bottom:10px}.full{width:100%}.form-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.form-grid{display:grid;gap:12px;padding:8px 0}.map-table{width:100%;border-collapse:collapse}.map-table th,.map-table td{padding:8px;border-bottom:1px dashed var(--md-sys-color-outline-variant)}.kbd{font-family:monospace;background:var(--md-sys-color-surface-container-highest);padding:0 6px;border-radius:4px;color:var(--md-sys-color-on-surface-variant)}.panel-surface{background:var(--md-sys-color-surface-container-high);border:1px solid var(--md-sys-color-outline-variant);border-radius:10px;box-shadow:var(--md-sys-elevation-level1, none);margin-bottom:12px}.panel-stack{display:grid;gap:12px;margin:12px 0}.stack-panel{background:var(--md-sys-color-surface-container-high);border:1px solid var(--md-sys-color-outline-variant);border-radius:10px;box-shadow:var(--md-sys-elevation-level1, none)}.stack-panel .mat-expansion-panel-content{padding:0 16px 12px}.panel-header{display:flex;align-items:center;gap:8px}.preview-box{background:var(--md-sys-color-surface-container-low);border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:8px;color:var(--md-sys-color-on-surface)}.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: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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$1.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$1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.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: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i8$1.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: i8$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i9.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: MatExpansionModule }, { kind: "component", type: i5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i5.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i11.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: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.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: MatAutocompleteModule }, { kind: "component", type: i12.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: i12.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i13.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i13.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i13.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }] });
|
|
6356
6771
|
}
|
|
6357
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
6772
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: CascadeManagerTabComponent, decorators: [{
|
|
6358
6773
|
type: Component,
|
|
6359
6774
|
args: [{ selector: 'praxis-cascade-manager-tab', standalone: true, imports: [
|
|
6360
6775
|
CommonModule,
|