@praxisui/metadata-editor 9.0.5-rc.23 → 9.0.5-rc.25
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.
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-08-
|
|
3
|
+
"generatedAt": "2026-08-15T05:23:47.203Z",
|
|
4
4
|
"packageName": "@praxisui/metadata-editor",
|
|
5
|
-
"packageVersion": "9.0.5-rc.
|
|
5
|
+
"packageVersion": "9.0.5-rc.25",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 1,
|
|
@@ -10907,11 +10907,11 @@ class ReactiveDeterminationDiagnosticsComponent {
|
|
|
10907
10907
|
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
10908
10908
|
}
|
|
10909
10909
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ReactiveDeterminationDiagnosticsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10910
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: ReactiveDeterminationDiagnosticsComponent, isStandalone: true, selector: "praxis-reactive-determination-diagnostics", inputs: { schema: { classPropertyName: "schema", publicName: "schema", isSignal: true, isRequired: false, transformFunction: null }, executionEvents: { classPropertyName: "executionEvents", publicName: "executionEvents", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section\n class=\"determination-diagnostics\"\n data-praxis-readonly-materialization=\"reactive-determinations\"\n [attr.aria-label]=\"text('ariaLabel', 'Diagn\\u00f3sticos de determina\\u00e7\\u00f5es reativas')\"\n>\n <header class=\"determination-diagnostics__header\">\n <div>\n <span class=\"determination-diagnostics__eyebrow\">\n {{ text('eyebrow', 'Evid\\u00eancia can\\u00f4nica somente leitura') }}\n </span>\n <h2>{{ text('title', 'Determina\\u00e7\\u00f5es reativas') }}</h2>\n <p>\n {{ text('description', 'Bindings estruturais publicados pelo backend para esta opera\\u00e7\\u00e3o de formul\\u00e1rio.') }}\n </p>\n </div>\n <span class=\"determination-diagnostics__count\">\n {{ text('count', '{{count}} determina\\u00e7\\u00e3o(\\u00f5es)', { count: cards().length }) }}\n </span>\n </header>\n\n @if (rejectedEntryCount() > 0) {\n <p class=\"determination-diagnostics__warning\" role=\"status\">\n {{ text('invalidProjection', '{{count}} entrada(s) foram rejeitadas pela normaliza\\u00e7\\u00e3o can\\u00f4nica.', { count: rejectedEntryCount() }) }}\n </p>\n }\n\n @if (!cards().length) {\n <div class=\"determination-diagnostics__empty\">\n @if (projectionPresent()) {\n <strong>{{ text('emptyInvalidTitle', 'Nenhuma determina\\u00e7\\u00e3o v\\u00e1lida') }}</strong>\n <span>{{ text('emptyInvalidDescription', 'Revise a publica\\u00e7\\u00e3o can\\u00f4nica no backend; este editor n\\u00e3o corrige o contrato localmente.') }}</span>\n } @else {\n <strong>{{ text('emptyTitle', 'Sem determina\\u00e7\\u00f5es para esta opera\\u00e7\\u00e3o') }}</strong>\n <span>{{ text('emptyDescription', 'O schema filtrado n\\u00e3o publicou x-ui.reactiveDeterminations.') }}</span>\n }\n </div>\n }\n\n <div class=\"determination-diagnostics__cards\">\n @for (card of cards(); track card.definition.id) {\n <article class=\"determination-card\">\n <header class=\"determination-card__header\">\n <div>\n <h3>{{ card.definition.id }}</h3>\n <p>\n {{ text('operation', 'Capability') }}\n <code>{{ card.definition.capability.operationId }}</code>\n </p>\n </div>\n <div\n class=\"determination-card__badges\"\n [attr.aria-label]=\"text('scopeBadges', 'Escopo da determina\\u00e7\\u00e3o')\"\n >\n <span>{{ formModeLabel(card.definition.scope.formMode) }}</span>\n <span>{{ card.definition.trigger.mode }}</span>\n <span>{{ card.definition.capability.method }}</span>\n </div>\n </header>\n\n <div class=\"determination-card__flow\" [attr.aria-label]=\"text('flow', 'Fluxo estrutural')\">\n <div>\n <span>{{ text('sources', 'Origens observadas') }}</span>\n @for (source of card.definition.trigger.sourcePaths; track source) {\n <code>{{ source }}</code>\n }\n </div>\n <span class=\"determination-card__arrow\" aria-hidden=\"true\">\\u2192</span>\n <div>\n <span>{{ text('capability', 'Capability resolvida') }}</span>\n <strong>{{ card.definition.capability.operationId }}</strong>\n </div>\n <span class=\"determination-card__arrow\" aria-hidden=\"true\">\\u2192</span>\n <div>\n <span>{{ text('targets', 'Campos determinados') }}</span>\n @for (output of card.definition.outputs; track output.fieldPath) {\n <code>{{ output.fieldPath }}</code>\n }\n </div>\n </div>\n\n <div class=\"determination-card__bindings\">\n <section>\n <h4>{{ text('inputBindings', 'Bindings de entrada') }}</h4>\n <dl>\n @for (input of card.definition.inputs; track input.requestPath) {\n <div>\n <dt><code>{{ input.fieldPath }}</code></dt>\n <dd><span aria-hidden=\"true\">\\u2192</span> <code>{{ input.requestPath }}</code></dd>\n </div>\n }\n </dl>\n </section>\n <section>\n <h4>{{ text('outputBindings', 'Bindings de sa\\u00edda') }}</h4>\n <dl>\n @for (output of card.definition.outputs; track output.fieldPath) {\n <div>\n <dt><code>{{ output.responsePath }}</code></dt>\n <dd><span aria-hidden=\"true\">\\u2192</span> <code>{{ output.fieldPath }}</code></dd>\n </div>\n }\n </dl>\n </section>\n </div>\n\n <footer class=\"determination-card__footer\">\n <span>\n {{ text('scope', 'Opera\\u00e7\\u00e3o do schema') }}:\n <code>{{ card.definition.scope.schemaOperationId }}</code>\n </span>\n <span>\n {{ text('provenance', 'Proveni\\u00eancia') }}:\n <code>{{ card.definition.provenance.kind }}:{{ card.definition.provenance.source }}@{{ card.definition.provenance.version || '\\u2014' }}</code>\n </span>\n </footer>\n\n @if (card.latestEvent; as event) {\n <aside class=\"determination-card__runtime\" [attr.data-status]=\"event.status\" aria-live=\"polite\">\n <strong>{{ text('latestExecution', '\\u00daltima execu\\u00e7\\u00e3o') }}</strong>\n <span>{{ statusLabel(event.status) }}</span>\n <span>{{ event.durationMs }} ms</span>\n @if (reasonLabel(event.reason); as reason) {\n <span>{{ reason }}</span>\n }\n <span>\n {{ text('correlation', 'Correla\\u00e7\\u00e3o') }}:\n <code>{{ event.correlationId }}</code>\n </span>\n </aside>\n }\n </article>\n }\n </div>\n\n <aside class=\"determination-diagnostics__governance\">\n <strong>{{ text('governanceTitle', 'Fronteira de governan\\u00e7a') }}</strong>\n <span>\n {{ text('governanceDescription', 'Esta tela explica e diagnostica a proje\\u00e7\\u00e3o. Altera\\u00e7\\u00f5es da decis\\u00e3o devem ser encaminhadas ao fluxo governado do Praxis Config; o submit final continua sob autoridade do backend.') }}\n </span>\n </aside>\n</section>\n", styles: [":host{display:block}.determination-diagnostics{display:grid;gap:1rem;color:var(--mat-sys-on-surface, #1b1b1f)}.determination-diagnostics__header,.determination-card__header,.determination-card__footer,.determination-card__runtime,.determination-diagnostics__governance{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.determination-diagnostics__header h2,.determination-card__header h3,.determination-card__bindings h4{margin:0}.determination-diagnostics__header p,.determination-card__header p{margin:.25rem 0 0;color:var(--mat-sys-on-surface-variant, #46464f)}.determination-diagnostics__eyebrow{display:block;margin-bottom:.25rem;color:var(--mat-sys-primary, #4051b5);font-size:.75rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.determination-diagnostics__count,.determination-card__badges span{border-radius:999px;background:var(--mat-sys-secondary-container, #e1e2ec);color:var(--mat-sys-on-secondary-container, #1d1f2a);padding:.3rem .65rem;font-size:.75rem;font-weight:700;white-space:nowrap}.determination-diagnostics__warning,.determination-diagnostics__empty,.determination-diagnostics__governance{margin:0;border-radius:.75rem;padding:.85rem 1rem}.determination-diagnostics__warning{border:1px solid var(--mat-sys-error, #ba1a1a);color:var(--mat-sys-error, #ba1a1a)}.determination-diagnostics__empty{display:grid;gap:.25rem;border:1px dashed var(--mat-sys-outline, #777680);color:var(--mat-sys-on-surface-variant, #46464f)}.determination-diagnostics__cards{display:grid;gap:1rem}.determination-card{display:grid;gap:1rem;border:1px solid var(--mat-sys-outline-variant, #c7c5d0);border-radius:1rem;background:var(--mat-sys-surface-container-low, #f6f3fb);padding:1rem}.determination-card__badges{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.35rem}.determination-card__flow{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:.75rem}.determination-card__flow>div{display:grid;gap:.35rem;min-width:0;border-radius:.75rem;background:var(--mat-sys-surface-container, #eeebf2);padding:.75rem}.determination-card__flow>div>span{color:var(--mat-sys-on-surface-variant, #46464f);font-size:.75rem}.determination-card__arrow{color:var(--mat-sys-primary, #4051b5);font-size:1.35rem}.determination-card__bindings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.determination-card__bindings section{min-width:0}.determination-card__bindings dl{display:grid;gap:.35rem;margin:.5rem 0 0}.determination-card__bindings dl>div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.5rem}.determination-card__bindings dt,.determination-card__bindings dd{min-width:0;margin:0}code{overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.82em}.determination-card__footer{flex-wrap:wrap;padding-top:.75rem;border-top:1px solid var(--mat-sys-outline-variant, #c7c5d0);color:var(--mat-sys-on-surface-variant, #46464f);font-size:.8rem}.determination-card__runtime{justify-content:flex-start;flex-wrap:wrap;border-radius:.75rem;background:var(--mat-sys-tertiary-container, #ffdad6);padding:.7rem .85rem;font-size:.82rem}.determination-card__runtime[data-status=success]{background:var(--mat-sys-secondary-container, #d7e8d4)}.determination-card__runtime[data-status=pending]{background:var(--mat-sys-primary-container, #dce1ff)}.determination-diagnostics__governance{justify-content:flex-start;background:var(--mat-sys-surface-container, #eeebf2)}@media(max-width:760px){.determination-diagnostics__header,.determination-card__header,.determination-diagnostics__governance{flex-direction:column}.determination-card__flow{grid-template-columns:1fr}.determination-card__arrow{transform:rotate(90deg);justify-self:center}.determination-card__bindings{grid-template-columns:1fr}.determination-card__badges{justify-content:flex-start}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10910
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: ReactiveDeterminationDiagnosticsComponent, isStandalone: true, selector: "praxis-reactive-determination-diagnostics", inputs: { schema: { classPropertyName: "schema", publicName: "schema", isSignal: true, isRequired: false, transformFunction: null }, executionEvents: { classPropertyName: "executionEvents", publicName: "executionEvents", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section\n class=\"determination-diagnostics\"\n data-praxis-readonly-materialization=\"reactive-determinations\"\n [attr.aria-label]=\"text('ariaLabel', 'Diagn\\u00f3sticos de determina\\u00e7\\u00f5es reativas')\"\n>\n <header class=\"determination-diagnostics__header\">\n <div>\n <span class=\"determination-diagnostics__eyebrow\">\n {{ text('eyebrow', 'Evid\\u00eancia can\\u00f4nica somente leitura') }}\n </span>\n <h2>{{ text('title', 'Determina\\u00e7\\u00f5es reativas') }}</h2>\n <p>\n {{ text('description', 'Bindings estruturais publicados pelo backend para esta opera\\u00e7\\u00e3o de formul\\u00e1rio.') }}\n </p>\n </div>\n <span class=\"determination-diagnostics__count\">\n {{ text('count', '{{count}} determina\\u00e7\\u00e3o(\\u00f5es)', { count: cards().length }) }}\n </span>\n </header>\n\n @if (rejectedEntryCount() > 0) {\n <p class=\"determination-diagnostics__warning\" role=\"status\">\n {{ text('invalidProjection', '{{count}} entrada(s) foram rejeitadas pela normaliza\\u00e7\\u00e3o can\\u00f4nica.', { count: rejectedEntryCount() }) }}\n </p>\n }\n\n @if (!cards().length) {\n <div class=\"determination-diagnostics__empty\">\n @if (projectionPresent()) {\n <strong>{{ text('emptyInvalidTitle', 'Nenhuma determina\\u00e7\\u00e3o v\\u00e1lida') }}</strong>\n <span>{{ text('emptyInvalidDescription', 'Revise a publica\\u00e7\\u00e3o can\\u00f4nica no backend; este editor n\\u00e3o corrige o contrato localmente.') }}</span>\n } @else {\n <strong>{{ text('emptyTitle', 'Sem determina\\u00e7\\u00f5es para esta opera\\u00e7\\u00e3o') }}</strong>\n <span>{{ text('emptyDescription', 'O schema filtrado n\\u00e3o publicou x-ui.reactiveDeterminations.') }}</span>\n }\n </div>\n }\n\n <div class=\"determination-diagnostics__cards\">\n @for (card of cards(); track card.definition.id) {\n <article class=\"determination-card\">\n <header class=\"determination-card__header\">\n <div>\n <h3>{{ card.definition.id }}</h3>\n <p>\n {{ text('operation', 'Capability') }}\n <code>{{ card.definition.capability.operationId }}</code>\n </p>\n </div>\n <div\n class=\"determination-card__badges\"\n [attr.aria-label]=\"text('scopeBadges', 'Escopo da determina\\u00e7\\u00e3o')\"\n >\n <span>{{ formModeLabel(card.definition.scope.formMode) }}</span>\n <span>{{ card.definition.trigger.mode }}</span>\n <span>{{ card.definition.capability.method }}</span>\n </div>\n </header>\n\n <div class=\"determination-card__flow\" [attr.aria-label]=\"text('flow', 'Fluxo estrutural')\">\n <div>\n <span>{{ text('sources', 'Origens observadas') }}</span>\n @for (source of card.definition.trigger.sourcePaths; track source) {\n <code>{{ source }}</code>\n }\n </div>\n <span class=\"determination-card__arrow\" aria-hidden=\"true\">\u2192</span>\n <div>\n <span>{{ text('capability', 'Capability resolvida') }}</span>\n <strong>{{ card.definition.capability.operationId }}</strong>\n </div>\n <span class=\"determination-card__arrow\" aria-hidden=\"true\">\u2192</span>\n <div>\n <span>{{ text('targets', 'Campos determinados') }}</span>\n @for (output of card.definition.outputs; track output.fieldPath) {\n <code>{{ output.fieldPath }}</code>\n }\n </div>\n </div>\n\n <div class=\"determination-card__bindings\">\n <section>\n <h4>{{ text('inputBindings', 'Bindings de entrada') }}</h4>\n <dl>\n @for (input of card.definition.inputs; track input.requestPath) {\n <div>\n <dt><code>{{ input.fieldPath }}</code></dt>\n <dd><span aria-hidden=\"true\">\u2192</span> <code>{{ input.requestPath }}</code></dd>\n </div>\n }\n </dl>\n </section>\n <section>\n <h4>{{ text('outputBindings', 'Bindings de sa\\u00edda') }}</h4>\n <dl>\n @for (output of card.definition.outputs; track output.fieldPath) {\n <div>\n <dt><code>{{ output.responsePath }}</code></dt>\n <dd><span aria-hidden=\"true\">\u2192</span> <code>{{ output.fieldPath }}</code></dd>\n </div>\n }\n </dl>\n </section>\n </div>\n\n <footer class=\"determination-card__footer\">\n <span>\n {{ text('scope', 'Opera\\u00e7\\u00e3o do schema') }}:\n <code>{{ card.definition.scope.schemaOperationId }}</code>\n </span>\n <span>\n {{ text('provenance', 'Proveni\\u00eancia') }}:\n <code>{{ card.definition.provenance.kind }}:{{ card.definition.provenance.source }}@{{ card.definition.provenance.version || '\\u2014' }}</code>\n </span>\n </footer>\n\n @if (card.latestEvent; as event) {\n <aside class=\"determination-card__runtime\" [attr.data-status]=\"event.status\" aria-live=\"polite\">\n <strong>{{ text('latestExecution', '\\u00daltima execu\\u00e7\\u00e3o') }}</strong>\n <span>{{ statusLabel(event.status) }}</span>\n <span>{{ event.durationMs }} ms</span>\n @if (reasonLabel(event.reason); as reason) {\n <span>{{ reason }}</span>\n }\n <span>\n {{ text('correlation', 'Correla\\u00e7\\u00e3o') }}:\n <code>{{ event.correlationId }}</code>\n </span>\n </aside>\n }\n </article>\n }\n </div>\n\n <aside class=\"determination-diagnostics__governance\">\n <strong>{{ text('governanceTitle', 'Fronteira de governan\\u00e7a') }}</strong>\n <span>\n {{ text('governanceDescription', 'Esta tela explica e diagnostica a proje\\u00e7\\u00e3o. Altera\\u00e7\\u00f5es da decis\\u00e3o devem ser encaminhadas ao fluxo governado do Praxis Config; o submit final continua sob autoridade do backend.') }}\n </span>\n </aside>\n</section>\n", styles: [":host{display:block;min-width:0;container-type:inline-size}.determination-diagnostics{display:grid;gap:1rem;color:var(--mat-sys-on-surface, #1b1b1f)}.determination-diagnostics__header,.determination-card__header,.determination-card__footer,.determination-card__runtime,.determination-diagnostics__governance{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.determination-diagnostics__header h2,.determination-card__header h3,.determination-card__bindings h4{margin:0}.determination-card__header>div:first-child,.determination-card__header h3,.determination-card__header p,.determination-card__header code,.determination-card__flow strong{min-width:0;overflow-wrap:anywhere}.determination-diagnostics__header p,.determination-card__header p{margin:.25rem 0 0;color:var(--mat-sys-on-surface-variant, #46464f)}.determination-diagnostics__eyebrow{display:block;margin-bottom:.25rem;color:var(--mat-sys-primary, #4051b5);font-size:.75rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.determination-diagnostics__count,.determination-card__badges span{border-radius:999px;background:var(--mat-sys-secondary-container, #e1e2ec);color:var(--mat-sys-on-secondary-container, #1d1f2a);padding:.3rem .65rem;font-size:.75rem;font-weight:700;white-space:nowrap}.determination-diagnostics__warning,.determination-diagnostics__empty,.determination-diagnostics__governance{margin:0;border-radius:.75rem;padding:.85rem 1rem}.determination-diagnostics__warning{border:1px solid var(--mat-sys-error, #ba1a1a);color:var(--mat-sys-error, #ba1a1a)}.determination-diagnostics__empty{display:grid;gap:.25rem;border:1px dashed var(--mat-sys-outline, #777680);color:var(--mat-sys-on-surface-variant, #46464f)}.determination-diagnostics__cards{display:grid;gap:1rem}.determination-card{display:grid;gap:1rem;border:1px solid var(--mat-sys-outline-variant, #c7c5d0);border-radius:1rem;background:var(--mat-sys-surface-container-low, #f6f3fb);padding:1rem}.determination-card__badges{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.35rem}.determination-card__flow{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:.75rem}.determination-card__flow>div{display:grid;gap:.35rem;min-width:0;border-radius:.75rem;background:var(--mat-sys-surface-container, #eeebf2);padding:.75rem}.determination-card__flow>div>span{color:var(--mat-sys-on-surface-variant, #46464f);font-size:.75rem}.determination-card__flow strong,.determination-card__flow code{line-height:1.35}.determination-card__arrow{color:var(--mat-sys-primary, #4051b5);font-size:1.35rem}.determination-card__bindings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.determination-card__bindings section{min-width:0}.determination-card__bindings dl{display:grid;gap:.35rem;margin:.5rem 0 0}.determination-card__bindings dl>div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.5rem}.determination-card__bindings dt,.determination-card__bindings dd{min-width:0;margin:0}.determination-card__bindings dd{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.35rem}code{overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.82em}.determination-card__footer{flex-wrap:wrap;padding-top:.75rem;border-top:1px solid var(--mat-sys-outline-variant, #c7c5d0);color:var(--mat-sys-on-surface-variant, #46464f);font-size:.8rem}.determination-card__runtime{justify-content:flex-start;flex-wrap:wrap;border-radius:.75rem;background:var(--mat-sys-tertiary-container, #ffdad6);padding:.7rem .85rem;font-size:.82rem}.determination-card__runtime[data-status=success]{background:var(--mat-sys-secondary-container, #d7e8d4)}.determination-card__runtime[data-status=pending]{background:var(--mat-sys-primary-container, #dce1ff)}.determination-diagnostics__governance{justify-content:flex-start;background:var(--mat-sys-surface-container, #eeebf2)}@media(max-width:760px){.determination-diagnostics__header,.determination-card__header,.determination-diagnostics__governance{flex-direction:column}.determination-card__flow{grid-template-columns:1fr}.determination-card__arrow{transform:rotate(90deg);justify-self:center}.determination-card__bindings{grid-template-columns:1fr}.determination-card__badges{justify-content:flex-start}}@container (max-width: 42rem){.determination-card__header,.determination-card__footer,.determination-card__runtime,.determination-diagnostics__governance{flex-direction:column}.determination-card__flow{grid-template-columns:1fr}.determination-card__arrow{transform:rotate(90deg);justify-self:center}.determination-card__bindings{grid-template-columns:1fr}.determination-card__badges{justify-content:flex-start}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10911
10911
|
}
|
|
10912
10912
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ReactiveDeterminationDiagnosticsComponent, decorators: [{
|
|
10913
10913
|
type: Component,
|
|
10914
|
-
args: [{ selector: 'praxis-reactive-determination-diagnostics', changeDetection: ChangeDetectionStrategy.OnPush, template: "<section\n class=\"determination-diagnostics\"\n data-praxis-readonly-materialization=\"reactive-determinations\"\n [attr.aria-label]=\"text('ariaLabel', 'Diagn\\u00f3sticos de determina\\u00e7\\u00f5es reativas')\"\n>\n <header class=\"determination-diagnostics__header\">\n <div>\n <span class=\"determination-diagnostics__eyebrow\">\n {{ text('eyebrow', 'Evid\\u00eancia can\\u00f4nica somente leitura') }}\n </span>\n <h2>{{ text('title', 'Determina\\u00e7\\u00f5es reativas') }}</h2>\n <p>\n {{ text('description', 'Bindings estruturais publicados pelo backend para esta opera\\u00e7\\u00e3o de formul\\u00e1rio.') }}\n </p>\n </div>\n <span class=\"determination-diagnostics__count\">\n {{ text('count', '{{count}} determina\\u00e7\\u00e3o(\\u00f5es)', { count: cards().length }) }}\n </span>\n </header>\n\n @if (rejectedEntryCount() > 0) {\n <p class=\"determination-diagnostics__warning\" role=\"status\">\n {{ text('invalidProjection', '{{count}} entrada(s) foram rejeitadas pela normaliza\\u00e7\\u00e3o can\\u00f4nica.', { count: rejectedEntryCount() }) }}\n </p>\n }\n\n @if (!cards().length) {\n <div class=\"determination-diagnostics__empty\">\n @if (projectionPresent()) {\n <strong>{{ text('emptyInvalidTitle', 'Nenhuma determina\\u00e7\\u00e3o v\\u00e1lida') }}</strong>\n <span>{{ text('emptyInvalidDescription', 'Revise a publica\\u00e7\\u00e3o can\\u00f4nica no backend; este editor n\\u00e3o corrige o contrato localmente.') }}</span>\n } @else {\n <strong>{{ text('emptyTitle', 'Sem determina\\u00e7\\u00f5es para esta opera\\u00e7\\u00e3o') }}</strong>\n <span>{{ text('emptyDescription', 'O schema filtrado n\\u00e3o publicou x-ui.reactiveDeterminations.') }}</span>\n }\n </div>\n }\n\n <div class=\"determination-diagnostics__cards\">\n @for (card of cards(); track card.definition.id) {\n <article class=\"determination-card\">\n <header class=\"determination-card__header\">\n <div>\n <h3>{{ card.definition.id }}</h3>\n <p>\n {{ text('operation', 'Capability') }}\n <code>{{ card.definition.capability.operationId }}</code>\n </p>\n </div>\n <div\n class=\"determination-card__badges\"\n [attr.aria-label]=\"text('scopeBadges', 'Escopo da determina\\u00e7\\u00e3o')\"\n >\n <span>{{ formModeLabel(card.definition.scope.formMode) }}</span>\n <span>{{ card.definition.trigger.mode }}</span>\n <span>{{ card.definition.capability.method }}</span>\n </div>\n </header>\n\n <div class=\"determination-card__flow\" [attr.aria-label]=\"text('flow', 'Fluxo estrutural')\">\n <div>\n <span>{{ text('sources', 'Origens observadas') }}</span>\n @for (source of card.definition.trigger.sourcePaths; track source) {\n <code>{{ source }}</code>\n }\n </div>\n <span class=\"determination-card__arrow\" aria-hidden=\"true\">\\u2192</span>\n <div>\n <span>{{ text('capability', 'Capability resolvida') }}</span>\n <strong>{{ card.definition.capability.operationId }}</strong>\n </div>\n <span class=\"determination-card__arrow\" aria-hidden=\"true\">\\u2192</span>\n <div>\n <span>{{ text('targets', 'Campos determinados') }}</span>\n @for (output of card.definition.outputs; track output.fieldPath) {\n <code>{{ output.fieldPath }}</code>\n }\n </div>\n </div>\n\n <div class=\"determination-card__bindings\">\n <section>\n <h4>{{ text('inputBindings', 'Bindings de entrada') }}</h4>\n <dl>\n @for (input of card.definition.inputs; track input.requestPath) {\n <div>\n <dt><code>{{ input.fieldPath }}</code></dt>\n <dd><span aria-hidden=\"true\">\\u2192</span> <code>{{ input.requestPath }}</code></dd>\n </div>\n }\n </dl>\n </section>\n <section>\n <h4>{{ text('outputBindings', 'Bindings de sa\\u00edda') }}</h4>\n <dl>\n @for (output of card.definition.outputs; track output.fieldPath) {\n <div>\n <dt><code>{{ output.responsePath }}</code></dt>\n <dd><span aria-hidden=\"true\">\\u2192</span> <code>{{ output.fieldPath }}</code></dd>\n </div>\n }\n </dl>\n </section>\n </div>\n\n <footer class=\"determination-card__footer\">\n <span>\n {{ text('scope', 'Opera\\u00e7\\u00e3o do schema') }}:\n <code>{{ card.definition.scope.schemaOperationId }}</code>\n </span>\n <span>\n {{ text('provenance', 'Proveni\\u00eancia') }}:\n <code>{{ card.definition.provenance.kind }}:{{ card.definition.provenance.source }}@{{ card.definition.provenance.version || '\\u2014' }}</code>\n </span>\n </footer>\n\n @if (card.latestEvent; as event) {\n <aside class=\"determination-card__runtime\" [attr.data-status]=\"event.status\" aria-live=\"polite\">\n <strong>{{ text('latestExecution', '\\u00daltima execu\\u00e7\\u00e3o') }}</strong>\n <span>{{ statusLabel(event.status) }}</span>\n <span>{{ event.durationMs }} ms</span>\n @if (reasonLabel(event.reason); as reason) {\n <span>{{ reason }}</span>\n }\n <span>\n {{ text('correlation', 'Correla\\u00e7\\u00e3o') }}:\n <code>{{ event.correlationId }}</code>\n </span>\n </aside>\n }\n </article>\n }\n </div>\n\n <aside class=\"determination-diagnostics__governance\">\n <strong>{{ text('governanceTitle', 'Fronteira de governan\\u00e7a') }}</strong>\n <span>\n {{ text('governanceDescription', 'Esta tela explica e diagnostica a proje\\u00e7\\u00e3o. Altera\\u00e7\\u00f5es da decis\\u00e3o devem ser encaminhadas ao fluxo governado do Praxis Config; o submit final continua sob autoridade do backend.') }}\n </span>\n </aside>\n</section>\n", styles: [":host{display:block}.determination-diagnostics{display:grid;gap:1rem;color:var(--mat-sys-on-surface, #1b1b1f)}.determination-diagnostics__header,.determination-card__header,.determination-card__footer,.determination-card__runtime,.determination-diagnostics__governance{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.determination-diagnostics__header h2,.determination-card__header h3,.determination-card__bindings h4{margin:0}.determination-diagnostics__header p,.determination-card__header p{margin:.25rem 0 0;color:var(--mat-sys-on-surface-variant, #46464f)}.determination-diagnostics__eyebrow{display:block;margin-bottom:.25rem;color:var(--mat-sys-primary, #4051b5);font-size:.75rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.determination-diagnostics__count,.determination-card__badges span{border-radius:999px;background:var(--mat-sys-secondary-container, #e1e2ec);color:var(--mat-sys-on-secondary-container, #1d1f2a);padding:.3rem .65rem;font-size:.75rem;font-weight:700;white-space:nowrap}.determination-diagnostics__warning,.determination-diagnostics__empty,.determination-diagnostics__governance{margin:0;border-radius:.75rem;padding:.85rem 1rem}.determination-diagnostics__warning{border:1px solid var(--mat-sys-error, #ba1a1a);color:var(--mat-sys-error, #ba1a1a)}.determination-diagnostics__empty{display:grid;gap:.25rem;border:1px dashed var(--mat-sys-outline, #777680);color:var(--mat-sys-on-surface-variant, #46464f)}.determination-diagnostics__cards{display:grid;gap:1rem}.determination-card{display:grid;gap:1rem;border:1px solid var(--mat-sys-outline-variant, #c7c5d0);border-radius:1rem;background:var(--mat-sys-surface-container-low, #f6f3fb);padding:1rem}.determination-card__badges{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.35rem}.determination-card__flow{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:.75rem}.determination-card__flow>div{display:grid;gap:.35rem;min-width:0;border-radius:.75rem;background:var(--mat-sys-surface-container, #eeebf2);padding:.75rem}.determination-card__flow>div>span{color:var(--mat-sys-on-surface-variant, #46464f);font-size:.75rem}.determination-card__arrow{color:var(--mat-sys-primary, #4051b5);font-size:1.35rem}.determination-card__bindings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.determination-card__bindings section{min-width:0}.determination-card__bindings dl{display:grid;gap:.35rem;margin:.5rem 0 0}.determination-card__bindings dl>div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.5rem}.determination-card__bindings dt,.determination-card__bindings dd{min-width:0;margin:0}code{overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.82em}.determination-card__footer{flex-wrap:wrap;padding-top:.75rem;border-top:1px solid var(--mat-sys-outline-variant, #c7c5d0);color:var(--mat-sys-on-surface-variant, #46464f);font-size:.8rem}.determination-card__runtime{justify-content:flex-start;flex-wrap:wrap;border-radius:.75rem;background:var(--mat-sys-tertiary-container, #ffdad6);padding:.7rem .85rem;font-size:.82rem}.determination-card__runtime[data-status=success]{background:var(--mat-sys-secondary-container, #d7e8d4)}.determination-card__runtime[data-status=pending]{background:var(--mat-sys-primary-container, #dce1ff)}.determination-diagnostics__governance{justify-content:flex-start;background:var(--mat-sys-surface-container, #eeebf2)}@media(max-width:760px){.determination-diagnostics__header,.determination-card__header,.determination-diagnostics__governance{flex-direction:column}.determination-card__flow{grid-template-columns:1fr}.determination-card__arrow{transform:rotate(90deg);justify-self:center}.determination-card__bindings{grid-template-columns:1fr}.determination-card__badges{justify-content:flex-start}}\n"] }]
|
|
10914
|
+
args: [{ selector: 'praxis-reactive-determination-diagnostics', changeDetection: ChangeDetectionStrategy.OnPush, template: "<section\n class=\"determination-diagnostics\"\n data-praxis-readonly-materialization=\"reactive-determinations\"\n [attr.aria-label]=\"text('ariaLabel', 'Diagn\\u00f3sticos de determina\\u00e7\\u00f5es reativas')\"\n>\n <header class=\"determination-diagnostics__header\">\n <div>\n <span class=\"determination-diagnostics__eyebrow\">\n {{ text('eyebrow', 'Evid\\u00eancia can\\u00f4nica somente leitura') }}\n </span>\n <h2>{{ text('title', 'Determina\\u00e7\\u00f5es reativas') }}</h2>\n <p>\n {{ text('description', 'Bindings estruturais publicados pelo backend para esta opera\\u00e7\\u00e3o de formul\\u00e1rio.') }}\n </p>\n </div>\n <span class=\"determination-diagnostics__count\">\n {{ text('count', '{{count}} determina\\u00e7\\u00e3o(\\u00f5es)', { count: cards().length }) }}\n </span>\n </header>\n\n @if (rejectedEntryCount() > 0) {\n <p class=\"determination-diagnostics__warning\" role=\"status\">\n {{ text('invalidProjection', '{{count}} entrada(s) foram rejeitadas pela normaliza\\u00e7\\u00e3o can\\u00f4nica.', { count: rejectedEntryCount() }) }}\n </p>\n }\n\n @if (!cards().length) {\n <div class=\"determination-diagnostics__empty\">\n @if (projectionPresent()) {\n <strong>{{ text('emptyInvalidTitle', 'Nenhuma determina\\u00e7\\u00e3o v\\u00e1lida') }}</strong>\n <span>{{ text('emptyInvalidDescription', 'Revise a publica\\u00e7\\u00e3o can\\u00f4nica no backend; este editor n\\u00e3o corrige o contrato localmente.') }}</span>\n } @else {\n <strong>{{ text('emptyTitle', 'Sem determina\\u00e7\\u00f5es para esta opera\\u00e7\\u00e3o') }}</strong>\n <span>{{ text('emptyDescription', 'O schema filtrado n\\u00e3o publicou x-ui.reactiveDeterminations.') }}</span>\n }\n </div>\n }\n\n <div class=\"determination-diagnostics__cards\">\n @for (card of cards(); track card.definition.id) {\n <article class=\"determination-card\">\n <header class=\"determination-card__header\">\n <div>\n <h3>{{ card.definition.id }}</h3>\n <p>\n {{ text('operation', 'Capability') }}\n <code>{{ card.definition.capability.operationId }}</code>\n </p>\n </div>\n <div\n class=\"determination-card__badges\"\n [attr.aria-label]=\"text('scopeBadges', 'Escopo da determina\\u00e7\\u00e3o')\"\n >\n <span>{{ formModeLabel(card.definition.scope.formMode) }}</span>\n <span>{{ card.definition.trigger.mode }}</span>\n <span>{{ card.definition.capability.method }}</span>\n </div>\n </header>\n\n <div class=\"determination-card__flow\" [attr.aria-label]=\"text('flow', 'Fluxo estrutural')\">\n <div>\n <span>{{ text('sources', 'Origens observadas') }}</span>\n @for (source of card.definition.trigger.sourcePaths; track source) {\n <code>{{ source }}</code>\n }\n </div>\n <span class=\"determination-card__arrow\" aria-hidden=\"true\">\u2192</span>\n <div>\n <span>{{ text('capability', 'Capability resolvida') }}</span>\n <strong>{{ card.definition.capability.operationId }}</strong>\n </div>\n <span class=\"determination-card__arrow\" aria-hidden=\"true\">\u2192</span>\n <div>\n <span>{{ text('targets', 'Campos determinados') }}</span>\n @for (output of card.definition.outputs; track output.fieldPath) {\n <code>{{ output.fieldPath }}</code>\n }\n </div>\n </div>\n\n <div class=\"determination-card__bindings\">\n <section>\n <h4>{{ text('inputBindings', 'Bindings de entrada') }}</h4>\n <dl>\n @for (input of card.definition.inputs; track input.requestPath) {\n <div>\n <dt><code>{{ input.fieldPath }}</code></dt>\n <dd><span aria-hidden=\"true\">\u2192</span> <code>{{ input.requestPath }}</code></dd>\n </div>\n }\n </dl>\n </section>\n <section>\n <h4>{{ text('outputBindings', 'Bindings de sa\\u00edda') }}</h4>\n <dl>\n @for (output of card.definition.outputs; track output.fieldPath) {\n <div>\n <dt><code>{{ output.responsePath }}</code></dt>\n <dd><span aria-hidden=\"true\">\u2192</span> <code>{{ output.fieldPath }}</code></dd>\n </div>\n }\n </dl>\n </section>\n </div>\n\n <footer class=\"determination-card__footer\">\n <span>\n {{ text('scope', 'Opera\\u00e7\\u00e3o do schema') }}:\n <code>{{ card.definition.scope.schemaOperationId }}</code>\n </span>\n <span>\n {{ text('provenance', 'Proveni\\u00eancia') }}:\n <code>{{ card.definition.provenance.kind }}:{{ card.definition.provenance.source }}@{{ card.definition.provenance.version || '\\u2014' }}</code>\n </span>\n </footer>\n\n @if (card.latestEvent; as event) {\n <aside class=\"determination-card__runtime\" [attr.data-status]=\"event.status\" aria-live=\"polite\">\n <strong>{{ text('latestExecution', '\\u00daltima execu\\u00e7\\u00e3o') }}</strong>\n <span>{{ statusLabel(event.status) }}</span>\n <span>{{ event.durationMs }} ms</span>\n @if (reasonLabel(event.reason); as reason) {\n <span>{{ reason }}</span>\n }\n <span>\n {{ text('correlation', 'Correla\\u00e7\\u00e3o') }}:\n <code>{{ event.correlationId }}</code>\n </span>\n </aside>\n }\n </article>\n }\n </div>\n\n <aside class=\"determination-diagnostics__governance\">\n <strong>{{ text('governanceTitle', 'Fronteira de governan\\u00e7a') }}</strong>\n <span>\n {{ text('governanceDescription', 'Esta tela explica e diagnostica a proje\\u00e7\\u00e3o. Altera\\u00e7\\u00f5es da decis\\u00e3o devem ser encaminhadas ao fluxo governado do Praxis Config; o submit final continua sob autoridade do backend.') }}\n </span>\n </aside>\n</section>\n", styles: [":host{display:block;min-width:0;container-type:inline-size}.determination-diagnostics{display:grid;gap:1rem;color:var(--mat-sys-on-surface, #1b1b1f)}.determination-diagnostics__header,.determination-card__header,.determination-card__footer,.determination-card__runtime,.determination-diagnostics__governance{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.determination-diagnostics__header h2,.determination-card__header h3,.determination-card__bindings h4{margin:0}.determination-card__header>div:first-child,.determination-card__header h3,.determination-card__header p,.determination-card__header code,.determination-card__flow strong{min-width:0;overflow-wrap:anywhere}.determination-diagnostics__header p,.determination-card__header p{margin:.25rem 0 0;color:var(--mat-sys-on-surface-variant, #46464f)}.determination-diagnostics__eyebrow{display:block;margin-bottom:.25rem;color:var(--mat-sys-primary, #4051b5);font-size:.75rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.determination-diagnostics__count,.determination-card__badges span{border-radius:999px;background:var(--mat-sys-secondary-container, #e1e2ec);color:var(--mat-sys-on-secondary-container, #1d1f2a);padding:.3rem .65rem;font-size:.75rem;font-weight:700;white-space:nowrap}.determination-diagnostics__warning,.determination-diagnostics__empty,.determination-diagnostics__governance{margin:0;border-radius:.75rem;padding:.85rem 1rem}.determination-diagnostics__warning{border:1px solid var(--mat-sys-error, #ba1a1a);color:var(--mat-sys-error, #ba1a1a)}.determination-diagnostics__empty{display:grid;gap:.25rem;border:1px dashed var(--mat-sys-outline, #777680);color:var(--mat-sys-on-surface-variant, #46464f)}.determination-diagnostics__cards{display:grid;gap:1rem}.determination-card{display:grid;gap:1rem;border:1px solid var(--mat-sys-outline-variant, #c7c5d0);border-radius:1rem;background:var(--mat-sys-surface-container-low, #f6f3fb);padding:1rem}.determination-card__badges{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.35rem}.determination-card__flow{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:.75rem}.determination-card__flow>div{display:grid;gap:.35rem;min-width:0;border-radius:.75rem;background:var(--mat-sys-surface-container, #eeebf2);padding:.75rem}.determination-card__flow>div>span{color:var(--mat-sys-on-surface-variant, #46464f);font-size:.75rem}.determination-card__flow strong,.determination-card__flow code{line-height:1.35}.determination-card__arrow{color:var(--mat-sys-primary, #4051b5);font-size:1.35rem}.determination-card__bindings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.determination-card__bindings section{min-width:0}.determination-card__bindings dl{display:grid;gap:.35rem;margin:.5rem 0 0}.determination-card__bindings dl>div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.5rem}.determination-card__bindings dt,.determination-card__bindings dd{min-width:0;margin:0}.determination-card__bindings dd{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.35rem}code{overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.82em}.determination-card__footer{flex-wrap:wrap;padding-top:.75rem;border-top:1px solid var(--mat-sys-outline-variant, #c7c5d0);color:var(--mat-sys-on-surface-variant, #46464f);font-size:.8rem}.determination-card__runtime{justify-content:flex-start;flex-wrap:wrap;border-radius:.75rem;background:var(--mat-sys-tertiary-container, #ffdad6);padding:.7rem .85rem;font-size:.82rem}.determination-card__runtime[data-status=success]{background:var(--mat-sys-secondary-container, #d7e8d4)}.determination-card__runtime[data-status=pending]{background:var(--mat-sys-primary-container, #dce1ff)}.determination-diagnostics__governance{justify-content:flex-start;background:var(--mat-sys-surface-container, #eeebf2)}@media(max-width:760px){.determination-diagnostics__header,.determination-card__header,.determination-diagnostics__governance{flex-direction:column}.determination-card__flow{grid-template-columns:1fr}.determination-card__arrow{transform:rotate(90deg);justify-self:center}.determination-card__bindings{grid-template-columns:1fr}.determination-card__badges{justify-content:flex-start}}@container (max-width: 42rem){.determination-card__header,.determination-card__footer,.determination-card__runtime,.determination-diagnostics__governance{flex-direction:column}.determination-card__flow{grid-template-columns:1fr}.determination-card__arrow{transform:rotate(90deg);justify-self:center}.determination-card__bindings{grid-template-columns:1fr}.determination-card__badges{justify-content:flex-start}}\n"] }]
|
|
10915
10915
|
}], propDecorators: { schema: [{ type: i0.Input, args: [{ isSignal: true, alias: "schema", required: false }] }], executionEvents: [{ type: i0.Input, args: [{ isSignal: true, alias: "executionEvents", required: false }] }] } });
|
|
10916
10916
|
|
|
10917
10917
|
class CascadeRulesService {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/metadata-editor",
|
|
3
|
-
"version": "9.0.5-rc.
|
|
3
|
+
"version": "9.0.5-rc.25",
|
|
4
4
|
"description": "Metadata editor for Praxis UI fields and components with runtime integration.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
"@angular/cdk": "^21.0.0",
|
|
9
9
|
"@angular/forms": "^21.0.0",
|
|
10
10
|
"@angular/material": "^21.0.0",
|
|
11
|
-
"@praxisui/ai": "^9.0.5-rc.
|
|
12
|
-
"@praxisui/core": "^9.0.5-rc.
|
|
13
|
-
"@praxisui/dynamic-fields": "^9.0.5-rc.
|
|
14
|
-
"@praxisui/settings-panel": "^9.0.5-rc.
|
|
11
|
+
"@praxisui/ai": "^9.0.5-rc.25",
|
|
12
|
+
"@praxisui/core": "^9.0.5-rc.25",
|
|
13
|
+
"@praxisui/dynamic-fields": "^9.0.5-rc.25",
|
|
14
|
+
"@praxisui/settings-panel": "^9.0.5-rc.25",
|
|
15
15
|
"rxjs": "~7.8.0"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|