@praxisui/expansion 10.0.0-rc.40 → 10.0.0-rc.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/ai/component-registry.json +2 -2
- package/fesm2022/praxisui-expansion.mjs +136 -9
- package/package.json +5 -5
- package/types/praxisui-expansion.d.ts +16 -1
package/README.md
CHANGED
|
@@ -136,6 +136,8 @@ const config: ExpansionMetadata = {
|
|
|
136
136
|
|
|
137
137
|
Panel `content` and `widgets` are rendered lazily with `matExpansionPanelContent`, so child runtime is created when the panel opens. Use stable `panels[].id` values; authoring, persistence and nested paths rely on them.
|
|
138
138
|
|
|
139
|
+
Each panel can also declare an optional `quickView?: ResourceQuickViewBinding` (and `quickViewActionLabel?: string`) on `PanelMetadata`. When a valid target ID is resolved from `[context]` or the panel's form values, `PraxisExpansion` renders an explicit header action button (`data-testid="expansion-panel-quick-view-action"`, `triggerMode: 'explicit-button'`) with click/keyboard propagation stopped so inspecting the referenced entity never toggles the expansion panel.
|
|
140
|
+
|
|
139
141
|
## Persistence And Authoring
|
|
140
142
|
|
|
141
143
|
When `expansionId` is provided, configuration is stored under a key derived from route, component type, `expansionId` and optional `componentInstanceId`. `enableCustomization` opens Settings Panel editing and the governed semantic assistant flow.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-
|
|
3
|
+
"generatedAt": "2026-11-01T13:59:56.156Z",
|
|
4
4
|
"packageName": "@praxisui/expansion",
|
|
5
|
-
"packageVersion": "10.0.0-rc.
|
|
5
|
+
"packageVersion": "10.0.0-rc.42",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 1,
|
|
@@ -6,22 +6,22 @@ import { ActivatedRoute } from '@angular/router';
|
|
|
6
6
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
7
7
|
import * as i2 from '@angular/material/expansion';
|
|
8
8
|
import { MAT_EXPANSION_PANEL_DEFAULT_OPTIONS, MatExpansionModule, MatExpansionPanel } from '@angular/material/expansion';
|
|
9
|
-
import * as
|
|
9
|
+
import * as i6 from '@angular/material/form-field';
|
|
10
10
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
11
11
|
import * as i3 from '@angular/material/icon';
|
|
12
12
|
import { MatIconModule } from '@angular/material/icon';
|
|
13
13
|
import * as i4 from '@angular/material/button';
|
|
14
14
|
import { MatButtonModule } from '@angular/material/button';
|
|
15
|
-
import * as
|
|
15
|
+
import * as i7 from '@angular/material/input';
|
|
16
16
|
import { MatInputModule } from '@angular/material/input';
|
|
17
|
-
import * as
|
|
17
|
+
import * as i8 from '@angular/material/select';
|
|
18
18
|
import { MatSelectModule } from '@angular/material/select';
|
|
19
|
-
import * as
|
|
19
|
+
import * as i9 from '@angular/material/slide-toggle';
|
|
20
20
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
21
|
-
import * as
|
|
21
|
+
import * as i5 from '@angular/material/tooltip';
|
|
22
22
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
23
23
|
import { DynamicFieldLoaderDirective } from '@praxisui/dynamic-fields';
|
|
24
|
-
import { deepMerge, ASYNC_CONFIG_STORAGE, DynamicFormService, ComponentKeyService, DynamicWidgetLoaderDirective, PraxisIconDirective, EmptyStateCardComponent, PraxisIconButtonComponent, ComponentMetadataRegistry } from '@praxisui/core';
|
|
24
|
+
import { deepMerge, ASYNC_CONFIG_STORAGE, DynamicFormService, ComponentKeyService, normalizeResourceQuickViewBinding, resolveResourceQuickViewTarget, DynamicWidgetLoaderDirective, PraxisIconDirective, PraxisQuickViewTriggerDirective, EmptyStateCardComponent, PraxisIconButtonComponent, ComponentMetadataRegistry } from '@praxisui/core';
|
|
25
25
|
import { SettingsPanelService, SETTINGS_PANEL_DATA } from '@praxisui/settings-panel';
|
|
26
26
|
import { firstValueFrom, BehaviorSubject, Subscription } from 'rxjs';
|
|
27
27
|
import { take } from 'rxjs/operators';
|
|
@@ -602,6 +602,9 @@ class PraxisExpansion {
|
|
|
602
602
|
this.buildPanelForms();
|
|
603
603
|
this.persistConfig(this.config);
|
|
604
604
|
}
|
|
605
|
+
if ('context' in changes) {
|
|
606
|
+
this.cdr.markForCheck();
|
|
607
|
+
}
|
|
605
608
|
}
|
|
606
609
|
ngOnDestroy() {
|
|
607
610
|
this.storageLoad?.unsubscribe();
|
|
@@ -838,6 +841,44 @@ class PraxisExpansion {
|
|
|
838
841
|
this.panelForms.set(key, form);
|
|
839
842
|
return form;
|
|
840
843
|
}
|
|
844
|
+
resolvePanelQuickViewBinding(panel) {
|
|
845
|
+
return normalizeResourceQuickViewBinding(panel?.quickView);
|
|
846
|
+
}
|
|
847
|
+
resolvePanelQuickViewContext(panel, index) {
|
|
848
|
+
const baseContext = this.context && typeof this.context === 'object' ? this.context : {};
|
|
849
|
+
const formValues = this.panelForms.get(this.panelKey(panel, index))?.getRawValue?.() ?? {};
|
|
850
|
+
const existingValues = baseContext['values'] && typeof baseContext['values'] === 'object'
|
|
851
|
+
? baseContext['values']
|
|
852
|
+
: {};
|
|
853
|
+
return {
|
|
854
|
+
...formValues,
|
|
855
|
+
...baseContext,
|
|
856
|
+
values: {
|
|
857
|
+
...formValues,
|
|
858
|
+
...existingValues,
|
|
859
|
+
},
|
|
860
|
+
panel: {
|
|
861
|
+
id: panel.id,
|
|
862
|
+
title: panel.title,
|
|
863
|
+
description: panel.description,
|
|
864
|
+
index,
|
|
865
|
+
},
|
|
866
|
+
};
|
|
867
|
+
}
|
|
868
|
+
hasPanelQuickViewTarget(panel, index, binding) {
|
|
869
|
+
if (!binding || panel.disabled) {
|
|
870
|
+
return false;
|
|
871
|
+
}
|
|
872
|
+
return (resolveResourceQuickViewTarget(binding, this.resolvePanelQuickViewContext(panel, index)) !== null);
|
|
873
|
+
}
|
|
874
|
+
resolvePanelQuickViewLabel(panel) {
|
|
875
|
+
const custom = panel.quickViewActionLabel?.trim();
|
|
876
|
+
if (custom) {
|
|
877
|
+
return custom;
|
|
878
|
+
}
|
|
879
|
+
const base = 'Visualização rápida';
|
|
880
|
+
return panel.title ? `${base}: ${panel.title}` : base;
|
|
881
|
+
}
|
|
841
882
|
applyConfigFromAdapter(next) {
|
|
842
883
|
this.config = next;
|
|
843
884
|
this.buildPanelForms();
|
|
@@ -1332,6 +1373,27 @@ class PraxisExpansion {
|
|
|
1332
1373
|
@if (p.description) {
|
|
1333
1374
|
<mat-panel-description>{{ p.description }}</mat-panel-description>
|
|
1334
1375
|
}
|
|
1376
|
+
@if (resolvePanelQuickViewBinding(p); as qvBinding) {
|
|
1377
|
+
@if (hasPanelQuickViewTarget(p, i, qvBinding)) {
|
|
1378
|
+
<button
|
|
1379
|
+
mat-icon-button
|
|
1380
|
+
type="button"
|
|
1381
|
+
class="praxis-expansion-header-quick-view-action"
|
|
1382
|
+
data-testid="expansion-panel-quick-view-action"
|
|
1383
|
+
[attr.aria-label]="resolvePanelQuickViewLabel(p)"
|
|
1384
|
+
[matTooltip]="resolvePanelQuickViewLabel(p)"
|
|
1385
|
+
[disabled]="!!p.disabled"
|
|
1386
|
+
[praxisQuickView]="qvBinding"
|
|
1387
|
+
[praxisQuickViewRecord]="resolvePanelQuickViewContext(p, i)"
|
|
1388
|
+
[praxisQuickViewTriggerMode]="'explicit-button'"
|
|
1389
|
+
(click)="$event.stopPropagation()"
|
|
1390
|
+
(keydown.enter)="$event.stopPropagation()"
|
|
1391
|
+
(keydown.space)="$event.stopPropagation()"
|
|
1392
|
+
>
|
|
1393
|
+
<mat-icon [praxisIcon]="'preview'">preview</mat-icon>
|
|
1394
|
+
</button>
|
|
1395
|
+
}
|
|
1396
|
+
}
|
|
1335
1397
|
</mat-expansion-panel-header>
|
|
1336
1398
|
|
|
1337
1399
|
<ng-template matExpansionPanelContent>
|
|
@@ -1396,6 +1458,27 @@ class PraxisExpansion {
|
|
|
1396
1458
|
@if (p.description) {
|
|
1397
1459
|
<mat-panel-description>{{ p.description }}</mat-panel-description>
|
|
1398
1460
|
}
|
|
1461
|
+
@if (resolvePanelQuickViewBinding(p); as qvBinding) {
|
|
1462
|
+
@if (hasPanelQuickViewTarget(p, 0, qvBinding)) {
|
|
1463
|
+
<button
|
|
1464
|
+
mat-icon-button
|
|
1465
|
+
type="button"
|
|
1466
|
+
class="praxis-expansion-header-quick-view-action"
|
|
1467
|
+
data-testid="expansion-panel-quick-view-action"
|
|
1468
|
+
[attr.aria-label]="resolvePanelQuickViewLabel(p)"
|
|
1469
|
+
[matTooltip]="resolvePanelQuickViewLabel(p)"
|
|
1470
|
+
[disabled]="!!p.disabled"
|
|
1471
|
+
[praxisQuickView]="qvBinding"
|
|
1472
|
+
[praxisQuickViewRecord]="resolvePanelQuickViewContext(p, 0)"
|
|
1473
|
+
[praxisQuickViewTriggerMode]="'explicit-button'"
|
|
1474
|
+
(click)="$event.stopPropagation()"
|
|
1475
|
+
(keydown.enter)="$event.stopPropagation()"
|
|
1476
|
+
(keydown.space)="$event.stopPropagation()"
|
|
1477
|
+
>
|
|
1478
|
+
<mat-icon [praxisIcon]="'preview'">preview</mat-icon>
|
|
1479
|
+
</button>
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1399
1482
|
</mat-expansion-panel-header>
|
|
1400
1483
|
|
|
1401
1484
|
<ng-template matExpansionPanelContent>
|
|
@@ -1463,7 +1546,7 @@ class PraxisExpansion {
|
|
|
1463
1546
|
<mat-icon fontIcon="edit"></mat-icon>
|
|
1464
1547
|
</button>
|
|
1465
1548
|
}
|
|
1466
|
-
`, isInline: true, styles: [":host{display:block;position:relative;color:var(--md-sys-color-on-surface)}.praxis-expansion-root{display:block;--p-exp-surface: var(--md-sys-color-surface);--p-exp-surface-container: var(--md-sys-color-surface-container);--p-exp-border: var(--md-sys-color-outline-variant);--p-exp-text: var(--md-sys-color-on-surface);--p-exp-text-muted: var(--md-sys-color-on-surface-variant);--p-exp-focus: var(--md-sys-color-primary);--p-exp-radius: 12px}.mat-expansion-panel{background:var(--p-exp-surface);border:1px solid var(--p-exp-border);border-radius:var(--p-exp-radius);overflow:clip}.mat-expansion-panel:not(:last-child){margin-bottom:var(--p-exp-panel-gap, 12px)}.mat-expansion-panel-header{background:var(--p-exp-surface-container);color:var(--p-exp-text)}.mat-expansion-panel-header:focus-visible{outline:2px solid var(--p-exp-focus);outline-offset:-2px}.mat-expansion-panel-header-title{font-weight:600}.mat-expansion-panel-header-description{color:var(--p-exp-text-muted)}.mat-expansion-panel-body{padding:12px 16px 16px}.mat-action-row{border-top:1px solid var(--p-exp-border)}.density-compact .mat-expansion-panel-body{padding:8px 12px 12px}.density-compact .mat-expansion-panel-header{min-height:40px;padding:0 12px}.density-comfortable .mat-expansion-panel-body{padding:12px 16px 16px}.density-comfortable .mat-expansion-panel-header{min-height:48px;padding:0 16px}.density-spacious .mat-expansion-panel-body{padding:16px 20px 20px}.density-spacious .mat-expansion-panel-header{min-height:56px;padding:0 20px}.praxis-expansion-empty{display:block}.edit-fab{position:absolute;right:12px;bottom:12px;z-index:2}.expansion-ai-assistant{position:absolute;right:12px;bottom:72px;z-index:3}.expansion-ai-assistant-trigger{box-shadow:var(--md-sys-elevation-level2, 0 4px 12px rgba(0, 0, 0, .18))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i2.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i2.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i2.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i2.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "directive", type: i2.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatFabButton, selector: "button[mat-fab], a[mat-fab], button[matFab], a[matFab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: DynamicFieldLoaderDirective, selector: "[dynamicFieldLoader]", inputs: ["fields", "formGroup", "enableExternalControlBinding", "itemTemplate", "debugTrace", "debugTraceLabel", "readonlyMode", "disabledMode", "presentationMode", "visible", "canvasMode"], outputs: ["componentsCreated", "fieldCreated", "fieldDestroyed", "renderError", "canvasMouseEnter", "canvasMouseLeave", "canvasClick", "canvasFocus"] }, { kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: EmptyStateCardComponent, selector: "praxis-empty-state-card", inputs: ["icon", "title", "description", "primaryAction", "secondaryActions", "inline", "tone", "variant", "alignment", "density", "iconContainer"] }, { kind: "component", type: PraxisAiAssistantShellComponent, selector: "praxis-ai-assistant-shell", inputs: ["labels", "mode", "state", "contextItems", "attachments", "messages", "quickReplies", "recommendedIntents", "prompt", "statusText", "errorText", "testIdPrefix", "panelTestId", "submitTestId", "applyTestId", "primaryAction", "secondaryActions", "governanceActions", "busy", "canSubmit", "canApply", "submitOnEnter", "showAttachAction", "enablePastedAttachments", "enableFileAttachments", "attachmentAccept", "attachmentMultiple", "voiceInputMode", "voiceLanguage", "draggable", "resizable", "minWidth", "minHeight", "margin", "layout"], outputs: ["promptChange", "submitPrompt", "apply", "retryTurn", "cancelTurn", "shellAction", "close", "attach", "attachmentsPasted", "attachmentsSelected", "removeAttachment", "messageAction", "editMessage", "resendMessage", "quickReply", "recommendedIntent", "layoutChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1549
|
+
`, isInline: true, styles: [":host{display:block;position:relative;color:var(--md-sys-color-on-surface)}.praxis-expansion-root{display:block;--p-exp-surface: var(--md-sys-color-surface);--p-exp-surface-container: var(--md-sys-color-surface-container);--p-exp-border: var(--md-sys-color-outline-variant);--p-exp-text: var(--md-sys-color-on-surface);--p-exp-text-muted: var(--md-sys-color-on-surface-variant);--p-exp-focus: var(--md-sys-color-primary);--p-exp-radius: 12px}.mat-expansion-panel{background:var(--p-exp-surface);border:1px solid var(--p-exp-border);border-radius:var(--p-exp-radius);overflow:clip}.mat-expansion-panel:not(:last-child){margin-bottom:var(--p-exp-panel-gap, 12px)}.mat-expansion-panel-header{background:var(--p-exp-surface-container);color:var(--p-exp-text)}.mat-expansion-panel-header:focus-visible{outline:2px solid var(--p-exp-focus);outline-offset:-2px}.mat-expansion-panel-header-title{font-weight:600}.mat-expansion-panel-header-description{color:var(--p-exp-text-muted)}.praxis-expansion-header-quick-view-action{width:32px;height:32px;padding:4px;margin-left:auto;margin-right:4px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.praxis-expansion-header-quick-view-action mat-icon{font-size:18px;width:18px;height:18px}.mat-expansion-panel-body{padding:12px 16px 16px}.mat-action-row{border-top:1px solid var(--p-exp-border)}.density-compact .mat-expansion-panel-body{padding:8px 12px 12px}.density-compact .mat-expansion-panel-header{min-height:40px;padding:0 12px}.density-comfortable .mat-expansion-panel-body{padding:12px 16px 16px}.density-comfortable .mat-expansion-panel-header{min-height:48px;padding:0 16px}.density-spacious .mat-expansion-panel-body{padding:16px 20px 20px}.density-spacious .mat-expansion-panel-header{min-height:56px;padding:0 20px}.praxis-expansion-empty{display:block}.edit-fab{position:absolute;right:12px;bottom:12px;z-index:2}.expansion-ai-assistant{position:absolute;right:12px;bottom:72px;z-index:3}.expansion-ai-assistant-trigger{box-shadow:var(--md-sys-elevation-level2, 0 4px 12px rgba(0, 0, 0, .18))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i2.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i2.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i2.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i2.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "directive", type: i2.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatFabButton, selector: "button[mat-fab], a[mat-fab], button[matFab], a[matFab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: DynamicFieldLoaderDirective, selector: "[dynamicFieldLoader]", inputs: ["fields", "formGroup", "enableExternalControlBinding", "itemTemplate", "debugTrace", "debugTraceLabel", "readonlyMode", "disabledMode", "presentationMode", "visible", "canvasMode"], outputs: ["componentsCreated", "fieldCreated", "fieldDestroyed", "renderError", "canvasMouseEnter", "canvasMouseLeave", "canvasClick", "canvasFocus"] }, { kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "directive", type: PraxisQuickViewTriggerDirective, selector: "[praxisQuickView]", inputs: ["praxisQuickView", "praxisQuickViewRecord", "praxisQuickViewTriggerMode", "praxisQuickViewAnchorId", "praxisQuickViewSourceId", "praxisQuickViewEndpointKey", "praxisQuickViewApiUrlEntry", "praxisQuickViewQueryContext", "praxisQuickViewHoverOpenDelayMs", "praxisQuickViewHoverCloseDelayMs", "praxisQuickViewStopPropagation"], exportAs: ["praxisQuickView"] }, { kind: "component", type: EmptyStateCardComponent, selector: "praxis-empty-state-card", inputs: ["icon", "title", "description", "primaryAction", "secondaryActions", "inline", "tone", "variant", "alignment", "density", "iconContainer"] }, { kind: "component", type: PraxisAiAssistantShellComponent, selector: "praxis-ai-assistant-shell", inputs: ["labels", "mode", "state", "contextItems", "attachments", "messages", "quickReplies", "recommendedIntents", "prompt", "statusText", "errorText", "testIdPrefix", "panelTestId", "submitTestId", "applyTestId", "primaryAction", "secondaryActions", "governanceActions", "busy", "canSubmit", "canApply", "preview", "submitOnEnter", "showAttachAction", "enablePastedAttachments", "enableFileAttachments", "attachmentAccept", "attachmentMultiple", "voiceInputMode", "voiceLanguage", "draggable", "resizable", "minWidth", "minHeight", "margin", "layout"], outputs: ["promptChange", "submitPrompt", "apply", "retryTurn", "cancelTurn", "shellAction", "close", "attach", "attachmentsPasted", "attachmentsSelected", "removeAttachment", "messageAction", "editMessage", "resendMessage", "quickReply", "recommendedIntent", "layoutChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1467
1550
|
}
|
|
1468
1551
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisExpansion, decorators: [{
|
|
1469
1552
|
type: Component,
|
|
@@ -1472,9 +1555,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1472
1555
|
MatExpansionModule,
|
|
1473
1556
|
MatIconModule,
|
|
1474
1557
|
MatButtonModule,
|
|
1558
|
+
MatTooltipModule,
|
|
1475
1559
|
DynamicFieldLoaderDirective,
|
|
1476
1560
|
DynamicWidgetLoaderDirective,
|
|
1477
1561
|
PraxisIconDirective,
|
|
1562
|
+
PraxisQuickViewTriggerDirective,
|
|
1478
1563
|
EmptyStateCardComponent,
|
|
1479
1564
|
PraxisAiAssistantShellComponent,
|
|
1480
1565
|
], template: `
|
|
@@ -1573,6 +1658,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1573
1658
|
@if (p.description) {
|
|
1574
1659
|
<mat-panel-description>{{ p.description }}</mat-panel-description>
|
|
1575
1660
|
}
|
|
1661
|
+
@if (resolvePanelQuickViewBinding(p); as qvBinding) {
|
|
1662
|
+
@if (hasPanelQuickViewTarget(p, i, qvBinding)) {
|
|
1663
|
+
<button
|
|
1664
|
+
mat-icon-button
|
|
1665
|
+
type="button"
|
|
1666
|
+
class="praxis-expansion-header-quick-view-action"
|
|
1667
|
+
data-testid="expansion-panel-quick-view-action"
|
|
1668
|
+
[attr.aria-label]="resolvePanelQuickViewLabel(p)"
|
|
1669
|
+
[matTooltip]="resolvePanelQuickViewLabel(p)"
|
|
1670
|
+
[disabled]="!!p.disabled"
|
|
1671
|
+
[praxisQuickView]="qvBinding"
|
|
1672
|
+
[praxisQuickViewRecord]="resolvePanelQuickViewContext(p, i)"
|
|
1673
|
+
[praxisQuickViewTriggerMode]="'explicit-button'"
|
|
1674
|
+
(click)="$event.stopPropagation()"
|
|
1675
|
+
(keydown.enter)="$event.stopPropagation()"
|
|
1676
|
+
(keydown.space)="$event.stopPropagation()"
|
|
1677
|
+
>
|
|
1678
|
+
<mat-icon [praxisIcon]="'preview'">preview</mat-icon>
|
|
1679
|
+
</button>
|
|
1680
|
+
}
|
|
1681
|
+
}
|
|
1576
1682
|
</mat-expansion-panel-header>
|
|
1577
1683
|
|
|
1578
1684
|
<ng-template matExpansionPanelContent>
|
|
@@ -1637,6 +1743,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1637
1743
|
@if (p.description) {
|
|
1638
1744
|
<mat-panel-description>{{ p.description }}</mat-panel-description>
|
|
1639
1745
|
}
|
|
1746
|
+
@if (resolvePanelQuickViewBinding(p); as qvBinding) {
|
|
1747
|
+
@if (hasPanelQuickViewTarget(p, 0, qvBinding)) {
|
|
1748
|
+
<button
|
|
1749
|
+
mat-icon-button
|
|
1750
|
+
type="button"
|
|
1751
|
+
class="praxis-expansion-header-quick-view-action"
|
|
1752
|
+
data-testid="expansion-panel-quick-view-action"
|
|
1753
|
+
[attr.aria-label]="resolvePanelQuickViewLabel(p)"
|
|
1754
|
+
[matTooltip]="resolvePanelQuickViewLabel(p)"
|
|
1755
|
+
[disabled]="!!p.disabled"
|
|
1756
|
+
[praxisQuickView]="qvBinding"
|
|
1757
|
+
[praxisQuickViewRecord]="resolvePanelQuickViewContext(p, 0)"
|
|
1758
|
+
[praxisQuickViewTriggerMode]="'explicit-button'"
|
|
1759
|
+
(click)="$event.stopPropagation()"
|
|
1760
|
+
(keydown.enter)="$event.stopPropagation()"
|
|
1761
|
+
(keydown.space)="$event.stopPropagation()"
|
|
1762
|
+
>
|
|
1763
|
+
<mat-icon [praxisIcon]="'preview'">preview</mat-icon>
|
|
1764
|
+
</button>
|
|
1765
|
+
}
|
|
1766
|
+
}
|
|
1640
1767
|
</mat-expansion-panel-header>
|
|
1641
1768
|
|
|
1642
1769
|
<ng-template matExpansionPanelContent>
|
|
@@ -1704,7 +1831,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1704
1831
|
<mat-icon fontIcon="edit"></mat-icon>
|
|
1705
1832
|
</button>
|
|
1706
1833
|
}
|
|
1707
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;position:relative;color:var(--md-sys-color-on-surface)}.praxis-expansion-root{display:block;--p-exp-surface: var(--md-sys-color-surface);--p-exp-surface-container: var(--md-sys-color-surface-container);--p-exp-border: var(--md-sys-color-outline-variant);--p-exp-text: var(--md-sys-color-on-surface);--p-exp-text-muted: var(--md-sys-color-on-surface-variant);--p-exp-focus: var(--md-sys-color-primary);--p-exp-radius: 12px}.mat-expansion-panel{background:var(--p-exp-surface);border:1px solid var(--p-exp-border);border-radius:var(--p-exp-radius);overflow:clip}.mat-expansion-panel:not(:last-child){margin-bottom:var(--p-exp-panel-gap, 12px)}.mat-expansion-panel-header{background:var(--p-exp-surface-container);color:var(--p-exp-text)}.mat-expansion-panel-header:focus-visible{outline:2px solid var(--p-exp-focus);outline-offset:-2px}.mat-expansion-panel-header-title{font-weight:600}.mat-expansion-panel-header-description{color:var(--p-exp-text-muted)}.mat-expansion-panel-body{padding:12px 16px 16px}.mat-action-row{border-top:1px solid var(--p-exp-border)}.density-compact .mat-expansion-panel-body{padding:8px 12px 12px}.density-compact .mat-expansion-panel-header{min-height:40px;padding:0 12px}.density-comfortable .mat-expansion-panel-body{padding:12px 16px 16px}.density-comfortable .mat-expansion-panel-header{min-height:48px;padding:0 16px}.density-spacious .mat-expansion-panel-body{padding:16px 20px 20px}.density-spacious .mat-expansion-panel-header{min-height:56px;padding:0 20px}.praxis-expansion-empty{display:block}.edit-fab{position:absolute;right:12px;bottom:12px;z-index:2}.expansion-ai-assistant{position:absolute;right:12px;bottom:72px;z-index:3}.expansion-ai-assistant-trigger{box-shadow:var(--md-sys-elevation-level2, 0 4px 12px rgba(0, 0, 0, .18))}\n"] }]
|
|
1834
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;position:relative;color:var(--md-sys-color-on-surface)}.praxis-expansion-root{display:block;--p-exp-surface: var(--md-sys-color-surface);--p-exp-surface-container: var(--md-sys-color-surface-container);--p-exp-border: var(--md-sys-color-outline-variant);--p-exp-text: var(--md-sys-color-on-surface);--p-exp-text-muted: var(--md-sys-color-on-surface-variant);--p-exp-focus: var(--md-sys-color-primary);--p-exp-radius: 12px}.mat-expansion-panel{background:var(--p-exp-surface);border:1px solid var(--p-exp-border);border-radius:var(--p-exp-radius);overflow:clip}.mat-expansion-panel:not(:last-child){margin-bottom:var(--p-exp-panel-gap, 12px)}.mat-expansion-panel-header{background:var(--p-exp-surface-container);color:var(--p-exp-text)}.mat-expansion-panel-header:focus-visible{outline:2px solid var(--p-exp-focus);outline-offset:-2px}.mat-expansion-panel-header-title{font-weight:600}.mat-expansion-panel-header-description{color:var(--p-exp-text-muted)}.praxis-expansion-header-quick-view-action{width:32px;height:32px;padding:4px;margin-left:auto;margin-right:4px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.praxis-expansion-header-quick-view-action mat-icon{font-size:18px;width:18px;height:18px}.mat-expansion-panel-body{padding:12px 16px 16px}.mat-action-row{border-top:1px solid var(--p-exp-border)}.density-compact .mat-expansion-panel-body{padding:8px 12px 12px}.density-compact .mat-expansion-panel-header{min-height:40px;padding:0 12px}.density-comfortable .mat-expansion-panel-body{padding:12px 16px 16px}.density-comfortable .mat-expansion-panel-header{min-height:48px;padding:0 16px}.density-spacious .mat-expansion-panel-body{padding:16px 20px 20px}.density-spacious .mat-expansion-panel-header{min-height:56px;padding:0 20px}.praxis-expansion-empty{display:block}.edit-fab{position:absolute;right:12px;bottom:12px;z-index:2}.expansion-ai-assistant{position:absolute;right:12px;bottom:72px;z-index:3}.expansion-ai-assistant-trigger{box-shadow:var(--md-sys-elevation-level2, 0 4px 12px rgba(0, 0, 0, .18))}\n"] }]
|
|
1708
1835
|
}], propDecorators: { config: [{
|
|
1709
1836
|
type: Input
|
|
1710
1837
|
}], expansionId: [{
|
|
@@ -2155,7 +2282,7 @@ class PraxisExpansionConfigEditor {
|
|
|
2155
2282
|
</section>
|
|
2156
2283
|
}
|
|
2157
2284
|
</div>
|
|
2158
|
-
`, isInline: true, styles: [":host{display:block;container-type:inline-size;color:var(--pfx-settings-panel-text-primary, var(--md-sys-color-on-surface))}.pdx-expansion-editor{display:grid;gap:16px}.sec{border:1px solid var(--pfx-settings-panel-border, var(--md-sys-color-outline-variant));padding:14px;border-radius:12px;background:var(--pfx-settings-panel-surface, var(--md-sys-color-surface-container-lowest));display:grid;gap:12px}.sec h4,.sec h5{margin:0;font-weight:600;color:var(--pfx-settings-panel-text-primary, var(--md-sys-color-on-surface))}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.wrap{flex-wrap:wrap}.panel-row{display:flex;gap:8px;align-items:center;width:100%;flex-wrap:wrap}.grow{flex:1 1 auto}.grid{display:grid;gap:10px;align-items:center}.grid.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.full{width:100%}.error{color:var(--md-sys-color-error);font-size:12px}.pdx-expansion-editor .mat-mdc-form-field{width:100%;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}@container (max-width: 600px){.grid.two{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.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: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type:
|
|
2285
|
+
`, isInline: true, styles: [":host{display:block;container-type:inline-size;color:var(--pfx-settings-panel-text-primary, var(--md-sys-color-on-surface))}.pdx-expansion-editor{display:grid;gap:16px}.sec{border:1px solid var(--pfx-settings-panel-border, var(--md-sys-color-outline-variant));padding:14px;border-radius:12px;background:var(--pfx-settings-panel-surface, var(--md-sys-color-surface-container-lowest));display:grid;gap:12px}.sec h4,.sec h5{margin:0;font-weight:600;color:var(--pfx-settings-panel-text-primary, var(--md-sys-color-on-surface))}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.wrap{flex-wrap:wrap}.panel-row{display:flex;gap:8px;align-items:center;width:100%;flex-wrap:wrap}.grow{flex:1 1 auto}.grid{display:grid;gap:10px;align-items:center}.grid.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.full{width:100%}.error{color:var(--md-sys-color-error);font-size:12px}.pdx-expansion-editor .mat-mdc-form-field{width:100%;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}@container (max-width: 600px){.grid.two{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.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: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i9.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2159
2286
|
}
|
|
2160
2287
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisExpansionConfigEditor, decorators: [{
|
|
2161
2288
|
type: Component,
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/expansion",
|
|
3
|
-
"version": "10.0.0-rc.
|
|
3
|
+
"version": "10.0.0-rc.42",
|
|
4
4
|
"description": "Expansion panel (accordion) components for Praxis UI with metadata configuration and editor integration.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
7
7
|
"@angular/core": "^21.0.0",
|
|
8
8
|
"@angular/material": "^21.0.0",
|
|
9
9
|
"@angular/cdk": "^21.0.0",
|
|
10
|
-
"@praxisui/core": "^10.0.0-rc.
|
|
11
|
-
"@praxisui/dynamic-fields": "^10.0.0-rc.
|
|
12
|
-
"@praxisui/settings-panel": "^10.0.0-rc.
|
|
10
|
+
"@praxisui/core": "^10.0.0-rc.42",
|
|
11
|
+
"@praxisui/dynamic-fields": "^10.0.0-rc.42",
|
|
12
|
+
"@praxisui/settings-panel": "^10.0.0-rc.42",
|
|
13
13
|
"@angular/forms": "^21.0.0",
|
|
14
14
|
"@angular/router": "^21.0.0",
|
|
15
|
-
"@praxisui/ai": "^10.0.0-rc.
|
|
15
|
+
"@praxisui/ai": "^10.0.0-rc.42",
|
|
16
16
|
"rxjs": "~7.8.0"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { OnChanges, OnDestroy, OnInit, EventEmitter, QueryList, SimpleChanges, AfterViewInit, Provider } from '@angular/core';
|
|
3
3
|
import { FormGroup } from '@angular/forms';
|
|
4
4
|
import { MatAccordionDisplayMode, MatAccordionTogglePosition, MatExpansionPanelDefaultOptions, MatAccordion, MatExpansionPanel } from '@angular/material/expansion';
|
|
5
|
-
import { AiCapability, FieldMetadata, WidgetDefinition, WidgetEventEnvelope, SettingsValueProvider as SettingsValueProvider$1, ComponentDocMeta, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest } from '@praxisui/core';
|
|
5
|
+
import { AiCapability, FieldMetadata, WidgetDefinition, ResourceQuickViewBinding, WidgetEventEnvelope, SettingsValueProvider as SettingsValueProvider$1, ComponentDocMeta, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest } from '@praxisui/core';
|
|
6
6
|
import { BehaviorSubject } from 'rxjs';
|
|
7
7
|
import { BaseAiAdapter, PatchResult, PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantSessionSnapshot, PraxisAssistantShellQuickReply, PraxisAssistantShellMessage, PraxisAssistantShellContextItem } from '@praxisui/ai';
|
|
8
8
|
import { SettingsValueProvider } from '@praxisui/settings-panel';
|
|
@@ -107,6 +107,17 @@ interface PanelMetadata {
|
|
|
107
107
|
icon?: string;
|
|
108
108
|
action?: string;
|
|
109
109
|
}>;
|
|
110
|
+
/**
|
|
111
|
+
* Optional governed Resource Quick View binding for the panel header.
|
|
112
|
+
* Rendered strictly as an explicit button (`triggerMode: 'explicit-button'`)
|
|
113
|
+
* with event propagation stopped so hovering or clicking never toggles the
|
|
114
|
+
* expansion panel.
|
|
115
|
+
*/
|
|
116
|
+
quickView?: ResourceQuickViewBinding;
|
|
117
|
+
/**
|
|
118
|
+
* Accessible label and tooltip for the panel header Quick View action button.
|
|
119
|
+
*/
|
|
120
|
+
quickViewActionLabel?: string;
|
|
110
121
|
}
|
|
111
122
|
declare class PraxisExpansion implements OnChanges, OnDestroy, OnInit {
|
|
112
123
|
config?: ExpansionMetadata | null;
|
|
@@ -195,6 +206,10 @@ declare class PraxisExpansion implements OnChanges, OnDestroy, OnInit {
|
|
|
195
206
|
private findPanel;
|
|
196
207
|
panelDomId(p: PanelMetadata | null, index: number): string;
|
|
197
208
|
panelFormFor(panel: PanelMetadata, index: number): FormGroup<Record<string, any>>;
|
|
209
|
+
resolvePanelQuickViewBinding(panel: PanelMetadata | null | undefined): ResourceQuickViewBinding | null;
|
|
210
|
+
resolvePanelQuickViewContext(panel: PanelMetadata, index: number): Record<string, unknown>;
|
|
211
|
+
hasPanelQuickViewTarget(panel: PanelMetadata, index: number, binding: ResourceQuickViewBinding | null | undefined): boolean;
|
|
212
|
+
resolvePanelQuickViewLabel(panel: PanelMetadata): string;
|
|
198
213
|
applyConfigFromAdapter(next: ExpansionMetadata): void;
|
|
199
214
|
openAiAssistant(): void;
|
|
200
215
|
openAiAssistantFromSession(session: PraxisAssistantSessionSnapshot): void;
|