@mj-biz-apps/accounting-ng 0.4.0 → 0.6.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/custom/GLAccount/gl-account-form.component.js +53 -45
- package/dist/lib/custom/GLAccount/gl-account-form.component.js.map +1 -1
- package/dist/lib/custom/shell/configuration-category.component.d.ts.map +1 -1
- package/dist/lib/custom/shell/configuration-category.component.js +10 -5
- package/dist/lib/custom/shell/configuration-category.component.js.map +1 -1
- package/dist/lib/custom/shell/pages/erp-sync.client.d.ts +8 -0
- package/dist/lib/custom/shell/pages/erp-sync.client.d.ts.map +1 -0
- package/dist/lib/custom/shell/pages/erp-sync.client.js +25 -0
- package/dist/lib/custom/shell/pages/erp-sync.client.js.map +1 -0
- package/dist/lib/custom/shell/pages/erp-sync.page.d.ts +31 -0
- package/dist/lib/custom/shell/pages/erp-sync.page.d.ts.map +1 -0
- package/dist/lib/custom/shell/pages/erp-sync.page.js +195 -0
- package/dist/lib/custom/shell/pages/erp-sync.page.js.map +1 -0
- package/dist/lib/custom/shell/shell.module.d.ts +28 -26
- package/dist/lib/custom/shell/shell.module.d.ts.map +1 -1
- package/dist/lib/custom/shell/shell.module.js +8 -1
- package/dist/lib/custom/shell/shell.module.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingAccountingCompanyProfile/mjbizappsaccountingaccountingcompanyprofile.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingAccountingCompanyProfile/mjbizappsaccountingaccountingcompanyprofile.form.component.js +23 -17
- package/dist/lib/generated/Entities/mjBizAppsAccountingAccountingCompanyProfile/mjbizappsaccountingaccountingcompanyprofile.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingAccountingEngineExtension/mjbizappsaccountingaccountingengineextension.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsAccountingAccountingEngineExtension/mjbizappsaccountingaccountingengineextension.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsAccountingAccountingEngineExtension/mjbizappsaccountingaccountingengineextension.form.component.js +89 -0
- package/dist/lib/generated/Entities/mjBizAppsAccountingAccountingEngineExtension/mjbizappsaccountingaccountingengineextension.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsAccountingCompanyTaxNexus/mjbizappsaccountingcompanytaxnexus.form.component.js +12 -12
- package/dist/lib/generated/Entities/mjBizAppsAccountingCompanyTaxNexus/mjbizappsaccountingcompanytaxnexus.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingCurrency/mjbizappsaccountingcurrency.form.component.js +17 -17
- package/dist/lib/generated/Entities/mjBizAppsAccountingCurrency/mjbizappsaccountingcurrency.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingCurrencySpotRate/mjbizappsaccountingcurrencyspotrate.form.component.js +2 -2
- package/dist/lib/generated/Entities/mjBizAppsAccountingDimension/mjbizappsaccountingdimension.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingDimension/mjbizappsaccountingdimension.form.component.js +43 -49
- package/dist/lib/generated/Entities/mjBizAppsAccountingDimension/mjbizappsaccountingdimension.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingDimensionValue/mjbizappsaccountingdimensionvalue.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingDimensionValue/mjbizappsaccountingdimensionvalue.form.component.js +40 -34
- package/dist/lib/generated/Entities/mjBizAppsAccountingDimensionValue/mjbizappsaccountingdimensionvalue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingGLAccount/mjbizappsaccountingglaccount.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingGLAccount/mjbizappsaccountingglaccount.form.component.js +56 -44
- package/dist/lib/generated/Entities/mjBizAppsAccountingGLAccount/mjbizappsaccountingglaccount.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingGLAccountLink/mjbizappsaccountingglaccountlink.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingGLAccountLink/mjbizappsaccountingglaccountlink.form.component.js +18 -14
- package/dist/lib/generated/Entities/mjBizAppsAccountingGLAccountLink/mjbizappsaccountingglaccountlink.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingGLAccountRole/mjbizappsaccountingglaccountrole.form.component.js +15 -13
- package/dist/lib/generated/Entities/mjBizAppsAccountingGLAccountRole/mjbizappsaccountingglaccountrole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingIntercompanyAccountMatch/mjbizappsaccountingintercompanyaccountmatch.form.component.js +4 -4
- package/dist/lib/generated/Entities/mjBizAppsAccountingIntercompanyAccountMatch/mjbizappsaccountingintercompanyaccountmatch.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingIntercompanyAccountMatchDimension/mjbizappsaccountingintercompanyaccountmatchdimension.form.component.js +7 -7
- package/dist/lib/generated/Entities/mjBizAppsAccountingIntercompanyAccountMatchDimension/mjbizappsaccountingintercompanyaccountmatchdimension.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingJournalEntry/mjbizappsaccountingjournalentry.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingJournalEntry/mjbizappsaccountingjournalentry.form.component.js +58 -68
- package/dist/lib/generated/Entities/mjBizAppsAccountingJournalEntry/mjbizappsaccountingjournalentry.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingJournalEntryBatch/mjbizappsaccountingjournalentrybatch.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingJournalEntryBatch/mjbizappsaccountingjournalentrybatch.form.component.js +25 -31
- package/dist/lib/generated/Entities/mjBizAppsAccountingJournalEntryBatch/mjbizappsaccountingjournalentrybatch.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingJournalEntryBatchSequence/mjbizappsaccountingjournalentrybatchsequence.form.component.js +3 -3
- package/dist/lib/generated/Entities/mjBizAppsAccountingJournalEntryBatchSequence/mjbizappsaccountingjournalentrybatchsequence.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingJournalEntryLineDimension/mjbizappsaccountingjournalentrylinedimension.form.component.js +3 -3
- package/dist/lib/generated/Entities/mjBizAppsAccountingJournalEntryLineDimension/mjbizappsaccountingjournalentrylinedimension.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingJournalEntryType/mjbizappsaccountingjournalentrytype.form.component.js +3 -3
- package/dist/lib/generated/Entities/mjBizAppsAccountingJournalEntryType/mjbizappsaccountingjournalentrytype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingTaxAuthority/mjbizappsaccountingtaxauthority.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingTaxAuthority/mjbizappsaccountingtaxauthority.form.component.js +17 -23
- package/dist/lib/generated/Entities/mjBizAppsAccountingTaxAuthority/mjbizappsaccountingtaxauthority.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingTaxJurisdiction/mjbizappsaccountingtaxjurisdiction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingTaxJurisdiction/mjbizappsaccountingtaxjurisdiction.form.component.js +47 -41
- package/dist/lib/generated/Entities/mjBizAppsAccountingTaxJurisdiction/mjbizappsaccountingtaxjurisdiction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingTaxLiability/mjbizappsaccountingtaxliability.form.component.js +5 -5
- package/dist/lib/generated/Entities/mjBizAppsAccountingTaxLiability/mjbizappsaccountingtaxliability.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingTaxRate/mjbizappsaccountingtaxrate.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsAccountingTaxRate/mjbizappsaccountingtaxrate.form.component.js +13 -19
- package/dist/lib/generated/Entities/mjBizAppsAccountingTaxRate/mjbizappsaccountingtaxrate.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +25 -24
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +8 -5
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/widgets/erp-sync/erp-connection-card.component.d.ts +16 -0
- package/dist/lib/widgets/erp-sync/erp-connection-card.component.d.ts.map +1 -0
- package/dist/lib/widgets/erp-sync/erp-connection-card.component.js +106 -0
- package/dist/lib/widgets/erp-sync/erp-connection-card.component.js.map +1 -0
- package/dist/lib/widgets/erp-sync/erp-extension-list.component.d.ts +11 -0
- package/dist/lib/widgets/erp-sync/erp-extension-list.component.d.ts.map +1 -0
- package/dist/lib/widgets/erp-sync/erp-extension-list.component.js +87 -0
- package/dist/lib/widgets/erp-sync/erp-extension-list.component.js.map +1 -0
- package/dist/lib/widgets/erp-sync/erp-sync-panel.component.d.ts +19 -0
- package/dist/lib/widgets/erp-sync/erp-sync-panel.component.d.ts.map +1 -0
- package/dist/lib/widgets/erp-sync/erp-sync-panel.component.js +121 -0
- package/dist/lib/widgets/erp-sync/erp-sync-panel.component.js.map +1 -0
- package/dist/lib/widgets/erp-sync/erp-sync.types.d.ts +28 -0
- package/dist/lib/widgets/erp-sync/erp-sync.types.d.ts.map +1 -0
- package/dist/lib/widgets/erp-sync/erp-sync.types.js +2 -0
- package/dist/lib/widgets/erp-sync/erp-sync.types.js.map +1 -0
- package/dist/lib/widgets/erp-sync/erp-sync.widgets.module.d.ts +14 -0
- package/dist/lib/widgets/erp-sync/erp-sync.widgets.module.d.ts.map +1 -0
- package/dist/lib/widgets/erp-sync/erp-sync.widgets.module.js +24 -0
- package/dist/lib/widgets/erp-sync/erp-sync.widgets.module.js.map +1 -0
- package/package.json +19 -19
|
@@ -15,12 +15,12 @@ import * as i2 from "@memberjunction/ng-base-forms";
|
|
|
15
15
|
import * as i3 from "@memberjunction/ng-shared-generic";
|
|
16
16
|
import * as i4 from "@memberjunction/ng-ui-components";
|
|
17
17
|
const _forTrack0 = ($index, $item) => $item.ID;
|
|
18
|
-
function
|
|
19
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
18
|
+
function GLAccountFormComponentExtended_Conditional_0_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
+
i0.ɵɵelement(0, "mj-loading", 20);
|
|
20
20
|
} }
|
|
21
|
-
function
|
|
22
|
-
i0.ɵɵelementStart(0, "div",
|
|
23
|
-
i0.ɵɵelement(1, "i",
|
|
21
|
+
function GLAccountFormComponentExtended_Conditional_0_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
22
|
+
i0.ɵɵelementStart(0, "div", 21);
|
|
23
|
+
i0.ɵɵelement(1, "i", 24);
|
|
24
24
|
i0.ɵɵtext(2);
|
|
25
25
|
i0.ɵɵelementEnd();
|
|
26
26
|
} if (rf & 2) {
|
|
@@ -28,14 +28,14 @@ function GLAccountFormComponentExtended_Conditional_0_Conditional_23_Template(rf
|
|
|
28
28
|
i0.ɵɵadvance(2);
|
|
29
29
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.TreeError, " ");
|
|
30
30
|
} }
|
|
31
|
-
function
|
|
32
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
31
|
+
function GLAccountFormComponentExtended_Conditional_0_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
+
i0.ɵɵelement(0, "mj-empty-state", 22);
|
|
33
33
|
} }
|
|
34
|
-
function
|
|
34
|
+
function GLAccountFormComponentExtended_Conditional_0_Conditional_29_For_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
35
35
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
36
|
-
i0.ɵɵelementStart(0, "button",
|
|
37
|
-
i0.ɵɵlistener("click", function
|
|
38
|
-
i0.ɵɵelement(1, "i",
|
|
36
|
+
i0.ɵɵelementStart(0, "button", 33);
|
|
37
|
+
i0.ɵɵlistener("click", function GLAccountFormComponentExtended_Conditional_0_Conditional_29_For_2_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const node_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleNode(node_r4)); });
|
|
38
|
+
i0.ɵɵelement(1, "i", 34);
|
|
39
39
|
i0.ɵɵelementEnd();
|
|
40
40
|
} if (rf & 2) {
|
|
41
41
|
const node_r4 = i0.ɵɵnextContext().$implicit;
|
|
@@ -43,30 +43,30 @@ function GLAccountFormComponentExtended_Conditional_0_Conditional_25_For_2_Condi
|
|
|
43
43
|
i0.ɵɵadvance();
|
|
44
44
|
i0.ɵɵclassProp("fa-chevron-down", node_r4.Expanded)("fa-chevron-right", !node_r4.Expanded);
|
|
45
45
|
} }
|
|
46
|
-
function
|
|
47
|
-
i0.ɵɵelementStart(0, "span",
|
|
48
|
-
i0.ɵɵelement(1, "i",
|
|
46
|
+
function GLAccountFormComponentExtended_Conditional_0_Conditional_29_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
+
i0.ɵɵelementStart(0, "span", 28);
|
|
48
|
+
i0.ɵɵelement(1, "i", 35);
|
|
49
49
|
i0.ɵɵelementEnd();
|
|
50
50
|
} }
|
|
51
|
-
function
|
|
52
|
-
i0.ɵɵelementStart(0, "span",
|
|
53
|
-
i0.ɵɵelement(1, "i",
|
|
51
|
+
function GLAccountFormComponentExtended_Conditional_0_Conditional_29_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
+
i0.ɵɵelementStart(0, "span", 32);
|
|
53
|
+
i0.ɵɵelement(1, "i", 36);
|
|
54
54
|
i0.ɵɵtext(2, " inactive");
|
|
55
55
|
i0.ɵɵelementEnd();
|
|
56
56
|
} }
|
|
57
|
-
function
|
|
58
|
-
i0.ɵɵelementStart(0, "li",
|
|
59
|
-
i0.ɵɵconditionalCreate(1,
|
|
60
|
-
i0.ɵɵelementStart(3, "span",
|
|
57
|
+
function GLAccountFormComponentExtended_Conditional_0_Conditional_29_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
58
|
+
i0.ɵɵelementStart(0, "li", 26);
|
|
59
|
+
i0.ɵɵconditionalCreate(1, GLAccountFormComponentExtended_Conditional_0_Conditional_29_For_2_Conditional_1_Template, 2, 5, "button", 27)(2, GLAccountFormComponentExtended_Conditional_0_Conditional_29_For_2_Conditional_2_Template, 2, 0, "span", 28);
|
|
60
|
+
i0.ɵɵelementStart(3, "span", 29);
|
|
61
61
|
i0.ɵɵtext(4);
|
|
62
62
|
i0.ɵɵelementEnd();
|
|
63
|
-
i0.ɵɵelementStart(5, "span",
|
|
63
|
+
i0.ɵɵelementStart(5, "span", 30);
|
|
64
64
|
i0.ɵɵtext(6);
|
|
65
65
|
i0.ɵɵelementEnd();
|
|
66
|
-
i0.ɵɵelementStart(7, "span",
|
|
66
|
+
i0.ɵɵelementStart(7, "span", 31);
|
|
67
67
|
i0.ɵɵtext(8);
|
|
68
68
|
i0.ɵɵelementEnd();
|
|
69
|
-
i0.ɵɵconditionalCreate(9,
|
|
69
|
+
i0.ɵɵconditionalCreate(9, GLAccountFormComponentExtended_Conditional_0_Conditional_29_For_2_Conditional_9_Template, 3, 0, "span", 32);
|
|
70
70
|
i0.ɵɵelementEnd();
|
|
71
71
|
} if (rf & 2) {
|
|
72
72
|
const node_r4 = ctx.$implicit;
|
|
@@ -83,9 +83,9 @@ function GLAccountFormComponentExtended_Conditional_0_Conditional_25_For_2_Templ
|
|
|
83
83
|
i0.ɵɵadvance();
|
|
84
84
|
i0.ɵɵconditional(!node_r4.IsActive ? 9 : -1);
|
|
85
85
|
} }
|
|
86
|
-
function
|
|
87
|
-
i0.ɵɵelementStart(0, "ul",
|
|
88
|
-
i0.ɵɵrepeaterCreate(1,
|
|
86
|
+
function GLAccountFormComponentExtended_Conditional_0_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
87
|
+
i0.ɵɵelementStart(0, "ul", 23);
|
|
88
|
+
i0.ɵɵrepeaterCreate(1, GLAccountFormComponentExtended_Conditional_0_Conditional_29_For_2_Template, 10, 9, "li", 25, _forTrack0);
|
|
89
89
|
i0.ɵɵelementEnd();
|
|
90
90
|
} if (rf & 2) {
|
|
91
91
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -97,27 +97,27 @@ function GLAccountFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf
|
|
|
97
97
|
i0.ɵɵelementStart(0, "mj-record-form-container", 1);
|
|
98
98
|
i0.ɵɵlistener("Navigate", function GLAccountFormComponentExtended_Conditional_0_Template_mj_record_form_container_Navigate_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("DeleteRequested", function GLAccountFormComponentExtended_Conditional_0_Template_mj_record_form_container_DeleteRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDeleteRequested()); })("FavoriteToggled", function GLAccountFormComponentExtended_Conditional_0_Template_mj_record_form_container_FavoriteToggled_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFavoriteToggled()); })("HistoryRequested", function GLAccountFormComponentExtended_Conditional_0_Template_mj_record_form_container_HistoryRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnHistoryRequested()); })("ListManagementRequested", function GLAccountFormComponentExtended_Conditional_0_Template_mj_record_form_container_ListManagementRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnListManagementRequested()); });
|
|
99
99
|
i0.ɵɵelementStart(1, "mj-collapsible-panel", 2);
|
|
100
|
-
i0.ɵɵelement(2, "mj-form-field", 3)(3, "mj-form-field", 4)(4, "mj-form-field", 5)(5, "mj-form-field", 6)(6, "mj-form-field", 7)(7, "mj-form-field", 8);
|
|
100
|
+
i0.ɵɵelement(2, "mj-form-field", 3)(3, "mj-form-field", 4)(4, "mj-form-field", 5)(5, "mj-form-field", 6)(6, "mj-form-field", 7)(7, "mj-form-field", 8)(8, "mj-form-field", 9)(9, "mj-form-field", 10)(10, "mj-form-field", 11)(11, "mj-form-field", 12);
|
|
101
101
|
i0.ɵɵelementEnd();
|
|
102
|
-
i0.ɵɵelementStart(
|
|
103
|
-
i0.ɵɵtext(
|
|
102
|
+
i0.ɵɵelementStart(12, "mj-collapsible-panel", 13)(13, "div", 14)(14, "label", 15)(15, "span", 16);
|
|
103
|
+
i0.ɵɵtext(16, "Filter by Company");
|
|
104
104
|
i0.ɵɵelementEnd();
|
|
105
|
-
i0.ɵɵelementStart(
|
|
106
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
105
|
+
i0.ɵɵelementStart(17, "mj-dropdown", 17);
|
|
106
|
+
i0.ɵɵlistener("ngModelChange", function GLAccountFormComponentExtended_Conditional_0_Template_mj_dropdown_ngModelChange_17_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnCompanyChange($event ?? "")); });
|
|
107
107
|
i0.ɵɵelementEnd()();
|
|
108
|
-
i0.ɵɵelementStart(
|
|
109
|
-
i0.ɵɵtext(
|
|
108
|
+
i0.ɵɵelementStart(18, "label", 15)(19, "span", 16);
|
|
109
|
+
i0.ɵɵtext(20, "Type");
|
|
110
110
|
i0.ɵɵelementEnd();
|
|
111
|
-
i0.ɵɵelementStart(
|
|
112
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
111
|
+
i0.ɵɵelementStart(21, "mj-dropdown", 18);
|
|
112
|
+
i0.ɵɵlistener("ngModelChange", function GLAccountFormComponentExtended_Conditional_0_Template_mj_dropdown_ngModelChange_21_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnTypeFilterChange($event)); });
|
|
113
113
|
i0.ɵɵelementEnd()();
|
|
114
|
-
i0.ɵɵelementStart(
|
|
115
|
-
i0.ɵɵtext(
|
|
114
|
+
i0.ɵɵelementStart(22, "label", 15)(23, "span", 16);
|
|
115
|
+
i0.ɵɵtext(24, "Status");
|
|
116
116
|
i0.ɵɵelementEnd();
|
|
117
|
-
i0.ɵɵelementStart(
|
|
118
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
117
|
+
i0.ɵɵelementStart(25, "mj-dropdown", 19);
|
|
118
|
+
i0.ɵɵlistener("ngModelChange", function GLAccountFormComponentExtended_Conditional_0_Template_mj_dropdown_ngModelChange_25_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnStatusFilterChange($event)); });
|
|
119
119
|
i0.ɵɵelementEnd()()();
|
|
120
|
-
i0.ɵɵconditionalCreate(
|
|
120
|
+
i0.ɵɵconditionalCreate(26, GLAccountFormComponentExtended_Conditional_0_Conditional_26_Template, 1, 0, "mj-loading", 20)(27, GLAccountFormComponentExtended_Conditional_0_Conditional_27_Template, 3, 1, "div", 21)(28, GLAccountFormComponentExtended_Conditional_0_Conditional_28_Template, 1, 0, "mj-empty-state", 22)(29, GLAccountFormComponentExtended_Conditional_0_Conditional_29_Template, 3, 0, "ul", 23);
|
|
121
121
|
i0.ɵɵelementEnd()();
|
|
122
122
|
} if (rf & 2) {
|
|
123
123
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -125,14 +125,22 @@ function GLAccountFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf
|
|
|
125
125
|
i0.ɵɵadvance();
|
|
126
126
|
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
127
127
|
i0.ɵɵadvance();
|
|
128
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode && !ctx_r1.record.IsSaved)("FormContext", ctx_r1.formContext)("AllowFKCreate", false);
|
|
129
|
+
i0.ɵɵadvance();
|
|
130
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode && !ctx_r1.record.IsSaved)("FormContext", ctx_r1.formContext);
|
|
131
|
+
i0.ɵɵadvance();
|
|
128
132
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
129
133
|
i0.ɵɵadvance();
|
|
134
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode && !ctx_r1.record.IsSaved)("FormContext", ctx_r1.formContext);
|
|
135
|
+
i0.ɵɵadvance();
|
|
130
136
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
131
137
|
i0.ɵɵadvance();
|
|
132
138
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
133
139
|
i0.ɵɵadvance();
|
|
134
140
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
135
141
|
i0.ɵɵadvance();
|
|
142
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode && (!ctx_r1.record.IsSaved || !ctx_r1.record.CurrencyCode))("FormContext", ctx_r1.formContext);
|
|
143
|
+
i0.ɵɵadvance();
|
|
136
144
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
137
145
|
i0.ɵɵadvance();
|
|
138
146
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
@@ -145,7 +153,7 @@ function GLAccountFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf
|
|
|
145
153
|
i0.ɵɵadvance(4);
|
|
146
154
|
i0.ɵɵproperty("Data", ctx_r1.StatusChoices)("ValuePrimitive", true)("ngModel", ctx_r1.StatusFilter);
|
|
147
155
|
i0.ɵɵadvance();
|
|
148
|
-
i0.ɵɵconditional(ctx_r1.TreeLoading ?
|
|
156
|
+
i0.ɵɵconditional(ctx_r1.TreeLoading ? 26 : ctx_r1.TreeError ? 27 : ctx_r1.VisibleNodes.length === 0 ? 28 : 29);
|
|
149
157
|
} }
|
|
150
158
|
const GL_ENTITY = 'MJ_BizApps_Accounting: GL Accounts';
|
|
151
159
|
/**
|
|
@@ -293,8 +301,8 @@ let GLAccountFormComponentExtended = class GLAccountFormComponentExtended extend
|
|
|
293
301
|
return true;
|
|
294
302
|
}
|
|
295
303
|
static ɵfac = /*@__PURE__*/ (() => { let ɵGLAccountFormComponentExtended_BaseFactory; return function GLAccountFormComponentExtended_Factory(__ngFactoryType__) { return (ɵGLAccountFormComponentExtended_BaseFactory || (ɵGLAccountFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(GLAccountFormComponentExtended)))(__ngFactoryType__ || GLAccountFormComponentExtended); }; })();
|
|
296
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: GLAccountFormComponentExtended, selectors: [["mj-gl-account-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, "Record", "FormComponent"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent"], ["SectionKey", "details", "SectionName", "Details", "Icon", "fa fa-align-left", 3, "Form", "FormContext"], ["FieldName", "Code", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Name", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "AccountType", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ParentGLAccountID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "IsActive", "Type", "checkbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Description", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "coa-tree", "SectionName", "Chart of Accounts", "Icon", "fa fa-sitemap", 3, "Form", "FormContext"], [1, "gl-toolbar"], [1, "gl-field"], [1, "gl-field__label"], ["TextField", "Name", "ValueField", "ID", "aria-label", "
|
|
297
|
-
i0.ɵɵconditionalCreate(0, GLAccountFormComponentExtended_Conditional_0_Template,
|
|
304
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: GLAccountFormComponentExtended, selectors: [["mj-gl-account-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, "Record", "FormComponent"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent"], ["SectionKey", "details", "SectionName", "Details", "Icon", "fa fa-align-left", 3, "Form", "FormContext"], ["FieldName", "CompanyID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext", "AllowFKCreate"], ["FieldName", "Code", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Name", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "AccountType", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ParentGLAccountID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "IsActive", "Type", "checkbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Description", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "CurrencyCode", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ExternalSystem", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ExternalAccountID", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "coa-tree", "SectionName", "Chart of Accounts", "Icon", "fa fa-sitemap", 3, "Form", "FormContext"], [1, "gl-toolbar"], [1, "gl-field"], [1, "gl-field__label"], ["TextField", "Name", "ValueField", "ID", "aria-label", "Filter chart of accounts by company", 3, "ngModelChange", "Data", "ValuePrimitive", "ngModel"], ["TextField", "Label", "ValueField", "Value", "aria-label", "Account type filter", 3, "ngModelChange", "Data", "ValuePrimitive", "ngModel"], ["TextField", "Label", "ValueField", "Value", "aria-label", "Status filter", 3, "ngModelChange", "Data", "ValuePrimitive", "ngModel"], ["text", "Loading chart of accounts\u2026", "size", "small"], ["role", "alert", 1, "gl-banner", "gl-banner--error"], ["Icon", "fa-solid fa-inbox", "Title", "No matching accounts", "Message", "No GL accounts match the current filters for this company."], ["role", "tree", 1, "gl-tree"], [1, "fa-solid", "fa-triangle-exclamation"], ["role", "treeitem", 1, "gl-node", 3, "gl-node--current", "padding-left"], ["role", "treeitem", 1, "gl-node"], ["type", "button", "aria-label", "Toggle children", 1, "gl-node__toggle"], [1, "gl-node__leaf"], [1, "gl-node__code"], [1, "gl-node__name"], [1, "gl-node__type"], [1, "gl-node__inactive"], ["type", "button", "aria-label", "Toggle children", 1, "gl-node__toggle", 3, "click"], [1, "fa-solid"], [1, "fa-solid", "fa-circle"], [1, "fa-solid", "fa-ban"]], template: function GLAccountFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
305
|
+
i0.ɵɵconditionalCreate(0, GLAccountFormComponentExtended_Conditional_0_Template, 30, 57, "mj-record-form-container", 0);
|
|
298
306
|
} if (rf & 2) {
|
|
299
307
|
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
300
308
|
} }, dependencies: [i1.NgControlStatus, i1.NgModel, i2.MjFormFieldComponent, i2.MjCollapsiblePanelComponent, i2.MjRecordFormContainerComponent, i3.LoadingComponent, i4.MJEmptyStateComponent, i4.MJDropdownComponent], styles: ["\n\n\n.gl-toolbar[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n margin-bottom: 14px;\n}\n\n.gl-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 180px;\n}\n\n.gl-field__label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.gl-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-radius: var(--mj-radius-md);\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n font-size: var(--mj-text-sm);\n}\n\n.gl-banner--error[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n border-color: var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n\n\n.gl-tree[_ngcontent-%COMP%] {\n list-style: none;\n margin: 0;\n padding: 0;\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n}\n\n.gl-node[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-subtle);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.gl-node[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.gl-node--current[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.gl-node__toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: none;\n background: transparent;\n color: var(--mj-text-secondary);\n cursor: pointer;\n border-radius: var(--mj-radius-sm);\n}\n\n.gl-node__toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover, color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface)));\n color: var(--mj-text-primary);\n}\n\n.gl-node__leaf[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n color: var(--mj-text-disabled);\n font-size: 5px;\n}\n\n.gl-node__code[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-semibold);\n font-variant-numeric: tabular-nums;\n min-width: 80px;\n}\n\n.gl-node__name[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-primary);\n}\n\n.gl-node__type[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.gl-node__inactive[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--mj-text-xs);\n color: var(--mj-status-warning-text);\n}"] });
|
|
@@ -305,7 +313,7 @@ GLAccountFormComponentExtended = __decorate([
|
|
|
305
313
|
export { GLAccountFormComponentExtended };
|
|
306
314
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GLAccountFormComponentExtended, [{
|
|
307
315
|
type: Component,
|
|
308
|
-
args: [{ standalone: false, selector: 'mj-gl-account-form', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <!-- \u2500\u2500 Details (key fields) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <mj-collapsible-panel SectionKey=\"details\" SectionName=\"Details\" Icon=\"fa fa-align-left\"\n [Form]=\"this\" [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Code\" Type=\"textbox\"\n [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Name\" Type=\"textbox\"\n [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"AccountType\" Type=\"textbox\"\n [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ParentGLAccountID\" Type=\"textbox\"\n [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"IsActive\" Type=\"checkbox\"\n [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Description\" Type=\"textarea\"\n [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- \u2500\u2500 Chart-of-accounts tree \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <mj-collapsible-panel SectionKey=\"coa-tree\" SectionName=\"Chart of Accounts\" Icon=\"fa fa-sitemap\"\n [Form]=\"this\" [FormContext]=\"formContext\">\n\n <div class=\"gl-toolbar\">\n <label class=\"gl-field\">\n <span class=\"gl-field__label\">Company</span>\n <mj-dropdown [Data]=\"Companies\" TextField=\"Name\" ValueField=\"ID\" [ValuePrimitive]=\"true\"\n [ngModel]=\"SelectedCompanyID\" (ngModelChange)=\"OnCompanyChange($event ?? '')\"\n aria-label=\"Company\" />\n </label>\n\n <label class=\"gl-field\">\n <span class=\"gl-field__label\">Type</span>\n <mj-dropdown [Data]=\"TypeChoices\" TextField=\"Label\" ValueField=\"Value\" [ValuePrimitive]=\"true\"\n [ngModel]=\"TypeFilter\" (ngModelChange)=\"OnTypeFilterChange($event)\"\n aria-label=\"Account type filter\" />\n </label>\n\n <label class=\"gl-field\">\n <span class=\"gl-field__label\">Status</span>\n <mj-dropdown [Data]=\"StatusChoices\" TextField=\"Label\" ValueField=\"Value\" [ValuePrimitive]=\"true\"\n [ngModel]=\"StatusFilter\" (ngModelChange)=\"OnStatusFilterChange($event)\"\n aria-label=\"Status filter\" />\n </label>\n </div>\n\n @if (TreeLoading) {\n <mj-loading text=\"Loading chart of accounts\u2026\" size=\"small\"></mj-loading>\n } @else if (TreeError) {\n <div class=\"gl-banner gl-banner--error\" role=\"alert\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> {{ TreeError }}\n </div>\n } @else if (VisibleNodes.length === 0) {\n <mj-empty-state Icon=\"fa-solid fa-inbox\" Title=\"No matching accounts\"\n Message=\"No GL accounts match the current filters for this company.\">\n </mj-empty-state>\n } @else {\n <ul class=\"gl-tree\" role=\"tree\">\n @for (node of VisibleNodes; track node.ID) {\n <li class=\"gl-node\" role=\"treeitem\" [class.gl-node--current]=\"node.IsCurrent\"\n [style.padding-left.px]=\"12 + node.Depth * 20\">\n @if (node.Children.length) {\n <button class=\"gl-node__toggle\" type=\"button\" (click)=\"ToggleNode(node)\"\n [attr.aria-expanded]=\"node.Expanded\" aria-label=\"Toggle children\">\n <i class=\"fa-solid\" [class.fa-chevron-down]=\"node.Expanded\" [class.fa-chevron-right]=\"!node.Expanded\"></i>\n </button>\n } @else {\n <span class=\"gl-node__leaf\"><i class=\"fa-solid fa-circle\"></i></span>\n }\n <span class=\"gl-node__code\">{{ node.Code }}</span>\n <span class=\"gl-node__name\">{{ node.Name }}</span>\n <span class=\"gl-node__type\">{{ node.AccountType }}</span>\n @if (!node.IsActive) {\n <span class=\"gl-node__inactive\"><i class=\"fa-solid fa-ban\"></i> inactive</span>\n }\n </li>\n }\n </ul>\n }\n </mj-collapsible-panel>\n\n</mj-record-form-container>\n}\n", styles: ["/* GL Account custom form \u2014 design tokens only (no hardcoded colors). */\n\n.gl-toolbar {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n margin-bottom: 14px;\n}\n\n.gl-field {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 180px;\n}\n\n.gl-field__label {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.gl-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-radius: var(--mj-radius-md);\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n font-size: var(--mj-text-sm);\n}\n\n.gl-banner--error {\n background: var(--mj-status-error-bg);\n border-color: var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n/* Tree. */\n.gl-tree {\n list-style: none;\n margin: 0;\n padding: 0;\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n}\n\n.gl-node {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-subtle);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.gl-node:last-child {\n border-bottom: none;\n}\n\n.gl-node--current {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.gl-node__toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: none;\n background: transparent;\n color: var(--mj-text-secondary);\n cursor: pointer;\n border-radius: var(--mj-radius-sm);\n}\n\n.gl-node__toggle:hover {\n background: var(--mj-bg-surface-hover, color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface)));\n color: var(--mj-text-primary);\n}\n\n.gl-node__leaf {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n color: var(--mj-text-disabled);\n font-size: 5px;\n}\n\n.gl-node__code {\n font-weight: var(--mj-font-semibold);\n font-variant-numeric: tabular-nums;\n min-width: 80px;\n}\n\n.gl-node__name {\n flex: 1;\n color: var(--mj-text-primary);\n}\n\n.gl-node__type {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.gl-node__inactive {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--mj-text-xs);\n color: var(--mj-status-warning-text);\n}\n"] }]
|
|
316
|
+
args: [{ standalone: false, selector: 'mj-gl-account-form', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <!-- \u2500\u2500 Details (key fields) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <mj-collapsible-panel SectionKey=\"details\" SectionName=\"Details\" Icon=\"fa fa-align-left\"\n [Form]=\"this\" [FormContext]=\"formContext\">\n <!--\n COMPANY IS REQUIRED AND MUST BE EDITABLE HERE (bizapps-orders#112).\n\n GLAccount.CompanyID is NOT NULL with no default. This custom form overrides the generated\n one via @RegisterClass, and the generated form's CompanyID field went with it \u2014 so the only\n way to set a company was never rendered. QA reported \"there is no place to specify Company\",\n then hit a NOT NULL failure on save. Both symptoms are this one omission.\n\n It is listed first because it scopes everything below it: an account code is only unique\n within a company, and the parent-account picker should be read against the same company.\n\n \u2500\u2500 WHY [EditMode] IS GATED ON !record.IsSaved \u2500\u2500\n\n GLAccountEntityServer.LOCKED_IDENTITY_FIELDS = ['CompanyID','Code','AccountType','CurrencyCode'],\n and ValidateAsync() refuses any change to them once IsSaved is true (Amith 2026-07-29:\n \"immutable from the moment the record is created \u2014 immediate + unconditional\"). A plainly\n editable control on a saved record therefore offers an edit the server ALWAYS rejects. So these\n fields are editable while creating and read-only afterwards, which is what the server enforces.\n\n Code and AccountType carry the same gate for the same reason \u2014 they were editable on saved\n records before this change, which was the same defect this issue is about, one field over.\n\n [AllowFKCreate]=\"false\" because the picker otherwise offers 'Create \"<text>\"' \u2014 creating a\n COMPANY as a side effect of adding a GL account is not something this form should permit.\n -->\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"CompanyID\" Type=\"textbox\"\n [EditMode]=\"EditMode && !record.IsSaved\" [FormContext]=\"formContext\" LinkType=\"Record\"\n [AllowFKCreate]=\"false\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Code\" Type=\"textbox\"\n [EditMode]=\"EditMode && !record.IsSaved\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Name\" Type=\"textbox\"\n [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"AccountType\" Type=\"textbox\"\n [EditMode]=\"EditMode && !record.IsSaved\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ParentGLAccountID\" Type=\"textbox\"\n [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"IsActive\" Type=\"checkbox\"\n [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Description\" Type=\"textarea\"\n [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <!--\n CURRENCY, AND WHY ITS GATE IS NOT THE SAME AS THE THREE ABOVE.\n\n CurrencyCode is in GLAccountEntityServer.LOCKED_IDENTITY_FIELDS, so the instinct is to copy\n `!record.IsSaved` from CompanyID. That would be WRONG here, and the server says so: ValidateAsync\n skips a locked field whose OLD value was null \u2014\n\n if (oldValue === null || oldValue === undefined) return false;\n\n CompanyID, Code and AccountType are NOT NULL, so for them \"saved\" and \"has a value\" are the same\n thing and the simple gate is exact. CurrencyCode is NULLABLE with no default, and every account on\n this host has it null (18 of 18) \u2014 precisely because the form never rendered it. Freezing it on\n save would make that permanent: a value the server would happily accept, with no way to enter it.\n\n So the gate is \"while creating, OR while still unset\", which is what the server actually enforces.\n -->\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"CurrencyCode\" Type=\"textbox\"\n [EditMode]=\"EditMode && (!record.IsSaved || !record.CurrencyCode)\" [FormContext]=\"formContext\"></mj-form-field>\n\n <!--\n THE REMAP PAIR. GLAccountEntityServer refuses an identity change with the words \"Remap via\n ExternalSystem/ExternalAccountID\" \u2014 advice that was impossible to follow, because neither field\n was rendered. They are cosmetic to the server (explicitly listed as staying editable) and are the\n documented escape hatch for an account whose identity is frozen, so they stay plainly editable.\n -->\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ExternalSystem\" Type=\"textbox\"\n [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ExternalAccountID\" Type=\"textbox\"\n [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- \u2500\u2500 Chart-of-accounts tree \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <mj-collapsible-panel SectionKey=\"coa-tree\" SectionName=\"Chart of Accounts\" Icon=\"fa fa-sitemap\"\n [Form]=\"this\" [FormContext]=\"formContext\">\n\n <div class=\"gl-toolbar\">\n <label class=\"gl-field\">\n <!--\n \"Filter by Company\", not \"Company\". This dropdown drives loadTree() and never writes\n record.CompanyID \u2014 see OnCompanyChange(). Sharing the bare label \"Company\" with the\n editable field above is what let a tester set this one and believe the record was\n scoped; it changed a tree view and nothing else.\n -->\n <span class=\"gl-field__label\">Filter by Company</span>\n <mj-dropdown [Data]=\"Companies\" TextField=\"Name\" ValueField=\"ID\" [ValuePrimitive]=\"true\"\n [ngModel]=\"SelectedCompanyID\" (ngModelChange)=\"OnCompanyChange($event ?? '')\"\n aria-label=\"Filter chart of accounts by company\" />\n </label>\n\n <label class=\"gl-field\">\n <span class=\"gl-field__label\">Type</span>\n <mj-dropdown [Data]=\"TypeChoices\" TextField=\"Label\" ValueField=\"Value\" [ValuePrimitive]=\"true\"\n [ngModel]=\"TypeFilter\" (ngModelChange)=\"OnTypeFilterChange($event)\"\n aria-label=\"Account type filter\" />\n </label>\n\n <label class=\"gl-field\">\n <span class=\"gl-field__label\">Status</span>\n <mj-dropdown [Data]=\"StatusChoices\" TextField=\"Label\" ValueField=\"Value\" [ValuePrimitive]=\"true\"\n [ngModel]=\"StatusFilter\" (ngModelChange)=\"OnStatusFilterChange($event)\"\n aria-label=\"Status filter\" />\n </label>\n </div>\n\n @if (TreeLoading) {\n <mj-loading text=\"Loading chart of accounts\u2026\" size=\"small\"></mj-loading>\n } @else if (TreeError) {\n <div class=\"gl-banner gl-banner--error\" role=\"alert\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> {{ TreeError }}\n </div>\n } @else if (VisibleNodes.length === 0) {\n <mj-empty-state Icon=\"fa-solid fa-inbox\" Title=\"No matching accounts\"\n Message=\"No GL accounts match the current filters for this company.\">\n </mj-empty-state>\n } @else {\n <ul class=\"gl-tree\" role=\"tree\">\n @for (node of VisibleNodes; track node.ID) {\n <li class=\"gl-node\" role=\"treeitem\" [class.gl-node--current]=\"node.IsCurrent\"\n [style.padding-left.px]=\"12 + node.Depth * 20\">\n @if (node.Children.length) {\n <button class=\"gl-node__toggle\" type=\"button\" (click)=\"ToggleNode(node)\"\n [attr.aria-expanded]=\"node.Expanded\" aria-label=\"Toggle children\">\n <i class=\"fa-solid\" [class.fa-chevron-down]=\"node.Expanded\" [class.fa-chevron-right]=\"!node.Expanded\"></i>\n </button>\n } @else {\n <span class=\"gl-node__leaf\"><i class=\"fa-solid fa-circle\"></i></span>\n }\n <span class=\"gl-node__code\">{{ node.Code }}</span>\n <span class=\"gl-node__name\">{{ node.Name }}</span>\n <span class=\"gl-node__type\">{{ node.AccountType }}</span>\n @if (!node.IsActive) {\n <span class=\"gl-node__inactive\"><i class=\"fa-solid fa-ban\"></i> inactive</span>\n }\n </li>\n }\n </ul>\n }\n </mj-collapsible-panel>\n\n</mj-record-form-container>\n}\n", styles: ["/* GL Account custom form \u2014 design tokens only (no hardcoded colors). */\n\n.gl-toolbar {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n margin-bottom: 14px;\n}\n\n.gl-field {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 180px;\n}\n\n.gl-field__label {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.gl-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-radius: var(--mj-radius-md);\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n font-size: var(--mj-text-sm);\n}\n\n.gl-banner--error {\n background: var(--mj-status-error-bg);\n border-color: var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n/* Tree. */\n.gl-tree {\n list-style: none;\n margin: 0;\n padding: 0;\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n}\n\n.gl-node {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-subtle);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.gl-node:last-child {\n border-bottom: none;\n}\n\n.gl-node--current {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.gl-node__toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: none;\n background: transparent;\n color: var(--mj-text-secondary);\n cursor: pointer;\n border-radius: var(--mj-radius-sm);\n}\n\n.gl-node__toggle:hover {\n background: var(--mj-bg-surface-hover, color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface)));\n color: var(--mj-text-primary);\n}\n\n.gl-node__leaf {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n color: var(--mj-text-disabled);\n font-size: 5px;\n}\n\n.gl-node__code {\n font-weight: var(--mj-font-semibold);\n font-variant-numeric: tabular-nums;\n min-width: 80px;\n}\n\n.gl-node__name {\n flex: 1;\n color: var(--mj-text-primary);\n}\n\n.gl-node__type {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.gl-node__inactive {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--mj-text-xs);\n color: var(--mj-status-warning-text);\n}\n"] }]
|
|
309
317
|
}], null, null); })();
|
|
310
318
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(GLAccountFormComponentExtended, { className: "GLAccountFormComponentExtended", filePath: "lib/custom/GLAccount/gl-account-form.component.ts", lineNumber: 43 }); })();
|
|
311
319
|
/** Tree-shaking prevention — called from custom-forms.module.ts's load function. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gl-account-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/GLAccount/gl-account-form.component.ts","../../../../src/lib/custom/GLAccount/gl-account-form.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAI/C,OAAO,EAAE,yCAAyC,EAAE,MAAM,mGAAmG,CAAC;;;;;;;;
|
|
1
|
+
{"version":3,"file":"gl-account-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/GLAccount/gl-account-form.component.ts","../../../../src/lib/custom/GLAccount/gl-account-form.component.html"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration-category.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/shell/configuration-category.component.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;;AAG1D;;;GAGG;AACH,qBASa,8BAA+B,SAAQ,iBAAiB;IAE5D,qBAAqB,SAAK;IAEjC,IAAW,UAAU,IAAI,MAAM,GAAG,IAAI,CAErC;IAEM,cAAc,IAAI,IAAI;IAItB,aAAa,SAAmB;IACvC,IAAoB,YAAY,IAAI,MAAM,CAEzC;IACD,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;IAED,IAAW,YAAY,IAAI,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"configuration-category.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/shell/configuration-category.component.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;;AAG1D;;;GAGG;AACH,qBASa,8BAA+B,SAAQ,iBAAiB;IAE5D,qBAAqB,SAAK;IAEjC,IAAW,UAAU,IAAI,MAAM,GAAG,IAAI,CAErC;IAEM,cAAc,IAAI,IAAI;IAItB,aAAa,SAAmB;IACvC,IAAoB,YAAY,IAAI,MAAM,CAEzC;IACD,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;IAED,IAAW,YAAY,IAAI,gBAAgB,EAAE,CAY5C;IAEK,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAG5D,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCArCrD,8BAA8B;2CAA9B,8BAA8B;CAwC1C;AAED,2DAA2D;AAC3D,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD"}
|
|
@@ -15,6 +15,7 @@ import * as i2 from "./shell-rail.component";
|
|
|
15
15
|
import * as i3 from "../CompanySetup/company-setup-dashboard.component";
|
|
16
16
|
import * as i4 from "@memberjunction/ng-ui-components";
|
|
17
17
|
import * as i5 from "../shared/company-scope-chip.component";
|
|
18
|
+
import * as i6 from "./pages/erp-sync.page";
|
|
18
19
|
function ConfigurationCategoryComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
19
20
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
20
21
|
i0.ɵɵelementStart(0, "button", 8);
|
|
@@ -41,6 +42,9 @@ function ConfigurationCategoryComponent_Case_9_Template(rf, ctx) { if (rf & 1) {
|
|
|
41
42
|
i0.ɵɵproperty("CreateSignal", ctx_r1.CreateSignalCompanies);
|
|
42
43
|
} }
|
|
43
44
|
function ConfigurationCategoryComponent_Case_10_Template(rf, ctx) { if (rf & 1) {
|
|
45
|
+
i0.ɵɵelement(0, "mj-erp-sync-page");
|
|
46
|
+
} }
|
|
47
|
+
function ConfigurationCategoryComponent_Case_11_Template(rf, ctx) { if (rf & 1) {
|
|
44
48
|
i0.ɵɵelement(0, "mj-shell-page-pending", 7);
|
|
45
49
|
} if (rf & 2) {
|
|
46
50
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -73,6 +77,7 @@ let ConfigurationCategoryComponent = class ConfigurationCategoryComponent extend
|
|
|
73
77
|
// No section header — a single flat group (mj-left-nav renders unlabelled sections as-is).
|
|
74
78
|
items: [
|
|
75
79
|
{ id: 'companies', label: 'Companies', icon: 'fa-solid fa-building' },
|
|
80
|
+
{ id: 'erp', label: 'ERP', icon: 'fa-solid fa-cloud-arrow-down' },
|
|
76
81
|
{ id: 'users', label: 'Users & roles', icon: 'fa-solid fa-user-shield' },
|
|
77
82
|
{ id: 'approvals', label: 'Approvals', icon: 'fa-solid fa-user-check' },
|
|
78
83
|
],
|
|
@@ -86,7 +91,7 @@ let ConfigurationCategoryComponent = class ConfigurationCategoryComponent extend
|
|
|
86
91
|
return 'fa-solid fa-gear';
|
|
87
92
|
}
|
|
88
93
|
static ɵfac = /*@__PURE__*/ (() => { let ɵConfigurationCategoryComponent_BaseFactory; return function ConfigurationCategoryComponent_Factory(__ngFactoryType__) { return (ɵConfigurationCategoryComponent_BaseFactory || (ɵConfigurationCategoryComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ConfigurationCategoryComponent)))(__ngFactoryType__ || ConfigurationCategoryComponent); }; })();
|
|
89
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ConfigurationCategoryComponent, selectors: [["mj-configuration-category"]], standalone: false, features: [i0.ɵɵProvidersFeature([PageRefreshService]), i0.ɵɵInheritDefinitionFeature], decls:
|
|
94
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ConfigurationCategoryComponent, selectors: [["mj-configuration-category"]], standalone: false, features: [i0.ɵɵProvidersFeature([PageRefreshService]), i0.ɵɵInheritDefinitionFeature], decls: 12, vars: 10, consts: [[3, "Title", "Icon"], ["actions", ""], ["type", "button", "aria-label", "Refresh this page", "title", "Refresh this page", 1, "mj-btn", "mj-btn--outline"], ["type", "button", 1, "mj-btn", "mj-btn--primary"], ["Direction", "row", 3, "Flex", "Padding"], [3, "ItemClicked", "Sections", "ActiveId", "MobileTitle"], [3, "CreateSignal"], [3, "PageName"], ["type", "button", "aria-label", "Refresh this page", "title", "Refresh this page", 1, "mj-btn", "mj-btn--outline", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-arrow-rotate-right"], ["type", "button", 1, "mj-btn", "mj-btn--primary", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-plus"]], template: function ConfigurationCategoryComponent_Template(rf, ctx) { if (rf & 1) {
|
|
90
95
|
i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0)(2, "div", 1);
|
|
91
96
|
i0.ɵɵelement(3, "mj-company-scope-chip");
|
|
92
97
|
i0.ɵɵconditionalCreate(4, ConfigurationCategoryComponent_Conditional_4_Template, 2, 0, "button", 2);
|
|
@@ -96,7 +101,7 @@ let ConfigurationCategoryComponent = class ConfigurationCategoryComponent extend
|
|
|
96
101
|
i0.ɵɵlistener("ItemClicked", function ConfigurationCategoryComponent_Template_mj_shell_rail_ItemClicked_7_listener($event) { return ctx.OnRailItemClicked($event); });
|
|
97
102
|
i0.ɵɵelementEnd();
|
|
98
103
|
i0.ɵɵelementStart(8, "mj-left-nav-content");
|
|
99
|
-
i0.ɵɵconditionalCreate(9, ConfigurationCategoryComponent_Case_9_Template, 1, 1, "mj-company-setup-dashboard", 6)(10, ConfigurationCategoryComponent_Case_10_Template, 1, 1, "mj-shell-page-pending", 7);
|
|
104
|
+
i0.ɵɵconditionalCreate(9, ConfigurationCategoryComponent_Case_9_Template, 1, 1, "mj-company-setup-dashboard", 6)(10, ConfigurationCategoryComponent_Case_10_Template, 1, 0, "mj-erp-sync-page")(11, ConfigurationCategoryComponent_Case_11_Template, 1, 1, "mj-shell-page-pending", 7);
|
|
100
105
|
i0.ɵɵelementEnd()()();
|
|
101
106
|
} if (rf & 2) {
|
|
102
107
|
let tmp_9_0;
|
|
@@ -111,8 +116,8 @@ let ConfigurationCategoryComponent = class ConfigurationCategoryComponent extend
|
|
|
111
116
|
i0.ɵɵadvance();
|
|
112
117
|
i0.ɵɵproperty("Sections", ctx.RailSections)("ActiveId", ctx.ActivePageId)("MobileTitle", ctx.CategoryTitle);
|
|
113
118
|
i0.ɵɵadvance(2);
|
|
114
|
-
i0.ɵɵconditional((tmp_9_0 = ctx.ActivePageId) === "companies" ? 9 : 10);
|
|
115
|
-
} }, dependencies: [i1.ShellPagePendingComponent, i2.ShellRailComponent, i3.CompanySetupDashboardComponent, i4.MJPageLayoutComponent, i4.MJPageHeaderComponent, i4.MJPageBodyComponent, i4.MJLeftNavContentComponent, i5.CompanyScopeChipComponent], styles: ["\n\n\n\n\n\n\n\n\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n[_nghost-%COMP%] mj-left-nav-content {\n isolation: isolate;\n}\n\n\n\n\n\n@media (max-width: 700px) {\n [_nghost-%COMP%] mj-page-body > .mj-page-body {\n flex-direction: column;\n }\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n[_nghost-%COMP%] mj-page-header .mj-page-header-row--primary {\n padding-top: var(--mj-space-2);\n padding-bottom: var(--mj-space-2);\n}\n\n\n\n\n\n\n\n\n\n\n[_nghost-%COMP%] mj-page-header .mj-page-header__actions > *, \n[_nghost-%COMP%] mj-page-header [actions] > * {\n --mj-shell-control-h: 32px; \n\n min-height: var(--mj-shell-control-h);\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n}\n\n\n\n\n\n\n\n\n\n\n\n[_nghost-%COMP%] mj-page-header [actions] mj-refresh-button button, \n[_nghost-%COMP%] mj-page-header [actions] mj-company-scope-chip > * {\n height: var(--mj-shell-control-h);\n padding-top: 0;\n padding-bottom: 0;\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n}"], changeDetection: 0 });
|
|
119
|
+
i0.ɵɵconditional((tmp_9_0 = ctx.ActivePageId) === "companies" ? 9 : tmp_9_0 === "erp" ? 10 : 11);
|
|
120
|
+
} }, dependencies: [i1.ShellPagePendingComponent, i2.ShellRailComponent, i3.CompanySetupDashboardComponent, i4.MJPageLayoutComponent, i4.MJPageHeaderComponent, i4.MJPageBodyComponent, i4.MJLeftNavContentComponent, i5.CompanyScopeChipComponent, i6.ERPSyncPageComponent], styles: ["\n\n\n\n\n\n\n\n\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n[_nghost-%COMP%] mj-left-nav-content {\n isolation: isolate;\n}\n\n\n\n\n\n@media (max-width: 700px) {\n [_nghost-%COMP%] mj-page-body > .mj-page-body {\n flex-direction: column;\n }\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n[_nghost-%COMP%] mj-page-header .mj-page-header-row--primary {\n padding-top: var(--mj-space-2);\n padding-bottom: var(--mj-space-2);\n}\n\n\n\n\n\n\n\n\n\n\n[_nghost-%COMP%] mj-page-header .mj-page-header__actions > *, \n[_nghost-%COMP%] mj-page-header [actions] > * {\n --mj-shell-control-h: 32px; \n\n min-height: var(--mj-shell-control-h);\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n}\n\n\n\n\n\n\n\n\n\n\n\n[_nghost-%COMP%] mj-page-header [actions] mj-refresh-button button, \n[_nghost-%COMP%] mj-page-header [actions] mj-company-scope-chip > * {\n height: var(--mj-shell-control-h);\n padding-top: 0;\n padding-bottom: 0;\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n}"], changeDetection: 0 });
|
|
116
121
|
};
|
|
117
122
|
ConfigurationCategoryComponent = __decorate([
|
|
118
123
|
RegisterClass(BaseDashboard, 'ConfigurationCategoryDashboard')
|
|
@@ -120,7 +125,7 @@ ConfigurationCategoryComponent = __decorate([
|
|
|
120
125
|
export { ConfigurationCategoryComponent };
|
|
121
126
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConfigurationCategoryComponent, [{
|
|
122
127
|
type: Component,
|
|
123
|
-
args: [{ standalone: false, selector: 'mj-configuration-category', changeDetection: ChangeDetectionStrategy.OnPush, providers: [PageRefreshService], template: "<mj-page-layout>\n <!-- FULL WIDTH, ABOVE the rail \u2014 MJ's canonical shell shape (admin-container), and what makes the\n header stay put while the body scrolls: mj-page-layout is overflow:hidden, the header is a\n natural-height sibling, and the body owns overflow-y:auto. Deliberately TIGHT: one line, no\n subtitle, no stacking. -->\n <!-- Header = the CATEGORY (Marcelo 2026-07-16): the sub-page name is already the rail's active\n item inches away, so restating it bought nothing; the category is the context that ISN'T\n otherwise on screen.\n NO stat capsules (Marcelo 2026-07-29): live state under the title made the header busy,\n broke its vertical alignment against stat-less categories, and duplicated what the rail\n badges already say. State lives on the RAIL as actionable-only count badges (shown only\n when action is needed; absence = healthy); the header stays a stable one-line orientation\n bar. Scope chip + refresh stay in [actions] \u2014 controls, not state. -->\n <mj-page-header [Title]=\"CategoryTitle\" [Icon]=\"CategoryIcon\">\n <div actions>\n <mj-company-scope-chip></mj-company-scope-chip>\n <!-- Refreshes ONLY the page in the body \u2014 not the rail, not other pages in this category.\n Exactly one page is instantiated by the @switch below, so it is the only subscriber\n (see PageRefreshService). Hidden when the mounted page has nothing to reload, rather\n than offering a button that does nothing. -->\n @if (CanRefreshActivePage) {\n <!-- Orders-style icon-only outline refresh \u2014 the app-wide header convention\n (Marcelo 2026-08-05 audit: every category header refresh looks like this). -->\n <button\n type=\"button\"\n class=\"mj-btn mj-btn--outline\"\n (click)=\"RefreshActivePage()\"\n aria-label=\"Refresh this page\"\n title=\"Refresh this page\">\n <i class=\"fa-solid fa-arrow-rotate-right\" aria-hidden=\"true\"></i>\n </button>\n }\n <!-- The active page's create verb, promoted to the header (Marcelo 2026-08-05). -->\n @if (CreateVerb) {\n <button type=\"button\" class=\"mj-btn mj-btn--primary\" (click)=\"OnHeaderCreate()\">\n <i class=\"fa-solid fa-plus\" aria-hidden=\"true\"></i> {{ CreateVerb }}\n </button>\n }\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <!-- The rail + its desktop icons-only collapse toggle. One wrapper, nine shells: see\n shell-rail.component.ts for why the collapse is not in MJ's own left-nav (QUESTIONS.md#q27). -->\n <mj-shell-rail\n [Sections]=\"RailSections\"\n [ActiveId]=\"ActivePageId\"\n [MobileTitle]=\"CategoryTitle\"\n (ItemClicked)=\"OnRailItemClicked($event)\">\n </mj-shell-rail>\n\n <mj-left-nav-content>\n @switch (ActivePageId) {\n @case ('companies') {\n <mj-company-setup-dashboard [CreateSignal]=\"CreateSignalCompanies\"></mj-company-setup-dashboard>\n }\n @default {\n <mj-shell-page-pending [PageName]=\"PendingPageName(ActivePageId)\"></mj-shell-page-pending>\n }\n }\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n", styles: ["/* Shared layout for the category shells.\n\n The rail-beside-content layout is MJ's, not ours: <mj-page-body [Flex]=\"true\" [Padding]=\"false\"\n Direction=\"row\"> + <mj-left-nav> + <mj-left-nav-content>, exactly as MJ's own admin-container\n does it. `Direction=\"row\"` alone is inert \u2014 without [Flex]=\"true\" the body never becomes a flex\n container, so the rail stacks ABOVE the content and the content pane inherits no height (which\n also starves an AG grid inside it). This file therefore owns almost nothing: the host sizing and\n the responsive collapse. See explorer-chrome-conventions \u00A710. */\n\n:host {\n display: block;\n height: 100%;\n}\n\n/* \u2500\u2500 Contain each page's stacking (Marcelo 2026-07-29) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Sub-pages mount their own <mj-page-header> (and sticky table headers) with positive z-indexes.\n Those are SIBLINGS-in-context of the shell's category header (also z-index:1), so later DOM\n order let a page's subheader paint OVER the category header (its shadow stopped landing) and\n OVER the company-scope dropdown (capped inside the header's z:1 context). `isolation: isolate`\n makes the content pane its own stacking context: inner z-indexes keep working against each\n other (sticky theads over rows, etc.) but can no longer escape to fight the shell chrome \u2014\n the category header, scope menu, and the rail's hover-peek overlay (z:60 sibling) all win.\n NOTE: the real chrome fix is pages adopting <mj-page-header-interior> per\n explorer-chrome-conventions \u00A710 (tracked for the UI hardening pass); this rule stays valid\n either way as the structural guarantee. */\n:host ::ng-deep mj-left-nav-content {\n isolation: isolate;\n}\n\n/* mj-left-nav becomes an off-canvas drawer at <=700px; stack the body at the same breakpoint so\n its in-flow section switcher sits ABOVE the content rather than competing for width. This is the\n consumer responsibility documented on mj-left-nav. */\n@media (max-width: 700px) {\n :host ::ng-deep mj-page-body > .mj-page-body {\n flex-direction: column;\n }\n}\n\n/* \u2500\u2500 Header density (LOCAL OVERRIDE \u2014 deliberately minimal) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Marcelo: the stock header \"needs to be smaller... it's just too thick. It's taking up a lot of\n space and it's not doing much\" \u2014 the user already knows the section (top nav) and the page (rail),\n so the title earns little vertical space.\n\n \u26A0 WHAT THIS BLOCK USED TO GET WRONG (fixed 2026-07-17, and it is the same mistake as the .mj-btn\n override we removed the same day). It ALSO forced the title to --mj-text-lg and the icon to 28px.\n But MJ's own title is --mj-text-xl and MJ ALREADY drops it to --mj-text-lg under a <=768px media\n query \u2014 so the override was PINNING MJ'S SMALL-SCREEN SIZE ONTO DESKTOP, permanently, defeating a\n responsive decision MJ had already made. Marcelo saw the symptom and read it backwards:\n \"I'm not loving this metadata capsule. It's almost larger than the title... the icon next to it\n looks really small in comparison.\" The capsule is MJ's own --mj-text-xs and was never the problem\n \u2014 the TITLE had been shrunk a step, so the badge stopped reading as subordinate to it.\n\n THE LESSON, twice in one day: overriding shared chrome does not merely restyle it, it OPTS OUT OF\n DECISIONS THE COMPONENT ALREADY MADE FOR YOU \u2014 MJ's 44px touch target on the button, MJ's\n responsive title here. Only the padding is overridden now; type scale and icon size are MJ's.\n Asked upstream as a `Dense` input (QUESTIONS.md#q33) \u2014 delete this block if it lands. */\n:host ::ng-deep mj-page-header .mj-page-header-row--primary {\n padding-top: var(--mj-space-2);\n padding-bottom: var(--mj-space-2);\n}\n\n/* \u2500\u2500 Header controls: UNIFORM VERTICAL SIZING \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Marcelo: the refresh button and the scope chip were different heights. \"We need to pick one\n sizing... the padding above and below those elements must be the same. Uniform vertical sizing,\n uniform padding above and below. The horizontal doesn't matter, but the vertical sizing does.\"\n\n So: one height for every control in the header bar, applied at the bar level rather than per\n control \u2014 a per-control fix would drift again the next time one is added. Horizontal padding is\n deliberately left to each control (a chip wants more than an icon button). */\n:host ::ng-deep mj-page-header .mj-page-header__actions > *,\n:host ::ng-deep mj-page-header [actions] > * {\n --mj-shell-control-h: 32px; /* = MJ's own .mj-btn--sm min-height. Match MJ; don't fork it. */\n min-height: var(--mj-shell-control-h);\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n}\n/* NOTE the .mj-btn selector is deliberately ABSENT here. mjButton owns the button's\n appearance (there is a CI gate on exactly this), and overriding it forks MJ's styling\n silently: MJ's own .mj-btn--sm is min-height:32px AND grows to 44px under a small-screen\n media query \u2014 the WCAG touch-target minimum. Forcing height on it would squash that back\n down on a phone, quietly undoing MJ's accessibility accommodation for the sake of 2px.\n So the button is left native at MJ's `sm` size, and the OTHER controls match IT. */\n/* Only the scope chip + refresh live in [actions] now \u2014 the stat badges moved to [meta]\n (2026-07-17), so their selector is gone rather than left as dead weight. These two are\n exactly the pair whose mismatched heights Marcelo flagged, so this rule still has a job. */\n:host ::ng-deep mj-page-header [actions] mj-refresh-button button,\n:host ::ng-deep mj-page-header [actions] mj-company-scope-chip > * {\n height: var(--mj-shell-control-h);\n padding-top: 0;\n padding-bottom: 0;\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n}\n"] }]
|
|
128
|
+
args: [{ standalone: false, selector: 'mj-configuration-category', changeDetection: ChangeDetectionStrategy.OnPush, providers: [PageRefreshService], template: "<mj-page-layout>\n <!-- FULL WIDTH, ABOVE the rail \u2014 MJ's canonical shell shape (admin-container), and what makes the\n header stay put while the body scrolls: mj-page-layout is overflow:hidden, the header is a\n natural-height sibling, and the body owns overflow-y:auto. Deliberately TIGHT: one line, no\n subtitle, no stacking. -->\n <!-- Header = the CATEGORY (Marcelo 2026-07-16): the sub-page name is already the rail's active\n item inches away, so restating it bought nothing; the category is the context that ISN'T\n otherwise on screen.\n NO stat capsules (Marcelo 2026-07-29): live state under the title made the header busy,\n broke its vertical alignment against stat-less categories, and duplicated what the rail\n badges already say. State lives on the RAIL as actionable-only count badges (shown only\n when action is needed; absence = healthy); the header stays a stable one-line orientation\n bar. Scope chip + refresh stay in [actions] \u2014 controls, not state. -->\n <mj-page-header [Title]=\"CategoryTitle\" [Icon]=\"CategoryIcon\">\n <div actions>\n <mj-company-scope-chip></mj-company-scope-chip>\n <!-- Refreshes ONLY the page in the body \u2014 not the rail, not other pages in this category.\n Exactly one page is instantiated by the @switch below, so it is the only subscriber\n (see PageRefreshService). Hidden when the mounted page has nothing to reload, rather\n than offering a button that does nothing. -->\n @if (CanRefreshActivePage) {\n <!-- Orders-style icon-only outline refresh \u2014 the app-wide header convention\n (Marcelo 2026-08-05 audit: every category header refresh looks like this). -->\n <button\n type=\"button\"\n class=\"mj-btn mj-btn--outline\"\n (click)=\"RefreshActivePage()\"\n aria-label=\"Refresh this page\"\n title=\"Refresh this page\">\n <i class=\"fa-solid fa-arrow-rotate-right\" aria-hidden=\"true\"></i>\n </button>\n }\n <!-- The active page's create verb, promoted to the header (Marcelo 2026-08-05). -->\n @if (CreateVerb) {\n <button type=\"button\" class=\"mj-btn mj-btn--primary\" (click)=\"OnHeaderCreate()\">\n <i class=\"fa-solid fa-plus\" aria-hidden=\"true\"></i> {{ CreateVerb }}\n </button>\n }\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <!-- The rail + its desktop icons-only collapse toggle. One wrapper, nine shells: see\n shell-rail.component.ts for why the collapse is not in MJ's own left-nav (QUESTIONS.md#q27). -->\n <mj-shell-rail\n [Sections]=\"RailSections\"\n [ActiveId]=\"ActivePageId\"\n [MobileTitle]=\"CategoryTitle\"\n (ItemClicked)=\"OnRailItemClicked($event)\">\n </mj-shell-rail>\n\n <mj-left-nav-content>\n @switch (ActivePageId) {\n @case ('companies') {\n <mj-company-setup-dashboard [CreateSignal]=\"CreateSignalCompanies\"></mj-company-setup-dashboard>\n }\n @case ('erp') {\n <mj-erp-sync-page></mj-erp-sync-page>\n }\n @default {\n <mj-shell-page-pending [PageName]=\"PendingPageName(ActivePageId)\"></mj-shell-page-pending>\n }\n }\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n", styles: ["/* Shared layout for the category shells.\n\n The rail-beside-content layout is MJ's, not ours: <mj-page-body [Flex]=\"true\" [Padding]=\"false\"\n Direction=\"row\"> + <mj-left-nav> + <mj-left-nav-content>, exactly as MJ's own admin-container\n does it. `Direction=\"row\"` alone is inert \u2014 without [Flex]=\"true\" the body never becomes a flex\n container, so the rail stacks ABOVE the content and the content pane inherits no height (which\n also starves an AG grid inside it). This file therefore owns almost nothing: the host sizing and\n the responsive collapse. See explorer-chrome-conventions \u00A710. */\n\n:host {\n display: block;\n height: 100%;\n}\n\n/* \u2500\u2500 Contain each page's stacking (Marcelo 2026-07-29) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Sub-pages mount their own <mj-page-header> (and sticky table headers) with positive z-indexes.\n Those are SIBLINGS-in-context of the shell's category header (also z-index:1), so later DOM\n order let a page's subheader paint OVER the category header (its shadow stopped landing) and\n OVER the company-scope dropdown (capped inside the header's z:1 context). `isolation: isolate`\n makes the content pane its own stacking context: inner z-indexes keep working against each\n other (sticky theads over rows, etc.) but can no longer escape to fight the shell chrome \u2014\n the category header, scope menu, and the rail's hover-peek overlay (z:60 sibling) all win.\n NOTE: the real chrome fix is pages adopting <mj-page-header-interior> per\n explorer-chrome-conventions \u00A710 (tracked for the UI hardening pass); this rule stays valid\n either way as the structural guarantee. */\n:host ::ng-deep mj-left-nav-content {\n isolation: isolate;\n}\n\n/* mj-left-nav becomes an off-canvas drawer at <=700px; stack the body at the same breakpoint so\n its in-flow section switcher sits ABOVE the content rather than competing for width. This is the\n consumer responsibility documented on mj-left-nav. */\n@media (max-width: 700px) {\n :host ::ng-deep mj-page-body > .mj-page-body {\n flex-direction: column;\n }\n}\n\n/* \u2500\u2500 Header density (LOCAL OVERRIDE \u2014 deliberately minimal) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Marcelo: the stock header \"needs to be smaller... it's just too thick. It's taking up a lot of\n space and it's not doing much\" \u2014 the user already knows the section (top nav) and the page (rail),\n so the title earns little vertical space.\n\n \u26A0 WHAT THIS BLOCK USED TO GET WRONG (fixed 2026-07-17, and it is the same mistake as the .mj-btn\n override we removed the same day). It ALSO forced the title to --mj-text-lg and the icon to 28px.\n But MJ's own title is --mj-text-xl and MJ ALREADY drops it to --mj-text-lg under a <=768px media\n query \u2014 so the override was PINNING MJ'S SMALL-SCREEN SIZE ONTO DESKTOP, permanently, defeating a\n responsive decision MJ had already made. Marcelo saw the symptom and read it backwards:\n \"I'm not loving this metadata capsule. It's almost larger than the title... the icon next to it\n looks really small in comparison.\" The capsule is MJ's own --mj-text-xs and was never the problem\n \u2014 the TITLE had been shrunk a step, so the badge stopped reading as subordinate to it.\n\n THE LESSON, twice in one day: overriding shared chrome does not merely restyle it, it OPTS OUT OF\n DECISIONS THE COMPONENT ALREADY MADE FOR YOU \u2014 MJ's 44px touch target on the button, MJ's\n responsive title here. Only the padding is overridden now; type scale and icon size are MJ's.\n Asked upstream as a `Dense` input (QUESTIONS.md#q33) \u2014 delete this block if it lands. */\n:host ::ng-deep mj-page-header .mj-page-header-row--primary {\n padding-top: var(--mj-space-2);\n padding-bottom: var(--mj-space-2);\n}\n\n/* \u2500\u2500 Header controls: UNIFORM VERTICAL SIZING \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Marcelo: the refresh button and the scope chip were different heights. \"We need to pick one\n sizing... the padding above and below those elements must be the same. Uniform vertical sizing,\n uniform padding above and below. The horizontal doesn't matter, but the vertical sizing does.\"\n\n So: one height for every control in the header bar, applied at the bar level rather than per\n control \u2014 a per-control fix would drift again the next time one is added. Horizontal padding is\n deliberately left to each control (a chip wants more than an icon button). */\n:host ::ng-deep mj-page-header .mj-page-header__actions > *,\n:host ::ng-deep mj-page-header [actions] > * {\n --mj-shell-control-h: 32px; /* = MJ's own .mj-btn--sm min-height. Match MJ; don't fork it. */\n min-height: var(--mj-shell-control-h);\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n}\n/* NOTE the .mj-btn selector is deliberately ABSENT here. mjButton owns the button's\n appearance (there is a CI gate on exactly this), and overriding it forks MJ's styling\n silently: MJ's own .mj-btn--sm is min-height:32px AND grows to 44px under a small-screen\n media query \u2014 the WCAG touch-target minimum. Forcing height on it would squash that back\n down on a phone, quietly undoing MJ's accessibility accommodation for the sake of 2px.\n So the button is left native at MJ's `sm` size, and the OTHER controls match IT. */\n/* Only the scope chip + refresh live in [actions] now \u2014 the stat badges moved to [meta]\n (2026-07-17), so their selector is gone rather than left as dead weight. These two are\n exactly the pair whose mismatched heights Marcelo flagged, so this rule still has a job. */\n:host ::ng-deep mj-page-header [actions] mj-refresh-button button,\n:host ::ng-deep mj-page-header [actions] mj-company-scope-chip > * {\n height: var(--mj-shell-control-h);\n padding-top: 0;\n padding-bottom: 0;\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n}\n"] }]
|
|
124
129
|
}], null, null); })();
|
|
125
130
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConfigurationCategoryComponent, { className: "ConfigurationCategoryComponent", filePath: "lib/custom/shell/configuration-category.component.ts", lineNumber: 22 }); })();
|
|
126
131
|
/** Tree-shaking prevention — called from public-api.ts. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration-category.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/shell/configuration-category.component.ts","../../../../src/lib/custom/shell/configuration-category.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2DAA2D,CAAC
|
|
1
|
+
{"version":3,"file":"configuration-category.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/shell/configuration-category.component.ts","../../../../src/lib/custom/shell/configuration-category.component.html"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { GraphQLDataProvider } from '@memberjunction/graphql-dataprovider';
|
|
2
|
+
import type { RunERPSyncInput, RunERPSyncOutput } from '@mj-biz-apps/accounting-engine-base';
|
|
3
|
+
export declare class ERPSyncClient {
|
|
4
|
+
private readonly dataProvider;
|
|
5
|
+
constructor(dataProvider: GraphQLDataProvider);
|
|
6
|
+
RunERPSync(input: RunERPSyncInput): Promise<RunERPSyncOutput>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=erp-sync.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erp-sync.client.d.ts","sourceRoot":"","sources":["../../../../../src/lib/custom/shell/pages/erp-sync.client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE7F,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,mBAAmB;IAEjD,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAmB3E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { LogError } from '@memberjunction/core';
|
|
2
|
+
export class ERPSyncClient {
|
|
3
|
+
dataProvider;
|
|
4
|
+
constructor(dataProvider) {
|
|
5
|
+
this.dataProvider = dataProvider;
|
|
6
|
+
}
|
|
7
|
+
async RunERPSync(input) {
|
|
8
|
+
try {
|
|
9
|
+
const res = await this.dataProvider.RouteOperation('Accounting.RunERPSync', input);
|
|
10
|
+
if (!res.Success || !res.Output) {
|
|
11
|
+
return { Success: false, Results: [{ CompanyID: '', CompanyIntegrationID: null, ProviderName: null, Success: false, Message: res.ErrorMessage ?? 'No response from server.', Objects: [] }] };
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
Success: !!res.Output.Success,
|
|
15
|
+
Results: res.Output.Results ?? [],
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
catch (e) {
|
|
19
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
20
|
+
LogError(`Accounting.RunERPSync: ${msg}`);
|
|
21
|
+
return { Success: false, Results: [{ CompanyID: '', CompanyIntegrationID: null, ProviderName: null, Success: false, Message: msg, Objects: [] }] };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=erp-sync.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erp-sync.client.js","sourceRoot":"","sources":["../../../../../src/lib/custom/shell/pages/erp-sync.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIhD,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,YAAiC;QAAjC,iBAAY,GAAZ,YAAY,CAAqB;IAAG,CAAC;IAE3D,KAAK,CAAC,UAAU,CAAC,KAAsB;QAC5C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAChD,uBAAuB,EACvB,KAAK,CACN,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBAChC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,YAAY,IAAI,0BAA0B,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;YAChM,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO;gBAC7B,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;aAClC,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,QAAQ,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;YAC1C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACrJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
3
|
+
import { CompanyScopeService } from '../../shared/company-scope.service';
|
|
4
|
+
import type { ERPConnectionCardModel, ERPExtensionRowModel, ERPSyncCompanyResultModel } from '../../../widgets/erp-sync/erp-sync.types';
|
|
5
|
+
import type { ERPSyncRequest } from '../../../widgets/erp-sync/erp-sync-panel.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export declare class ERPSyncPageComponent extends BaseAngularComponent implements OnInit, OnDestroy {
|
|
8
|
+
private cdr;
|
|
9
|
+
private pageRefresh;
|
|
10
|
+
private nav;
|
|
11
|
+
Scope: CompanyScopeService;
|
|
12
|
+
private refreshSub;
|
|
13
|
+
Connections: ERPConnectionCardModel[];
|
|
14
|
+
Extensions: ERPExtensionRowModel[];
|
|
15
|
+
Results: ERPSyncCompanyResultModel[];
|
|
16
|
+
IsLoading: boolean;
|
|
17
|
+
Running: boolean;
|
|
18
|
+
LoadError: string | null;
|
|
19
|
+
ngOnInit(): void;
|
|
20
|
+
ngOnDestroy(): void;
|
|
21
|
+
Load(): Promise<void>;
|
|
22
|
+
OnRun(req: ERPSyncRequest): Promise<void>;
|
|
23
|
+
OnRunCard(card: ERPConnectionCardModel): void;
|
|
24
|
+
OpenCompany(card: ERPConnectionCardModel): void;
|
|
25
|
+
OpenIntegration(card: ERPConnectionCardModel): void;
|
|
26
|
+
OpenExtension(ext: ERPExtensionRowModel): void;
|
|
27
|
+
ToggleExtension(ext: ERPExtensionRowModel): Promise<void>;
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ERPSyncPageComponent, never>;
|
|
29
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ERPSyncPageComponent, "mj-erp-sync-page", never, {}, {}, never, never, false, never>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=erp-sync.page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erp-sync.page.d.ts","sourceRoot":"","sources":["../../../../../src/lib/custom/shell/pages/erp-sync.page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyD,SAAS,EAAE,MAAM,EAAU,MAAM,eAAe,CAAC;AAGjH,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAIrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACxI,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;;AAMzF,qBAOa,oBAAqB,SAAQ,oBAAqB,YAAW,MAAM,EAAE,SAAS;IACzF,OAAO,CAAC,GAAG,CAA6B;IACxC,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,GAAG,CAA6B;IACjC,KAAK,sBAA+B;IAC3C,OAAO,CAAC,UAAU,CAA4C;IAEvD,WAAW,EAAE,sBAAsB,EAAE,CAAM;IAC3C,UAAU,EAAE,oBAAoB,EAAE,CAAM;IACxC,OAAO,EAAE,yBAAyB,EAAE,CAAM;IAC1C,SAAS,UAAS;IAClB,OAAO,UAAS;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEvC,QAAQ,IAAI,IAAI;IAKhB,WAAW,IAAI,IAAI;IAIN,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqDrB,KAAK,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/C,SAAS,CAAC,IAAI,EAAE,sBAAsB,GAAG,IAAI;IAI7C,WAAW,CAAC,IAAI,EAAE,sBAAsB,GAAG,IAAI;IAI/C,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,IAAI;IAInD,aAAa,CAAC,GAAG,EAAE,oBAAoB,GAAG,IAAI;IAIxC,eAAe,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;yCAvG3D,oBAAoB;2CAApB,oBAAoB;CA+GhC"}
|