@praxisui/table 10.0.0-rc.39 → 10.0.0-rc.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/component-registry.json +2 -2
- package/fesm2022/{praxisui-table-praxisui-table-C6NaFjJJ.mjs → praxisui-table-praxisui-table-vjpONc0b.mjs} +3 -3
- package/fesm2022/{praxisui-table-table-agentic-authoring-turn-flow-CB4ne1nl.mjs → praxisui-table-table-agentic-authoring-turn-flow-D0489HPn.mjs} +1 -1
- package/fesm2022/{praxisui-table-table-ai.adapter-DPC3MX0Y.mjs → praxisui-table-table-ai.adapter-2CXgwI8n.mjs} +1 -1
- package/fesm2022/praxisui-table.mjs +1 -1
- package/package.json +10 -10
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-10-
|
|
3
|
+
"generatedAt": "2026-10-26T18:09:20.136Z",
|
|
4
4
|
"packageName": "@praxisui/table",
|
|
5
|
-
"packageVersion": "10.0.0-rc.
|
|
5
|
+
"packageVersion": "10.0.0-rc.40",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 3,
|
|
@@ -1257,7 +1257,7 @@ class TableBulkSyncWorkflowComponent {
|
|
|
1257
1257
|
return this.text('error.generic');
|
|
1258
1258
|
}
|
|
1259
1259
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TableBulkSyncWorkflowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1260
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: TableBulkSyncWorkflowComponent, isStandalone: true, selector: "praxis-table-bulk-sync-workflow", inputs: { handle: { classPropertyName: "handle", publicName: "handle", isSignal: true, isRequired: true, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, ngImport: i0, template: "<section class=\"bulk-sync\" [attr.aria-label]=\"text('aria.workflow')\" data-testid=\"table-bulk-sync-workflow\">\n <header class=\"bulk-sync__header\">\n <div>\n <p class=\"bulk-sync__eyebrow\">{{ text('eyebrow') }}</p>\n <h2>{{ authorizationReady() ? text('title', { count: targetCount() }) : text('titleUnavailable') }}</h2>\n <p>{{ text('guidance') }}</p>\n </div>\n <button mat-button type=\"button\" (click)=\"close()\" [disabled]=\"!canClose()\"\n [attr.aria-label]=\"text('aria.close')\">\n {{ text('close') }}\n </button>\n </header>\n\n @if (!canClose()) { <p role=\"status\">{{ text('closePending') }}</p> }\n\n @if (authorizationReady()) {\n @if (snapshot(); as state) {\n @if (state.phase === 'idle' || state.phase === 'evaluating') {\n <div class=\"bulk-sync__editor\" (keydown.enter)=\"preventImplicitSubmit($event)\">\n <praxis-dynamic-form\n [formId]=\"'table-bulk-' + context().tableId\"\n [resourcePath]=\"context().resourcePath\"\n [schemaUrl]=\"context().contract.editableFields!.requestSchema.url\"\n [apiEndpointKey]=\"context().options?.endpointKey ?? null\"\n [apiUrlEntry]=\"context().options?.apiUrlEntry ?? null\"\n [config]=\"formConfig()\"\n configPersistenceStrategy=\"input-first\"\n mode=\"create\"\n [enableCustomization]=\"false\"\n [showAiAssistant]=\"false\"\n (formReady)=\"onFormReady($event)\"\n (payloadPreviewChange)=\"onPreview($event)\"\n ></praxis-dynamic-form>\n </div>\n <div class=\"bulk-sync__actions\">\n <button mat-flat-button type=\"button\" [disabled]=\"!canEvaluate()\" (click)=\"evaluate()\"\n data-testid=\"table-bulk-sync-evaluate\">{{ text('evaluate') }}</button>\n </div>\n }\n\n @if (!authorizedExecution() && authorizedProposal(); as proposal) {\n <section class=\"bulk-sync__review\" [attr.aria-label]=\"text('aria.proposal')\">\n <h3>{{ text(proposal.status === 'READY' ? 'proposal.ready' : 'proposal.blocked') }}</h3>\n <dl class=\"bulk-sync__totals\">\n <div><dt>{{ text('totals.targets') }}</dt><dd>{{ proposal.totals.targetCount }}</dd></div>\n <div><dt>{{ text('totals.executable') }}</dt><dd>{{ proposal.totals.executable }}</dd></div>\n <div><dt>{{ text('totals.blocked') }}</dt><dd>{{ proposal.totals.blocked }}</dd></div>\n </dl>\n <p>{{ text('expiry', { expiresAt: proposal.expiresAt }) }}</p>\n @if (requestedChanges().length) {\n <div class=\"bulk-sync__intent\" data-testid=\"table-bulk-sync-requested-intent\">\n <h4>{{ text('requested.title') }}</h4>\n <p>{{ text('requested.guidance') }}</p>\n <ul>\n @for (change of requestedChanges(); track change.field) {\n <li><strong>{{ change.field }}</strong> \u00B7 {{ text('requested.' + change.operator) }}\n @if (change.operator === 'SET') { <code>{{ requestedValue(change.value) }}</code> }\n </li>\n }\n </ul>\n </div>\n }\n @if (proposal.diagnostics.length) {\n <ul [attr.aria-label]=\"text('aria.diagnostics')\">\n @for (diagnostic of proposal.diagnostics; track $index) {\n <li>{{ diagnostic.message }}</li>\n }\n </ul>\n }\n @if (previewLoaded()) {\n <ul class=\"bulk-sync__items\" [attr.aria-label]=\"text('aria.preview')\">\n @for (item of proposalItems(); track $index) {\n <li><strong>{{ item.id }}</strong> \u00B7 {{ text('decision.' + item.decision) }}\n @for (diagnostic of item.diagnostics; track $index) { <span>{{ diagnostic.message }}</span> }\n </li>\n }\n </ul>\n @if (proposalNext(); as cursor) {\n <button mat-button type=\"button\" [disabled]=\"pageInFlight()\" (click)=\"loadProposalPage(cursor)\">{{ text('preview.more') }}</button>\n }\n } @else {\n <button mat-button type=\"button\" [disabled]=\"pageInFlight()\" (click)=\"loadProposalPage()\">{{ text('preview.load') }}</button>\n }\n @if (proposal.status === 'READY' && !state.execution) {\n <div class=\"bulk-sync__actions\">\n <button mat-flat-button type=\"button\" [disabled]=\"!canConfirm()\" (click)=\"confirm()\"\n data-testid=\"table-bulk-sync-confirm\">{{ text('confirm') }}</button>\n </div>\n }\n </section>\n }\n\n @if (authorizedExecution(); as execution) {\n <section class=\"bulk-sync__review\" [attr.aria-label]=\"text('aria.execution')\">\n <h3>{{ text('execution.heading', { status: text('status.' + execution.status) }) }}</h3>\n <dl class=\"bulk-sync__totals\">\n <div><dt>{{ text('totals.targets') }}</dt><dd>{{ execution.totals.targetCount }}</dd></div>\n <div><dt>{{ text('totals.pending') }}</dt><dd>{{ execution.totals.pending }}</dd></div>\n <div><dt>{{ text('totals.confirmed') }}</dt><dd>{{ execution.totals.confirmed }}</dd></div>\n <div><dt>{{ text('totals.unchanged') }}</dt><dd>{{ execution.totals.unchanged }}</dd></div>\n <div><dt>{{ text('totals.denied') }}</dt><dd>{{ execution.totals.denied }}</dd></div>\n <div><dt>{{ text('totals.invalid') }}</dt><dd>{{ execution.totals.invalid }}</dd></div>\n <div><dt>{{ text('totals.notProcessed') }}</dt><dd>{{ execution.totals.notProcessed }}</dd></div>\n <div><dt>{{ text('totals.conflict') }}</dt><dd>{{ execution.totals.conflict }}</dd></div>\n <div><dt>{{ text('totals.unknown') }}</dt><dd>{{ execution.totals.unknown }}</dd></div>\n </dl>\n @if (!terminal()) {\n <p>{{ text('execution.pending') }}</p>\n <button mat-button type=\"button\" [disabled]=\"working()\" (click)=\"refresh()\"\n data-testid=\"table-bulk-sync-refresh\">{{ text('execution.refresh') }}</button>\n } @else {\n <ul class=\"bulk-sync__items\" [attr.aria-label]=\"text('aria.results')\">\n @for (item of resultItems(); track $index) {\n <li><strong>{{ item.id }}</strong> \u00B7 {{ text('item.' + item.status) }}\n @for (diagnostic of item.diagnostics; track $index) { <span>{{ diagnostic.message }}</span> }\n </li>\n }\n </ul>\n @if (resultNext(); as cursor) {\n <button mat-button type=\"button\" [disabled]=\"pageInFlight()\" (click)=\"loadResultPage(cursor)\">{{ text('results.more') }}</button>\n } @else if (!resultsLoaded()) {\n <button mat-button type=\"button\" [disabled]=\"pageInFlight()\" (click)=\"loadResultPage()\">{{ text('results.load') }}</button>\n }\n }\n </section>\n }\n }\n } @else {\n <p role=\"status\">{{ text('reauthorizing') }}</p>\n @if (!working()) {\n <button mat-button type=\"button\" (click)=\"reauthorize()\">{{ text('reauthorize') }}</button>\n }\n }\n\n @if (message(); as error) {\n <p class=\"bulk-sync__error\" role=\"alert\">{{ error }}</p>\n }\n</section>\n", styles: [":host{display:block;min-width:0}.bulk-sync{margin-block:.75rem 1.25rem;padding:1rem;color:var(--mat-sys-on-surface, inherit);background:var(--mat-sys-surface-container-low, var(--p-table-bg, transparent));border:1px solid var(--p-table-border-color, currentColor);border-radius:var(--mat-sys-corner-medium, .75rem)}.bulk-sync__header{display:flex;justify-content:space-between;align-items:start;gap:1rem}.bulk-sync__header h2{margin:.15rem 0;font:var(--mat-sys-title-large, inherit)}.bulk-sync__header p{margin:.25rem 0}.bulk-sync__eyebrow{color:var(--mat-sys-primary, currentColor);font-weight:600}.bulk-sync__editor{max-width:44rem}.bulk-sync__review{margin-block-start:1rem}.bulk-sync__review h3{margin-block:0 .5rem}.bulk-sync__intent{margin-block:1rem;padding:.75rem;border:1px solid var(--p-table-border-color, currentColor);border-radius:.5rem}.bulk-sync__intent h4{margin:0 .35rem}.bulk-sync__intent p{margin:0 .5rem}.bulk-sync__intent li{overflow-wrap:anywhere}.bulk-sync__intent code{margin-inline-start:.4rem;white-space:pre-wrap}.bulk-sync__totals{display:flex;flex-wrap:wrap;gap:1.5rem;margin:.75rem 0}.bulk-sync__totals div{display:grid;gap:.1rem}.bulk-sync__totals dt{color:var(--mat-sys-on-surface-variant, inherit)}.bulk-sync__totals dd{margin:0;font-weight:700}.bulk-sync__items{max-height:16rem;overflow:auto;padding-inline-start:1.25rem}.bulk-sync__items li{padding-block:.4rem;overflow-wrap:anywhere}.bulk-sync__items span{display:block}.bulk-sync__actions{display:flex;justify-content:flex-end;margin-block-start:1rem}.bulk-sync__error{color:var(--mat-sys-error, currentColor);margin-block:.75rem 0}button:focus-visible{outline:2px solid var(--mat-sys-primary, currentColor);outline-offset:2px}@media(max-width:640px){.bulk-sync{padding:.75rem}.bulk-sync__header{flex-direction:column}.bulk-sync__actions{justify-content:stretch}.bulk-sync__actions button{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: PraxisDynamicForm, selector: "praxis-dynamic-form", inputs: ["resourcePath", "resourceId", "initialValue", "emptyState", "editorialContext", "mode", "config", "actions", "schemaSource", "schemaUrl", "readUrl", "submitUrl", "submitMethod", "submitIdempotencyKey", "submitCorrelationId", "submitResourceVersion", "submitResourceVersionTargetResourceKey", "submitResourceVersionTargetIdField", "responseSchemaUrl", "apiEndpointKey", "apiUrlEntry", "enableCustomization", "showAiAssistant", "formId", "componentInstanceId", "configPersistenceStrategy", "layout", "layoutMode", "formLayout", "generatedLayoutPreset", "layoutPolicy", "backConfig", "hooks", "removeEmptyContainersOnSave", "reactiveValidation", "reactiveValidationDebounceMs", "notifyIfOutdated", "snoozeMs", "autoOpenSettingsOnOutdated", "readonlyModeGlobal", "disabledModeGlobal", "presentationModeGlobal", "presentation", "presentationPreset", "sectionDefaultAppearance", "sectionDivider", "visibleGlobal", "fieldIconPolicy", "domainRules", "customEndpoints"], outputs: ["formSubmit", "formCancel", "formReset", "configChange", "configPatchChange", "formReady", "valueChange", "payloadPreviewChange", "syncCompleted", "initializationError", "loadingStateChange", "enableCustomizationChange", "customAction", "actionConfirmation", "schemaStatusChange", "fieldRenderError", "ruleDiagnosticsChange", "reactiveDeterminationExecuted", "reactiveDeterminationPendingChange", "tabChange", "tabSelected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1260
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: TableBulkSyncWorkflowComponent, isStandalone: true, selector: "praxis-table-bulk-sync-workflow", inputs: { handle: { classPropertyName: "handle", publicName: "handle", isSignal: true, isRequired: true, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, ngImport: i0, template: "<section class=\"bulk-sync\" [attr.aria-label]=\"text('aria.workflow')\" data-testid=\"table-bulk-sync-workflow\">\n <header class=\"bulk-sync__header\">\n <div>\n <p class=\"bulk-sync__eyebrow\">{{ text('eyebrow') }}</p>\n <h2>{{ authorizationReady() ? text('title', { count: targetCount() }) : text('titleUnavailable') }}</h2>\n <p>{{ text('guidance') }}</p>\n </div>\n <button mat-button type=\"button\" (click)=\"close()\" [disabled]=\"!canClose()\"\n [attr.aria-label]=\"text('aria.close')\">\n {{ text('close') }}\n </button>\n </header>\n\n @if (!canClose()) { <p role=\"status\">{{ text('closePending') }}</p> }\n\n @if (authorizationReady()) {\n @if (snapshot(); as state) {\n @if (state.phase === 'idle' || state.phase === 'evaluating') {\n <div class=\"bulk-sync__editor\" (keydown.enter)=\"preventImplicitSubmit($event)\">\n <praxis-dynamic-form\n [formId]=\"'table-bulk-' + context().tableId\"\n [resourcePath]=\"context().resourcePath\"\n [schemaUrl]=\"context().contract.editableFields!.requestSchema.url\"\n [apiEndpointKey]=\"context().options?.endpointKey ?? null\"\n [apiUrlEntry]=\"context().options?.apiUrlEntry ?? null\"\n [config]=\"formConfig()\"\n configPersistenceStrategy=\"input-first\"\n mode=\"create\"\n [enableCustomization]=\"false\"\n [showAiAssistant]=\"false\"\n (formReady)=\"onFormReady($event)\"\n (payloadPreviewChange)=\"onPreview($event)\"\n ></praxis-dynamic-form>\n </div>\n <div class=\"bulk-sync__actions\">\n <button mat-flat-button type=\"button\" [disabled]=\"!canEvaluate()\" (click)=\"evaluate()\"\n data-testid=\"table-bulk-sync-evaluate\">{{ text('evaluate') }}</button>\n </div>\n }\n\n @if (!authorizedExecution() && authorizedProposal(); as proposal) {\n <section class=\"bulk-sync__review\" [attr.aria-label]=\"text('aria.proposal')\">\n <h3>{{ text(proposal.status === 'READY' ? 'proposal.ready' : 'proposal.blocked') }}</h3>\n <dl class=\"bulk-sync__totals\">\n <div><dt>{{ text('totals.targets') }}</dt><dd>{{ proposal.totals.targetCount }}</dd></div>\n <div><dt>{{ text('totals.executable') }}</dt><dd>{{ proposal.totals.executable }}</dd></div>\n <div><dt>{{ text('totals.blocked') }}</dt><dd>{{ proposal.totals.blocked }}</dd></div>\n </dl>\n <p>{{ text('expiry', { expiresAt: proposal.expiresAt }) }}</p>\n @if (requestedChanges().length) {\n <div class=\"bulk-sync__intent\" data-testid=\"table-bulk-sync-requested-intent\">\n <h4>{{ text('requested.title') }}</h4>\n <p>{{ text('requested.guidance') }}</p>\n <ul>\n @for (change of requestedChanges(); track change.field) {\n <li><strong>{{ change.field }}</strong> \u00B7 {{ text('requested.' + change.operator) }}\n @if (change.operator === 'SET') { <code>{{ requestedValue(change.value) }}</code> }\n </li>\n }\n </ul>\n </div>\n }\n @if (proposal.diagnostics.length) {\n <ul [attr.aria-label]=\"text('aria.diagnostics')\">\n @for (diagnostic of proposal.diagnostics; track $index) {\n <li>{{ diagnostic.message }}</li>\n }\n </ul>\n }\n @if (previewLoaded()) {\n <ul class=\"bulk-sync__items\" [attr.aria-label]=\"text('aria.preview')\">\n @for (item of proposalItems(); track $index) {\n <li><strong>{{ item.id }}</strong> \u00B7 {{ text('decision.' + item.decision) }}\n @for (diagnostic of item.diagnostics; track $index) { <span>{{ diagnostic.message }}</span> }\n </li>\n }\n </ul>\n @if (proposalNext(); as cursor) {\n <button mat-button type=\"button\" [disabled]=\"pageInFlight()\" (click)=\"loadProposalPage(cursor)\">{{ text('preview.more') }}</button>\n }\n } @else {\n <button mat-button type=\"button\" [disabled]=\"pageInFlight()\" (click)=\"loadProposalPage()\">{{ text('preview.load') }}</button>\n }\n @if (proposal.status === 'READY' && !state.execution) {\n <div class=\"bulk-sync__actions\">\n <button mat-flat-button type=\"button\" [disabled]=\"!canConfirm()\" (click)=\"confirm()\"\n data-testid=\"table-bulk-sync-confirm\">{{ text('confirm') }}</button>\n </div>\n }\n </section>\n }\n\n @if (authorizedExecution(); as execution) {\n <section class=\"bulk-sync__review\" [attr.aria-label]=\"text('aria.execution')\">\n <h3>{{ text('execution.heading', { status: text('status.' + execution.status) }) }}</h3>\n <dl class=\"bulk-sync__totals\">\n <div><dt>{{ text('totals.targets') }}</dt><dd>{{ execution.totals.targetCount }}</dd></div>\n <div><dt>{{ text('totals.pending') }}</dt><dd>{{ execution.totals.pending }}</dd></div>\n <div><dt>{{ text('totals.confirmed') }}</dt><dd>{{ execution.totals.confirmed }}</dd></div>\n <div><dt>{{ text('totals.unchanged') }}</dt><dd>{{ execution.totals.unchanged }}</dd></div>\n <div><dt>{{ text('totals.denied') }}</dt><dd>{{ execution.totals.denied }}</dd></div>\n <div><dt>{{ text('totals.invalid') }}</dt><dd>{{ execution.totals.invalid }}</dd></div>\n <div><dt>{{ text('totals.notProcessed') }}</dt><dd>{{ execution.totals.notProcessed }}</dd></div>\n <div><dt>{{ text('totals.conflict') }}</dt><dd>{{ execution.totals.conflict }}</dd></div>\n <div><dt>{{ text('totals.unknown') }}</dt><dd>{{ execution.totals.unknown }}</dd></div>\n </dl>\n @if (!terminal()) {\n <p>{{ text('execution.pending') }}</p>\n <button mat-button type=\"button\" [disabled]=\"working()\" (click)=\"refresh()\"\n data-testid=\"table-bulk-sync-refresh\">{{ text('execution.refresh') }}</button>\n } @else {\n <ul class=\"bulk-sync__items\" [attr.aria-label]=\"text('aria.results')\">\n @for (item of resultItems(); track $index) {\n <li><strong>{{ item.id }}</strong> \u00B7 {{ text('item.' + item.status) }}\n @for (diagnostic of item.diagnostics; track $index) { <span>{{ diagnostic.message }}</span> }\n </li>\n }\n </ul>\n @if (resultNext(); as cursor) {\n <button mat-button type=\"button\" [disabled]=\"pageInFlight()\" (click)=\"loadResultPage(cursor)\">{{ text('results.more') }}</button>\n } @else if (!resultsLoaded()) {\n <button mat-button type=\"button\" [disabled]=\"pageInFlight()\" (click)=\"loadResultPage()\">{{ text('results.load') }}</button>\n }\n }\n </section>\n }\n }\n } @else {\n <p role=\"status\">{{ text('reauthorizing') }}</p>\n @if (!working()) {\n <button mat-button type=\"button\" (click)=\"reauthorize()\">{{ text('reauthorize') }}</button>\n }\n }\n\n @if (message(); as error) {\n <p class=\"bulk-sync__error\" role=\"alert\">{{ error }}</p>\n }\n</section>\n", styles: [":host{display:block;min-width:0}.bulk-sync{margin-block:.75rem 1.25rem;padding:1rem;color:var(--mat-sys-on-surface, inherit);background:var(--mat-sys-surface-container-low, var(--p-table-bg, transparent));border:1px solid var(--p-table-border-color, currentColor);border-radius:var(--mat-sys-corner-medium, .75rem)}.bulk-sync__header{display:flex;justify-content:space-between;align-items:start;gap:1rem}.bulk-sync__header h2{margin:.15rem 0;font:var(--mat-sys-title-large, inherit)}.bulk-sync__header p{margin:.25rem 0}.bulk-sync__eyebrow{color:var(--mat-sys-primary, currentColor);font-weight:600}.bulk-sync__editor{max-width:44rem}.bulk-sync__review{margin-block-start:1rem}.bulk-sync__review h3{margin-block:0 .5rem}.bulk-sync__intent{margin-block:1rem;padding:.75rem;border:1px solid var(--p-table-border-color, currentColor);border-radius:.5rem}.bulk-sync__intent h4{margin:0 .35rem}.bulk-sync__intent p{margin:0 .5rem}.bulk-sync__intent li{overflow-wrap:anywhere}.bulk-sync__intent code{margin-inline-start:.4rem;white-space:pre-wrap}.bulk-sync__totals{display:flex;flex-wrap:wrap;gap:1.5rem;margin:.75rem 0}.bulk-sync__totals div{display:grid;gap:.1rem}.bulk-sync__totals dt{color:var(--mat-sys-on-surface-variant, inherit)}.bulk-sync__totals dd{margin:0;font-weight:700}.bulk-sync__items{max-height:16rem;overflow:auto;padding-inline-start:1.25rem}.bulk-sync__items li{padding-block:.4rem;overflow-wrap:anywhere}.bulk-sync__items span{display:block}.bulk-sync__actions{display:flex;justify-content:flex-end;margin-block-start:1rem}.bulk-sync__error{color:var(--mat-sys-error, currentColor);margin-block:.75rem 0}button:focus-visible{outline:2px solid var(--mat-sys-primary, currentColor);outline-offset:2px}@media(max-width:640px){.bulk-sync{padding:.75rem}.bulk-sync__header{flex-direction:column}.bulk-sync__actions{justify-content:stretch}.bulk-sync__actions button{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: PraxisDynamicForm, selector: "praxis-dynamic-form", inputs: ["resourcePath", "resourceId", "initialValue", "emptyState", "editorialContext", "mode", "config", "actions", "schemaSource", "actionId", "operationId", "schemaUrl", "readUrl", "submitUrl", "submitMethod", "submitIdempotencyKey", "submitCorrelationId", "submitResourceVersion", "submitResourceVersionTargetResourceKey", "submitResourceVersionTargetIdField", "responseSchemaUrl", "apiEndpointKey", "apiUrlEntry", "enableCustomization", "showAiAssistant", "formId", "componentInstanceId", "configPersistenceStrategy", "layout", "layoutMode", "formLayout", "generatedLayoutPreset", "layoutPolicy", "backConfig", "hooks", "removeEmptyContainersOnSave", "reactiveValidation", "reactiveValidationDebounceMs", "notifyIfOutdated", "snoozeMs", "autoOpenSettingsOnOutdated", "readonlyModeGlobal", "disabledModeGlobal", "presentationModeGlobal", "presentation", "presentationPreset", "sectionDefaultAppearance", "sectionDivider", "visibleGlobal", "fieldIconPolicy", "domainRules", "customEndpoints"], outputs: ["formSubmit", "formCancel", "formReset", "configChange", "configPatchChange", "formReady", "valueChange", "payloadPreviewChange", "syncCompleted", "initializationError", "loadingStateChange", "enableCustomizationChange", "customAction", "actionConfirmation", "schemaStatusChange", "fieldRenderError", "ruleDiagnosticsChange", "reactiveDeterminationExecuted", "reactiveDeterminationPendingChange", "tabChange", "tabSelected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1261
1261
|
}
|
|
1262
1262
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TableBulkSyncWorkflowComponent, decorators: [{
|
|
1263
1263
|
type: Component,
|
|
@@ -24759,7 +24759,7 @@ class PraxisTable {
|
|
|
24759
24759
|
if (this.aiAdapter || this.aiAdapterLoadStarted)
|
|
24760
24760
|
return;
|
|
24761
24761
|
this.aiAdapterLoadStarted = true;
|
|
24762
|
-
import('./praxisui-table-table-ai.adapter-
|
|
24762
|
+
import('./praxisui-table-table-ai.adapter-2CXgwI8n.mjs')
|
|
24763
24763
|
.then(({ TableAiAdapter }) => {
|
|
24764
24764
|
if (!this.isAiAssistantEnabled()) {
|
|
24765
24765
|
this.aiAssistantOpenAfterAdapterLoad = false;
|
|
@@ -25531,7 +25531,7 @@ class PraxisTable {
|
|
|
25531
25531
|
initializeAiAssistantController() {
|
|
25532
25532
|
if (!this.aiAdapter || this.aiAssistantController)
|
|
25533
25533
|
return;
|
|
25534
|
-
import('./praxisui-table-table-agentic-authoring-turn-flow-
|
|
25534
|
+
import('./praxisui-table-table-agentic-authoring-turn-flow-D0489HPn.mjs')
|
|
25535
25535
|
.then(({ TableAgenticAuthoringTurnFlow }) => {
|
|
25536
25536
|
if (this.aiAssistantController || !this.aiAdapter)
|
|
25537
25537
|
return;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Observable, firstValueFrom } from 'rxjs';
|
|
2
2
|
import { withAuthoringScopePolicy } from '@praxisui/ai';
|
|
3
|
-
import { aw as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-
|
|
3
|
+
import { aw as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-vjpONc0b.mjs';
|
|
4
4
|
|
|
5
5
|
class TableAgenticAuthoringTurnFlow {
|
|
6
6
|
adapter;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { firstValueFrom } from 'rxjs';
|
|
2
2
|
import { BaseAiAdapter, sanitizePraxisAssistantText, createComponentAuthoringContext } from '@praxisui/ai';
|
|
3
3
|
import { PRAXIS_GLOBAL_ACTION_CATALOG, deepMerge } from '@praxisui/core';
|
|
4
|
-
import { W as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, p as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, a7 as coerceTableComponentEditPlans, a9 as compileTableComponentEditPlans, Z as TASK_PRESETS, ah as getTableComponentEditPlanCapabilities, R as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, O as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, U as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, X as TABLE_COMPONENT_EDIT_PLAN_VERSION, Q as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, V as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-
|
|
4
|
+
import { W as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, p as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, a7 as coerceTableComponentEditPlans, a9 as compileTableComponentEditPlans, Z as TASK_PRESETS, ah as getTableComponentEditPlanCapabilities, R as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, O as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, U as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, X as TABLE_COMPONENT_EDIT_PLAN_VERSION, Q as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, V as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-vjpONc0b.mjs';
|
|
5
5
|
|
|
6
6
|
const TABLE_ROW_EXPRESSION_CONTEXT_OPTION = {
|
|
7
7
|
mode: 'expression',
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { A as ANALYTICS_TABLE_ROW_KEY_FIELD, a as AnalyticalDrawerRegistryService, b as AnalyticsTableConfigAdapterService, c as AnalyticsTableContractService, d as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, e as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, f as ColumnsConfigEditorComponent, D as DATE_PRESETS, g as DataFormatterComponent, h as DataFormattingService, F as FORMULA_TEMPLATES, i as FilterConfigService, j as FilterSettingsComponent, k as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, l as PRAXIS_ANALYTICAL_DRAWER_SCHEMAS, m as PRAXIS_FILTER_AUTHORING_MANIFEST, n as PRAXIS_FILTER_COMPONENT_METADATA, o as PRAXIS_FILTER_VIEW_CONTEXT_SCHEMA_VERSION, p as PRAXIS_TABLE_AUTHORING_MANIFEST, q as PRAXIS_TABLE_COMPONENT_METADATA, r as PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, s as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, t as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, u as PraxisAnalyticalDrawerComponent, v as PraxisFilter, w as PraxisFilterOutletComponent, x as PraxisFilterOutletDirective, y as PraxisFilterWidgetConfigEditor, z as PraxisScopeBarComponent, E as PraxisTable, G as PraxisTableConfigEditor, H as PraxisTableInlineAuthoringEditorComponent, I as PraxisTableToolbar, K as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, L as TABLE_COMPONENT_AI_CAPABILITIES, O as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, Q as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, R as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, U as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, V as TABLE_COMPONENT_EDIT_PLAN_KIND, X as TABLE_COMPONENT_EDIT_PLAN_VERSION, Y as TABLE_GOVERNED_PAGE_PREVIEW_ADAPTER, Z as TASK_PRESETS, _ as TableDefaultsProvider, $ as TableRulesEditorComponent, a0 as ToolbarActionsEditorComponent, a1 as ValueMappingEditorComponent, a2 as VisualFormulaBuilderComponent, a3 as analyticsComparisonMetricField, a4 as applyComputedFieldsToRows, a5 as buildTableApplyPlan, a6 as coerceTableComponentEditPlan, a7 as coerceTableComponentEditPlans, a8 as compileTableComponentEditPlan, a9 as compileTableComponentEditPlans, aa as createTableAuthoringDocument, ab as decodeTablePageInputs, ac as encodeTablePageInputs, ad as formatComputedFieldValue, ae as getActionId, af as getEnum, ag as getTableCapabilities, ah as getTableComponentEditPlanCapabilities, ai as interpolateRelationEndpoint, aj as isAnalyticalDrawerSchema, ak as isTableRendererSupportedByRichContentP0, al as mapTableRendererToRichContentP0, am as materializeTablePageRuntimeInputs, an as normalizeComputedFieldDefinition, ao as normalizeTableAuthoringDocument, ap as parseLegacyOrTableDocument, aq as projectTablePageEditorChanges, ar as providePraxisAnalyticalDrawerSchemas, as as providePraxisFilterMetadata, at as providePraxisTableMetadata, au as providePraxisTableToolbarAppearance, av as serializeTableAuthoringDocument, ax as toCanonicalTableConfig, ay as validateTableAuthoringDocument, az as validateTablePageWidget } from './praxisui-table-praxisui-table-
|
|
1
|
+
export { A as ANALYTICS_TABLE_ROW_KEY_FIELD, a as AnalyticalDrawerRegistryService, b as AnalyticsTableConfigAdapterService, c as AnalyticsTableContractService, d as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, e as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, f as ColumnsConfigEditorComponent, D as DATE_PRESETS, g as DataFormatterComponent, h as DataFormattingService, F as FORMULA_TEMPLATES, i as FilterConfigService, j as FilterSettingsComponent, k as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, l as PRAXIS_ANALYTICAL_DRAWER_SCHEMAS, m as PRAXIS_FILTER_AUTHORING_MANIFEST, n as PRAXIS_FILTER_COMPONENT_METADATA, o as PRAXIS_FILTER_VIEW_CONTEXT_SCHEMA_VERSION, p as PRAXIS_TABLE_AUTHORING_MANIFEST, q as PRAXIS_TABLE_COMPONENT_METADATA, r as PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, s as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, t as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, u as PraxisAnalyticalDrawerComponent, v as PraxisFilter, w as PraxisFilterOutletComponent, x as PraxisFilterOutletDirective, y as PraxisFilterWidgetConfigEditor, z as PraxisScopeBarComponent, E as PraxisTable, G as PraxisTableConfigEditor, H as PraxisTableInlineAuthoringEditorComponent, I as PraxisTableToolbar, K as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, L as TABLE_COMPONENT_AI_CAPABILITIES, O as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, Q as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, R as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, U as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, V as TABLE_COMPONENT_EDIT_PLAN_KIND, X as TABLE_COMPONENT_EDIT_PLAN_VERSION, Y as TABLE_GOVERNED_PAGE_PREVIEW_ADAPTER, Z as TASK_PRESETS, _ as TableDefaultsProvider, $ as TableRulesEditorComponent, a0 as ToolbarActionsEditorComponent, a1 as ValueMappingEditorComponent, a2 as VisualFormulaBuilderComponent, a3 as analyticsComparisonMetricField, a4 as applyComputedFieldsToRows, a5 as buildTableApplyPlan, a6 as coerceTableComponentEditPlan, a7 as coerceTableComponentEditPlans, a8 as compileTableComponentEditPlan, a9 as compileTableComponentEditPlans, aa as createTableAuthoringDocument, ab as decodeTablePageInputs, ac as encodeTablePageInputs, ad as formatComputedFieldValue, ae as getActionId, af as getEnum, ag as getTableCapabilities, ah as getTableComponentEditPlanCapabilities, ai as interpolateRelationEndpoint, aj as isAnalyticalDrawerSchema, ak as isTableRendererSupportedByRichContentP0, al as mapTableRendererToRichContentP0, am as materializeTablePageRuntimeInputs, an as normalizeComputedFieldDefinition, ao as normalizeTableAuthoringDocument, ap as parseLegacyOrTableDocument, aq as projectTablePageEditorChanges, ar as providePraxisAnalyticalDrawerSchemas, as as providePraxisFilterMetadata, at as providePraxisTableMetadata, au as providePraxisTableToolbarAppearance, av as serializeTableAuthoringDocument, ax as toCanonicalTableConfig, ay as validateTableAuthoringDocument, az as validateTablePageWidget } from './praxisui-table-praxisui-table-vjpONc0b.mjs';
|
|
2
2
|
export { createDynamicRecord, extractRecordId, isDynamicDataRecord, resolveDataField } from '@praxisui/core';
|
package/package.json
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/table",
|
|
3
|
-
"version": "10.0.0-rc.
|
|
3
|
+
"version": "10.0.0-rc.40",
|
|
4
4
|
"description": "Advanced data table for Angular (Praxis UI) with editing, filtering, sorting, virtualization, and settings panel integration.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
7
7
|
"@angular/core": "^21.0.0",
|
|
8
8
|
"@angular/platform-browser": "^21.0.0",
|
|
9
|
-
"@praxisui/ai": "^10.0.0-rc.
|
|
10
|
-
"@praxisui/core": "^10.0.0-rc.
|
|
11
|
-
"@praxisui/dynamic-fields": "^10.0.0-rc.
|
|
12
|
-
"@praxisui/dynamic-form": "^10.0.0-rc.
|
|
13
|
-
"@praxisui/metadata-editor": "^10.0.0-rc.
|
|
14
|
-
"@praxisui/rich-content": "^10.0.0-rc.
|
|
15
|
-
"@praxisui/settings-panel": "^10.0.0-rc.
|
|
16
|
-
"@praxisui/table-rule-builder": "^10.0.0-rc.
|
|
9
|
+
"@praxisui/ai": "^10.0.0-rc.40",
|
|
10
|
+
"@praxisui/core": "^10.0.0-rc.40",
|
|
11
|
+
"@praxisui/dynamic-fields": "^10.0.0-rc.40",
|
|
12
|
+
"@praxisui/dynamic-form": "^10.0.0-rc.40",
|
|
13
|
+
"@praxisui/metadata-editor": "^10.0.0-rc.40",
|
|
14
|
+
"@praxisui/rich-content": "^10.0.0-rc.40",
|
|
15
|
+
"@praxisui/settings-panel": "^10.0.0-rc.40",
|
|
16
|
+
"@praxisui/table-rule-builder": "^10.0.0-rc.40",
|
|
17
17
|
"@angular/cdk": "^21.0.0",
|
|
18
18
|
"@angular/forms": "^21.0.0",
|
|
19
19
|
"@angular/material": "^21.0.0",
|
|
20
20
|
"@angular/router": "^21.0.0",
|
|
21
|
-
"@praxisui/dialog": "^10.0.0-rc.
|
|
21
|
+
"@praxisui/dialog": "^10.0.0-rc.40",
|
|
22
22
|
"rxjs": "~7.8.0"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|