@praxisui/crud 10.0.0-rc.17 → 10.0.0-rc.19
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-10-
|
|
3
|
+
"generatedAt": "2026-10-15T00:20:34.117Z",
|
|
4
4
|
"packageName": "@praxisui/crud",
|
|
5
|
-
"packageVersion": "10.0.0-rc.
|
|
5
|
+
"packageVersion": "10.0.0-rc.19",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 2,
|
|
@@ -7,7 +7,7 @@ import { MatSnackBar } from '@angular/material/snack-bar';
|
|
|
7
7
|
import { firstValueFrom, BehaviorSubject, Subscription } from 'rxjs';
|
|
8
8
|
import { take, filter } from 'rxjs/operators';
|
|
9
9
|
import * as i2$1 from '@praxisui/core';
|
|
10
|
-
import { PraxisBulkClientService, generateBulkIdempotencyKey, API_URL, SafeExpressionEvaluator, buildApiUrl, ASYNC_CONFIG_STORAGE, GlobalConfigService, CrudOperationResolutionService, LoggerService, SurfaceNavigationError, fillUndefined, SETTINGS_PANEL_DATA, PraxisI18nService, PraxisIconDirective, providePraxisI18nConfig, createDefaultTableConfig, PraxisWidgetEventBus, EnterpriseRuntimeContextService, GLOBAL_SURFACE_SERVICE, SurfaceOutletRegistryService, ComponentKeyService, ResourceDiscoveryService, ResourceActionOpenAdapterService, ResourceSurfaceOpenAdapterService, composeHeadersWithVersion, normalizeSurfaceOperationContext, translateUnavailableWorkflowMessage, isSurfaceNavigationError, translateSurfaceNavigationRejected, normalizeUnknownError, EmptyStateCardComponent, RESOURCE_DISCOVERY_I18N_CONFIG, SURFACE_DRAWER_REF, SURFACE_DRAWER_CONTENT_DATA, PraxisIconButtonComponent, PraxisResourceIdentityComponent, GenericCrudService, ComponentMetadataRegistry } from '@praxisui/core';
|
|
10
|
+
import { PraxisBulkClientService, generateBulkIdempotencyKey, API_URL, SafeExpressionEvaluator, buildApiUrl, ASYNC_CONFIG_STORAGE, GlobalConfigService, CrudOperationResolutionService, LoggerService, SurfaceNavigationError, fillUndefined, SETTINGS_PANEL_DATA, PraxisI18nService, PraxisIconDirective, providePraxisI18nConfig, createDefaultTableConfig, PraxisWidgetEventBus, EnterpriseRuntimeContextService, GLOBAL_SURFACE_SERVICE, SurfaceOutletRegistryService, ComponentKeyService, ResourceDiscoveryService, ResourceActionOpenAdapterService, ResourceSurfaceOpenAdapterService, composeHeadersWithVersion, normalizeSurfaceOperationContext, translateUnavailableWorkflowMessage, isSurfaceNavigationError, translateSurfaceNavigationRejected, normalizeUnknownError, EmptyStateCardComponent, RESOURCE_DISCOVERY_I18N_CONFIG, SURFACE_DRAWER_REF, SURFACE_DRAWER_CONTENT_DATA, PraxisIconButtonComponent, PraxisResourceIdentityComponent, GenericCrudService, ComponentMetadataRegistry, PraxisCustomizationModeService } from '@praxisui/core';
|
|
11
11
|
export { createDynamicRecord, extractRecordId, isDynamicDataRecord, resolveDataField } from '@praxisui/core';
|
|
12
12
|
import * as i1 from '@angular/common';
|
|
13
13
|
import { CommonModule } from '@angular/common';
|
|
@@ -7091,6 +7091,15 @@ class PraxisCrudComponent {
|
|
|
7091
7091
|
collectionCapabilities = null;
|
|
7092
7092
|
activeAuthoringPanelRef;
|
|
7093
7093
|
constructor() {
|
|
7094
|
+
this.destroyRef.onDestroy(() => {
|
|
7095
|
+
if (this.activeAuthoringPanelRef) {
|
|
7096
|
+
try {
|
|
7097
|
+
this.activeAuthoringPanelRef.close();
|
|
7098
|
+
}
|
|
7099
|
+
catch { }
|
|
7100
|
+
this.activeAuthoringPanelRef = undefined;
|
|
7101
|
+
}
|
|
7102
|
+
});
|
|
7094
7103
|
this.enterpriseRuntimeContext?.contextChanges$
|
|
7095
7104
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
7096
7105
|
.subscribe(() => {
|
|
@@ -7558,6 +7567,16 @@ class PraxisCrudComponent {
|
|
|
7558
7567
|
await this.onAction(action, row ?? undefined, event);
|
|
7559
7568
|
}
|
|
7560
7569
|
ngOnChanges(changes) {
|
|
7570
|
+
if (changes['enableCustomization'] || changes['authoringCapability']) {
|
|
7571
|
+
if (!this.isCustomizationAvailable() && this.activeAuthoringPanelRef) {
|
|
7572
|
+
try {
|
|
7573
|
+
this.activeAuthoringPanelRef.close();
|
|
7574
|
+
}
|
|
7575
|
+
catch { }
|
|
7576
|
+
this.activeAuthoringPanelRef = undefined;
|
|
7577
|
+
}
|
|
7578
|
+
this.cdr.markForCheck();
|
|
7579
|
+
}
|
|
7561
7580
|
if (!changes['metadata'] && !changes['context'] && !changes['resource']) {
|
|
7562
7581
|
if (changes['filterCriteria'] && !changes['filterCriteria'].firstChange) {
|
|
7563
7582
|
this.applyFilterCriteria(this.filterCriteria);
|
|
@@ -12107,6 +12126,8 @@ const PRAXIS_CRUD_AUTHORING_MANIFEST = {
|
|
|
12107
12126
|
class PraxisResourcePage {
|
|
12108
12127
|
route = inject(ActivatedRoute, { optional: true });
|
|
12109
12128
|
runtimeContext = inject(EnterpriseRuntimeContextService, { optional: true });
|
|
12129
|
+
customizationMode = inject(PraxisCustomizationModeService, { optional: true });
|
|
12130
|
+
crudComponent;
|
|
12110
12131
|
routeSub;
|
|
12111
12132
|
contextSub;
|
|
12112
12133
|
observedContext = false;
|
|
@@ -12122,7 +12143,7 @@ class PraxisResourcePage {
|
|
|
12122
12143
|
scopeBar;
|
|
12123
12144
|
scopeItems;
|
|
12124
12145
|
defaultScopeId;
|
|
12125
|
-
enableCustomization
|
|
12146
|
+
enableCustomization;
|
|
12126
12147
|
tableConfigPersistenceStrategy = 'local-first';
|
|
12127
12148
|
context;
|
|
12128
12149
|
actions;
|
|
@@ -12172,8 +12193,18 @@ class PraxisResourcePage {
|
|
|
12172
12193
|
}, ...(ngDevMode ? [{ debugName: "effectiveDomain" }] : /* istanbul ignore next */ []));
|
|
12173
12194
|
effectiveEnableCustomization = computed(() => {
|
|
12174
12195
|
this.inputsVersion();
|
|
12175
|
-
|
|
12196
|
+
if (typeof this.enableCustomization === 'boolean') {
|
|
12197
|
+
return this.enableCustomization;
|
|
12198
|
+
}
|
|
12199
|
+
const routeCustomization = this.routeCustomizationSignal();
|
|
12200
|
+
if (typeof routeCustomization === 'boolean') {
|
|
12201
|
+
return routeCustomization;
|
|
12202
|
+
}
|
|
12203
|
+
return this.customizationMode?.isCustomizing() ?? false;
|
|
12176
12204
|
}, ...(ngDevMode ? [{ debugName: "effectiveEnableCustomization" }] : /* istanbul ignore next */ []));
|
|
12205
|
+
openPageCustomization() {
|
|
12206
|
+
this.crudComponent?.onConfigureRequested();
|
|
12207
|
+
}
|
|
12177
12208
|
effectiveScopeBar = computed(() => {
|
|
12178
12209
|
this.inputsVersion();
|
|
12179
12210
|
if (this.scopeBar)
|
|
@@ -12543,9 +12574,12 @@ class PraxisResourcePage {
|
|
|
12543
12574
|
if (typeof data['enableCustomization'] === 'boolean') {
|
|
12544
12575
|
this.routeCustomizationSignal.set(data['enableCustomization']);
|
|
12545
12576
|
}
|
|
12577
|
+
else {
|
|
12578
|
+
this.routeCustomizationSignal.set(null);
|
|
12579
|
+
}
|
|
12546
12580
|
}
|
|
12547
12581
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisResourcePage, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12548
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisResourcePage, isStandalone: true, selector: "praxis-resource-page", inputs: { resource: "resource", resourcePath: "resourcePath", crudId: "crudId", metadata: "metadata", title: "title", subtitle: "subtitle", domain: "domain", scopeBar: "scopeBar", scopeItems: "scopeItems", defaultScopeId: "defaultScopeId", enableCustomization: "enableCustomization", tableConfigPersistenceStrategy: "tableConfigPersistenceStrategy", context: "context", actions: "actions", filterCriteria: "filterCriteria" }, outputs: { rowClick: "rowClick", rowAction: "rowAction", rowDoubleClick: "rowDoubleClick", selectionChange: "selectionChange", drawerOpen: "drawerOpen", drawerClose: "drawerClose", afterOpen: "afterOpen", afterClose: "afterClose", kpiCardClick: "kpiCardClick", afterSave: "afterSave", afterDelete: "afterDelete", error: "error" }, usesOnChanges: true, ngImport: i0, template: `
|
|
12582
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisResourcePage, isStandalone: true, selector: "praxis-resource-page", inputs: { resource: "resource", resourcePath: "resourcePath", crudId: "crudId", metadata: "metadata", title: "title", subtitle: "subtitle", domain: "domain", scopeBar: "scopeBar", scopeItems: "scopeItems", defaultScopeId: "defaultScopeId", enableCustomization: "enableCustomization", tableConfigPersistenceStrategy: "tableConfigPersistenceStrategy", context: "context", actions: "actions", filterCriteria: "filterCriteria" }, outputs: { rowClick: "rowClick", rowAction: "rowAction", rowDoubleClick: "rowDoubleClick", selectionChange: "selectionChange", drawerOpen: "drawerOpen", drawerClose: "drawerClose", afterOpen: "afterOpen", afterClose: "afterClose", kpiCardClick: "kpiCardClick", afterSave: "afterSave", afterDelete: "afterDelete", error: "error" }, viewQueries: [{ propertyName: "crudComponent", first: true, predicate: PraxisCrudComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
12549
12583
|
<div class="praxis-resource-page page-container">
|
|
12550
12584
|
<!-- Auto-Header Governado -->
|
|
12551
12585
|
@if (effectiveTitle() || effectiveDomain()) {
|
|
@@ -12571,6 +12605,17 @@ class PraxisResourcePage {
|
|
|
12571
12605
|
</div>
|
|
12572
12606
|
|
|
12573
12607
|
<div class="praxis-resource-page__header-actions">
|
|
12608
|
+
@if (effectiveEnableCustomization()) {
|
|
12609
|
+
<button
|
|
12610
|
+
type="button"
|
|
12611
|
+
class="praxis-resource-page__configure-btn"
|
|
12612
|
+
data-testid="resource-page-configure-btn"
|
|
12613
|
+
(click)="openPageCustomization()"
|
|
12614
|
+
>
|
|
12615
|
+
<span class="material-symbols-outlined">tune</span>
|
|
12616
|
+
<span>Configurar Página</span>
|
|
12617
|
+
</button>
|
|
12618
|
+
}
|
|
12574
12619
|
<ng-content select="[page-header-actions]"></ng-content>
|
|
12575
12620
|
</div>
|
|
12576
12621
|
</header>
|
|
@@ -12617,7 +12662,7 @@ class PraxisResourcePage {
|
|
|
12617
12662
|
}
|
|
12618
12663
|
}
|
|
12619
12664
|
</div>
|
|
12620
|
-
`, isInline: true, styles: [":host{display:block;width:100%;min-height:100%;box-sizing:border-box}.praxis-resource-page{width:100%;display:flex;flex-direction:column;gap:20px;padding:var(--praxis-page-padding, 24px);box-sizing:border-box;max-width:1540px;margin:0 auto}.praxis-resource-page__header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.praxis-resource-page__header-main{min-width:0;display:flex;flex-direction:column}.praxis-resource-page__domain-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:9999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;align-self:flex-start;background:var(--praxis-domain-badge-bg, rgba(255, 255, 255, .08));color:var(--praxis-domain-badge-color, inherit);border:1px solid var(--praxis-domain-badge-border, rgba(255, 255, 255, .1))}.praxis-resource-page__domain-badge.tone-primary,.praxis-resource-page__domain-badge.tone-info{background:color-mix(in srgb,var(--praxis-info, #0284c7) 14%,transparent);color:var(--praxis-info, #38bdf8);border-color:color-mix(in srgb,var(--praxis-info, #0284c7) 30%,transparent)}.praxis-resource-page__domain-badge.tone-success{background:color-mix(in srgb,var(--praxis-success, #059669) 14%,transparent);color:var(--praxis-success, #34d399);border-color:color-mix(in srgb,var(--praxis-success, #059669) 30%,transparent)}.praxis-resource-page__domain-badge.tone-warning{background:color-mix(in srgb,var(--praxis-warning, #d97706) 14%,transparent);color:var(--praxis-warning, #fbbf24);border-color:color-mix(in srgb,var(--praxis-warning, #d97706) 30%,transparent)}.praxis-resource-page__domain-badge.tone-danger,.praxis-resource-page__domain-badge.tone-error{background:color-mix(in srgb,var(--praxis-error, #dc2626) 14%,transparent);color:var(--praxis-error, #f87171);border-color:color-mix(in srgb,var(--praxis-error, #dc2626) 30%,transparent)}.praxis-resource-page__domain-badge span.material-symbols-outlined{font-size:14px}.praxis-resource-page__title{margin:0 0 6px;font-size:var(--praxis-page-title-size, 2rem);font-weight:800;letter-spacing:-.02em;color:var(--praxis-page-title-color, var(--foreground, inherit));line-height:1.2}.praxis-resource-page__subtitle{margin:0;font-size:var(--praxis-page-subtitle-size, .9rem);color:var(--muted-foreground, #94a3b8);max-width:800px;line-height:1.5}.praxis-resource-page__crud-surface{width:100%;border-radius:var(--praxis-surface-radius, 16px);overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PraxisCrudComponent, selector: "praxis-crud", inputs: ["metadata", "crudId", "resource", "componentInstanceId", "tableConfigPersistenceStrategy", "context", "enableCustomization", "showResourceIdentityKey", "authoringCapability", "filterCriteria", "filterTeleport", "disableAutoDrawer"], outputs: ["configureRequested", "afterOpen", "afterClose", "afterSave", "afterDelete", "reactiveDeterminationExecuted", "reactiveDeterminationPendingChange", "reactiveDeterminationStabilityChange", "error", "rowClick", "rowAction", "selectionChange", "resourceEvent", "tableRuntimeConfigChange", "drawerOpen", "drawerClose", "crudAuthoringDocumentApplied", "crudAuthoringDocumentSaved", "kpiCardClick"] }, { kind: "component", type: PraxisScopeBarComponent, selector: "praxis-scope-bar", inputs: ["items", "activeId", "showOmnibox", "omniboxPlaceholder", "omniboxValue", "omniboxDebounceMs", "leadIcon", "leadLabel", "showClearButton", "clearLabel", "target", "targetWidgetId", "scopeBarId", "searchField"], outputs: ["activeIdChange", "omniboxValueChange", "scopeChange", "searchChange", "filterCriteriaChange", "clear"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12665
|
+
`, isInline: true, styles: [":host{display:block;width:100%;min-height:100%;box-sizing:border-box}.praxis-resource-page{width:100%;display:flex;flex-direction:column;gap:20px;padding:var(--praxis-page-padding, 24px);box-sizing:border-box;max-width:1540px;margin:0 auto}.praxis-resource-page__header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.praxis-resource-page__header-main{min-width:0;display:flex;flex-direction:column}.praxis-resource-page__domain-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:9999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;align-self:flex-start;background:var(--praxis-domain-badge-bg, rgba(255, 255, 255, .08));color:var(--praxis-domain-badge-color, inherit);border:1px solid var(--praxis-domain-badge-border, rgba(255, 255, 255, .1))}.praxis-resource-page__domain-badge.tone-primary,.praxis-resource-page__domain-badge.tone-info{background:color-mix(in srgb,var(--praxis-info, #0284c7) 14%,transparent);color:var(--praxis-info, #38bdf8);border-color:color-mix(in srgb,var(--praxis-info, #0284c7) 30%,transparent)}.praxis-resource-page__domain-badge.tone-success{background:color-mix(in srgb,var(--praxis-success, #059669) 14%,transparent);color:var(--praxis-success, #34d399);border-color:color-mix(in srgb,var(--praxis-success, #059669) 30%,transparent)}.praxis-resource-page__domain-badge.tone-warning{background:color-mix(in srgb,var(--praxis-warning, #d97706) 14%,transparent);color:var(--praxis-warning, #fbbf24);border-color:color-mix(in srgb,var(--praxis-warning, #d97706) 30%,transparent)}.praxis-resource-page__domain-badge.tone-danger,.praxis-resource-page__domain-badge.tone-error{background:color-mix(in srgb,var(--praxis-error, #dc2626) 14%,transparent);color:var(--praxis-error, #f87171);border-color:color-mix(in srgb,var(--praxis-error, #dc2626) 30%,transparent)}.praxis-resource-page__domain-badge span.material-symbols-outlined{font-size:14px}.praxis-resource-page__title{margin:0 0 6px;font-size:var(--praxis-page-title-size, 2rem);font-weight:800;letter-spacing:-.02em;color:var(--praxis-page-title-color, var(--foreground, inherit));line-height:1.2}.praxis-resource-page__subtitle{margin:0;font-size:var(--praxis-page-subtitle-size, .9rem);color:var(--muted-foreground, #94a3b8);max-width:800px;line-height:1.5}.praxis-resource-page__header-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.praxis-resource-page__configure-btn{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border-radius:10px;border:1px solid color-mix(in srgb,var(--praxis-primary, #6366f1) 35%,transparent);background:color-mix(in srgb,var(--praxis-primary, #6366f1) 14%,transparent);color:var(--praxis-primary, #818cf8);font-size:13px;font-weight:600;cursor:pointer;transition:all .16s ease}.praxis-resource-page__configure-btn:hover{background:color-mix(in srgb,var(--praxis-primary, #6366f1) 22%,transparent)}.praxis-resource-page__configure-btn .material-symbols-outlined{font-size:18px}.praxis-resource-page__crud-surface{width:100%;border-radius:var(--praxis-surface-radius, 16px);overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PraxisCrudComponent, selector: "praxis-crud", inputs: ["metadata", "crudId", "resource", "componentInstanceId", "tableConfigPersistenceStrategy", "context", "enableCustomization", "showResourceIdentityKey", "authoringCapability", "filterCriteria", "filterTeleport", "disableAutoDrawer"], outputs: ["configureRequested", "afterOpen", "afterClose", "afterSave", "afterDelete", "reactiveDeterminationExecuted", "reactiveDeterminationPendingChange", "reactiveDeterminationStabilityChange", "error", "rowClick", "rowAction", "selectionChange", "resourceEvent", "tableRuntimeConfigChange", "drawerOpen", "drawerClose", "crudAuthoringDocumentApplied", "crudAuthoringDocumentSaved", "kpiCardClick"] }, { kind: "component", type: PraxisScopeBarComponent, selector: "praxis-scope-bar", inputs: ["items", "activeId", "showOmnibox", "omniboxPlaceholder", "omniboxValue", "omniboxDebounceMs", "leadIcon", "leadLabel", "showClearButton", "clearLabel", "target", "targetWidgetId", "scopeBarId", "searchField"], outputs: ["activeIdChange", "omniboxValueChange", "scopeChange", "searchChange", "filterCriteriaChange", "clear"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12621
12666
|
}
|
|
12622
12667
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisResourcePage, decorators: [{
|
|
12623
12668
|
type: Component,
|
|
@@ -12647,6 +12692,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
12647
12692
|
</div>
|
|
12648
12693
|
|
|
12649
12694
|
<div class="praxis-resource-page__header-actions">
|
|
12695
|
+
@if (effectiveEnableCustomization()) {
|
|
12696
|
+
<button
|
|
12697
|
+
type="button"
|
|
12698
|
+
class="praxis-resource-page__configure-btn"
|
|
12699
|
+
data-testid="resource-page-configure-btn"
|
|
12700
|
+
(click)="openPageCustomization()"
|
|
12701
|
+
>
|
|
12702
|
+
<span class="material-symbols-outlined">tune</span>
|
|
12703
|
+
<span>Configurar Página</span>
|
|
12704
|
+
</button>
|
|
12705
|
+
}
|
|
12650
12706
|
<ng-content select="[page-header-actions]"></ng-content>
|
|
12651
12707
|
</div>
|
|
12652
12708
|
</header>
|
|
@@ -12693,8 +12749,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
12693
12749
|
}
|
|
12694
12750
|
}
|
|
12695
12751
|
</div>
|
|
12696
|
-
`, styles: [":host{display:block;width:100%;min-height:100%;box-sizing:border-box}.praxis-resource-page{width:100%;display:flex;flex-direction:column;gap:20px;padding:var(--praxis-page-padding, 24px);box-sizing:border-box;max-width:1540px;margin:0 auto}.praxis-resource-page__header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.praxis-resource-page__header-main{min-width:0;display:flex;flex-direction:column}.praxis-resource-page__domain-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:9999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;align-self:flex-start;background:var(--praxis-domain-badge-bg, rgba(255, 255, 255, .08));color:var(--praxis-domain-badge-color, inherit);border:1px solid var(--praxis-domain-badge-border, rgba(255, 255, 255, .1))}.praxis-resource-page__domain-badge.tone-primary,.praxis-resource-page__domain-badge.tone-info{background:color-mix(in srgb,var(--praxis-info, #0284c7) 14%,transparent);color:var(--praxis-info, #38bdf8);border-color:color-mix(in srgb,var(--praxis-info, #0284c7) 30%,transparent)}.praxis-resource-page__domain-badge.tone-success{background:color-mix(in srgb,var(--praxis-success, #059669) 14%,transparent);color:var(--praxis-success, #34d399);border-color:color-mix(in srgb,var(--praxis-success, #059669) 30%,transparent)}.praxis-resource-page__domain-badge.tone-warning{background:color-mix(in srgb,var(--praxis-warning, #d97706) 14%,transparent);color:var(--praxis-warning, #fbbf24);border-color:color-mix(in srgb,var(--praxis-warning, #d97706) 30%,transparent)}.praxis-resource-page__domain-badge.tone-danger,.praxis-resource-page__domain-badge.tone-error{background:color-mix(in srgb,var(--praxis-error, #dc2626) 14%,transparent);color:var(--praxis-error, #f87171);border-color:color-mix(in srgb,var(--praxis-error, #dc2626) 30%,transparent)}.praxis-resource-page__domain-badge span.material-symbols-outlined{font-size:14px}.praxis-resource-page__title{margin:0 0 6px;font-size:var(--praxis-page-title-size, 2rem);font-weight:800;letter-spacing:-.02em;color:var(--praxis-page-title-color, var(--foreground, inherit));line-height:1.2}.praxis-resource-page__subtitle{margin:0;font-size:var(--praxis-page-subtitle-size, .9rem);color:var(--muted-foreground, #94a3b8);max-width:800px;line-height:1.5}.praxis-resource-page__crud-surface{width:100%;border-radius:var(--praxis-surface-radius, 16px);overflow:hidden}\n"] }]
|
|
12697
|
-
}], propDecorators: {
|
|
12752
|
+
`, styles: [":host{display:block;width:100%;min-height:100%;box-sizing:border-box}.praxis-resource-page{width:100%;display:flex;flex-direction:column;gap:20px;padding:var(--praxis-page-padding, 24px);box-sizing:border-box;max-width:1540px;margin:0 auto}.praxis-resource-page__header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.praxis-resource-page__header-main{min-width:0;display:flex;flex-direction:column}.praxis-resource-page__domain-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:9999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;align-self:flex-start;background:var(--praxis-domain-badge-bg, rgba(255, 255, 255, .08));color:var(--praxis-domain-badge-color, inherit);border:1px solid var(--praxis-domain-badge-border, rgba(255, 255, 255, .1))}.praxis-resource-page__domain-badge.tone-primary,.praxis-resource-page__domain-badge.tone-info{background:color-mix(in srgb,var(--praxis-info, #0284c7) 14%,transparent);color:var(--praxis-info, #38bdf8);border-color:color-mix(in srgb,var(--praxis-info, #0284c7) 30%,transparent)}.praxis-resource-page__domain-badge.tone-success{background:color-mix(in srgb,var(--praxis-success, #059669) 14%,transparent);color:var(--praxis-success, #34d399);border-color:color-mix(in srgb,var(--praxis-success, #059669) 30%,transparent)}.praxis-resource-page__domain-badge.tone-warning{background:color-mix(in srgb,var(--praxis-warning, #d97706) 14%,transparent);color:var(--praxis-warning, #fbbf24);border-color:color-mix(in srgb,var(--praxis-warning, #d97706) 30%,transparent)}.praxis-resource-page__domain-badge.tone-danger,.praxis-resource-page__domain-badge.tone-error{background:color-mix(in srgb,var(--praxis-error, #dc2626) 14%,transparent);color:var(--praxis-error, #f87171);border-color:color-mix(in srgb,var(--praxis-error, #dc2626) 30%,transparent)}.praxis-resource-page__domain-badge span.material-symbols-outlined{font-size:14px}.praxis-resource-page__title{margin:0 0 6px;font-size:var(--praxis-page-title-size, 2rem);font-weight:800;letter-spacing:-.02em;color:var(--praxis-page-title-color, var(--foreground, inherit));line-height:1.2}.praxis-resource-page__subtitle{margin:0;font-size:var(--praxis-page-subtitle-size, .9rem);color:var(--muted-foreground, #94a3b8);max-width:800px;line-height:1.5}.praxis-resource-page__header-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.praxis-resource-page__configure-btn{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border-radius:10px;border:1px solid color-mix(in srgb,var(--praxis-primary, #6366f1) 35%,transparent);background:color-mix(in srgb,var(--praxis-primary, #6366f1) 14%,transparent);color:var(--praxis-primary, #818cf8);font-size:13px;font-weight:600;cursor:pointer;transition:all .16s ease}.praxis-resource-page__configure-btn:hover{background:color-mix(in srgb,var(--praxis-primary, #6366f1) 22%,transparent)}.praxis-resource-page__configure-btn .material-symbols-outlined{font-size:18px}.praxis-resource-page__crud-surface{width:100%;border-radius:var(--praxis-surface-radius, 16px);overflow:hidden}\n"] }]
|
|
12753
|
+
}], propDecorators: { crudComponent: [{
|
|
12754
|
+
type: ViewChild,
|
|
12755
|
+
args: [PraxisCrudComponent]
|
|
12756
|
+
}], resource: [{
|
|
12698
12757
|
type: Input
|
|
12699
12758
|
}], resourcePath: [{
|
|
12700
12759
|
type: Input
|
package/package.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/crud",
|
|
3
|
-
"version": "10.0.0-rc.
|
|
3
|
+
"version": "10.0.0-rc.19",
|
|
4
4
|
"description": "CRUD building blocks for Praxis UI: integrates dynamic forms and tables with unified configuration and services.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
7
7
|
"@angular/core": "^21.0.0",
|
|
8
|
-
"@praxisui/dynamic-form": "^10.0.0-rc.
|
|
9
|
-
"@praxisui/table": "^10.0.0-rc.
|
|
10
|
-
"@praxisui/core": "^10.0.0-rc.
|
|
11
|
-
"@praxisui/dynamic-fields": "^10.0.0-rc.
|
|
12
|
-
"@praxisui/settings-panel": "^10.0.0-rc.
|
|
8
|
+
"@praxisui/dynamic-form": "^10.0.0-rc.19",
|
|
9
|
+
"@praxisui/table": "^10.0.0-rc.19",
|
|
10
|
+
"@praxisui/core": "^10.0.0-rc.19",
|
|
11
|
+
"@praxisui/dynamic-fields": "^10.0.0-rc.19",
|
|
12
|
+
"@praxisui/settings-panel": "^10.0.0-rc.19",
|
|
13
13
|
"@angular/cdk": "^21.0.0",
|
|
14
14
|
"@angular/forms": "^21.0.0",
|
|
15
15
|
"@angular/material": "^21.0.0",
|
|
16
16
|
"@angular/router": "^21.0.0",
|
|
17
|
-
"@praxisui/ai": "^10.0.0-rc.
|
|
17
|
+
"@praxisui/ai": "^10.0.0-rc.19",
|
|
18
18
|
"rxjs": "~7.8.0"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
package/types/praxisui-crud.d.ts
CHANGED
|
@@ -1071,6 +1071,8 @@ interface PraxisResourceScopeBarConfig {
|
|
|
1071
1071
|
declare class PraxisResourcePage implements OnInit, OnChanges, OnDestroy {
|
|
1072
1072
|
private readonly route;
|
|
1073
1073
|
private readonly runtimeContext;
|
|
1074
|
+
private readonly customizationMode;
|
|
1075
|
+
private crudComponent?;
|
|
1074
1076
|
private routeSub?;
|
|
1075
1077
|
private contextSub?;
|
|
1076
1078
|
private observedContext;
|
|
@@ -1086,7 +1088,7 @@ declare class PraxisResourcePage implements OnInit, OnChanges, OnDestroy {
|
|
|
1086
1088
|
scopeBar?: PraxisResourceScopeBarConfig;
|
|
1087
1089
|
scopeItems?: PraxisScopeBarItem[];
|
|
1088
1090
|
defaultScopeId?: string;
|
|
1089
|
-
enableCustomization
|
|
1091
|
+
enableCustomization?: boolean;
|
|
1090
1092
|
tableConfigPersistenceStrategy: TableConfigPersistenceStrategy;
|
|
1091
1093
|
context?: Record<string, unknown>;
|
|
1092
1094
|
actions?: CrudAction[];
|
|
@@ -1132,6 +1134,7 @@ declare class PraxisResourcePage implements OnInit, OnChanges, OnDestroy {
|
|
|
1132
1134
|
readonly effectiveSubtitle: _angular_core.Signal<string | null>;
|
|
1133
1135
|
readonly effectiveDomain: _angular_core.Signal<PraxisResourceDomainBadge | null>;
|
|
1134
1136
|
readonly effectiveEnableCustomization: _angular_core.Signal<boolean>;
|
|
1137
|
+
openPageCustomization(): void;
|
|
1135
1138
|
readonly effectiveScopeBar: _angular_core.Signal<PraxisResourceScopeBarConfig | null>;
|
|
1136
1139
|
readonly resolvedCrudId: _angular_core.Signal<string>;
|
|
1137
1140
|
readonly effectiveMetadata: _angular_core.Signal<CrudMetadata>;
|