@mj-biz-apps/common-ng 5.33.2 → 5.35.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.
Files changed (214) hide show
  1. package/LICENSE +183 -0
  2. package/README.md +12 -2
  3. package/dist/lib/components/address-editor/address-editor.component.d.ts +23 -0
  4. package/dist/lib/components/address-editor/address-editor.component.d.ts.map +1 -1
  5. package/dist/lib/components/address-editor/address-editor.component.js +207 -140
  6. package/dist/lib/components/address-editor/address-editor.component.js.map +1 -1
  7. package/dist/lib/components/contact-method-list/contact-method-list.component.d.ts +17 -10
  8. package/dist/lib/components/contact-method-list/contact-method-list.component.d.ts.map +1 -1
  9. package/dist/lib/components/contact-method-list/contact-method-list.component.js +104 -39
  10. package/dist/lib/components/contact-method-list/contact-method-list.component.js.map +1 -1
  11. package/dist/lib/components/identity-header/activity-identity.component.d.ts +36 -0
  12. package/dist/lib/components/identity-header/activity-identity.component.d.ts.map +1 -0
  13. package/dist/lib/components/identity-header/activity-identity.component.js +387 -0
  14. package/dist/lib/components/identity-header/activity-identity.component.js.map +1 -0
  15. package/dist/lib/components/identity-header/organization-identity.component.d.ts +26 -0
  16. package/dist/lib/components/identity-header/organization-identity.component.d.ts.map +1 -0
  17. package/dist/lib/components/identity-header/organization-identity.component.js +304 -0
  18. package/dist/lib/components/identity-header/organization-identity.component.js.map +1 -0
  19. package/dist/lib/components/identity-header/person-identity.component.d.ts +27 -0
  20. package/dist/lib/components/identity-header/person-identity.component.d.ts.map +1 -0
  21. package/dist/lib/components/identity-header/person-identity.component.js +330 -0
  22. package/dist/lib/components/identity-header/person-identity.component.js.map +1 -0
  23. package/dist/lib/components/org-hierarchy-tree/org-hierarchy-tree.component.d.ts +14 -82
  24. package/dist/lib/components/org-hierarchy-tree/org-hierarchy-tree.component.d.ts.map +1 -1
  25. package/dist/lib/components/org-hierarchy-tree/org-hierarchy-tree.component.js +138 -151
  26. package/dist/lib/components/org-hierarchy-tree/org-hierarchy-tree.component.js.map +1 -1
  27. package/dist/lib/components/relationship-graph/common-relationship-graph.component.d.ts +40 -0
  28. package/dist/lib/components/relationship-graph/common-relationship-graph.component.d.ts.map +1 -0
  29. package/dist/lib/components/relationship-graph/common-relationship-graph.component.js +403 -0
  30. package/dist/lib/components/relationship-graph/common-relationship-graph.component.js.map +1 -0
  31. package/dist/lib/components/relationship-list/relationship-list.component.d.ts +25 -55
  32. package/dist/lib/components/relationship-list/relationship-list.component.d.ts.map +1 -1
  33. package/dist/lib/components/relationship-list/relationship-list.component.js +509 -483
  34. package/dist/lib/components/relationship-list/relationship-list.component.js.map +1 -1
  35. package/dist/lib/custom/custom-forms.module.d.ts +29 -11
  36. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  37. package/dist/lib/custom/custom-forms.module.js +101 -29
  38. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  39. package/dist/lib/custom/panels/__tests__/activity-header.panel.test.d.ts +3 -0
  40. package/dist/lib/custom/panels/__tests__/activity-header.panel.test.d.ts.map +1 -0
  41. package/dist/lib/custom/panels/__tests__/activity-header.panel.test.js +123 -0
  42. package/dist/lib/custom/panels/__tests__/activity-header.panel.test.js.map +1 -0
  43. package/dist/lib/custom/panels/activity-content.panel.d.ts +30 -0
  44. package/dist/lib/custom/panels/activity-content.panel.d.ts.map +1 -0
  45. package/dist/lib/custom/panels/activity-content.panel.js +309 -0
  46. package/dist/lib/custom/panels/activity-content.panel.js.map +1 -0
  47. package/dist/lib/custom/panels/activity-files.panel.d.ts +33 -0
  48. package/dist/lib/custom/panels/activity-files.panel.d.ts.map +1 -0
  49. package/dist/lib/custom/panels/activity-files.panel.js +222 -0
  50. package/dist/lib/custom/panels/activity-files.panel.js.map +1 -0
  51. package/dist/lib/custom/panels/activity-header.panel.d.ts +11 -0
  52. package/dist/lib/custom/panels/activity-header.panel.d.ts.map +1 -0
  53. package/dist/lib/custom/panels/activity-header.panel.js +54 -0
  54. package/dist/lib/custom/panels/activity-header.panel.js.map +1 -0
  55. package/dist/lib/custom/panels/activity-hierarchy.panel.d.ts +22 -0
  56. package/dist/lib/custom/panels/activity-hierarchy.panel.d.ts.map +1 -0
  57. package/dist/lib/custom/panels/activity-hierarchy.panel.js +120 -0
  58. package/dist/lib/custom/panels/activity-hierarchy.panel.js.map +1 -0
  59. package/dist/lib/custom/panels/activity-links.panel.d.ts +33 -0
  60. package/dist/lib/custom/panels/activity-links.panel.d.ts.map +1 -0
  61. package/dist/lib/custom/panels/activity-links.panel.js +210 -0
  62. package/dist/lib/custom/panels/activity-links.panel.js.map +1 -0
  63. package/dist/lib/custom/panels/activity-type-hierarchy.panel.d.ts +22 -0
  64. package/dist/lib/custom/panels/activity-type-hierarchy.panel.d.ts.map +1 -0
  65. package/dist/lib/custom/panels/activity-type-hierarchy.panel.js +113 -0
  66. package/dist/lib/custom/panels/activity-type-hierarchy.panel.js.map +1 -0
  67. package/dist/lib/custom/panels/bizapps-form-panel.d.ts +19 -0
  68. package/dist/lib/custom/panels/bizapps-form-panel.d.ts.map +1 -0
  69. package/dist/lib/custom/panels/bizapps-form-panel.js +29 -0
  70. package/dist/lib/custom/panels/bizapps-form-panel.js.map +1 -0
  71. package/dist/lib/custom/panels/organization-addresses.panel.d.ts +12 -0
  72. package/dist/lib/custom/panels/organization-addresses.panel.d.ts.map +1 -0
  73. package/dist/lib/custom/panels/organization-addresses.panel.js +57 -0
  74. package/dist/lib/custom/panels/organization-addresses.panel.js.map +1 -0
  75. package/dist/lib/custom/panels/organization-contact-methods.panel.d.ts +11 -0
  76. package/dist/lib/custom/panels/organization-contact-methods.panel.d.ts.map +1 -0
  77. package/dist/lib/custom/panels/organization-contact-methods.panel.js +56 -0
  78. package/dist/lib/custom/panels/organization-contact-methods.panel.js.map +1 -0
  79. package/dist/lib/custom/panels/organization-header.panel.d.ts +11 -0
  80. package/dist/lib/custom/panels/organization-header.panel.d.ts.map +1 -0
  81. package/dist/lib/custom/panels/organization-header.panel.js +54 -0
  82. package/dist/lib/custom/panels/organization-header.panel.js.map +1 -0
  83. package/dist/lib/custom/panels/organization-hierarchy.panel.d.ts +12 -0
  84. package/dist/lib/custom/panels/organization-hierarchy.panel.d.ts.map +1 -0
  85. package/dist/lib/custom/panels/organization-hierarchy.panel.js +57 -0
  86. package/dist/lib/custom/panels/organization-hierarchy.panel.js.map +1 -0
  87. package/dist/lib/custom/panels/organization-relationships.panel.d.ts +17 -0
  88. package/dist/lib/custom/panels/organization-relationships.panel.d.ts.map +1 -0
  89. package/dist/lib/custom/panels/organization-relationships.panel.js +163 -0
  90. package/dist/lib/custom/panels/organization-relationships.panel.js.map +1 -0
  91. package/dist/lib/custom/panels/person-addresses.panel.d.ts +12 -0
  92. package/dist/lib/custom/panels/person-addresses.panel.d.ts.map +1 -0
  93. package/dist/lib/custom/panels/person-addresses.panel.js +57 -0
  94. package/dist/lib/custom/panels/person-addresses.panel.js.map +1 -0
  95. package/dist/lib/custom/panels/person-contact-methods.panel.d.ts +11 -0
  96. package/dist/lib/custom/panels/person-contact-methods.panel.d.ts.map +1 -0
  97. package/dist/lib/custom/panels/person-contact-methods.panel.js +56 -0
  98. package/dist/lib/custom/panels/person-contact-methods.panel.js.map +1 -0
  99. package/dist/lib/custom/panels/person-header.panel.d.ts +12 -0
  100. package/dist/lib/custom/panels/person-header.panel.d.ts.map +1 -0
  101. package/dist/lib/custom/panels/person-header.panel.js +55 -0
  102. package/dist/lib/custom/panels/person-header.panel.js.map +1 -0
  103. package/dist/lib/custom/panels/person-relationships.panel.d.ts +17 -0
  104. package/dist/lib/custom/panels/person-relationships.panel.d.ts.map +1 -0
  105. package/dist/lib/custom/panels/person-relationships.panel.js +163 -0
  106. package/dist/lib/custom/panels/person-relationships.panel.js.map +1 -0
  107. package/dist/lib/data/__tests__/directory-stats.test.d.ts +2 -0
  108. package/dist/lib/data/__tests__/directory-stats.test.d.ts.map +1 -0
  109. package/dist/lib/data/__tests__/directory-stats.test.js +79 -0
  110. package/dist/lib/data/__tests__/directory-stats.test.js.map +1 -0
  111. package/dist/lib/data/directory-queries.d.ts +10 -0
  112. package/dist/lib/data/directory-queries.d.ts.map +1 -0
  113. package/dist/lib/data/directory-queries.js +104 -0
  114. package/dist/lib/data/directory-queries.js.map +1 -0
  115. package/dist/lib/data/directory-stats.d.ts +24 -0
  116. package/dist/lib/data/directory-stats.d.ts.map +1 -0
  117. package/dist/lib/data/directory-stats.js +137 -0
  118. package/dist/lib/data/directory-stats.js.map +1 -0
  119. package/dist/lib/data/directory-types.d.ts +33 -0
  120. package/dist/lib/data/directory-types.d.ts.map +1 -0
  121. package/dist/lib/data/directory-types.js +2 -0
  122. package/dist/lib/data/directory-types.js.map +1 -0
  123. package/dist/lib/data/entity-names.d.ts +21 -0
  124. package/dist/lib/data/entity-names.d.ts.map +1 -0
  125. package/dist/lib/data/entity-names.js +21 -0
  126. package/dist/lib/data/entity-names.js.map +1 -0
  127. package/dist/lib/generated/Entities/mjBizAppsCommonActivity/mjbizappscommonactivity.form.component.d.ts +10 -0
  128. package/dist/lib/generated/Entities/mjBizAppsCommonActivity/mjbizappscommonactivity.form.component.d.ts.map +1 -0
  129. package/dist/lib/generated/Entities/mjBizAppsCommonActivity/mjbizappscommonactivity.form.component.js +210 -0
  130. package/dist/lib/generated/Entities/mjBizAppsCommonActivity/mjbizappscommonactivity.form.component.js.map +1 -0
  131. package/dist/lib/generated/Entities/mjBizAppsCommonActivityFile/mjbizappscommonactivityfile.form.component.d.ts +10 -0
  132. package/dist/lib/generated/Entities/mjBizAppsCommonActivityFile/mjbizappscommonactivityfile.form.component.d.ts.map +1 -0
  133. package/dist/lib/generated/Entities/mjBizAppsCommonActivityFile/mjbizappscommonactivityfile.form.component.js +63 -0
  134. package/dist/lib/generated/Entities/mjBizAppsCommonActivityFile/mjbizappscommonactivityfile.form.component.js.map +1 -0
  135. package/dist/lib/generated/Entities/mjBizAppsCommonActivityLink/mjbizappscommonactivitylink.form.component.d.ts +10 -0
  136. package/dist/lib/generated/Entities/mjBizAppsCommonActivityLink/mjbizappscommonactivitylink.form.component.d.ts.map +1 -0
  137. package/dist/lib/generated/Entities/mjBizAppsCommonActivityLink/mjbizappscommonactivitylink.form.component.js +69 -0
  138. package/dist/lib/generated/Entities/mjBizAppsCommonActivityLink/mjbizappscommonactivitylink.form.component.js.map +1 -0
  139. package/dist/lib/generated/Entities/mjBizAppsCommonActivitySyncConnection/mjbizappscommonactivitysyncconnection.form.component.d.ts +10 -0
  140. package/dist/lib/generated/Entities/mjBizAppsCommonActivitySyncConnection/mjbizappscommonactivitysyncconnection.form.component.d.ts.map +1 -0
  141. package/dist/lib/generated/Entities/mjBizAppsCommonActivitySyncConnection/mjbizappscommonactivitysyncconnection.form.component.js +112 -0
  142. package/dist/lib/generated/Entities/mjBizAppsCommonActivitySyncConnection/mjbizappscommonactivitysyncconnection.form.component.js.map +1 -0
  143. package/dist/lib/generated/Entities/mjBizAppsCommonActivitySyncRule/mjbizappscommonactivitysyncrule.form.component.d.ts +10 -0
  144. package/dist/lib/generated/Entities/mjBizAppsCommonActivitySyncRule/mjbizappscommonactivitysyncrule.form.component.d.ts.map +1 -0
  145. package/dist/lib/generated/Entities/mjBizAppsCommonActivitySyncRule/mjbizappscommonactivitysyncrule.form.component.js +77 -0
  146. package/dist/lib/generated/Entities/mjBizAppsCommonActivitySyncRule/mjbizappscommonactivitysyncrule.form.component.js.map +1 -0
  147. package/dist/lib/generated/Entities/mjBizAppsCommonActivityType/mjbizappscommonactivitytype.form.component.d.ts +10 -0
  148. package/dist/lib/generated/Entities/mjBizAppsCommonActivityType/mjbizappscommonactivitytype.form.component.d.ts.map +1 -0
  149. package/dist/lib/generated/Entities/mjBizAppsCommonActivityType/mjbizappscommonactivitytype.form.component.js +156 -0
  150. package/dist/lib/generated/Entities/mjBizAppsCommonActivityType/mjbizappscommonactivitytype.form.component.js.map +1 -0
  151. package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.d.ts.map +1 -1
  152. package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.js +24 -6
  153. package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.js.map +1 -1
  154. package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.js +2 -2
  155. package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.js.map +1 -1
  156. package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.d.ts.map +1 -1
  157. package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.js +5 -9
  158. package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.js.map +1 -1
  159. package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.js +2 -2
  160. package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.js.map +1 -1
  161. package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.d.ts.map +1 -1
  162. package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js +83 -37
  163. package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js.map +1 -1
  164. package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.js +2 -2
  165. package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.js.map +1 -1
  166. package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.d.ts.map +1 -1
  167. package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js +73 -35
  168. package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js.map +1 -1
  169. package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.d.ts.map +1 -1
  170. package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js +5 -9
  171. package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js.map +1 -1
  172. package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.js +2 -2
  173. package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.js.map +1 -1
  174. package/dist/lib/generated/generated-forms.module.d.ts +22 -16
  175. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  176. package/dist/lib/generated/generated-forms.module.js +19 -1
  177. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  178. package/dist/lib/open-record.d.ts +5 -0
  179. package/dist/lib/open-record.d.ts.map +1 -0
  180. package/dist/lib/open-record.js +15 -0
  181. package/dist/lib/open-record.js.map +1 -0
  182. package/dist/lib/pages/activities-dashboard.page.d.ts +53 -0
  183. package/dist/lib/pages/activities-dashboard.page.d.ts.map +1 -0
  184. package/dist/lib/pages/activities-dashboard.page.js +663 -0
  185. package/dist/lib/pages/activities-dashboard.page.js.map +1 -0
  186. package/dist/lib/pages/common-dashboard.page.d.ts +42 -0
  187. package/dist/lib/pages/common-dashboard.page.d.ts.map +1 -0
  188. package/dist/lib/pages/common-dashboard.page.js +662 -0
  189. package/dist/lib/pages/common-dashboard.page.js.map +1 -0
  190. package/dist/lib/pages/organizations-list.page.d.ts +19 -0
  191. package/dist/lib/pages/organizations-list.page.d.ts.map +1 -0
  192. package/dist/lib/pages/organizations-list.page.js +202 -0
  193. package/dist/lib/pages/organizations-list.page.js.map +1 -0
  194. package/dist/lib/pages/people-list.page.d.ts +21 -0
  195. package/dist/lib/pages/people-list.page.d.ts.map +1 -0
  196. package/dist/lib/pages/people-list.page.js +209 -0
  197. package/dist/lib/pages/people-list.page.js.map +1 -0
  198. package/dist/lib/sections/common-sections.component.d.ts +43 -0
  199. package/dist/lib/sections/common-sections.component.d.ts.map +1 -0
  200. package/dist/lib/sections/common-sections.component.js +167 -0
  201. package/dist/lib/sections/common-sections.component.js.map +1 -0
  202. package/dist/public-api.d.ts +16 -0
  203. package/dist/public-api.d.ts.map +1 -1
  204. package/dist/public-api.js +20 -2
  205. package/dist/public-api.js.map +1 -1
  206. package/package.json +19 -12
  207. package/dist/lib/custom/Organization/organization-form.component.d.ts +0 -24
  208. package/dist/lib/custom/Organization/organization-form.component.d.ts.map +0 -1
  209. package/dist/lib/custom/Organization/organization-form.component.js +0 -244
  210. package/dist/lib/custom/Organization/organization-form.component.js.map +0 -1
  211. package/dist/lib/custom/Person/person-form.component.d.ts +0 -24
  212. package/dist/lib/custom/Person/person-form.component.d.ts.map +0 -1
  213. package/dist/lib/custom/Person/person-form.component.js +0 -229
  214. package/dist/lib/custom/Person/person-form.component.js.map +0 -1
@@ -1,78 +1,89 @@
1
1
  import { Component, Input, Output, EventEmitter, inject, ChangeDetectorRef } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { CompositeKey, RunView } from '@memberjunction/core';
4
+ import { UserInfoEngine } from '@memberjunction/core-entities';
5
+ import { HierarchyTreeComponent } from '@memberjunction/ng-hierarchy-tree';
4
6
  import * as i0 from "@angular/core";
5
7
  const _forTrack0 = ($index, $item) => $item.ID;
6
- function OrgHierarchyTreeComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
7
- i0.ɵɵdomElementStart(0, "div", 0);
8
- i0.ɵɵdomElement(1, "i", 1);
8
+ function OrgHierarchyTreeComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
9
+ const _r1 = i0.ɵɵgetCurrentView();
10
+ i0.ɵɵelementStart(0, "mj-hierarchy-tree", 6);
11
+ i0.ɵɵlistener("Navigate", function OrgHierarchyTreeComponent_Conditional_10_Template_mj_hierarchy_tree_Navigate_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.Navigate.emit($event)); });
12
+ i0.ɵɵelementEnd();
13
+ } if (rf & 2) {
14
+ const ctx_r1 = i0.ɵɵnextContext();
15
+ i0.ɵɵproperty("Config", ctx_r1.treeConfig);
16
+ } }
17
+ function OrgHierarchyTreeComponent_Conditional_11_Conditional_0_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelementStart(0, "div", 7);
19
+ i0.ɵɵelement(1, "i", 8);
9
20
  i0.ɵɵtext(2, " Loading hierarchy... ");
10
- i0.ɵɵdomElementEnd();
21
+ i0.ɵɵelementEnd();
11
22
  } }
12
- function OrgHierarchyTreeComponent_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵdomElementStart(0, "div", 2);
14
- i0.ɵɵdomElement(1, "i", 4);
15
- i0.ɵɵtext(2, " No hierarchy data ");
16
- i0.ɵɵdomElementEnd();
23
+ function OrgHierarchyTreeComponent_Conditional_11_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
24
+ i0.ɵɵelementStart(0, "div", 9);
25
+ i0.ɵɵelement(1, "i", 3);
26
+ i0.ɵɵtext(2, " No parent or subsidiary organizations found. ");
27
+ i0.ɵɵelementEnd();
17
28
  } }
18
- function OrgHierarchyTreeComponent_Conditional_1_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
19
- const _r1 = i0.ɵɵgetCurrentView();
20
- i0.ɵɵdomElementStart(0, "div", 12);
21
- i0.ɵɵdomListener("click", function OrgHierarchyTreeComponent_Conditional_1_Conditional_1_Conditional_1_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnNavigateToOrg(ctx_r1.ParentNode, $event)); });
22
- i0.ɵɵdomElementStart(1, "div", 7);
23
- i0.ɵɵdomElement(2, "i", 8);
24
- i0.ɵɵdomElementEnd();
25
- i0.ɵɵdomElementStart(3, "div")(4, "div", 9);
29
+ function OrgHierarchyTreeComponent_Conditional_11_Conditional_1_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
30
+ const _r3 = i0.ɵɵgetCurrentView();
31
+ i0.ɵɵelementStart(0, "div", 18);
32
+ i0.ɵɵlistener("click", function OrgHierarchyTreeComponent_Conditional_11_Conditional_1_Conditional_1_Conditional_1_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnNavigateToOrg(ctx_r1.ParentNode, $event)); });
33
+ i0.ɵɵelementStart(1, "div", 13);
34
+ i0.ɵɵelement(2, "i", 14);
35
+ i0.ɵɵelementEnd();
36
+ i0.ɵɵelementStart(3, "div")(4, "div", 15);
26
37
  i0.ɵɵtext(5);
27
- i0.ɵɵdomElementEnd();
28
- i0.ɵɵdomElementStart(6, "div", 10);
38
+ i0.ɵɵelementEnd();
39
+ i0.ɵɵelementStart(6, "div", 16);
29
40
  i0.ɵɵtext(7);
30
- i0.ɵɵdomElementEnd()()();
41
+ i0.ɵɵelementEnd()()();
31
42
  } if (rf & 2) {
32
- const ctx_r1 = i0.ɵɵnextContext(3);
43
+ const ctx_r1 = i0.ɵɵnextContext(4);
33
44
  i0.ɵɵadvance(5);
34
45
  i0.ɵɵtextInterpolate(ctx_r1.ParentNode.Name);
35
46
  i0.ɵɵadvance(2);
36
47
  i0.ɵɵtextInterpolate1("Parent \u00B7 ", ctx_r1.ParentNode.OrganizationType || "");
37
48
  } }
38
- function OrgHierarchyTreeComponent_Conditional_1_Conditional_1_For_11_Template(rf, ctx) { if (rf & 1) {
39
- const _r3 = i0.ɵɵgetCurrentView();
40
- i0.ɵɵdomElementStart(0, "div", 13);
41
- i0.ɵɵdomListener("click", function OrgHierarchyTreeComponent_Conditional_1_Conditional_1_For_11_Template_div_click_0_listener($event) { const child_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnNavigateToOrg(child_r4, $event)); });
42
- i0.ɵɵdomElementStart(1, "div", 7);
43
- i0.ɵɵdomElement(2, "i", 8);
44
- i0.ɵɵdomElementEnd();
45
- i0.ɵɵdomElementStart(3, "div")(4, "div", 9);
49
+ function OrgHierarchyTreeComponent_Conditional_11_Conditional_1_Conditional_1_For_11_Template(rf, ctx) { if (rf & 1) {
50
+ const _r4 = i0.ɵɵgetCurrentView();
51
+ i0.ɵɵelementStart(0, "div", 19);
52
+ i0.ɵɵlistener("click", function OrgHierarchyTreeComponent_Conditional_11_Conditional_1_Conditional_1_For_11_Template_div_click_0_listener($event) { const child_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnNavigateToOrg(child_r5, $event)); });
53
+ i0.ɵɵelementStart(1, "div", 13);
54
+ i0.ɵɵelement(2, "i", 14);
55
+ i0.ɵɵelementEnd();
56
+ i0.ɵɵelementStart(3, "div")(4, "div", 15);
46
57
  i0.ɵɵtext(5);
47
- i0.ɵɵdomElementEnd();
48
- i0.ɵɵdomElementStart(6, "div", 10);
58
+ i0.ɵɵelementEnd();
59
+ i0.ɵɵelementStart(6, "div", 16);
49
60
  i0.ɵɵtext(7);
50
- i0.ɵɵdomElementEnd()()();
61
+ i0.ɵɵelementEnd()()();
51
62
  } if (rf & 2) {
52
- const child_r4 = ctx.$implicit;
53
- const ctx_r1 = i0.ɵɵnextContext(3);
63
+ const child_r5 = ctx.$implicit;
64
+ const ctx_r1 = i0.ɵɵnextContext(4);
54
65
  i0.ɵɵclassProp("tree-indent-deep", ctx_r1.ParentNode !== null);
55
66
  i0.ɵɵadvance(5);
56
- i0.ɵɵtextInterpolate(child_r4.Name);
67
+ i0.ɵɵtextInterpolate(child_r5.Name);
57
68
  i0.ɵɵadvance(2);
58
- i0.ɵɵtextInterpolate1("Child \u00B7 ", child_r4.OrganizationType || "");
69
+ i0.ɵɵtextInterpolate1("Child \u00B7 ", child_r5.OrganizationType || "");
59
70
  } }
60
- function OrgHierarchyTreeComponent_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
61
- i0.ɵɵdomElementStart(0, "div", 3);
62
- i0.ɵɵconditionalCreate(1, OrgHierarchyTreeComponent_Conditional_1_Conditional_1_Conditional_1_Template, 8, 2, "div", 5);
63
- i0.ɵɵdomElementStart(2, "div", 6)(3, "div", 7);
64
- i0.ɵɵdomElement(4, "i", 8);
65
- i0.ɵɵdomElementEnd();
66
- i0.ɵɵdomElementStart(5, "div")(6, "div", 9);
71
+ function OrgHierarchyTreeComponent_Conditional_11_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
72
+ i0.ɵɵelementStart(0, "div", 10);
73
+ i0.ɵɵconditionalCreate(1, OrgHierarchyTreeComponent_Conditional_11_Conditional_1_Conditional_1_Conditional_1_Template, 8, 2, "div", 11);
74
+ i0.ɵɵelementStart(2, "div", 12)(3, "div", 13);
75
+ i0.ɵɵelement(4, "i", 14);
76
+ i0.ɵɵelementEnd();
77
+ i0.ɵɵelementStart(5, "div")(6, "div", 15);
67
78
  i0.ɵɵtext(7);
68
- i0.ɵɵdomElementEnd();
69
- i0.ɵɵdomElementStart(8, "div", 10);
79
+ i0.ɵɵelementEnd();
80
+ i0.ɵɵelementStart(8, "div", 16);
70
81
  i0.ɵɵtext(9);
71
- i0.ɵɵdomElementEnd()()();
72
- i0.ɵɵrepeaterCreate(10, OrgHierarchyTreeComponent_Conditional_1_Conditional_1_For_11_Template, 8, 4, "div", 11, _forTrack0);
73
- i0.ɵɵdomElementEnd();
82
+ i0.ɵɵelementEnd()()();
83
+ i0.ɵɵrepeaterCreate(10, OrgHierarchyTreeComponent_Conditional_11_Conditional_1_Conditional_1_For_11_Template, 8, 4, "div", 17, _forTrack0);
84
+ i0.ɵɵelementEnd();
74
85
  } if (rf & 2) {
75
- const ctx_r1 = i0.ɵɵnextContext(2);
86
+ const ctx_r1 = i0.ɵɵnextContext(3);
76
87
  i0.ɵɵadvance();
77
88
  i0.ɵɵconditional(ctx_r1.ParentNode ? 1 : -1);
78
89
  i0.ɵɵadvance();
@@ -84,40 +95,29 @@ function OrgHierarchyTreeComponent_Conditional_1_Conditional_1_Template(rf, ctx)
84
95
  i0.ɵɵadvance();
85
96
  i0.ɵɵrepeater(ctx_r1.ChildNodes);
86
97
  } }
87
- function OrgHierarchyTreeComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
88
- i0.ɵɵconditionalCreate(0, OrgHierarchyTreeComponent_Conditional_1_Conditional_0_Template, 3, 0, "div", 2)(1, OrgHierarchyTreeComponent_Conditional_1_Conditional_1_Template, 12, 5, "div", 3);
98
+ function OrgHierarchyTreeComponent_Conditional_11_Conditional_1_Template(rf, ctx) { if (rf & 1) {
99
+ i0.ɵɵconditionalCreate(0, OrgHierarchyTreeComponent_Conditional_11_Conditional_1_Conditional_0_Template, 3, 0, "div", 9)(1, OrgHierarchyTreeComponent_Conditional_11_Conditional_1_Conditional_1_Template, 12, 5, "div", 10);
89
100
  } if (rf & 2) {
90
- const ctx_r1 = i0.ɵɵnextContext();
101
+ const ctx_r1 = i0.ɵɵnextContext(2);
91
102
  i0.ɵɵconditional(!ctx_r1.ParentNode && ctx_r1.ChildNodes.length === 0 ? 0 : 1);
92
103
  } }
104
+ function OrgHierarchyTreeComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
105
+ i0.ɵɵconditionalCreate(0, OrgHierarchyTreeComponent_Conditional_11_Conditional_0_Template, 3, 0, "div", 7)(1, OrgHierarchyTreeComponent_Conditional_11_Conditional_1_Template, 2, 1);
106
+ } if (rf & 2) {
107
+ const ctx_r1 = i0.ɵɵnextContext();
108
+ i0.ɵɵconditional(ctx_r1.Loading ? 0 : 1);
109
+ } }
93
110
  /**
94
111
  * Tree-view component that renders the parent/current/child org hierarchy.
95
112
  *
96
- * Self-loads its data from the MemberJunction entity system when `OrganizationID`
97
- * is set. Displays the parent organization (if any), the current organization
98
- * highlighted, and all direct child organizations. Clicking a parent or child
99
- * node emits a navigation event.
100
- *
101
- * Indentation levels are controlled by CSS classes rather than nested DOM
102
- * elements, which works cleanly with Angular's `@if`/`@for` block syntax.
103
- *
104
- * @example
105
- * ```html
106
- * <bizapps-org-hierarchy-tree
107
- * [OrganizationID]="orgRecord.ID"
108
- * (Navigate)="onNavigate($event)">
109
- * </bizapps-org-hierarchy-tree>
110
- * ```
113
+ * Supports both an interactive **Visual Org Chart Canvas** powered by `@memberjunction/ng-hierarchy-tree`
114
+ * and a compact **Outline List** with segmented switcher and UserInfoEngine preference persistence.
111
115
  */
112
116
  export class OrgHierarchyTreeComponent {
113
- /** Angular change-detection reference, injected for manual triggering after async ops. */
114
117
  cdr = inject(ChangeDetectorRef);
115
- /** Backing field for the OrganizationID input property. */
116
118
  _organizationID = '';
117
- /**
118
- * The ID of the current organization whose hierarchy should be displayed.
119
- * Setting this value triggers an asynchronous data reload of parent and child orgs.
120
- */
119
+ /** Active view mode ('chart' for visual canvas, 'outline' for compact list) */
120
+ ViewMode = 'chart';
121
121
  set OrganizationID(value) {
122
122
  const prev = this._organizationID;
123
123
  this._organizationID = value;
@@ -125,41 +125,40 @@ export class OrgHierarchyTreeComponent {
125
125
  this.loadHierarchy();
126
126
  }
127
127
  }
128
- /** Returns the current organization ID. */
129
128
  get OrganizationID() { return this._organizationID; }
130
- /**
131
- * Emitted when the user clicks a parent or child organization node.
132
- * The event payload is a {@link RecordNavigationEvent} targeting the clicked org record.
133
- */
134
129
  Navigate = new EventEmitter();
135
- /**
136
- * The parent organization tree node, or `null` if the current org has no parent.
137
- */
138
130
  ParentNode = null;
139
- /**
140
- * The tree node representing the currently-viewed organization.
141
- */
142
131
  CurrentNode = null;
143
- /**
144
- * Array of direct child organization tree nodes.
145
- */
146
132
  ChildNodes = [];
147
- /**
148
- * Whether the component is currently loading hierarchy data.
149
- */
150
133
  Loading = false;
151
- /**
152
- * The root tree node (set to CurrentNode after loading). Used in the template
153
- * to determine whether the hierarchy has been loaded at all.
154
- */
155
134
  TreeRoot = null;
156
- /**
157
- * Loads the organization hierarchy: current org, optional parent, and children.
158
- *
159
- * Uses RunView to batch-query the parent (if ParentID exists) and all direct
160
- * children (where ParentID matches the current org). Builds OrgTreeNode
161
- * instances from the loaded entity objects.
162
- */
135
+ ngOnInit() {
136
+ this.loadViewPreference();
137
+ }
138
+ loadViewPreference() {
139
+ const pref = UserInfoEngine.Instance.GetSetting('mj.orgHierarchy.viewMode');
140
+ if (pref === 'outline' || pref === 'chart') {
141
+ this.ViewMode = pref;
142
+ }
143
+ }
144
+ SetViewMode(mode) {
145
+ this.ViewMode = mode;
146
+ UserInfoEngine.Instance.SetSettingDebounced('mj.orgHierarchy.viewMode', mode);
147
+ this.cdr.detectChanges();
148
+ }
149
+ get treeConfig() {
150
+ return {
151
+ EntityName: 'MJ_BizApps_Common: Organizations',
152
+ ParentField: 'ParentID',
153
+ SubtitleField: 'OrganizationType',
154
+ DefaultIcon: 'fa-solid fa-building',
155
+ DefaultColor: '#38bdf8',
156
+ FocusRecordID: this._organizationID || undefined,
157
+ Height: '440px',
158
+ ShowSearch: true,
159
+ ShowToolbar: true
160
+ };
161
+ }
163
162
  async loadHierarchy() {
164
163
  this.Loading = true;
165
164
  this.ParentNode = null;
@@ -169,7 +168,6 @@ export class OrgHierarchyTreeComponent {
169
168
  this.cdr.detectChanges();
170
169
  try {
171
170
  const rv = new RunView();
172
- // First, load the current organization
173
171
  const currentResult = await rv.RunView({
174
172
  EntityName: 'MJ_BizApps_Common: Organizations',
175
173
  ExtraFilter: `ID='${this._organizationID}'`,
@@ -181,12 +179,11 @@ export class OrgHierarchyTreeComponent {
181
179
  const currentOrg = currentResult.Results[0];
182
180
  this.CurrentNode = this.buildTreeNode(currentOrg, true);
183
181
  this.TreeRoot = this.CurrentNode;
184
- // Load parent and children in parallel
185
182
  const parentID = currentOrg.ParentID;
186
183
  const batchViews = this.buildBatchQueries(parentID);
187
184
  if (batchViews.length > 0) {
188
- const batchResults = await rv.RunViews(batchViews);
189
- this.processBatchResults(batchResults, parentID);
185
+ const results = await rv.RunViews(batchViews);
186
+ this.processBatchResults(results, parentID);
190
187
  }
191
188
  }
192
189
  catch (err) {
@@ -197,13 +194,6 @@ export class OrgHierarchyTreeComponent {
197
194
  this.cdr.detectChanges();
198
195
  }
199
196
  }
200
- /**
201
- * Builds the array of RunView parameter objects for batch loading.
202
- * Includes a parent org query (if parentID exists) and a children query.
203
- *
204
- * @param parentID - The parent organization ID, or null if none
205
- * @returns Array of RunView parameter objects for batch execution
206
- */
207
197
  buildBatchQueries(parentID) {
208
198
  const queries = [];
209
199
  if (parentID) {
@@ -216,39 +206,25 @@ export class OrgHierarchyTreeComponent {
216
206
  queries.push({
217
207
  EntityName: 'MJ_BizApps_Common: Organizations',
218
208
  ExtraFilter: `ParentID='${this._organizationID}'`,
209
+ OrderBy: 'Name ASC',
219
210
  ResultType: 'entity_object'
220
211
  });
221
212
  return queries;
222
213
  }
223
- /**
224
- * Processes the batch RunView results into parent and child tree nodes.
225
- *
226
- * @param batchResults - The results array from RunViews
227
- * @param parentID - The parent organization ID, used to determine result indexing
228
- */
229
- processBatchResults(batchResults, parentID) {
230
- let childResultIndex = 0;
231
- if (parentID && batchResults.length > 0) {
232
- const parentResult = batchResults[0];
233
- if (parentResult.Success && parentResult.Results.length > 0) {
234
- this.ParentNode = this.buildTreeNode(parentResult.Results[0], false);
214
+ processBatchResults(results, parentID) {
215
+ let resultIndex = 0;
216
+ if (parentID && results[resultIndex]?.Success) {
217
+ const parentOrgs = results[resultIndex].Results;
218
+ if (parentOrgs.length > 0) {
219
+ this.ParentNode = this.buildTreeNode(parentOrgs[0], false);
235
220
  }
236
- childResultIndex = 1;
221
+ resultIndex++;
237
222
  }
238
- if (batchResults.length > childResultIndex) {
239
- const childResult = batchResults[childResultIndex];
240
- if (childResult.Success) {
241
- this.ChildNodes = childResult.Results.map(org => this.buildTreeNode(org, false));
242
- }
223
+ if (results[resultIndex]?.Success) {
224
+ const childOrgs = results[resultIndex].Results;
225
+ this.ChildNodes = childOrgs.map(org => this.buildTreeNode(org, false));
243
226
  }
244
227
  }
245
- /**
246
- * Constructs an OrgTreeNode from a loaded organization entity object.
247
- *
248
- * @param org - The organization entity instance
249
- * @param isCurrent - Whether this node represents the currently-viewed org
250
- * @returns A new OrgTreeNode populated from the entity fields
251
- */
252
228
  buildTreeNode(org, isCurrent) {
253
229
  return {
254
230
  ID: org.ID,
@@ -258,16 +234,10 @@ export class OrgHierarchyTreeComponent {
258
234
  Children: []
259
235
  };
260
236
  }
261
- /**
262
- * Handles click on a tree node (parent or child) and emits a navigation event.
263
- *
264
- * @param node - The OrgTreeNode that was clicked
265
- * @param event - The mouse event, used to detect ctrl/meta key for new-tab behavior
266
- */
267
237
  OnNavigateToOrg(node, event) {
268
- if (node.IsCurrent) {
238
+ if (!node)
269
239
  return;
270
- }
240
+ event.stopPropagation();
271
241
  const navEvent = {
272
242
  Kind: 'record',
273
243
  EntityName: 'MJ_BizApps_Common: Organizations',
@@ -277,19 +247,36 @@ export class OrgHierarchyTreeComponent {
277
247
  this.Navigate.emit(navEvent);
278
248
  }
279
249
  static ɵfac = function OrgHierarchyTreeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || OrgHierarchyTreeComponent)(); };
280
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OrgHierarchyTreeComponent, selectors: [["bizapps-org-hierarchy-tree"]], inputs: { OrganizationID: "OrganizationID" }, outputs: { Navigate: "Navigate" }, decls: 2, vars: 1, consts: [[1, "loading-state"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "empty-state"], [1, "hierarchy-tree"], [1, "fa-solid", "fa-sitemap"], [1, "tree-item"], [1, "tree-item", "tree-item--current"], [1, "tree-icon"], [1, "fa-solid", "fa-building"], [1, "tree-name"], [1, "tree-type"], [1, "tree-item", "tree-indent-child", 3, "tree-indent-deep"], [1, "tree-item", 3, "click"], [1, "tree-item", "tree-indent-child", 3, "click"]], template: function OrgHierarchyTreeComponent_Template(rf, ctx) { if (rf & 1) {
281
- i0.ɵɵconditionalCreate(0, OrgHierarchyTreeComponent_Conditional_0_Template, 3, 0, "div", 0)(1, OrgHierarchyTreeComponent_Conditional_1_Template, 2, 1);
250
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OrgHierarchyTreeComponent, selectors: [["bizapps-org-hierarchy-tree"]], inputs: { OrganizationID: "OrganizationID" }, outputs: { Navigate: "Navigate" }, decls: 12, vars: 5, consts: [[1, "bizapps-view-switcher-bar"], ["role", "group", "aria-label", "Organization hierarchy view mode", 1, "bizapps-view-segmented-group"], ["type", "button", 1, "bizapps-view-segment-btn", 3, "click"], [1, "fa-solid", "fa-sitemap"], [1, "fa-solid", "fa-list-tree"], [3, "Config"], [3, "Navigate", "Config"], [1, "loading-state"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "empty-state"], [1, "hierarchy-tree"], [1, "tree-item"], [1, "tree-item", "tree-item--current"], [1, "tree-icon"], [1, "fa-solid", "fa-building"], [1, "tree-name"], [1, "tree-type"], [1, "tree-item", "tree-indent-child", 3, "tree-indent-deep"], [1, "tree-item", 3, "click"], [1, "tree-item", "tree-indent-child", 3, "click"]], template: function OrgHierarchyTreeComponent_Template(rf, ctx) { if (rf & 1) {
251
+ i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "button", 2);
252
+ i0.ɵɵlistener("click", function OrgHierarchyTreeComponent_Template_button_click_2_listener() { return ctx.SetViewMode("chart"); });
253
+ i0.ɵɵelement(3, "i", 3);
254
+ i0.ɵɵelementStart(4, "span");
255
+ i0.ɵɵtext(5, "Visual Org Chart");
256
+ i0.ɵɵelementEnd()();
257
+ i0.ɵɵelementStart(6, "button", 2);
258
+ i0.ɵɵlistener("click", function OrgHierarchyTreeComponent_Template_button_click_6_listener() { return ctx.SetViewMode("outline"); });
259
+ i0.ɵɵelement(7, "i", 4);
260
+ i0.ɵɵelementStart(8, "span");
261
+ i0.ɵɵtext(9, "Outline");
262
+ i0.ɵɵelementEnd()()()();
263
+ i0.ɵɵconditionalCreate(10, OrgHierarchyTreeComponent_Conditional_10_Template, 1, 1, "mj-hierarchy-tree", 5)(11, OrgHierarchyTreeComponent_Conditional_11_Template, 2, 1);
282
264
  } if (rf & 2) {
283
- i0.ɵɵconditional(ctx.Loading ? 0 : 1);
284
- } }, dependencies: [CommonModule], styles: ["\n\n\n\n\n\n\n\n.loading-state[_ngcontent-%COMP%], \n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 24px;\n color: #999;\n font-size: 13px;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n\n\n.hierarchy-tree[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n\n\n.tree-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: background-color 0.15s;\n}\n\n.tree-item[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n}\n\n\n\n.tree-item--current[_ngcontent-%COMP%] {\n background: #e8f5e9;\n border: 1px solid #c8e6c9;\n cursor: default;\n}\n\n.tree-item--current[_ngcontent-%COMP%]:hover {\n background: #e8f5e9;\n}\n\n.tree-item--current[_ngcontent-%COMP%] .tree-icon[_ngcontent-%COMP%] {\n background: #2e7d32;\n color: #fff;\n}\n\n.tree-item--current[_ngcontent-%COMP%] .tree-name[_ngcontent-%COMP%] {\n color: #1b5e20;\n font-weight: 700;\n}\n\n\n\n.tree-icon[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n min-width: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: #f0f4f8;\n color: #666;\n font-size: 11px;\n}\n\n\n\n.tree-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: #333;\n line-height: 1.3;\n}\n\n.tree-type[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #999;\n line-height: 1.3;\n}\n\n\n\n.tree-indent[_ngcontent-%COMP%] {\n margin-left: 24px;\n}\n\n.tree-indent-child[_ngcontent-%COMP%] {\n margin-left: 24px;\n}\n\n.tree-indent-deep[_ngcontent-%COMP%] {\n margin-left: 48px;\n}"] });
265
+ i0.ɵɵadvance(2);
266
+ i0.ɵɵclassProp("active", ctx.ViewMode === "chart");
267
+ i0.ɵɵadvance(4);
268
+ i0.ɵɵclassProp("active", ctx.ViewMode === "outline");
269
+ i0.ɵɵadvance(4);
270
+ i0.ɵɵconditional(ctx.ViewMode === "chart" ? 10 : 11);
271
+ } }, dependencies: [CommonModule, HierarchyTreeComponent], styles: ["\n\n\n\n\n\n\n\n.bizapps-view-switcher-bar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n margin-bottom: 14px;\n}\n\n.bizapps-view-segmented-group[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n padding: 3px;\n background: var(--mj-bg-surface-sunken, #0b1220);\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: 8px;\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25);\n}\n\n.bizapps-view-segment-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n padding: 5px 14px;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-secondary, #94a3b8);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.18s cubic-bezier(0.4, 0, 0.2, 1);\n user-select: none;\n line-height: 1.4;\n}\n\n.bizapps-view-segment-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n opacity: 0.85;\n}\n\n.bizapps-view-segment-btn[_ngcontent-%COMP%]:hover:not(.active) {\n color: var(--mj-text-primary, #f1f5f9);\n background: rgba(255, 255, 255, 0.05);\n}\n\n.bizapps-view-segment-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary, #0284c7);\n color: #ffffff;\n font-weight: 600;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35), 0 0 8px rgba(2, 132, 199, 0.3);\n}\n\n\n\n.loading-state[_ngcontent-%COMP%], \n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 24px;\n color: var(--mj-text-muted, #64748b);\n font-size: 13px;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n\n\n.hierarchy-tree[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n\n\n.tree-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: background-color 0.15s;\n}\n\n.tree-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card, #141f3d);\n}\n\n\n\n.tree-item--current[_ngcontent-%COMP%] {\n background: rgba(16, 185, 129, 0.12);\n border: 1px solid rgba(16, 185, 129, 0.35);\n cursor: default;\n}\n\n.tree-item--current[_ngcontent-%COMP%]:hover {\n background: rgba(16, 185, 129, 0.16);\n}\n\n.tree-item--current[_ngcontent-%COMP%] .tree-icon[_ngcontent-%COMP%] {\n background: #10b981;\n color: #041124;\n}\n\n.tree-item--current[_ngcontent-%COMP%] .tree-name[_ngcontent-%COMP%] {\n color: #10b981;\n font-weight: 700;\n}\n\n\n\n.tree-icon[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n min-width: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: var(--mj-bg-surface-sunken, #080d1a);\n color: var(--mj-text-secondary, #94a3b8);\n font-size: 11px;\n}\n\n\n\n.tree-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary, #f8fafc);\n line-height: 1.3;\n}\n\n.tree-type[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted, #64748b);\n line-height: 1.3;\n}\n\n\n\n.tree-indent[_ngcontent-%COMP%] {\n margin-left: 24px;\n}\n\n.tree-indent-child[_ngcontent-%COMP%] {\n margin-left: 24px;\n}\n\n.tree-indent-deep[_ngcontent-%COMP%] {\n margin-left: 48px;\n}"] });
285
272
  }
286
273
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OrgHierarchyTreeComponent, [{
287
274
  type: Component,
288
- args: [{ standalone: true, imports: [CommonModule], selector: 'bizapps-org-hierarchy-tree', template: "@if (Loading) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading hierarchy...\n </div>\n} @else {\n @if (!ParentNode && ChildNodes.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sitemap\"></i> No hierarchy data\n </div>\n } @else {\n <div class=\"hierarchy-tree\">\n <!-- Parent organization (if exists) -->\n @if (ParentNode) {\n <div class=\"tree-item\" (click)=\"OnNavigateToOrg(ParentNode, $event)\">\n <div class=\"tree-icon\"><i class=\"fa-solid fa-building\"></i></div>\n <div>\n <div class=\"tree-name\">{{ ParentNode.Name }}</div>\n <div class=\"tree-type\">Parent \u00B7 {{ ParentNode.OrganizationType || '' }}</div>\n </div>\n </div>\n }\n\n <!-- Current organization (highlighted) -->\n <div class=\"tree-item tree-item--current\" [class.tree-indent]=\"ParentNode !== null\">\n <div class=\"tree-icon\"><i class=\"fa-solid fa-building\"></i></div>\n <div>\n <div class=\"tree-name\">{{ CurrentNode?.Name }}</div>\n <div class=\"tree-type\">Current \u00B7 {{ CurrentNode?.OrganizationType || '' }}</div>\n </div>\n </div>\n\n <!-- Child organizations -->\n @for (child of ChildNodes; track child.ID) {\n <div class=\"tree-item tree-indent-child\"\n [class.tree-indent-deep]=\"ParentNode !== null\"\n (click)=\"OnNavigateToOrg(child, $event)\">\n <div class=\"tree-icon\"><i class=\"fa-solid fa-building\"></i></div>\n <div>\n <div class=\"tree-name\">{{ child.Name }}</div>\n <div class=\"tree-type\">Child \u00B7 {{ child.OrganizationType || '' }}</div>\n </div>\n </div>\n }\n </div>\n }\n}\n", styles: ["/* ==============================\n OrgHierarchyTreeComponent Styles\n Tree view showing parent / current / child org hierarchy\n ============================== */\n\n/* ---- Loading & empty states ---- */\n.loading-state,\n.empty-state {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 24px;\n color: #999;\n font-size: 13px;\n}\n\n.empty-state i {\n font-size: 16px;\n}\n\n/* ---- Tree container ---- */\n.hierarchy-tree {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n/* ---- Individual tree item ---- */\n.tree-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: background-color 0.15s;\n}\n\n.tree-item:hover {\n background: #f5f5f5;\n}\n\n/* ---- Current org highlight ---- */\n.tree-item--current {\n background: #e8f5e9;\n border: 1px solid #c8e6c9;\n cursor: default;\n}\n\n.tree-item--current:hover {\n background: #e8f5e9;\n}\n\n.tree-item--current .tree-icon {\n background: #2e7d32;\n color: #fff;\n}\n\n.tree-item--current .tree-name {\n color: #1b5e20;\n font-weight: 700;\n}\n\n/* ---- Tree icon ---- */\n.tree-icon {\n width: 28px;\n height: 28px;\n min-width: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: #f0f4f8;\n color: #666;\n font-size: 11px;\n}\n\n/* ---- Tree text ---- */\n.tree-name {\n font-size: 13px;\n font-weight: 600;\n color: #333;\n line-height: 1.3;\n}\n\n.tree-type {\n font-size: 11px;\n color: #999;\n line-height: 1.3;\n}\n\n/* ---- Indentation levels ---- */\n.tree-indent {\n margin-left: 24px;\n}\n\n.tree-indent-child {\n margin-left: 24px;\n}\n\n.tree-indent-deep {\n margin-left: 48px;\n}\n"] }]
275
+ args: [{ standalone: true, imports: [CommonModule, HierarchyTreeComponent], selector: 'bizapps-org-hierarchy-tree', template: "<!-- Segmented View Mode Switcher -->\n<div class=\"bizapps-view-switcher-bar\">\n <div class=\"bizapps-view-segmented-group\" role=\"group\" aria-label=\"Organization hierarchy view mode\">\n <button\n type=\"button\"\n class=\"bizapps-view-segment-btn\"\n [class.active]=\"ViewMode === 'chart'\"\n (click)=\"SetViewMode('chart')\">\n <i class=\"fa-solid fa-sitemap\"></i>\n <span>Visual Org Chart</span>\n </button>\n <button\n type=\"button\"\n class=\"bizapps-view-segment-btn\"\n [class.active]=\"ViewMode === 'outline'\"\n (click)=\"SetViewMode('outline')\">\n <i class=\"fa-solid fa-list-tree\"></i>\n <span>Outline</span>\n </button>\n </div>\n</div>\n\n@if (ViewMode === 'chart') {\n <mj-hierarchy-tree\n [Config]=\"treeConfig\"\n (Navigate)=\"Navigate.emit($event)\">\n </mj-hierarchy-tree>\n} @else {\n @if (Loading) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading hierarchy...\n </div>\n } @else {\n @if (!ParentNode && ChildNodes.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sitemap\"></i> No parent or subsidiary organizations found.\n </div>\n } @else {\n <div class=\"hierarchy-tree\">\n <!-- Parent organization (if exists) -->\n @if (ParentNode) {\n <div class=\"tree-item\" (click)=\"OnNavigateToOrg(ParentNode, $event)\">\n <div class=\"tree-icon\"><i class=\"fa-solid fa-building\"></i></div>\n <div>\n <div class=\"tree-name\">{{ ParentNode.Name }}</div>\n <div class=\"tree-type\">Parent \u00B7 {{ ParentNode.OrganizationType || '' }}</div>\n </div>\n </div>\n }\n\n <!-- Current organization (highlighted) -->\n <div class=\"tree-item tree-item--current\" [class.tree-indent]=\"ParentNode !== null\">\n <div class=\"tree-icon\"><i class=\"fa-solid fa-building\"></i></div>\n <div>\n <div class=\"tree-name\">{{ CurrentNode?.Name }}</div>\n <div class=\"tree-type\">Current \u00B7 {{ CurrentNode?.OrganizationType || '' }}</div>\n </div>\n </div>\n\n <!-- Child organizations -->\n @for (child of ChildNodes; track child.ID) {\n <div class=\"tree-item tree-indent-child\"\n [class.tree-indent-deep]=\"ParentNode !== null\"\n (click)=\"OnNavigateToOrg(child, $event)\">\n <div class=\"tree-icon\"><i class=\"fa-solid fa-building\"></i></div>\n <div>\n <div class=\"tree-name\">{{ child.Name }}</div>\n <div class=\"tree-type\">Child \u00B7 {{ child.OrganizationType || '' }}</div>\n </div>\n </div>\n }\n </div>\n }\n }\n}\n", styles: ["/* ==============================\n OrgHierarchyTreeComponent Styles\n Tree view showing parent / current / child org hierarchy\n ============================== */\n\n/* View Switcher */\n.bizapps-view-switcher-bar {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n margin-bottom: 14px;\n}\n\n.bizapps-view-segmented-group {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n padding: 3px;\n background: var(--mj-bg-surface-sunken, #0b1220);\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: 8px;\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25);\n}\n\n.bizapps-view-segment-btn {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n padding: 5px 14px;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-secondary, #94a3b8);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.18s cubic-bezier(0.4, 0, 0.2, 1);\n user-select: none;\n line-height: 1.4;\n}\n\n.bizapps-view-segment-btn i {\n font-size: 12px;\n opacity: 0.85;\n}\n\n.bizapps-view-segment-btn:hover:not(.active) {\n color: var(--mj-text-primary, #f1f5f9);\n background: rgba(255, 255, 255, 0.05);\n}\n\n.bizapps-view-segment-btn.active {\n background: var(--mj-brand-primary, #0284c7);\n color: #ffffff;\n font-weight: 600;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35), 0 0 8px rgba(2, 132, 199, 0.3);\n}\n\n/* ---- Loading & empty states ---- */\n.loading-state,\n.empty-state {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 24px;\n color: var(--mj-text-muted, #64748b);\n font-size: 13px;\n}\n\n.empty-state i {\n font-size: 16px;\n}\n\n/* ---- Tree container ---- */\n.hierarchy-tree {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n/* ---- Individual tree item ---- */\n.tree-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: background-color 0.15s;\n}\n\n.tree-item:hover {\n background: var(--mj-bg-surface-card, #141f3d);\n}\n\n/* ---- Current org highlight ---- */\n.tree-item--current {\n background: rgba(16, 185, 129, 0.12);\n border: 1px solid rgba(16, 185, 129, 0.35);\n cursor: default;\n}\n\n.tree-item--current:hover {\n background: rgba(16, 185, 129, 0.16);\n}\n\n.tree-item--current .tree-icon {\n background: #10b981;\n color: #041124;\n}\n\n.tree-item--current .tree-name {\n color: #10b981;\n font-weight: 700;\n}\n\n/* ---- Tree icon ---- */\n.tree-icon {\n width: 28px;\n height: 28px;\n min-width: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: var(--mj-bg-surface-sunken, #080d1a);\n color: var(--mj-text-secondary, #94a3b8);\n font-size: 11px;\n}\n\n/* ---- Tree text ---- */\n.tree-name {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary, #f8fafc);\n line-height: 1.3;\n}\n\n.tree-type {\n font-size: 11px;\n color: var(--mj-text-muted, #64748b);\n line-height: 1.3;\n}\n\n/* ---- Indentation levels ---- */\n.tree-indent {\n margin-left: 24px;\n}\n\n.tree-indent-child {\n margin-left: 24px;\n}\n\n.tree-indent-deep {\n margin-left: 48px;\n}\n"] }]
289
276
  }], null, { OrganizationID: [{
290
277
  type: Input
291
278
  }], Navigate: [{
292
279
  type: Output
293
280
  }] }); })();
294
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(OrgHierarchyTreeComponent, { className: "OrgHierarchyTreeComponent", filePath: "lib/components/org-hierarchy-tree/org-hierarchy-tree.component.ts", lineNumber: 51 }); })();
281
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(OrgHierarchyTreeComponent, { className: "OrgHierarchyTreeComponent", filePath: "lib/components/org-hierarchy-tree/org-hierarchy-tree.component.ts", lineNumber: 38 }); })();
295
282
  //# sourceMappingURL=org-hierarchy-tree.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"org-hierarchy-tree.component.js","sourceRoot":"","sources":["../../../../src/lib/components/org-hierarchy-tree/org-hierarchy-tree.component.ts","../../../../src/lib/components/org-hierarchy-tree/org-hierarchy-tree.component.html"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"org-hierarchy-tree.component.js","sourceRoot":"","sources":["../../../../src/lib/components/org-hierarchy-tree/org-hierarchy-tree.component.ts","../../../../src/lib/components/org-hierarchy-tree/org-hierarchy-tree.component.html"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';
2
+ import type { FormNavigationEvent } from '@memberjunction/ng-base-forms';
3
+ import { type GraphNode, type GraphEdge, type GraphLayoutMode, type GraphCategoryConfig, type HopExpandedEventArgs, type NodeSelectedEventArgs, type NodeNavigatedEventArgs, type LayoutChangedEventArgs, type ViewportTransformEventArgs } from '@memberjunction/ng-graph-view';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * `<bizapps-relationship-graph>` — Entity-aware relationship graph viewer for BizApps Common.
7
+ *
8
+ * Visualizes interconnections between People, Organizations, and linked roles.
9
+ * Performs smart, bounded queries to load local neighborhoods without overwhelming the database.
10
+ */
11
+ export declare class CommonRelationshipGraphComponent implements OnInit, OnChanges {
12
+ private cdr;
13
+ PersonID?: string;
14
+ OrganizationID?: string;
15
+ Height: string;
16
+ Navigate: EventEmitter<FormNavigationEvent>;
17
+ Nodes: GraphNode[];
18
+ Edges: GraphEdge[];
19
+ FocalNodeID?: string;
20
+ LayoutMode: GraphLayoutMode;
21
+ IsLoading: boolean;
22
+ readonly GraphCategories: GraphCategoryConfig[];
23
+ private static graphCache;
24
+ private get PrefsKey();
25
+ ngOnInit(): void;
26
+ private LoadPrefs;
27
+ OnLayoutChanged(event: LayoutChangedEventArgs): void;
28
+ OnViewportTransform(event: ViewportTransformEventArgs): void;
29
+ private SavePrefs;
30
+ ngOnChanges(changes: SimpleChanges): void;
31
+ LoadGraphData(): Promise<void>;
32
+ private BuildGraphFromRelationships;
33
+ OnHopExpanded(event: HopExpandedEventArgs): Promise<void>;
34
+ private AppendIncrementalRelationships;
35
+ OnNodeSelected(_event: NodeSelectedEventArgs): void;
36
+ OnNodeNavigated(event: NodeNavigatedEventArgs): void;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<CommonRelationshipGraphComponent, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<CommonRelationshipGraphComponent, "bizapps-relationship-graph", never, { "PersonID": { "alias": "PersonID"; "required": false; }; "OrganizationID": { "alias": "OrganizationID"; "required": false; }; "Height": { "alias": "Height"; "required": false; }; }, { "Navigate": "Navigate"; }, never, never, true, never>;
39
+ }
40
+ //# sourceMappingURL=common-relationship-graph.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-relationship-graph.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/relationship-graph/common-relationship-graph.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,YAAY,EACZ,MAAM,EACN,SAAS,EACT,aAAa,EAEhB,MAAM,eAAe,CAAC;AAIvB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAEH,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAClC,MAAM,+BAA+B,CAAC;;AAIvC;;;;;GAKG;AACH,qBAgEa,gCAAiC,YAAW,MAAM,EAAE,SAAS;IACtE,OAAO,CAAC,GAAG,CAA6B;IAExB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,SAAU;IAEf,QAAQ,oCAA2C;IAE7D,KAAK,EAAE,SAAS,EAAE,CAAM;IACxB,KAAK,EAAE,SAAS,EAAE,CAAM;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,eAAe,CAAW;IACtC,SAAS,UAAS;IAEzB,SAAgB,eAAe,EAAE,mBAAmB,EAAE,CAGpD;IAEF,OAAO,CAAC,MAAM,CAAC,UAAU,CAAiE;IAE1F,OAAO,KAAK,QAAQ,GAInB;IAEM,QAAQ,IAAI,IAAI;IAKvB,OAAO,CAAC,SAAS;IAcV,eAAe,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI;IAKpD,mBAAmB,CAAC,KAAK,EAAE,0BAA0B,GAAG,IAAI;IAInE,OAAO,CAAC,SAAS;IAQV,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMnC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAoD3C,OAAO,CAAC,2BAA2B;IAyGtB,aAAa,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BtE,OAAO,CAAC,8BAA8B;IAyE/B,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI;IAInD,eAAe,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI;yCA3UlD,gCAAgC;2CAAhC,gCAAgC;CAqV5C"}