@memberjunction/ng-base-forms 4.0.0 → 4.1.0
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/dist/lib/base-form-component.d.ts +103 -215
- package/dist/lib/base-form-component.d.ts.map +1 -1
- package/dist/lib/base-form-component.js +384 -541
- package/dist/lib/base-form-component.js.map +1 -1
- package/dist/lib/container/record-form-container.component.d.ts +165 -0
- package/dist/lib/container/record-form-container.component.d.ts.map +1 -0
- package/dist/lib/container/record-form-container.component.js +534 -0
- package/dist/lib/container/record-form-container.component.js.map +1 -0
- package/dist/lib/explorer-entity-data-grid.component.d.ts +7 -5
- package/dist/lib/explorer-entity-data-grid.component.d.ts.map +1 -1
- package/dist/lib/explorer-entity-data-grid.component.js +15 -9
- package/dist/lib/explorer-entity-data-grid.component.js.map +1 -1
- package/dist/lib/field/form-field.component.d.ts +268 -0
- package/dist/lib/field/form-field.component.d.ts.map +1 -0
- package/dist/lib/field/form-field.component.js +1194 -0
- package/dist/lib/field/form-field.component.js.map +1 -0
- package/dist/lib/form-state.interface.d.ts +2 -0
- package/dist/lib/form-state.interface.d.ts.map +1 -1
- package/dist/lib/form-state.interface.js.map +1 -1
- package/dist/lib/form-state.service.d.ts +14 -0
- package/dist/lib/form-state.service.d.ts.map +1 -1
- package/dist/lib/form-state.service.js +19 -0
- package/dist/lib/form-state.service.js.map +1 -1
- package/dist/lib/panel/collapsible-panel.component.d.ts +139 -0
- package/dist/lib/panel/collapsible-panel.component.d.ts.map +1 -0
- package/dist/lib/panel/collapsible-panel.component.js +468 -0
- package/dist/lib/panel/collapsible-panel.component.js.map +1 -0
- package/dist/lib/toolbar/form-toolbar.component.d.ts +170 -0
- package/dist/lib/toolbar/form-toolbar.component.d.ts.map +1 -0
- package/dist/lib/toolbar/form-toolbar.component.js +830 -0
- package/dist/lib/toolbar/form-toolbar.component.js.map +1 -0
- package/dist/lib/types/form-events.d.ts +90 -0
- package/dist/lib/types/form-events.d.ts.map +1 -0
- package/dist/lib/types/form-events.js +45 -0
- package/dist/lib/types/form-events.js.map +1 -0
- package/dist/lib/types/form-types.d.ts +150 -0
- package/dist/lib/types/form-types.d.ts.map +1 -0
- package/dist/lib/types/form-types.js +12 -0
- package/dist/lib/types/form-types.js.map +1 -0
- package/dist/lib/types/navigation-events.d.ts +88 -0
- package/dist/lib/types/navigation-events.d.ts.map +1 -0
- package/dist/lib/types/navigation-events.js +2 -0
- package/dist/lib/types/navigation-events.js.map +1 -0
- package/dist/lib/types/toolbar-config.d.ts +66 -0
- package/dist/lib/types/toolbar-config.d.ts.map +1 -0
- package/dist/lib/types/toolbar-config.js +38 -0
- package/dist/lib/types/toolbar-config.js.map +1 -0
- package/dist/module.d.ts +28 -20
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +47 -74
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +20 -8
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +24 -9
- package/dist/public-api.js.map +1 -1
- package/package.json +20 -23
- package/README.md +0 -449
- package/dist/lib/base-field-component.d.ts +0 -152
- package/dist/lib/base-field-component.d.ts.map +0 -1
- package/dist/lib/base-field-component.js +0 -669
- package/dist/lib/base-field-component.js.map +0 -1
- package/dist/lib/base-form-context.d.ts +0 -23
- package/dist/lib/base-form-context.d.ts.map +0 -1
- package/dist/lib/base-form-context.js +0 -10
- package/dist/lib/base-form-context.js.map +0 -1
- package/dist/lib/collapsible-panel.component.d.ts +0 -68
- package/dist/lib/collapsible-panel.component.d.ts.map +0 -1
- package/dist/lib/collapsible-panel.component.js +0 -330
- package/dist/lib/collapsible-panel.component.js.map +0 -1
- package/dist/lib/form-section-controls.component.d.ts +0 -35
- package/dist/lib/form-section-controls.component.d.ts.map +0 -1
- package/dist/lib/form-section-controls.component.js +0 -273
- package/dist/lib/form-section-controls.component.js.map +0 -1
- package/dist/lib/link-field.component.d.ts +0 -62
- package/dist/lib/link-field.component.d.ts.map +0 -1
- package/dist/lib/link-field.component.js +0 -392
- package/dist/lib/link-field.component.js.map +0 -1
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, inject, ContentChildren, HostBinding, HostListener, ElementRef, ViewChild, NgZone, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { takeUntil } from 'rxjs/operators';
|
|
4
|
+
import { MjFormFieldComponent } from '../field/form-field.component';
|
|
5
|
+
import { CompositeKey } from '@memberjunction/core';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
const _c0 = ["panelContent"];
|
|
8
|
+
const _c1 = ["*"];
|
|
9
|
+
function MjCollapsiblePanelComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
+
i0.ɵɵelementStart(0, "span", 14);
|
|
11
|
+
i0.ɵɵtext(1);
|
|
12
|
+
i0.ɵɵelementEnd();
|
|
13
|
+
} if (rf & 2) {
|
|
14
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
15
|
+
i0.ɵɵclassProp("mj-forms-row-count-badge--zero", ctx_r1.BadgeCount === 0);
|
|
16
|
+
i0.ɵɵadvance();
|
|
17
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.BadgeCount, " ");
|
|
18
|
+
} }
|
|
19
|
+
function MjCollapsiblePanelComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
21
|
+
i0.ɵɵelementStart(0, "a", 15);
|
|
22
|
+
i0.ɵɵlistener("click", function MjCollapsiblePanelComponent_Conditional_9_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnInheritedBadgeClick($event)); });
|
|
23
|
+
i0.ɵɵelement(1, "i", 16);
|
|
24
|
+
i0.ɵɵtext(2);
|
|
25
|
+
i0.ɵɵelementEnd();
|
|
26
|
+
} if (rf & 2) {
|
|
27
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
28
|
+
i0.ɵɵproperty("title", "View parent record: " + ctx_r1.InheritedFromEntity);
|
|
29
|
+
i0.ɵɵadvance(2);
|
|
30
|
+
i0.ɵɵtextInterpolate1(" Inherited from ", ctx_r1.InheritedFromEntity, " ");
|
|
31
|
+
} }
|
|
32
|
+
/**
|
|
33
|
+
* Reusable collapsible panel for form sections.
|
|
34
|
+
*
|
|
35
|
+
* Supports three visual variants:
|
|
36
|
+
* - **default**: White card with accent border (standard field sections)
|
|
37
|
+
* - **related-entity**: Blue-accented card with row count badge (related entity grids)
|
|
38
|
+
* - **inherited**: Purple-accented card with "Inherited from X" badge (IS-A parent field sections)
|
|
39
|
+
*
|
|
40
|
+
* Features:
|
|
41
|
+
* - Expand/collapse with smooth animation
|
|
42
|
+
* - Search filtering (hides non-matching panels, highlights matched names)
|
|
43
|
+
* - Drag-to-reorder sections
|
|
44
|
+
* - Inheritable "Inherited from X" badge with navigation event
|
|
45
|
+
* - Row count badge for related entity sections
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```html
|
|
49
|
+
* <mj-collapsible-panel
|
|
50
|
+
* SectionKey="productDetails"
|
|
51
|
+
* SectionName="Product Details"
|
|
52
|
+
* Icon="fa fa-box"
|
|
53
|
+
* Variant="inherited"
|
|
54
|
+
* InheritedFromEntity="Products"
|
|
55
|
+
* [Form]="formComponent"
|
|
56
|
+
* [FormContext]="formContext"
|
|
57
|
+
* (Navigate)="onNavigate($event)">
|
|
58
|
+
* <mj-form-field ...></mj-form-field>
|
|
59
|
+
* </mj-collapsible-panel>
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export class MjCollapsiblePanelComponent {
|
|
63
|
+
cdr = inject(ChangeDetectorRef);
|
|
64
|
+
elementRef = inject(ElementRef);
|
|
65
|
+
ngZone = inject(NgZone);
|
|
66
|
+
/** Unique key for state persistence */
|
|
67
|
+
SectionKey = '';
|
|
68
|
+
/** Display name shown in the panel header */
|
|
69
|
+
SectionName = '';
|
|
70
|
+
/** Font Awesome icon class for the panel header */
|
|
71
|
+
Icon = 'fa fa-folder';
|
|
72
|
+
/**
|
|
73
|
+
* Reference to the parent form component for state delegation.
|
|
74
|
+
* Expected to have IsSectionExpanded, SetSectionExpanded, getSectionDisplayOrder methods.
|
|
75
|
+
*/
|
|
76
|
+
Form;
|
|
77
|
+
/** Form-level context (search filter, showEmptyFields) */
|
|
78
|
+
FormContext;
|
|
79
|
+
/** Panel visual variant */
|
|
80
|
+
Variant = 'default';
|
|
81
|
+
/** Row count badge for related entity sections */
|
|
82
|
+
BadgeCount;
|
|
83
|
+
/** Default expanded state when no persisted state exists */
|
|
84
|
+
DefaultExpanded;
|
|
85
|
+
/**
|
|
86
|
+
* For 'inherited' variant: the parent entity name this section's fields come from.
|
|
87
|
+
* Displayed as "Inherited from X" badge and used for navigation.
|
|
88
|
+
*/
|
|
89
|
+
InheritedFromEntity = '';
|
|
90
|
+
/**
|
|
91
|
+
* For 'inherited' variant: the primary key to navigate to when clicking the badge.
|
|
92
|
+
* (Shared PK in IS-A relationships.)
|
|
93
|
+
*/
|
|
94
|
+
InheritedRecordPrimaryKey;
|
|
95
|
+
// ---- Deprecated camelCase aliases (backward compat) ----
|
|
96
|
+
/** @deprecated Use [SectionKey] instead */
|
|
97
|
+
set _deprecatedSectionKey(value) { this.SectionKey = value; }
|
|
98
|
+
/** @deprecated Use [SectionName] instead */
|
|
99
|
+
set _deprecatedSectionName(value) { this.SectionName = value; }
|
|
100
|
+
/** @deprecated Use [Icon] instead */
|
|
101
|
+
set _deprecatedIcon(value) { this.Icon = value; }
|
|
102
|
+
/** @deprecated Use [Form] instead */
|
|
103
|
+
set _deprecatedForm(value) { this.Form = value; }
|
|
104
|
+
/** @deprecated Use [FormContext] instead */
|
|
105
|
+
set _deprecatedFormContext(value) { this.FormContext = value; }
|
|
106
|
+
// ---- Outputs ----
|
|
107
|
+
DragStarted = new EventEmitter();
|
|
108
|
+
DragEnded = new EventEmitter();
|
|
109
|
+
PanelDrop = new EventEmitter();
|
|
110
|
+
Navigate = new EventEmitter();
|
|
111
|
+
// ---- Content Children ----
|
|
112
|
+
FieldComponents;
|
|
113
|
+
// ---- State ----
|
|
114
|
+
DisplayName = '';
|
|
115
|
+
FieldNames = '';
|
|
116
|
+
IsVisible = true;
|
|
117
|
+
get IsHidden() {
|
|
118
|
+
return !this.IsVisible;
|
|
119
|
+
}
|
|
120
|
+
get CssOrder() {
|
|
121
|
+
const formRef = this.Form;
|
|
122
|
+
return formRef?.getSectionDisplayOrder ? formRef.getSectionDisplayOrder(this.SectionKey) : 0;
|
|
123
|
+
}
|
|
124
|
+
IsDragging = false;
|
|
125
|
+
IsDragOver = false;
|
|
126
|
+
// ---- Event relay ----
|
|
127
|
+
/** Signals re-subscription when ContentChildren change */
|
|
128
|
+
fieldNavReset$ = new Subject();
|
|
129
|
+
// ---- Panel content resize ----
|
|
130
|
+
panelContentRef;
|
|
131
|
+
resizeObserver;
|
|
132
|
+
resizeDebounceTimer;
|
|
133
|
+
/**
|
|
134
|
+
* Persisted panel height for related-entity panels.
|
|
135
|
+
* Returns undefined to let CSS default (400px) apply.
|
|
136
|
+
*/
|
|
137
|
+
get PanelContentHeight() {
|
|
138
|
+
if (this.Variant !== 'related-entity')
|
|
139
|
+
return undefined;
|
|
140
|
+
const formRef = this.Form;
|
|
141
|
+
return formRef?.GetSectionPanelHeight?.(this.SectionKey);
|
|
142
|
+
}
|
|
143
|
+
/** Whether the panel is expanded (delegates to form state) */
|
|
144
|
+
get Expanded() {
|
|
145
|
+
const formRef = this.Form;
|
|
146
|
+
return formRef?.IsSectionExpanded ? formRef.IsSectionExpanded(this.SectionKey, this.DefaultExpanded) : true;
|
|
147
|
+
}
|
|
148
|
+
// ---- Lifecycle ----
|
|
149
|
+
ngOnInit() {
|
|
150
|
+
this.DisplayName = this.SectionName;
|
|
151
|
+
}
|
|
152
|
+
ngAfterContentInit() {
|
|
153
|
+
this.UpdateFieldNames();
|
|
154
|
+
this.SubscribeToFieldNavigateEvents();
|
|
155
|
+
this.FieldComponents.changes.subscribe(() => {
|
|
156
|
+
this.UpdateFieldNames();
|
|
157
|
+
this.SubscribeToFieldNavigateEvents();
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
ngOnChanges(changes) {
|
|
161
|
+
if (changes['SectionName']) {
|
|
162
|
+
this.DisplayName = this.SectionName;
|
|
163
|
+
}
|
|
164
|
+
if (changes['SectionName'] || changes['FormContext']) {
|
|
165
|
+
this.UpdateVisibilityAndHighlighting();
|
|
166
|
+
}
|
|
167
|
+
if (changes['FormContext'] && this.FieldComponents) {
|
|
168
|
+
this.FieldComponents.forEach(field => {
|
|
169
|
+
field.FormContext = this.FormContext;
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
ngAfterViewInit() {
|
|
174
|
+
this.SetupResizeObserver();
|
|
175
|
+
}
|
|
176
|
+
ngOnDestroy() {
|
|
177
|
+
this.fieldNavReset$.next();
|
|
178
|
+
this.fieldNavReset$.complete();
|
|
179
|
+
this.resizeObserver?.disconnect();
|
|
180
|
+
if (this.resizeDebounceTimer) {
|
|
181
|
+
clearTimeout(this.resizeDebounceTimer);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
// ---- Actions ----
|
|
185
|
+
Toggle() {
|
|
186
|
+
const formRef = this.Form;
|
|
187
|
+
if (formRef?.SetSectionExpanded) {
|
|
188
|
+
formRef.SetSectionExpanded(this.SectionKey, !this.Expanded);
|
|
189
|
+
this.cdr.markForCheck();
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Navigate to the parent entity when clicking the "Inherited from X" badge.
|
|
194
|
+
*/
|
|
195
|
+
OnInheritedBadgeClick(event) {
|
|
196
|
+
event.stopPropagation();
|
|
197
|
+
if (!this.InheritedFromEntity)
|
|
198
|
+
return;
|
|
199
|
+
this.Navigate.emit({
|
|
200
|
+
Kind: 'entity-hierarchy',
|
|
201
|
+
EntityName: this.InheritedFromEntity,
|
|
202
|
+
PrimaryKey: this.InheritedRecordPrimaryKey ?? new CompositeKey([]),
|
|
203
|
+
Direction: 'parent'
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
// ---- Drag and Drop ----
|
|
207
|
+
OnDragOver(event) {
|
|
208
|
+
event.preventDefault();
|
|
209
|
+
event.stopPropagation();
|
|
210
|
+
if (event.dataTransfer?.types.includes('text/plain')) {
|
|
211
|
+
this.IsDragOver = true;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
OnDragLeave(event) {
|
|
215
|
+
event.preventDefault();
|
|
216
|
+
this.IsDragOver = false;
|
|
217
|
+
}
|
|
218
|
+
OnDrop(event) {
|
|
219
|
+
event.preventDefault();
|
|
220
|
+
event.stopPropagation();
|
|
221
|
+
this.IsDragOver = false;
|
|
222
|
+
const sourceSectionKey = event.dataTransfer?.getData('text/plain');
|
|
223
|
+
if (sourceSectionKey && sourceSectionKey !== this.SectionKey) {
|
|
224
|
+
this.PanelDrop.emit({
|
|
225
|
+
SourceSectionKey: sourceSectionKey,
|
|
226
|
+
TargetSectionKey: this.SectionKey
|
|
227
|
+
});
|
|
228
|
+
this.ReorderSections(sourceSectionKey, this.SectionKey);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
OnDragStart(event) {
|
|
232
|
+
this.IsDragging = true;
|
|
233
|
+
event.dataTransfer?.setData('text/plain', this.SectionKey);
|
|
234
|
+
if (event.dataTransfer) {
|
|
235
|
+
event.dataTransfer.effectAllowed = 'move';
|
|
236
|
+
}
|
|
237
|
+
this.DragStarted.emit({ SectionKey: this.SectionKey, Event: event });
|
|
238
|
+
}
|
|
239
|
+
OnDragEnd() {
|
|
240
|
+
this.IsDragging = false;
|
|
241
|
+
this.DragEnded.emit();
|
|
242
|
+
}
|
|
243
|
+
// ---- Private Methods ----
|
|
244
|
+
ReorderSections(sourceSectionKey, targetSectionKey) {
|
|
245
|
+
const formRef = this.Form;
|
|
246
|
+
if (!formRef?.getSectionOrder || !formRef?.setSectionOrder)
|
|
247
|
+
return;
|
|
248
|
+
const currentOrder = formRef.getSectionOrder();
|
|
249
|
+
const sourceIndex = currentOrder.indexOf(sourceSectionKey);
|
|
250
|
+
const targetIndex = currentOrder.indexOf(targetSectionKey);
|
|
251
|
+
if (sourceIndex === -1 || targetIndex === -1)
|
|
252
|
+
return;
|
|
253
|
+
const newOrder = [...currentOrder];
|
|
254
|
+
newOrder.splice(sourceIndex, 1);
|
|
255
|
+
newOrder.splice(targetIndex, 0, sourceSectionKey);
|
|
256
|
+
formRef.setSectionOrder(newOrder);
|
|
257
|
+
this.cdr.markForCheck();
|
|
258
|
+
}
|
|
259
|
+
UpdateFieldNames() {
|
|
260
|
+
if (this.FieldComponents) {
|
|
261
|
+
const names = [];
|
|
262
|
+
this.FieldComponents.forEach(field => {
|
|
263
|
+
if (field.DisplayName) {
|
|
264
|
+
names.push(field.DisplayName.toLowerCase());
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
this.FieldNames = names.join(' ');
|
|
268
|
+
this.UpdateVisibilityAndHighlighting();
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Subscribes to Navigate events from all child form-field components
|
|
273
|
+
* and relays them through this panel's Navigate output.
|
|
274
|
+
*/
|
|
275
|
+
SubscribeToFieldNavigateEvents() {
|
|
276
|
+
this.fieldNavReset$.next(); // tear down previous subscriptions
|
|
277
|
+
this.FieldComponents.forEach(field => {
|
|
278
|
+
field.Navigate.pipe(takeUntil(this.fieldNavReset$)).subscribe((event) => {
|
|
279
|
+
this.Navigate.emit(event);
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Sets up a ResizeObserver on the panel content div for related-entity panels.
|
|
285
|
+
* When the user drags the CSS resize handle, we persist the new height.
|
|
286
|
+
*/
|
|
287
|
+
SetupResizeObserver() {
|
|
288
|
+
if (this.Variant !== 'related-entity' || !this.panelContentRef)
|
|
289
|
+
return;
|
|
290
|
+
const el = this.panelContentRef.nativeElement;
|
|
291
|
+
// Run outside Angular zone to avoid triggering change detection on every resize frame
|
|
292
|
+
this.ngZone.runOutsideAngular(() => {
|
|
293
|
+
this.resizeObserver = new ResizeObserver((entries) => {
|
|
294
|
+
const entry = entries[0];
|
|
295
|
+
if (!entry)
|
|
296
|
+
return;
|
|
297
|
+
const newHeight = Math.round(entry.contentRect.height);
|
|
298
|
+
this.DebouncePersistHeight(newHeight);
|
|
299
|
+
});
|
|
300
|
+
this.resizeObserver.observe(el);
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Debounces height persistence so we don't write to DB on every resize frame.
|
|
305
|
+
*/
|
|
306
|
+
DebouncePersistHeight(height) {
|
|
307
|
+
if (this.resizeDebounceTimer) {
|
|
308
|
+
clearTimeout(this.resizeDebounceTimer);
|
|
309
|
+
}
|
|
310
|
+
this.resizeDebounceTimer = setTimeout(() => {
|
|
311
|
+
const formRef = this.Form;
|
|
312
|
+
formRef?.SetSectionPanelHeight?.(this.SectionKey, height);
|
|
313
|
+
}, 500);
|
|
314
|
+
}
|
|
315
|
+
UpdateVisibilityAndHighlighting() {
|
|
316
|
+
const searchTerm = (this.FormContext?.sectionFilter || '').toLowerCase().trim();
|
|
317
|
+
if (!searchTerm) {
|
|
318
|
+
this.IsVisible = true;
|
|
319
|
+
this.DisplayName = this.SectionName;
|
|
320
|
+
this.cdr.markForCheck();
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
const sectionMatches = this.SectionName.toLowerCase().includes(searchTerm);
|
|
324
|
+
const fieldsMatch = this.FieldNames.includes(searchTerm);
|
|
325
|
+
this.IsVisible = sectionMatches || fieldsMatch;
|
|
326
|
+
if (this.IsVisible && sectionMatches) {
|
|
327
|
+
const escaped = searchTerm.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
328
|
+
const regex = new RegExp(escaped, 'gi');
|
|
329
|
+
this.DisplayName = this.SectionName.replace(regex, '<mark class="mj-forms-search-highlight">$&</mark>');
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
this.DisplayName = this.SectionName;
|
|
333
|
+
}
|
|
334
|
+
this.cdr.markForCheck();
|
|
335
|
+
}
|
|
336
|
+
static ɵfac = function MjCollapsiblePanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MjCollapsiblePanelComponent)(); };
|
|
337
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MjCollapsiblePanelComponent, selectors: [["mj-collapsible-panel"]], contentQueries: function MjCollapsiblePanelComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
338
|
+
i0.ɵɵcontentQuery(dirIndex, MjFormFieldComponent, 5);
|
|
339
|
+
} if (rf & 2) {
|
|
340
|
+
let _t;
|
|
341
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.FieldComponents = _t);
|
|
342
|
+
} }, viewQuery: function MjCollapsiblePanelComponent_Query(rf, ctx) { if (rf & 1) {
|
|
343
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
344
|
+
} if (rf & 2) {
|
|
345
|
+
let _t;
|
|
346
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.panelContentRef = _t.first);
|
|
347
|
+
} }, hostVars: 8, hostBindings: function MjCollapsiblePanelComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
348
|
+
i0.ɵɵlistener("dragover", function MjCollapsiblePanelComponent_dragover_HostBindingHandler($event) { return ctx.OnDragOver($event); })("dragleave", function MjCollapsiblePanelComponent_dragleave_HostBindingHandler($event) { return ctx.OnDragLeave($event); })("drop", function MjCollapsiblePanelComponent_drop_HostBindingHandler($event) { return ctx.OnDrop($event); });
|
|
349
|
+
} if (rf & 2) {
|
|
350
|
+
i0.ɵɵstyleProp("order", ctx.CssOrder);
|
|
351
|
+
i0.ɵɵclassProp("mj-search-hidden", ctx.IsHidden)("mj-dragging", ctx.IsDragging)("mj-drag-over", ctx.IsDragOver);
|
|
352
|
+
} }, inputs: { SectionKey: "SectionKey", SectionName: "SectionName", Icon: "Icon", Form: "Form", FormContext: "FormContext", Variant: "Variant", BadgeCount: "BadgeCount", DefaultExpanded: "DefaultExpanded", InheritedFromEntity: "InheritedFromEntity", InheritedRecordPrimaryKey: "InheritedRecordPrimaryKey", _deprecatedSectionKey: [0, "sectionKey", "_deprecatedSectionKey"], _deprecatedSectionName: [0, "sectionName", "_deprecatedSectionName"], _deprecatedIcon: [0, "icon", "_deprecatedIcon"], _deprecatedForm: [0, "form", "_deprecatedForm"], _deprecatedFormContext: [0, "formContext", "_deprecatedFormContext"] }, outputs: { DragStarted: "DragStarted", DragEnded: "DragEnded", PanelDrop: "PanelDrop", Navigate: "Navigate" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c1, decls: 16, vars: 16, consts: [["panelContent", ""], [1, "mj-forms-panel"], ["role", "button", "tabindex", "0", 1, "mj-forms-panel-header", 3, "click"], ["title", "Drag to reorder sections", "draggable", "true", 1, "mj-forms-drag-handle", 3, "dragstart", "dragend", "click"], [1, "fa-solid", "fa-grip-vertical"], [1, "mj-forms-panel-title-group"], [1, "mj-forms-panel-icon"], [1, "mj-forms-panel-title"], [3, "innerHTML"], [1, "mj-forms-row-count-badge", 3, "mj-forms-row-count-badge--zero"], [1, "mj-forms-inherited-badge", 3, "title"], [1, "mj-forms-panel-chevron"], [1, "mj-forms-panel-body"], [1, "mj-forms-panel-content"], [1, "mj-forms-row-count-badge"], [1, "mj-forms-inherited-badge", 3, "click", "title"], [1, "fa-solid", "fa-arrow-up"]], template: function MjCollapsiblePanelComponent_Template(rf, ctx) { if (rf & 1) {
|
|
353
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
354
|
+
i0.ɵɵprojectionDef();
|
|
355
|
+
i0.ɵɵelementStart(0, "div", 1)(1, "div", 2);
|
|
356
|
+
i0.ɵɵlistener("click", function MjCollapsiblePanelComponent_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.Toggle()); });
|
|
357
|
+
i0.ɵɵelementStart(2, "div", 3);
|
|
358
|
+
i0.ɵɵlistener("dragstart", function MjCollapsiblePanelComponent_Template_div_dragstart_2_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.OnDragStart($event)); })("dragend", function MjCollapsiblePanelComponent_Template_div_dragend_2_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.OnDragEnd()); })("click", function MjCollapsiblePanelComponent_Template_div_click_2_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
359
|
+
i0.ɵɵelement(3, "i", 4);
|
|
360
|
+
i0.ɵɵelementEnd();
|
|
361
|
+
i0.ɵɵelementStart(4, "div", 5);
|
|
362
|
+
i0.ɵɵelement(5, "i", 6);
|
|
363
|
+
i0.ɵɵelementStart(6, "h3", 7);
|
|
364
|
+
i0.ɵɵelement(7, "span", 8);
|
|
365
|
+
i0.ɵɵconditionalCreate(8, MjCollapsiblePanelComponent_Conditional_8_Template, 2, 3, "span", 9);
|
|
366
|
+
i0.ɵɵelementEnd()();
|
|
367
|
+
i0.ɵɵconditionalCreate(9, MjCollapsiblePanelComponent_Conditional_9_Template, 3, 2, "a", 10);
|
|
368
|
+
i0.ɵɵelementStart(10, "div", 11);
|
|
369
|
+
i0.ɵɵelement(11, "i");
|
|
370
|
+
i0.ɵɵelementEnd()();
|
|
371
|
+
i0.ɵɵelementStart(12, "div", 12)(13, "div", 13, 0);
|
|
372
|
+
i0.ɵɵprojection(15);
|
|
373
|
+
i0.ɵɵelementEnd()()();
|
|
374
|
+
} if (rf & 2) {
|
|
375
|
+
i0.ɵɵclassProp("mj-forms-panel--related", ctx.Variant === "related-entity")("mj-forms-panel--inherited", ctx.Variant === "inherited");
|
|
376
|
+
i0.ɵɵattribute("data-section-key", ctx.SectionKey);
|
|
377
|
+
i0.ɵɵadvance(5);
|
|
378
|
+
i0.ɵɵclassMap(ctx.Icon);
|
|
379
|
+
i0.ɵɵadvance(2);
|
|
380
|
+
i0.ɵɵproperty("innerHTML", ctx.DisplayName, i0.ɵɵsanitizeHtml);
|
|
381
|
+
i0.ɵɵadvance();
|
|
382
|
+
i0.ɵɵconditional(ctx.BadgeCount !== undefined ? 8 : -1);
|
|
383
|
+
i0.ɵɵadvance();
|
|
384
|
+
i0.ɵɵconditional(ctx.Variant === "inherited" && ctx.InheritedFromEntity ? 9 : -1);
|
|
385
|
+
i0.ɵɵadvance(2);
|
|
386
|
+
i0.ɵɵclassMap(ctx.Expanded ? "fa fa-chevron-up" : "fa fa-chevron-down");
|
|
387
|
+
i0.ɵɵadvance();
|
|
388
|
+
i0.ɵɵclassProp("mj-forms-panel-body--collapsed", !ctx.Expanded);
|
|
389
|
+
i0.ɵɵadvance();
|
|
390
|
+
i0.ɵɵstyleProp("height", ctx.PanelContentHeight, "px");
|
|
391
|
+
} }, styles: ["mj-collapsible-panel {\n --mj-card-bg: #ffffff;\n --mj-card-radius: 8px;\n --mj-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.05);\n --mj-accent: #667eea;\n --mj-accent-light: rgba(102, 126, 234, 0.08);\n --mj-text-primary: #1f2937;\n --mj-text-secondary: #6b7280;\n --mj-text-muted: #9ca3af;\n --mj-border: #e5e7eb;\n --mj-success: #10b981;\n --mj-isa-parent: #8b5cf6;\n --mj-related-accent: #3b82f6;\n --mj-transition: 200ms;\n\n display: block;\n}\n\nmj-collapsible-panel.mj-search-hidden {\n display: none;\n}\n\nmj-collapsible-panel.mj-drag-over {\n border: 2px dashed var(--mj-accent);\n border-radius: var(--mj-card-radius);\n}\n\n/* ============================================\n PANEL CARD\n ============================================ */\n.mj-forms-panel {\n background: var(--mj-card-bg);\n border-radius: var(--mj-card-radius);\n box-shadow: var(--mj-card-shadow);\n border: 1px solid rgba(0, 0, 0, 0.07);\n overflow: hidden;\n transition: all 0.3s ease;\n}\n\n/* ============================================\n HEADER\n ============================================ */\n.mj-forms-panel-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 20px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid var(--mj-border);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.mj-forms-panel-header:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: var(--mj-accent);\n}\n\n/* Drag handle */\n.mj-forms-drag-handle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 0;\n height: 24px;\n color: var(--mj-text-muted);\n cursor: grab;\n opacity: 0;\n overflow: hidden;\n transition: width var(--mj-transition) ease, opacity var(--mj-transition) ease;\n flex-shrink: 0;\n}\n\n.mj-forms-panel-header:hover .mj-forms-drag-handle {\n width: 24px;\n opacity: 1;\n}\n\n.mj-forms-drag-handle:hover {\n color: var(--mj-accent);\n}\n\n.mj-forms-drag-handle:active {\n cursor: grabbing;\n}\n\nmj-collapsible-panel.mj-dragging .mj-forms-drag-handle {\n width: 24px;\n opacity: 1;\n color: var(--mj-accent);\n}\n\n/* Title group */\n.mj-forms-panel-title-group {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.mj-forms-panel-icon {\n font-size: 18px;\n color: var(--mj-accent);\n width: 24px;\n text-align: center;\n}\n\n.mj-forms-panel-title {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.mj-forms-panel-chevron {\n color: var(--mj-text-secondary);\n font-size: 14px;\n transition: transform 0.3s ease;\n padding: 4px;\n}\n\n/* Row count badge */\n.mj-forms-row-count-badge {\n background: var(--mj-success);\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 24px;\n line-height: 1;\n}\n\n.mj-forms-row-count-badge--zero {\n background: var(--mj-text-muted);\n}\n\n/* ============================================\n INHERITED VARIANT (IS-A parent fields)\n ============================================ */\n.mj-forms-panel--inherited {\n border-left: 3px solid var(--mj-isa-parent);\n}\n\n.mj-forms-panel--inherited .mj-forms-panel-header {\n background: linear-gradient(135deg, #f5f3ff 0%, #ffffff 100%);\n}\n\n.mj-forms-panel--inherited .mj-forms-panel-header:hover {\n background: linear-gradient(135deg, #ede9fe 0%, #f5f3ff 100%);\n border-bottom-color: var(--mj-isa-parent);\n}\n\n.mj-forms-panel--inherited .mj-forms-panel-icon {\n color: var(--mj-isa-parent);\n}\n\n.mj-forms-inherited-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 4px;\n background: #f3f0ff;\n color: var(--mj-isa-parent);\n border: 1px solid #e0d5ff;\n cursor: pointer;\n transition: all var(--mj-transition) ease;\n text-decoration: none;\n}\n\n.mj-forms-inherited-badge:hover {\n background: #e8e0ff;\n border-color: var(--mj-isa-parent);\n box-shadow: 0 2px 6px rgba(139, 92, 246, 0.2);\n}\n\n.mj-forms-inherited-badge i {\n font-size: 10px;\n}\n\n/* ============================================\n RELATED ENTITY VARIANT\n ============================================ */\n.mj-forms-panel--related {\n border-left: 3px solid var(--mj-related-accent);\n}\n\n.mj-forms-panel--related .mj-forms-panel-header {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.mj-forms-panel--related .mj-forms-panel-header:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: var(--mj-related-accent);\n}\n\n.mj-forms-panel--related .mj-forms-panel-icon {\n color: var(--mj-related-accent);\n}\n\n/* Related entity content \u2014 400px default, user can drag-resize vertically */\n.mj-forms-panel--related .mj-forms-panel-content {\n height: 400px;\n padding: 0;\n overflow: hidden;\n resize: vertical;\n min-height: 120px;\n max-height: 800px;\n}\n\n/* Ensure child chain fills the resizable content area */\n.mj-forms-panel--related .mj-forms-panel-content > *,\n.mj-forms-panel--related .mj-forms-panel-content > .ng-star-inserted {\n height: 100%;\n}\n\n.mj-forms-panel--related .mj-forms-panel-content > * > * {\n height: 100%;\n}\n\n/* Related entity panels need the body to not clip the resize handle */\n.mj-forms-panel--related .mj-forms-panel-body {\n overflow: visible;\n}\n\n/* ============================================\n BODY (collapsible)\n ============================================ */\n.mj-forms-panel-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.mj-forms-panel-body--collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.mj-forms-panel-content {\n padding: 20px;\n overflow: auto;\n max-height: 600px;\n}\n\n/* ============================================\n SEARCH HIGHLIGHTING\n ============================================ */\n.mj-forms-panel-title ::ng-deep .mj-forms-search-highlight {\n background-color: #fef08a;\n color: #854d0e;\n padding: 0;\n border-radius: 2px;\n font-weight: 700;\n box-shadow: 0 0 0 2px #fef08a;\n}\n"], encapsulation: 2, changeDetection: 0 });
|
|
392
|
+
}
|
|
393
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MjCollapsiblePanelComponent, [{
|
|
394
|
+
type: Component,
|
|
395
|
+
args: [{ standalone: false, selector: 'mj-collapsible-panel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"mj-forms-panel\"\n [class.mj-forms-panel--related]=\"Variant === 'related-entity'\"\n [class.mj-forms-panel--inherited]=\"Variant === 'inherited'\"\n [attr.data-section-key]=\"SectionKey\">\n\n <!-- Panel Header -->\n <div class=\"mj-forms-panel-header\" role=\"button\" tabindex=\"0\" (click)=\"Toggle()\">\n <!-- Drag Handle -->\n <div class=\"mj-forms-drag-handle\"\n title=\"Drag to reorder sections\"\n draggable=\"true\"\n (dragstart)=\"OnDragStart($event)\"\n (dragend)=\"OnDragEnd()\"\n (click)=\"$event.stopPropagation()\">\n <i class=\"fa-solid fa-grip-vertical\"></i>\n </div>\n\n <!-- Icon + Title -->\n <div class=\"mj-forms-panel-title-group\">\n <i [class]=\"Icon\" class=\"mj-forms-panel-icon\"></i>\n <h3 class=\"mj-forms-panel-title\">\n <span [innerHTML]=\"DisplayName\"></span>\n <!-- Row count badge for related entities -->\n @if (BadgeCount !== undefined) {\n <span class=\"mj-forms-row-count-badge\" [class.mj-forms-row-count-badge--zero]=\"BadgeCount === 0\">\n {{ BadgeCount }}\n </span>\n }\n </h3>\n </div>\n\n <!-- Inherited From badge (IS-A) -->\n @if (Variant === 'inherited' && InheritedFromEntity) {\n <a class=\"mj-forms-inherited-badge\" (click)=\"OnInheritedBadgeClick($event)\"\n [title]=\"'View parent record: ' + InheritedFromEntity\">\n <i class=\"fa-solid fa-arrow-up\"></i>\n Inherited from {{ InheritedFromEntity }}\n </a>\n }\n\n <!-- Chevron -->\n <div class=\"mj-forms-panel-chevron\">\n <i [class]=\"Expanded ? 'fa fa-chevron-up' : 'fa fa-chevron-down'\"></i>\n </div>\n </div>\n\n <!-- Panel Body -->\n <div class=\"mj-forms-panel-body\" [class.mj-forms-panel-body--collapsed]=\"!Expanded\">\n <div class=\"mj-forms-panel-content\"\n #panelContent\n [style.height.px]=\"PanelContentHeight\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: ["mj-collapsible-panel {\n --mj-card-bg: #ffffff;\n --mj-card-radius: 8px;\n --mj-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.05);\n --mj-accent: #667eea;\n --mj-accent-light: rgba(102, 126, 234, 0.08);\n --mj-text-primary: #1f2937;\n --mj-text-secondary: #6b7280;\n --mj-text-muted: #9ca3af;\n --mj-border: #e5e7eb;\n --mj-success: #10b981;\n --mj-isa-parent: #8b5cf6;\n --mj-related-accent: #3b82f6;\n --mj-transition: 200ms;\n\n display: block;\n}\n\nmj-collapsible-panel.mj-search-hidden {\n display: none;\n}\n\nmj-collapsible-panel.mj-drag-over {\n border: 2px dashed var(--mj-accent);\n border-radius: var(--mj-card-radius);\n}\n\n/* ============================================\n PANEL CARD\n ============================================ */\n.mj-forms-panel {\n background: var(--mj-card-bg);\n border-radius: var(--mj-card-radius);\n box-shadow: var(--mj-card-shadow);\n border: 1px solid rgba(0, 0, 0, 0.07);\n overflow: hidden;\n transition: all 0.3s ease;\n}\n\n/* ============================================\n HEADER\n ============================================ */\n.mj-forms-panel-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 20px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid var(--mj-border);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.mj-forms-panel-header:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: var(--mj-accent);\n}\n\n/* Drag handle */\n.mj-forms-drag-handle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 0;\n height: 24px;\n color: var(--mj-text-muted);\n cursor: grab;\n opacity: 0;\n overflow: hidden;\n transition: width var(--mj-transition) ease, opacity var(--mj-transition) ease;\n flex-shrink: 0;\n}\n\n.mj-forms-panel-header:hover .mj-forms-drag-handle {\n width: 24px;\n opacity: 1;\n}\n\n.mj-forms-drag-handle:hover {\n color: var(--mj-accent);\n}\n\n.mj-forms-drag-handle:active {\n cursor: grabbing;\n}\n\nmj-collapsible-panel.mj-dragging .mj-forms-drag-handle {\n width: 24px;\n opacity: 1;\n color: var(--mj-accent);\n}\n\n/* Title group */\n.mj-forms-panel-title-group {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.mj-forms-panel-icon {\n font-size: 18px;\n color: var(--mj-accent);\n width: 24px;\n text-align: center;\n}\n\n.mj-forms-panel-title {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.mj-forms-panel-chevron {\n color: var(--mj-text-secondary);\n font-size: 14px;\n transition: transform 0.3s ease;\n padding: 4px;\n}\n\n/* Row count badge */\n.mj-forms-row-count-badge {\n background: var(--mj-success);\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 24px;\n line-height: 1;\n}\n\n.mj-forms-row-count-badge--zero {\n background: var(--mj-text-muted);\n}\n\n/* ============================================\n INHERITED VARIANT (IS-A parent fields)\n ============================================ */\n.mj-forms-panel--inherited {\n border-left: 3px solid var(--mj-isa-parent);\n}\n\n.mj-forms-panel--inherited .mj-forms-panel-header {\n background: linear-gradient(135deg, #f5f3ff 0%, #ffffff 100%);\n}\n\n.mj-forms-panel--inherited .mj-forms-panel-header:hover {\n background: linear-gradient(135deg, #ede9fe 0%, #f5f3ff 100%);\n border-bottom-color: var(--mj-isa-parent);\n}\n\n.mj-forms-panel--inherited .mj-forms-panel-icon {\n color: var(--mj-isa-parent);\n}\n\n.mj-forms-inherited-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 4px;\n background: #f3f0ff;\n color: var(--mj-isa-parent);\n border: 1px solid #e0d5ff;\n cursor: pointer;\n transition: all var(--mj-transition) ease;\n text-decoration: none;\n}\n\n.mj-forms-inherited-badge:hover {\n background: #e8e0ff;\n border-color: var(--mj-isa-parent);\n box-shadow: 0 2px 6px rgba(139, 92, 246, 0.2);\n}\n\n.mj-forms-inherited-badge i {\n font-size: 10px;\n}\n\n/* ============================================\n RELATED ENTITY VARIANT\n ============================================ */\n.mj-forms-panel--related {\n border-left: 3px solid var(--mj-related-accent);\n}\n\n.mj-forms-panel--related .mj-forms-panel-header {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.mj-forms-panel--related .mj-forms-panel-header:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: var(--mj-related-accent);\n}\n\n.mj-forms-panel--related .mj-forms-panel-icon {\n color: var(--mj-related-accent);\n}\n\n/* Related entity content \u2014 400px default, user can drag-resize vertically */\n.mj-forms-panel--related .mj-forms-panel-content {\n height: 400px;\n padding: 0;\n overflow: hidden;\n resize: vertical;\n min-height: 120px;\n max-height: 800px;\n}\n\n/* Ensure child chain fills the resizable content area */\n.mj-forms-panel--related .mj-forms-panel-content > *,\n.mj-forms-panel--related .mj-forms-panel-content > .ng-star-inserted {\n height: 100%;\n}\n\n.mj-forms-panel--related .mj-forms-panel-content > * > * {\n height: 100%;\n}\n\n/* Related entity panels need the body to not clip the resize handle */\n.mj-forms-panel--related .mj-forms-panel-body {\n overflow: visible;\n}\n\n/* ============================================\n BODY (collapsible)\n ============================================ */\n.mj-forms-panel-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.mj-forms-panel-body--collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.mj-forms-panel-content {\n padding: 20px;\n overflow: auto;\n max-height: 600px;\n}\n\n/* ============================================\n SEARCH HIGHLIGHTING\n ============================================ */\n.mj-forms-panel-title ::ng-deep .mj-forms-search-highlight {\n background-color: #fef08a;\n color: #854d0e;\n padding: 0;\n border-radius: 2px;\n font-weight: 700;\n box-shadow: 0 0 0 2px #fef08a;\n}\n"] }]
|
|
396
|
+
}], null, { SectionKey: [{
|
|
397
|
+
type: Input
|
|
398
|
+
}], SectionName: [{
|
|
399
|
+
type: Input
|
|
400
|
+
}], Icon: [{
|
|
401
|
+
type: Input
|
|
402
|
+
}], Form: [{
|
|
403
|
+
type: Input
|
|
404
|
+
}], FormContext: [{
|
|
405
|
+
type: Input
|
|
406
|
+
}], Variant: [{
|
|
407
|
+
type: Input
|
|
408
|
+
}], BadgeCount: [{
|
|
409
|
+
type: Input
|
|
410
|
+
}], DefaultExpanded: [{
|
|
411
|
+
type: Input
|
|
412
|
+
}], InheritedFromEntity: [{
|
|
413
|
+
type: Input
|
|
414
|
+
}], InheritedRecordPrimaryKey: [{
|
|
415
|
+
type: Input
|
|
416
|
+
}], _deprecatedSectionKey: [{
|
|
417
|
+
type: Input,
|
|
418
|
+
args: ['sectionKey']
|
|
419
|
+
}], _deprecatedSectionName: [{
|
|
420
|
+
type: Input,
|
|
421
|
+
args: ['sectionName']
|
|
422
|
+
}], _deprecatedIcon: [{
|
|
423
|
+
type: Input,
|
|
424
|
+
args: ['icon']
|
|
425
|
+
}], _deprecatedForm: [{
|
|
426
|
+
type: Input,
|
|
427
|
+
args: ['form']
|
|
428
|
+
}], _deprecatedFormContext: [{
|
|
429
|
+
type: Input,
|
|
430
|
+
args: ['formContext']
|
|
431
|
+
}], DragStarted: [{
|
|
432
|
+
type: Output
|
|
433
|
+
}], DragEnded: [{
|
|
434
|
+
type: Output
|
|
435
|
+
}], PanelDrop: [{
|
|
436
|
+
type: Output
|
|
437
|
+
}], Navigate: [{
|
|
438
|
+
type: Output
|
|
439
|
+
}], FieldComponents: [{
|
|
440
|
+
type: ContentChildren,
|
|
441
|
+
args: [MjFormFieldComponent, { descendants: true }]
|
|
442
|
+
}], IsHidden: [{
|
|
443
|
+
type: HostBinding,
|
|
444
|
+
args: ['class.mj-search-hidden']
|
|
445
|
+
}], CssOrder: [{
|
|
446
|
+
type: HostBinding,
|
|
447
|
+
args: ['style.order']
|
|
448
|
+
}], IsDragging: [{
|
|
449
|
+
type: HostBinding,
|
|
450
|
+
args: ['class.mj-dragging']
|
|
451
|
+
}], IsDragOver: [{
|
|
452
|
+
type: HostBinding,
|
|
453
|
+
args: ['class.mj-drag-over']
|
|
454
|
+
}], panelContentRef: [{
|
|
455
|
+
type: ViewChild,
|
|
456
|
+
args: ['panelContent']
|
|
457
|
+
}], OnDragOver: [{
|
|
458
|
+
type: HostListener,
|
|
459
|
+
args: ['dragover', ['$event']]
|
|
460
|
+
}], OnDragLeave: [{
|
|
461
|
+
type: HostListener,
|
|
462
|
+
args: ['dragleave', ['$event']]
|
|
463
|
+
}], OnDrop: [{
|
|
464
|
+
type: HostListener,
|
|
465
|
+
args: ['drop', ['$event']]
|
|
466
|
+
}] }); })();
|
|
467
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MjCollapsiblePanelComponent, { className: "MjCollapsiblePanelComponent", filePath: "src/lib/panel/collapsible-panel.component.ts", lineNumber: 53 }); })();
|
|
468
|
+
//# sourceMappingURL=collapsible-panel.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collapsible-panel.component.js","sourceRoot":"","sources":["../../../src/lib/panel/collapsible-panel.component.ts","../../../src/lib/panel/collapsible-panel.component.html"],"names":[],"mappings":"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"}
|