@mj-biz-apps/common-ng 5.4.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/README.md +276 -0
- package/dist/lib/components/address-editor/address-editor.component.d.ts +249 -0
- package/dist/lib/components/address-editor/address-editor.component.d.ts.map +1 -0
- package/dist/lib/components/address-editor/address-editor.component.js +981 -0
- package/dist/lib/components/address-editor/address-editor.component.js.map +1 -0
- package/dist/lib/components/contact-method-list/contact-method-list.component.d.ts +256 -0
- package/dist/lib/components/contact-method-list/contact-method-list.component.d.ts.map +1 -0
- package/dist/lib/components/contact-method-list/contact-method-list.component.js +788 -0
- package/dist/lib/components/contact-method-list/contact-method-list.component.js.map +1 -0
- package/dist/lib/components/org-hierarchy-tree/org-hierarchy-tree.component.d.ts +119 -0
- package/dist/lib/components/org-hierarchy-tree/org-hierarchy-tree.component.d.ts.map +1 -0
- package/dist/lib/components/org-hierarchy-tree/org-hierarchy-tree.component.js +295 -0
- package/dist/lib/components/org-hierarchy-tree/org-hierarchy-tree.component.js.map +1 -0
- package/dist/lib/components/relationship-list/relationship-list.component.d.ts +392 -0
- package/dist/lib/components/relationship-list/relationship-list.component.d.ts.map +1 -0
- package/dist/lib/components/relationship-list/relationship-list.component.js +1171 -0
- package/dist/lib/components/relationship-list/relationship-list.component.js.map +1 -0
- package/dist/lib/custom/Organization/organization-form.component.d.ts +24 -0
- package/dist/lib/custom/Organization/organization-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Organization/organization-form.component.js +244 -0
- package/dist/lib/custom/Organization/organization-form.component.js.map +1 -0
- package/dist/lib/custom/Person/person-form.component.d.ts +24 -0
- package/dist/lib/custom/Person/person-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Person/person-form.component.js +231 -0
- package/dist/lib/custom/Person/person-form.component.js.map +1 -0
- package/dist/lib/custom/custom-forms.module.d.ts +17 -0
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -0
- package/dist/lib/custom/custom-forms.module.js +64 -0
- package/dist/lib/custom/custom-forms.module.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.js +94 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.js +70 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.js +86 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.js +70 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.js +86 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js +190 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.js +80 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js +184 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js +78 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.js +90 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.js.map +1 -0
- package/dist/lib/generated/class-registrations-manifest.d.ts +22 -0
- package/dist/lib/generated/class-registrations-manifest.d.ts.map +1 -0
- package/dist/lib/generated/class-registrations-manifest.js +39 -0
- package/dist/lib/generated/class-registrations-manifest.js.map +1 -0
- package/dist/lib/generated/generated-forms.module.d.ts +28 -0
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -0
- package/dist/lib/generated/generated-forms.module.js +94 -0
- package/dist/lib/generated/generated-forms.module.js.map +1 -0
- package/dist/public-api.d.ts +23 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +30 -0
- package/dist/public-api.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { FormNavigationEvent } from '@memberjunction/ng-base-forms';
|
|
3
|
+
import { mjBizAppsCommonRelationshipEntity, mjBizAppsCommonRelationshipTypeEntity } from '@mj-biz-apps/common-entities';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* View model for a single relationship row, enriched with display-friendly
|
|
7
|
+
* fields that account for the directionality of the relationship.
|
|
8
|
+
*
|
|
9
|
+
* Because relationships are stored with From/To sides, this model resolves
|
|
10
|
+
* which label and target to show based on whether the current entity is the
|
|
11
|
+
* "From" or "To" party.
|
|
12
|
+
*/
|
|
13
|
+
interface RelationshipDisplayItem {
|
|
14
|
+
/** The underlying Relationship entity record. */
|
|
15
|
+
Relationship: mjBizAppsCommonRelationshipEntity;
|
|
16
|
+
/**
|
|
17
|
+
* The human-readable label describing the relationship direction
|
|
18
|
+
* (e.g., `'Employed by'` or `'Employer of'`).
|
|
19
|
+
*/
|
|
20
|
+
DirectionLabel: string;
|
|
21
|
+
/** Display name of the "other" entity in the relationship (e.g., `'Acme Corp'`). */
|
|
22
|
+
TargetName: string;
|
|
23
|
+
/**
|
|
24
|
+
* The MemberJunction entity name for the target, used for navigation
|
|
25
|
+
* (e.g., `'MJ.BizApps.Common: People'` or `'MJ.BizApps.Common: Organizations'`).
|
|
26
|
+
*/
|
|
27
|
+
TargetEntityName: string;
|
|
28
|
+
/** The primary key ID of the target record, used for navigation. */
|
|
29
|
+
TargetID: string;
|
|
30
|
+
/**
|
|
31
|
+
* A formatted date range string for display
|
|
32
|
+
* (e.g., `'Jan 2020 - Present'` or `'Mar 2018 - Dec 2023'`).
|
|
33
|
+
*/
|
|
34
|
+
DateDisplay: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Groups relationship display items by category for the grouped-timeline
|
|
38
|
+
* layout in the template.
|
|
39
|
+
*/
|
|
40
|
+
interface CategoryGroup {
|
|
41
|
+
/**
|
|
42
|
+
* The raw category key from the RelationshipType
|
|
43
|
+
* (e.g., `'PersonToOrganization'`, `'PersonToPerson'`).
|
|
44
|
+
*/
|
|
45
|
+
Category: string;
|
|
46
|
+
/** Human-readable group heading (e.g., `'Employment'`, `'Personal'`). */
|
|
47
|
+
Label: string;
|
|
48
|
+
/** Font Awesome icon class for the group header. */
|
|
49
|
+
Icon: string;
|
|
50
|
+
/** CSS class applied to the icon background for color theming. */
|
|
51
|
+
IconClass: string;
|
|
52
|
+
/** The relationship display items belonging to this category. */
|
|
53
|
+
Items: RelationshipDisplayItem[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Represents a single result from the target entity search typeahead,
|
|
57
|
+
* used when adding a new relationship.
|
|
58
|
+
*/
|
|
59
|
+
interface SearchResult {
|
|
60
|
+
/** The primary key ID of the matched Person or Organization. */
|
|
61
|
+
ID: string;
|
|
62
|
+
/** The display name of the matched record. */
|
|
63
|
+
Name: string;
|
|
64
|
+
/** Additional detail shown below the name (e.g., Title for people, Type for orgs). */
|
|
65
|
+
Detail: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Form model for the "Add Relationship" panel.
|
|
69
|
+
*
|
|
70
|
+
* Fields map to the relationship entity properties plus search/selection
|
|
71
|
+
* state for the target entity typeahead.
|
|
72
|
+
*/
|
|
73
|
+
interface AddFormData {
|
|
74
|
+
/** The selected RelationshipType record ID. */
|
|
75
|
+
TypeID: string;
|
|
76
|
+
/** The current text in the target search input (for typeahead). */
|
|
77
|
+
TargetSearch: string;
|
|
78
|
+
/** The selected target entity's record ID (set after selection). */
|
|
79
|
+
TargetID: string;
|
|
80
|
+
/** The display name of the selected target entity. */
|
|
81
|
+
TargetName: string;
|
|
82
|
+
/** Optional title or role description for the relationship (e.g., `'CEO'`). */
|
|
83
|
+
Title: string;
|
|
84
|
+
/** ISO date string (`YYYY-MM-DD`) for the relationship start date. */
|
|
85
|
+
StartDate: string;
|
|
86
|
+
/** ISO date string (`YYYY-MM-DD`) for the relationship end date. */
|
|
87
|
+
EndDate: string;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Form model for the "Edit Relationship" inline panel.
|
|
91
|
+
*
|
|
92
|
+
* The target entity cannot be changed during editing -- only metadata
|
|
93
|
+
* fields (type, title, dates, status) are editable.
|
|
94
|
+
*/
|
|
95
|
+
interface EditFormData {
|
|
96
|
+
/** The selected RelationshipType record ID. */
|
|
97
|
+
TypeID: string;
|
|
98
|
+
/** Optional title or role description for the relationship. */
|
|
99
|
+
Title: string;
|
|
100
|
+
/** ISO date string (`YYYY-MM-DD`) for the relationship start date. */
|
|
101
|
+
StartDate: string;
|
|
102
|
+
/** ISO date string (`YYYY-MM-DD`) for the relationship end date. */
|
|
103
|
+
EndDate: string;
|
|
104
|
+
/** The current status of the relationship. */
|
|
105
|
+
Status: 'Active' | 'Inactive' | 'Ended';
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Displays and manages relationships for a Person or Organization record,
|
|
109
|
+
* grouped by category (Employment, Personal, Business) in a timeline layout.
|
|
110
|
+
*
|
|
111
|
+
* Relationships are bidirectional: each record has From and To sides with
|
|
112
|
+
* optional Person and Organization foreign keys. The component automatically
|
|
113
|
+
* resolves direction labels and target names based on which side the current
|
|
114
|
+
* entity occupies.
|
|
115
|
+
*
|
|
116
|
+
* Supports adding new relationships with a typeahead target search, inline
|
|
117
|
+
* editing of relationship metadata, ending active relationships, and deletion.
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```html
|
|
121
|
+
* <!-- For a Person -->
|
|
122
|
+
* <bizapps-relationship-list
|
|
123
|
+
* [PersonID]="person.ID"
|
|
124
|
+
* (Navigate)="onNavigate($event)">
|
|
125
|
+
* </bizapps-relationship-list>
|
|
126
|
+
*
|
|
127
|
+
* <!-- For an Organization -->
|
|
128
|
+
* <bizapps-relationship-list
|
|
129
|
+
* [OrganizationID]="org.ID"
|
|
130
|
+
* (Navigate)="onNavigate($event)">
|
|
131
|
+
* </bizapps-relationship-list>
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
export declare class RelationshipListComponent {
|
|
135
|
+
private cdr;
|
|
136
|
+
/**
|
|
137
|
+
* Emitted when the user clicks a relationship target name to navigate
|
|
138
|
+
* to that Person or Organization record.
|
|
139
|
+
*
|
|
140
|
+
* The event payload is a {@link FormNavigationEvent} (specifically a
|
|
141
|
+
* {@link RecordNavigationEvent}) containing the target entity name,
|
|
142
|
+
* composite key, and whether to open in a new tab.
|
|
143
|
+
*
|
|
144
|
+
* @fires Navigate When the user clicks a target entity link
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```html
|
|
148
|
+
* <bizapps-relationship-list
|
|
149
|
+
* [PersonID]="person.ID"
|
|
150
|
+
* (Navigate)="onNavigate($event)">
|
|
151
|
+
* </bizapps-relationship-list>
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
154
|
+
Navigate: EventEmitter<FormNavigationEvent>;
|
|
155
|
+
/**
|
|
156
|
+
* Controls whether add, edit, delete, and end-relationship actions are available.
|
|
157
|
+
* When `false`, the component renders in read-only display mode.
|
|
158
|
+
* Navigation links to related entities remain available regardless of this setting.
|
|
159
|
+
*/
|
|
160
|
+
EditMode: boolean;
|
|
161
|
+
/** Emitted after any mutation (save, delete, end-relationship) so the parent can refresh derived data. */
|
|
162
|
+
DataChanged: EventEmitter<void>;
|
|
163
|
+
private _personID;
|
|
164
|
+
private _organizationID;
|
|
165
|
+
/**
|
|
166
|
+
* The Person record ID whose relationships should be displayed.
|
|
167
|
+
*
|
|
168
|
+
* Mutually exclusive with {@link OrganizationID}. Setting this triggers
|
|
169
|
+
* a data reload unless the value has not changed.
|
|
170
|
+
*
|
|
171
|
+
* @example `'A1B2C3D4-E5F6-7890-ABCD-EF1234567890'`
|
|
172
|
+
*/
|
|
173
|
+
set PersonID(value: string | null);
|
|
174
|
+
get PersonID(): string | null;
|
|
175
|
+
/**
|
|
176
|
+
* The Organization record ID whose relationships should be displayed.
|
|
177
|
+
*
|
|
178
|
+
* Mutually exclusive with {@link PersonID}. Setting this triggers
|
|
179
|
+
* a data reload unless the value has not changed.
|
|
180
|
+
*
|
|
181
|
+
* @example `'B2C3D4E5-F6A7-8901-BCDE-F12345678901'`
|
|
182
|
+
*/
|
|
183
|
+
set OrganizationID(value: string | null);
|
|
184
|
+
get OrganizationID(): string | null;
|
|
185
|
+
/**
|
|
186
|
+
* Relationships grouped by category (Employment, Personal, Business),
|
|
187
|
+
* each containing an array of display items. This is the primary data
|
|
188
|
+
* structure consumed by the template for rendering the grouped timeline.
|
|
189
|
+
*/
|
|
190
|
+
GroupedRelationships: CategoryGroup[];
|
|
191
|
+
/**
|
|
192
|
+
* All active relationship types available for selection in type dropdowns.
|
|
193
|
+
* Loaded from `MJ.BizApps.Common: Relationship Types`, filtered to `IsActive=1`.
|
|
194
|
+
*/
|
|
195
|
+
RelationshipTypes: mjBizAppsCommonRelationshipTypeEntity[];
|
|
196
|
+
/**
|
|
197
|
+
* Indicates whether the component is performing the initial data load.
|
|
198
|
+
* The template shows a loading spinner while this is `true`.
|
|
199
|
+
*/
|
|
200
|
+
Loading: boolean;
|
|
201
|
+
/**
|
|
202
|
+
* Indicates whether a save, delete, or end-relationship operation is in progress.
|
|
203
|
+
* Used to disable action buttons and show spinner feedback while `true`.
|
|
204
|
+
*/
|
|
205
|
+
Saving: boolean;
|
|
206
|
+
/**
|
|
207
|
+
* Controls visibility of the "Add Relationship" form panel. When `true`,
|
|
208
|
+
* the add form is displayed below the existing relationship groups.
|
|
209
|
+
*/
|
|
210
|
+
ShowAddForm: boolean;
|
|
211
|
+
/**
|
|
212
|
+
* The ID of the relationship currently being edited inline, or `null`
|
|
213
|
+
* when not in edit mode.
|
|
214
|
+
*/
|
|
215
|
+
EditingId: string | null;
|
|
216
|
+
/**
|
|
217
|
+
* The form model bound to the "Add Relationship" panel via two-way
|
|
218
|
+
* binding. Reset to defaults each time the add form is opened.
|
|
219
|
+
*/
|
|
220
|
+
AddForm: AddFormData;
|
|
221
|
+
/**
|
|
222
|
+
* The form model bound to the inline edit panel via two-way binding.
|
|
223
|
+
* Populated from the existing relationship record when editing begins.
|
|
224
|
+
*/
|
|
225
|
+
EditForm: EditFormData;
|
|
226
|
+
/**
|
|
227
|
+
* Search results from the target entity typeahead, displayed as a
|
|
228
|
+
* dropdown below the search input in the add form.
|
|
229
|
+
*/
|
|
230
|
+
TargetSearchResults: SearchResult[];
|
|
231
|
+
/** Lookup map from RelationshipType ID to entity for quick access. */
|
|
232
|
+
private relationshipTypeMap;
|
|
233
|
+
/** Handle for the debounce timer used in target search. */
|
|
234
|
+
private searchDebounceTimer;
|
|
235
|
+
/** Creates a blank {@link AddFormData} with empty defaults. */
|
|
236
|
+
private createEmptyAddForm;
|
|
237
|
+
/** Creates a blank {@link EditFormData} with default status of Active. */
|
|
238
|
+
private createEmptyEditForm;
|
|
239
|
+
/**
|
|
240
|
+
* Loads relationships and relationship types from the server,
|
|
241
|
+
* then groups them by category. Resets editing state before loading.
|
|
242
|
+
*/
|
|
243
|
+
private loadData;
|
|
244
|
+
/** Organizes relationships into category groups with display-friendly items. */
|
|
245
|
+
private buildGroups;
|
|
246
|
+
/** Constructs a display item from a relationship and its type, resolving direction. */
|
|
247
|
+
private buildDisplayItem;
|
|
248
|
+
/** Checks whether the current entity (Person or Org) is on the "From" side. */
|
|
249
|
+
private isCurrentEntityOnFromSide;
|
|
250
|
+
/** Returns the display name of the "To" side entity. */
|
|
251
|
+
private getToSideName;
|
|
252
|
+
/** Returns the display name of the "From" side entity. */
|
|
253
|
+
private getFromSideName;
|
|
254
|
+
/** Returns the display name of whichever side is NOT the current entity. */
|
|
255
|
+
private getOtherSideName;
|
|
256
|
+
/** Returns the entity name and ID for the "To" side. */
|
|
257
|
+
private getToSideTarget;
|
|
258
|
+
/** Returns the entity name and ID for the "From" side. */
|
|
259
|
+
private getFromSideTarget;
|
|
260
|
+
/** Returns the entity name and ID for whichever side is NOT the current entity. */
|
|
261
|
+
private getOtherSideTarget;
|
|
262
|
+
/**
|
|
263
|
+
* Emits a {@link Navigate} event to navigate to the target entity record
|
|
264
|
+
* of a relationship row.
|
|
265
|
+
*
|
|
266
|
+
* Supports Ctrl+Click / Cmd+Click to open in a new tab.
|
|
267
|
+
*
|
|
268
|
+
* @param item - The relationship display item whose target should be navigated to
|
|
269
|
+
* @param event - The mouse event, used to detect modifier keys for new-tab behavior
|
|
270
|
+
*
|
|
271
|
+
* @fires Navigate With a {@link RecordNavigationEvent} payload
|
|
272
|
+
*/
|
|
273
|
+
onNavigateToTarget(item: RelationshipDisplayItem, event: MouseEvent): void;
|
|
274
|
+
/** Formats a date range into a compact display string. */
|
|
275
|
+
private formatDateRange;
|
|
276
|
+
/**
|
|
277
|
+
* Opens the "Add Relationship" form panel.
|
|
278
|
+
*
|
|
279
|
+
* Resets the add form to defaults, clears any previous search results,
|
|
280
|
+
* and closes any active inline edit.
|
|
281
|
+
*/
|
|
282
|
+
onShowAdd(): void;
|
|
283
|
+
/**
|
|
284
|
+
* Closes the "Add Relationship" form panel without saving, and clears
|
|
285
|
+
* the target search results.
|
|
286
|
+
*/
|
|
287
|
+
onCancelAdd(): void;
|
|
288
|
+
/**
|
|
289
|
+
* Handles a change to the relationship type in the add form.
|
|
290
|
+
*
|
|
291
|
+
* Clears the currently selected target because the category (and
|
|
292
|
+
* therefore the target entity type) may have changed.
|
|
293
|
+
*/
|
|
294
|
+
onAddTypeChange(): void;
|
|
295
|
+
/**
|
|
296
|
+
* Returns the category key of the currently selected relationship type
|
|
297
|
+
* in the add form (e.g., `'PersonToOrganization'`).
|
|
298
|
+
*
|
|
299
|
+
* @returns The category string, or `'--'` if no type is selected
|
|
300
|
+
*/
|
|
301
|
+
getAddCategory(): string;
|
|
302
|
+
/**
|
|
303
|
+
* Returns a user-facing label for the target entity search field based
|
|
304
|
+
* on the current add form's relationship category.
|
|
305
|
+
*
|
|
306
|
+
* @returns `'Organization'`, `'Person'`, or `'Target'` depending on category
|
|
307
|
+
*/
|
|
308
|
+
getAddTargetLabel(): string;
|
|
309
|
+
/**
|
|
310
|
+
* Debounces the target search input and triggers a server-side search
|
|
311
|
+
* after a 300ms pause in typing.
|
|
312
|
+
*
|
|
313
|
+
* Called on each keystroke in the target search field.
|
|
314
|
+
*/
|
|
315
|
+
onTargetSearch(): void;
|
|
316
|
+
/** Executes the debounced target search against Person or Organization entities. */
|
|
317
|
+
private performTargetSearch;
|
|
318
|
+
/**
|
|
319
|
+
* Selects a target entity from the search results dropdown, populating
|
|
320
|
+
* the add form's target fields and clearing the search input.
|
|
321
|
+
*
|
|
322
|
+
* @param result - The selected search result to use as the relationship target
|
|
323
|
+
*/
|
|
324
|
+
onSelectTarget(result: SearchResult): void;
|
|
325
|
+
/**
|
|
326
|
+
* Clears the currently selected target entity from the add form,
|
|
327
|
+
* allowing the user to search for a different target.
|
|
328
|
+
*/
|
|
329
|
+
onClearTarget(): void;
|
|
330
|
+
/**
|
|
331
|
+
* Persists the new relationship from the add form.
|
|
332
|
+
*
|
|
333
|
+
* Determines which From/To fields to populate based on the current
|
|
334
|
+
* entity type (Person or Organization) and the relationship category.
|
|
335
|
+
* After saving, the relationship list is reloaded.
|
|
336
|
+
*/
|
|
337
|
+
onSaveAdd(): Promise<void>;
|
|
338
|
+
/**
|
|
339
|
+
* Opens the inline edit form for an existing relationship, populating
|
|
340
|
+
* the form fields from the current entity data.
|
|
341
|
+
*
|
|
342
|
+
* Closes the add form if it is currently open.
|
|
343
|
+
*
|
|
344
|
+
* @param rel - The relationship entity to edit
|
|
345
|
+
*/
|
|
346
|
+
onEdit(rel: mjBizAppsCommonRelationshipEntity): void;
|
|
347
|
+
/**
|
|
348
|
+
* Cancels the current edit operation and returns to display mode.
|
|
349
|
+
*/
|
|
350
|
+
onCancelEdit(): void;
|
|
351
|
+
/**
|
|
352
|
+
* Handles a change to the relationship type in the edit form.
|
|
353
|
+
*
|
|
354
|
+
* Triggers change detection so the category display updates.
|
|
355
|
+
*/
|
|
356
|
+
onEditTypeChange(): void;
|
|
357
|
+
/**
|
|
358
|
+
* Returns the category key of the currently selected relationship type
|
|
359
|
+
* in the edit form (e.g., `'PersonToOrganization'`).
|
|
360
|
+
*
|
|
361
|
+
* @returns The category string, or `'--'` if no type is selected
|
|
362
|
+
*/
|
|
363
|
+
getEditCategory(): string;
|
|
364
|
+
/**
|
|
365
|
+
* Persists the edited relationship from the inline edit form.
|
|
366
|
+
*
|
|
367
|
+
* Locates the relationship entity within the grouped data, applies
|
|
368
|
+
* the form values, saves, and reloads the list.
|
|
369
|
+
*/
|
|
370
|
+
onSaveEdit(): Promise<void>;
|
|
371
|
+
/**
|
|
372
|
+
* Ends an active relationship by setting its status to `'Ended'` and
|
|
373
|
+
* its end date to today. After saving, the relationship list is reloaded.
|
|
374
|
+
*
|
|
375
|
+
* @param rel - The active relationship entity to end
|
|
376
|
+
*/
|
|
377
|
+
onEndRelationship(rel: mjBizAppsCommonRelationshipEntity): Promise<void>;
|
|
378
|
+
/**
|
|
379
|
+
* Permanently deletes the given relationship record.
|
|
380
|
+
*
|
|
381
|
+
* After deletion, the relationship list is reloaded.
|
|
382
|
+
*
|
|
383
|
+
* @param rel - The relationship entity to delete
|
|
384
|
+
*/
|
|
385
|
+
onDelete(rel: mjBizAppsCommonRelationshipEntity): Promise<void>;
|
|
386
|
+
/** Converts a Date to an ISO date string (`YYYY-MM-DD`) for HTML date inputs. */
|
|
387
|
+
private formatDateForInput;
|
|
388
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RelationshipListComponent, never>;
|
|
389
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RelationshipListComponent, "bizapps-relationship-list", never, { "EditMode": { "alias": "EditMode"; "required": false; }; "PersonID": { "alias": "PersonID"; "required": false; }; "OrganizationID": { "alias": "OrganizationID"; "required": false; }; }, { "Navigate": "Navigate"; "DataChanged": "DataChanged"; }, never, never, true, never>;
|
|
390
|
+
}
|
|
391
|
+
export {};
|
|
392
|
+
//# sourceMappingURL=relationship-list.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationship-list.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/relationship-list/relationship-list.component.ts"],"names":[],"mappings":"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"}
|