@memberjunction/ng-base-forms 2.115.0 → 2.117.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 (33) hide show
  1. package/dist/lib/base-field-component.d.ts +20 -1
  2. package/dist/lib/base-field-component.d.ts.map +1 -1
  3. package/dist/lib/base-field-component.js +82 -32
  4. package/dist/lib/base-field-component.js.map +1 -1
  5. package/dist/lib/base-form-component.d.ts +119 -0
  6. package/dist/lib/base-form-component.d.ts.map +1 -1
  7. package/dist/lib/base-form-component.js +210 -0
  8. package/dist/lib/base-form-component.js.map +1 -1
  9. package/dist/lib/base-form-context.d.ts +23 -0
  10. package/dist/lib/base-form-context.d.ts.map +1 -0
  11. package/dist/lib/base-form-context.js +10 -0
  12. package/dist/lib/base-form-context.js.map +1 -0
  13. package/dist/lib/base-form-section-info.d.ts +28 -0
  14. package/dist/lib/base-form-section-info.d.ts.map +1 -0
  15. package/dist/lib/base-form-section-info.js +34 -0
  16. package/dist/lib/base-form-section-info.js.map +1 -0
  17. package/dist/lib/collapsible-panel.component.d.ts +50 -0
  18. package/dist/lib/collapsible-panel.component.d.ts.map +1 -0
  19. package/dist/lib/collapsible-panel.component.js +281 -0
  20. package/dist/lib/collapsible-panel.component.js.map +1 -0
  21. package/dist/lib/form-section-controls.component.d.ts +24 -0
  22. package/dist/lib/form-section-controls.component.d.ts.map +1 -0
  23. package/dist/lib/form-section-controls.component.js +150 -0
  24. package/dist/lib/form-section-controls.component.js.map +1 -0
  25. package/dist/module.d.ts +18 -16
  26. package/dist/module.d.ts.map +1 -1
  27. package/dist/module.js +14 -4
  28. package/dist/module.js.map +1 -1
  29. package/dist/public-api.d.ts +5 -0
  30. package/dist/public-api.d.ts.map +1 -1
  31. package/dist/public-api.js +4 -0
  32. package/dist/public-api.js.map +1 -1
  33. package/package.json +10 -10
@@ -1,6 +1,7 @@
1
1
  import { EventEmitter, AfterViewInit, Renderer2 } from '@angular/core';
2
2
  import { BaseEntity, EntityFieldInfo } from '@memberjunction/core';
3
3
  import { BaseRecordComponent } from './base-record-component';
4
+ import { BaseFormContext } from './base-form-context';
4
5
  import { MarkdownComponent } from 'ngx-markdown';
5
6
  import * as i0 from "@angular/core";
6
7
  /**
@@ -40,6 +41,15 @@ export declare class MJFormField extends BaseRecordComponent implements AfterVie
40
41
  * If set to false, the label for the field will not be shown. The default is true.
41
42
  */
42
43
  ShowLabel: boolean;
44
+ /**
45
+ * Form context containing all form-level state (filter, showEmptyFields, etc.)
46
+ */
47
+ formContext?: BaseFormContext;
48
+ /**
49
+ * When true (default), the field will be hidden when it has no value and is in read-only mode.
50
+ * This helps reduce visual clutter by hiding empty fields.
51
+ */
52
+ hideWhenEmptyInReadOnlyMode: boolean;
43
53
  languages: import("@codemirror/language").LanguageDescription[];
44
54
  private _displayName;
45
55
  /**
@@ -47,6 +57,11 @@ export declare class MJFormField extends BaseRecordComponent implements AfterVie
47
57
  */
48
58
  get DisplayName(): string;
49
59
  set DisplayName(newValue: string);
60
+ /**
61
+ * Returns the display name with search highlighting applied if formContext.sectionFilter is set
62
+ */
63
+ get HighlightedDisplayName(): string;
64
+ private escapeRegex;
50
65
  get ExtendedType(): string;
51
66
  private _possibleValues;
52
67
  /**
@@ -63,10 +78,14 @@ export declare class MJFormField extends BaseRecordComponent implements AfterVie
63
78
  */
64
79
  get IsFieldReadOnly(): boolean;
65
80
  get FieldInfo(): EntityFieldInfo;
81
+ /**
82
+ * Returns true if the field should be hidden (empty value in read-only mode with hideWhenEmptyInReadOnlyMode enabled)
83
+ */
84
+ get shouldHideField(): boolean;
66
85
  markdown: MarkdownComponent | undefined;
67
86
  constructor(renderer: Renderer2);
68
87
  ngAfterViewInit(): void;
69
88
  static ɵfac: i0.ɵɵFactoryDeclaration<MJFormField, never>;
70
- static ɵcmp: i0.ɵɵComponentDeclaration<MJFormField, "mj-form-field", never, { "record": { "alias": "record"; "required": false; }; "EditMode": { "alias": "EditMode"; "required": false; }; "FieldName": { "alias": "FieldName"; "required": false; }; "Type": { "alias": "Type"; "required": false; }; "LinkType": { "alias": "LinkType"; "required": false; }; "LinkComponentType": { "alias": "LinkComponentType"; "required": false; }; "ShowLabel": { "alias": "ShowLabel"; "required": false; }; "DisplayName": { "alias": "DisplayName"; "required": false; }; "PossibleValues": { "alias": "PossibleValues"; "required": false; }; "Value": { "alias": "Value"; "required": false; }; }, { "ValueChange": "ValueChange"; }, never, never, false, never>;
89
+ static ɵcmp: i0.ɵɵComponentDeclaration<MJFormField, "mj-form-field", never, { "record": { "alias": "record"; "required": false; }; "EditMode": { "alias": "EditMode"; "required": false; }; "FieldName": { "alias": "FieldName"; "required": false; }; "Type": { "alias": "Type"; "required": false; }; "LinkType": { "alias": "LinkType"; "required": false; }; "LinkComponentType": { "alias": "LinkComponentType"; "required": false; }; "ShowLabel": { "alias": "ShowLabel"; "required": false; }; "formContext": { "alias": "formContext"; "required": false; }; "hideWhenEmptyInReadOnlyMode": { "alias": "hideWhenEmptyInReadOnlyMode"; "required": false; }; "DisplayName": { "alias": "DisplayName"; "required": false; }; "PossibleValues": { "alias": "PossibleValues"; "required": false; }; "Value": { "alias": "Value"; "required": false; }; }, { "ValueChange": "ValueChange"; }, never, never, false, never>;
71
90
  }
72
91
  //# sourceMappingURL=base-field-component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-field-component.d.ts","sourceRoot":"","sources":["../../src/lib/base-field-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAyB,aAAa,EAAE,SAAS,EAAqB,MAAM,eAAe,CAAC;AAC3I,OAAO,EAAE,UAAU,EAAe,eAAe,EAAqB,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;;AAGjD;;;;;GAKG;AACH,qBAKa,WAAY,SAAQ,mBAAoB,YAAW,aAAa;IAuHzE,OAAO,CAAC,QAAQ;IAtHlB;;OAEG;IACM,MAAM,EAAG,UAAU,CAAC;IAC7B;;OAEG;IACM,QAAQ,EAAE,OAAO,CAAS;IACnC;;OAEG;IACM,SAAS,EAAE,MAAM,CAAM;IAChC;;OAEG;IACM,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,gBAAgB,GAAG,YAAY,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,MAAM,CAAa;IACxI;;;OAGG;IACM,QAAQ,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAU;IAEhE;;OAEG;IACM,iBAAiB,EAAE,QAAQ,GAAG,UAAU,CAAc;IAE/D;;OAEG;IACM,SAAS,EAAE,OAAO,CAAQ;IAEnC,SAAS,uDAAa;IAEtB,OAAO,CAAC,YAAY,CAAuB;IAC3C;;OAEG;IACH,IACW,WAAW,IAAI,MAAM,CAO/B;IAED,IAAW,WAAW,CAAC,QAAQ,EAAE,MAAM,EAEtC;IAED,IAAW,YAAY,IAAI,MAAM,CAOhC;IAED,OAAO,CAAC,eAAe,CAAyB;IAChD;;;OAGG;IACH,IAAa,cAAc,IAAI,MAAM,EAAE,CAOtC;IAED,IAAI,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAEpC;IAED,IACW,KAAK,IAAI,GAAG,CAUtB;IACD,IAAW,KAAK,CAAC,QAAQ,EAAE,GAAG,EAM7B;IACS,WAAW,oBAA2B;IAEhD;;OAEG;IACH,IAAW,eAAe,IAAI,OAAO,CAIpC;IAED,IAAW,SAAS,IAAI,eAAe,CAItC;IAEyC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;gBAGxE,QAAQ,EAAE,SAAS;IAK7B,eAAe,IAAI,IAAI;yCA5HZ,WAAW;2CAAX,WAAW;CAmJvB"}
1
+ {"version":3,"file":"base-field-component.d.ts","sourceRoot":"","sources":["../../src/lib/base-field-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAyB,aAAa,EAAE,SAAS,EAAqB,MAAM,eAAe,CAAC;AAC3I,OAAO,EAAE,UAAU,EAAe,eAAe,EAAqB,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;;AAGjD;;;;;GAKG;AACH,qBAKa,WAAY,SAAQ,mBAAoB,YAAW,aAAa;IA8KzE,OAAO,CAAC,QAAQ;IA7KlB;;OAEG;IACM,MAAM,EAAG,UAAU,CAAC;IAC7B;;OAEG;IACM,QAAQ,EAAE,OAAO,CAAS;IACnC;;OAEG;IACM,SAAS,EAAE,MAAM,CAAM;IAChC;;OAEG;IACM,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,gBAAgB,GAAG,YAAY,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,MAAM,CAAa;IACxI;;;OAGG;IACM,QAAQ,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAU;IAEhE;;OAEG;IACM,iBAAiB,EAAE,QAAQ,GAAG,UAAU,CAAc;IAE/D;;OAEG;IACM,SAAS,EAAE,OAAO,CAAQ;IAEnC;;OAEG;IACM,WAAW,CAAC,EAAE,eAAe,CAAC;IAEvC;;;OAGG;IACM,2BAA2B,EAAE,OAAO,CAAQ;IAErD,SAAS,uDAAa;IAEtB,OAAO,CAAC,YAAY,CAAuB;IAC3C;;OAEG;IACH,IACW,WAAW,IAAI,MAAM,CAO/B;IAED,IAAW,WAAW,CAAC,QAAQ,EAAE,MAAM,EAEtC;IAED;;OAEG;IACH,IAAW,sBAAsB,IAAI,MAAM,CAgB1C;IAED,OAAO,CAAC,WAAW;IAInB,IAAW,YAAY,IAAI,MAAM,CAOhC;IAED,OAAO,CAAC,eAAe,CAAyB;IAChD;;;OAGG;IACH,IAAa,cAAc,IAAI,MAAM,EAAE,CAOtC;IAED,IAAI,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAEpC;IAED,IACW,KAAK,IAAI,GAAG,CAUtB;IACD,IAAW,KAAK,CAAC,QAAQ,EAAE,GAAG,EAM7B;IACS,WAAW,oBAA2B;IAEhD;;OAEG;IACH,IAAW,eAAe,IAAI,OAAO,CAIpC;IAED,IAAW,SAAS,IAAI,eAAe,CAItC;IAED;;OAEG;IACH,IAAW,eAAe,IAAI,OAAO,CAcpC;IAEwC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;gBAGvE,QAAQ,EAAE,SAAS;IAK7B,eAAe,IAAI,IAAI;yCAnLZ,WAAW;2CAAX,WAAW;CA0MvB"}
@@ -14,27 +14,30 @@ import * as i8 from "ngx-markdown";
14
14
  import * as i9 from "./link-field.component";
15
15
  const _c0 = ["markdown"];
16
16
  function MJFormField_Conditional_0_div_0_label_1_Template(rf, ctx) { if (rf & 1) {
17
- i0.ɵɵelementStart(0, "label");
18
- i0.ɵɵtext(1);
19
- i0.ɵɵelementEnd();
17
+ i0.ɵɵelement(0, "label", 7);
20
18
  } if (rf & 2) {
21
19
  const ctx_r0 = i0.ɵɵnextContext(3);
22
- i0.ɵɵadvance();
23
- i0.ɵɵtextInterpolate(ctx_r0.DisplayName);
20
+ i0.ɵɵproperty("innerHTML", ctx_r0.HighlightedDisplayName, i0.ɵɵsanitizeHtml);
24
21
  } }
25
22
  function MJFormField_Conditional_0_div_0_Case_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
26
- i0.ɵɵelement(0, "mj-code-editor", 7);
23
+ i0.ɵɵelement(0, "mj-code-editor", 8);
27
24
  } if (rf & 2) {
28
25
  const ctx_r0 = i0.ɵɵnextContext(4);
29
26
  i0.ɵɵproperty("value", ctx_r0.record.Get(ctx_r0.FieldName))("readonly", true)("languages", ctx_r0.languages)("language", "JavaScript");
30
27
  } }
31
28
  function MJFormField_Conditional_0_div_0_Case_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
32
- i0.ɵɵelement(0, "markdown", 8, 0);
29
+ i0.ɵɵelement(0, "input", 9);
33
30
  } if (rf & 2) {
34
31
  const ctx_r0 = i0.ɵɵnextContext(4);
35
- i0.ɵɵproperty("data", ctx_r0.record.Get(ctx_r0.FieldName));
32
+ i0.ɵɵproperty("checked", ctx_r0.Value);
36
33
  } }
37
34
  function MJFormField_Conditional_0_div_0_Case_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
35
+ i0.ɵɵelement(0, "markdown", 10, 0);
36
+ } if (rf & 2) {
37
+ const ctx_r0 = i0.ɵɵnextContext(4);
38
+ i0.ɵɵproperty("data", ctx_r0.record.Get(ctx_r0.FieldName));
39
+ } }
40
+ function MJFormField_Conditional_0_div_0_Case_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
38
41
  i0.ɵɵelementStart(0, "span");
39
42
  i0.ɵɵtext(1);
40
43
  i0.ɵɵelementEnd();
@@ -44,10 +47,10 @@ function MJFormField_Conditional_0_div_0_Case_2_Conditional_2_Template(rf, ctx)
44
47
  i0.ɵɵtextInterpolate(ctx_r0.FormatValue(ctx_r0.FieldName, 0));
45
48
  } }
46
49
  function MJFormField_Conditional_0_div_0_Case_2_Template(rf, ctx) { if (rf & 1) {
47
- i0.ɵɵtemplate(0, MJFormField_Conditional_0_div_0_Case_2_Conditional_0_Template, 1, 4, "mj-code-editor", 7)(1, MJFormField_Conditional_0_div_0_Case_2_Conditional_1_Template, 2, 1, "markdown", 8)(2, MJFormField_Conditional_0_div_0_Case_2_Conditional_2_Template, 2, 1, "span");
50
+ i0.ɵɵtemplate(0, MJFormField_Conditional_0_div_0_Case_2_Conditional_0_Template, 1, 4, "mj-code-editor", 8)(1, MJFormField_Conditional_0_div_0_Case_2_Conditional_1_Template, 1, 1, "input", 9)(2, MJFormField_Conditional_0_div_0_Case_2_Conditional_2_Template, 2, 1, "markdown", 10)(3, MJFormField_Conditional_0_div_0_Case_2_Conditional_3_Template, 2, 1, "span");
48
51
  } if (rf & 2) {
49
52
  const ctx_r0 = i0.ɵɵnextContext(3);
50
- i0.ɵɵconditional(ctx_r0.ExtendedType === "Code" ? 0 : ctx_r0.FieldInfo.Length === -1 ? 1 : 2);
53
+ i0.ɵɵconditional(ctx_r0.ExtendedType === "Code" ? 0 : ctx_r0.Type === "checkbox" ? 1 : ctx_r0.FieldInfo.Length === -1 ? 2 : 3);
51
54
  } }
52
55
  function MJFormField_Conditional_0_div_0_Case_3_Template(rf, ctx) { if (rf & 1) {
53
56
  i0.ɵɵelementStart(0, "span", 4);
@@ -81,7 +84,7 @@ function MJFormField_Conditional_0_div_0_Case_5_Template(rf, ctx) { if (rf & 1)
81
84
  } }
82
85
  function MJFormField_Conditional_0_div_0_Template(rf, ctx) { if (rf & 1) {
83
86
  i0.ɵɵelementStart(0, "div", 2);
84
- i0.ɵɵtemplate(1, MJFormField_Conditional_0_div_0_label_1_Template, 2, 1, "label", 3)(2, MJFormField_Conditional_0_div_0_Case_2_Template, 3, 1)(3, MJFormField_Conditional_0_div_0_Case_3_Template, 2, 2, "span", 4)(4, MJFormField_Conditional_0_div_0_Case_4_Template, 2, 2, "span", 5)(5, MJFormField_Conditional_0_div_0_Case_5_Template, 2, 3, "span", 6);
87
+ i0.ɵɵtemplate(1, MJFormField_Conditional_0_div_0_label_1_Template, 1, 1, "label", 3)(2, MJFormField_Conditional_0_div_0_Case_2_Template, 4, 1)(3, MJFormField_Conditional_0_div_0_Case_3_Template, 2, 2, "span", 4)(4, MJFormField_Conditional_0_div_0_Case_4_Template, 2, 2, "span", 5)(5, MJFormField_Conditional_0_div_0_Case_5_Template, 2, 3, "span", 6);
85
88
  i0.ɵɵelementEnd();
86
89
  } if (rf & 2) {
87
90
  let tmp_3_0;
@@ -92,23 +95,20 @@ function MJFormField_Conditional_0_div_0_Template(rf, ctx) { if (rf & 1) {
92
95
  i0.ɵɵconditional((tmp_3_0 = ctx_r0.LinkType) === "None" ? 2 : tmp_3_0 === "Email" ? 3 : tmp_3_0 === "URL" ? 4 : tmp_3_0 === "Record" ? 5 : -1);
93
96
  } }
94
97
  function MJFormField_Conditional_0_div_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
95
- i0.ɵɵelementStart(0, "label");
96
- i0.ɵɵtext(1);
97
- i0.ɵɵelementEnd();
98
+ i0.ɵɵelement(0, "label", 7);
98
99
  } if (rf & 2) {
99
100
  const ctx_r0 = i0.ɵɵnextContext(3);
100
- i0.ɵɵadvance();
101
- i0.ɵɵtextInterpolate(ctx_r0.DisplayName);
101
+ i0.ɵɵproperty("innerHTML", ctx_r0.HighlightedDisplayName, i0.ɵɵsanitizeHtml);
102
102
  } }
103
103
  function MJFormField_Conditional_0_div_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
104
- i0.ɵɵelement(0, "mj-link-field", 9);
104
+ i0.ɵɵelement(0, "mj-link-field", 11);
105
105
  } if (rf & 2) {
106
106
  const ctx_r0 = i0.ɵɵnextContext(3);
107
107
  i0.ɵɵproperty("record", ctx_r0.record)("FieldName", ctx_r0.FieldName)("LinkComponentType", ctx_r0.LinkComponentType);
108
108
  } }
109
109
  function MJFormField_Conditional_0_div_1_Conditional_3_Case_0_Template(rf, ctx) { if (rf & 1) {
110
110
  const _r2 = i0.ɵɵgetCurrentView();
111
- i0.ɵɵelementStart(0, "mj-code-editor", 16);
111
+ i0.ɵɵelementStart(0, "mj-code-editor", 18);
112
112
  i0.ɵɵtwoWayListener("ngModelChange", function MJFormField_Conditional_0_div_1_Conditional_3_Case_0_Template_mj_code_editor_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r0.Value, $event) || (ctx_r0.Value = $event); return i0.ɵɵresetView($event); });
113
113
  i0.ɵɵelementEnd();
114
114
  } if (rf & 2) {
@@ -118,7 +118,7 @@ function MJFormField_Conditional_0_div_1_Conditional_3_Case_0_Template(rf, ctx)
118
118
  } }
119
119
  function MJFormField_Conditional_0_div_1_Conditional_3_Case_1_Template(rf, ctx) { if (rf & 1) {
120
120
  const _r3 = i0.ɵɵgetCurrentView();
121
- i0.ɵɵelementStart(0, "kendo-textbox", 17);
121
+ i0.ɵɵelementStart(0, "kendo-textbox", 19);
122
122
  i0.ɵɵtwoWayListener("ngModelChange", function MJFormField_Conditional_0_div_1_Conditional_3_Case_1_Template_kendo_textbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r0.Value, $event) || (ctx_r0.Value = $event); return i0.ɵɵresetView($event); });
123
123
  i0.ɵɵelementEnd();
124
124
  } if (rf & 2) {
@@ -127,7 +127,7 @@ function MJFormField_Conditional_0_div_1_Conditional_3_Case_1_Template(rf, ctx)
127
127
  } }
128
128
  function MJFormField_Conditional_0_div_1_Conditional_3_Case_2_Template(rf, ctx) { if (rf & 1) {
129
129
  const _r4 = i0.ɵɵgetCurrentView();
130
- i0.ɵɵelementStart(0, "kendo-textarea", 17);
130
+ i0.ɵɵelementStart(0, "kendo-textarea", 19);
131
131
  i0.ɵɵtwoWayListener("ngModelChange", function MJFormField_Conditional_0_div_1_Conditional_3_Case_2_Template_kendo_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r0.Value, $event) || (ctx_r0.Value = $event); return i0.ɵɵresetView($event); });
132
132
  i0.ɵɵelementEnd();
133
133
  } if (rf & 2) {
@@ -136,7 +136,7 @@ function MJFormField_Conditional_0_div_1_Conditional_3_Case_2_Template(rf, ctx)
136
136
  } }
137
137
  function MJFormField_Conditional_0_div_1_Conditional_3_Case_3_Template(rf, ctx) { if (rf & 1) {
138
138
  const _r5 = i0.ɵɵgetCurrentView();
139
- i0.ɵɵelementStart(0, "kendo-numerictextbox", 18);
139
+ i0.ɵɵelementStart(0, "kendo-numerictextbox", 20);
140
140
  i0.ɵɵtwoWayListener("valueChange", function MJFormField_Conditional_0_div_1_Conditional_3_Case_3_Template_kendo_numerictextbox_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r0.Value, $event) || (ctx_r0.Value = $event); return i0.ɵɵresetView($event); });
141
141
  i0.ɵɵelementEnd();
142
142
  } if (rf & 2) {
@@ -145,7 +145,7 @@ function MJFormField_Conditional_0_div_1_Conditional_3_Case_3_Template(rf, ctx)
145
145
  } }
146
146
  function MJFormField_Conditional_0_div_1_Conditional_3_Case_4_Template(rf, ctx) { if (rf & 1) {
147
147
  const _r6 = i0.ɵɵgetCurrentView();
148
- i0.ɵɵelementStart(0, "kendo-datepicker", 18);
148
+ i0.ɵɵelementStart(0, "kendo-datepicker", 20);
149
149
  i0.ɵɵtwoWayListener("valueChange", function MJFormField_Conditional_0_div_1_Conditional_3_Case_4_Template_kendo_datepicker_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r0.Value, $event) || (ctx_r0.Value = $event); return i0.ɵɵresetView($event); });
150
150
  i0.ɵɵelementEnd();
151
151
  } if (rf & 2) {
@@ -154,7 +154,7 @@ function MJFormField_Conditional_0_div_1_Conditional_3_Case_4_Template(rf, ctx)
154
154
  } }
155
155
  function MJFormField_Conditional_0_div_1_Conditional_3_Case_5_Template(rf, ctx) { if (rf & 1) {
156
156
  const _r7 = i0.ɵɵgetCurrentView();
157
- i0.ɵɵelementStart(0, "input", 19);
157
+ i0.ɵɵelementStart(0, "input", 21);
158
158
  i0.ɵɵtwoWayListener("ngModelChange", function MJFormField_Conditional_0_div_1_Conditional_3_Case_5_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r0.Value, $event) || (ctx_r0.Value = $event); return i0.ɵɵresetView($event); });
159
159
  i0.ɵɵelementEnd();
160
160
  } if (rf & 2) {
@@ -163,7 +163,7 @@ function MJFormField_Conditional_0_div_1_Conditional_3_Case_5_Template(rf, ctx)
163
163
  } }
164
164
  function MJFormField_Conditional_0_div_1_Conditional_3_Case_6_Template(rf, ctx) { if (rf & 1) {
165
165
  const _r8 = i0.ɵɵgetCurrentView();
166
- i0.ɵɵelementStart(0, "kendo-dropdownlist", 20);
166
+ i0.ɵɵelementStart(0, "kendo-dropdownlist", 22);
167
167
  i0.ɵɵtwoWayListener("ngModelChange", function MJFormField_Conditional_0_div_1_Conditional_3_Case_6_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r0.Value, $event) || (ctx_r0.Value = $event); return i0.ɵɵresetView($event); });
168
168
  i0.ɵɵelementEnd();
169
169
  } if (rf & 2) {
@@ -173,7 +173,7 @@ function MJFormField_Conditional_0_div_1_Conditional_3_Case_6_Template(rf, ctx)
173
173
  } }
174
174
  function MJFormField_Conditional_0_div_1_Conditional_3_Case_7_Template(rf, ctx) { if (rf & 1) {
175
175
  const _r9 = i0.ɵɵgetCurrentView();
176
- i0.ɵɵelementStart(0, "kendo-combobox", 21);
176
+ i0.ɵɵelementStart(0, "kendo-combobox", 23);
177
177
  i0.ɵɵtwoWayListener("ngModelChange", function MJFormField_Conditional_0_div_1_Conditional_3_Case_7_Template_kendo_combobox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r0.Value, $event) || (ctx_r0.Value = $event); return i0.ɵɵresetView($event); });
178
178
  i0.ɵɵelementEnd();
179
179
  } if (rf & 2) {
@@ -182,7 +182,7 @@ function MJFormField_Conditional_0_div_1_Conditional_3_Case_7_Template(rf, ctx)
182
182
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.Value);
183
183
  } }
184
184
  function MJFormField_Conditional_0_div_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
185
- i0.ɵɵtemplate(0, MJFormField_Conditional_0_div_1_Conditional_3_Case_0_Template, 1, 3, "mj-code-editor", 10)(1, MJFormField_Conditional_0_div_1_Conditional_3_Case_1_Template, 1, 1, "kendo-textbox", 11)(2, MJFormField_Conditional_0_div_1_Conditional_3_Case_2_Template, 1, 1, "kendo-textarea", 11)(3, MJFormField_Conditional_0_div_1_Conditional_3_Case_3_Template, 1, 1, "kendo-numerictextbox", 12)(4, MJFormField_Conditional_0_div_1_Conditional_3_Case_4_Template, 1, 1, "kendo-datepicker", 12)(5, MJFormField_Conditional_0_div_1_Conditional_3_Case_5_Template, 1, 1, "input", 13)(6, MJFormField_Conditional_0_div_1_Conditional_3_Case_6_Template, 1, 2, "kendo-dropdownlist", 14)(7, MJFormField_Conditional_0_div_1_Conditional_3_Case_7_Template, 1, 3, "kendo-combobox", 15);
185
+ i0.ɵɵtemplate(0, MJFormField_Conditional_0_div_1_Conditional_3_Case_0_Template, 1, 3, "mj-code-editor", 12)(1, MJFormField_Conditional_0_div_1_Conditional_3_Case_1_Template, 1, 1, "kendo-textbox", 13)(2, MJFormField_Conditional_0_div_1_Conditional_3_Case_2_Template, 1, 1, "kendo-textarea", 13)(3, MJFormField_Conditional_0_div_1_Conditional_3_Case_3_Template, 1, 1, "kendo-numerictextbox", 14)(4, MJFormField_Conditional_0_div_1_Conditional_3_Case_4_Template, 1, 1, "kendo-datepicker", 14)(5, MJFormField_Conditional_0_div_1_Conditional_3_Case_5_Template, 1, 1, "input", 15)(6, MJFormField_Conditional_0_div_1_Conditional_3_Case_6_Template, 1, 2, "kendo-dropdownlist", 16)(7, MJFormField_Conditional_0_div_1_Conditional_3_Case_7_Template, 1, 3, "kendo-combobox", 17);
186
186
  } if (rf & 2) {
187
187
  let tmp_3_0;
188
188
  const ctx_r0 = i0.ɵɵnextContext(3);
@@ -190,7 +190,7 @@ function MJFormField_Conditional_0_div_1_Conditional_3_Template(rf, ctx) { if (r
190
190
  } }
191
191
  function MJFormField_Conditional_0_div_1_Template(rf, ctx) { if (rf & 1) {
192
192
  i0.ɵɵelementStart(0, "div", 2);
193
- i0.ɵɵtemplate(1, MJFormField_Conditional_0_div_1_Conditional_1_Template, 2, 1, "label")(2, MJFormField_Conditional_0_div_1_Conditional_2_Template, 1, 3, "mj-link-field", 9)(3, MJFormField_Conditional_0_div_1_Conditional_3_Template, 8, 1);
193
+ i0.ɵɵtemplate(1, MJFormField_Conditional_0_div_1_Conditional_1_Template, 1, 1, "label", 7)(2, MJFormField_Conditional_0_div_1_Conditional_2_Template, 1, 3, "mj-link-field", 11)(3, MJFormField_Conditional_0_div_1_Conditional_3_Template, 8, 1);
194
194
  i0.ɵɵelementEnd();
195
195
  } if (rf & 2) {
196
196
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -203,7 +203,7 @@ function MJFormField_Conditional_0_Template(rf, ctx) { if (rf & 1) {
203
203
  i0.ɵɵtemplate(0, MJFormField_Conditional_0_div_0_Template, 6, 2, "div", 1)(1, MJFormField_Conditional_0_div_1_Template, 4, 2, "div", 1);
204
204
  } if (rf & 2) {
205
205
  const ctx_r0 = i0.ɵɵnextContext();
206
- i0.ɵɵproperty("ngIf", !ctx_r0.EditMode || ctx_r0.IsFieldReadOnly);
206
+ i0.ɵɵproperty("ngIf", (!ctx_r0.EditMode || ctx_r0.IsFieldReadOnly) && !ctx_r0.shouldHideField);
207
207
  i0.ɵɵadvance();
208
208
  i0.ɵɵproperty("ngIf", ctx_r0.EditMode && !ctx_r0.IsFieldReadOnly);
209
209
  } }
@@ -244,6 +244,15 @@ export class MJFormField extends BaseRecordComponent {
244
244
  * If set to false, the label for the field will not be shown. The default is true.
245
245
  */
246
246
  ShowLabel = true;
247
+ /**
248
+ * Form context containing all form-level state (filter, showEmptyFields, etc.)
249
+ */
250
+ formContext;
251
+ /**
252
+ * When true (default), the field will be hidden when it has no value and is in read-only mode.
253
+ * This helps reduce visual clutter by hiding empty fields.
254
+ */
255
+ hideWhenEmptyInReadOnlyMode = true;
247
256
  languages = languages;
248
257
  _displayName = null;
249
258
  /**
@@ -263,6 +272,27 @@ export class MJFormField extends BaseRecordComponent {
263
272
  set DisplayName(newValue) {
264
273
  this._displayName = newValue;
265
274
  }
275
+ /**
276
+ * Returns the display name with search highlighting applied if formContext.sectionFilter is set
277
+ */
278
+ get HighlightedDisplayName() {
279
+ const displayName = this.DisplayName;
280
+ const filter = this.formContext?.sectionFilter;
281
+ if (!filter || !filter.trim()) {
282
+ return displayName;
283
+ }
284
+ const searchTerm = filter.toLowerCase().trim();
285
+ if (!displayName.toLowerCase().includes(searchTerm)) {
286
+ return displayName;
287
+ }
288
+ // Escape special regex characters
289
+ const escapedTerm = this.escapeRegex(searchTerm);
290
+ const regex = new RegExp(escapedTerm, 'gi');
291
+ return displayName.replace(regex, '<mark class="search-highlight">$&</mark>');
292
+ }
293
+ escapeRegex(term) {
294
+ return term.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
295
+ }
266
296
  get ExtendedType() {
267
297
  const entityField = this.record.GetFieldByName(this.FieldName);
268
298
  if (!entityField) {
@@ -325,6 +355,22 @@ export class MJFormField extends BaseRecordComponent {
325
355
  else
326
356
  throw new Error(`Field ${this.FieldName} not found in record ${this.record.EntityInfo.Name}`);
327
357
  }
358
+ /**
359
+ * Returns true if the field should be hidden (empty value in read-only mode with hideWhenEmptyInReadOnlyMode enabled)
360
+ */
361
+ get shouldHideField() {
362
+ // If form-level "Show Empty Fields" is enabled, never hide
363
+ if (this.formContext?.showEmptyFields) {
364
+ return false;
365
+ }
366
+ // Don't hide if the feature is disabled or we're in edit mode
367
+ if (!this.hideWhenEmptyInReadOnlyMode || this.EditMode) {
368
+ return false;
369
+ }
370
+ // Check if the field has a value
371
+ const value = this.record.Get(this.FieldName);
372
+ return value === null || value === undefined || value === '';
373
+ }
328
374
  markdown;
329
375
  constructor(renderer) {
330
376
  super();
@@ -359,15 +405,15 @@ export class MJFormField extends BaseRecordComponent {
359
405
  } if (rf & 2) {
360
406
  let _t;
361
407
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.markdown = _t.first);
362
- } }, inputs: { record: "record", EditMode: "EditMode", FieldName: "FieldName", Type: "Type", LinkType: "LinkType", LinkComponentType: "LinkComponentType", ShowLabel: "ShowLabel", DisplayName: "DisplayName", PossibleValues: "PossibleValues", Value: "Value" }, outputs: { ValueChange: "ValueChange" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [["markdown", ""], ["class", "record-form-row", 4, "ngIf"], [1, "record-form-row"], [4, "ngIf"], ["mjEmailLink", "", 3, "field"], ["mjWebLink", "", 3, "field"], ["mjFieldLink", "", 3, "record", "fieldName"], [3, "value", "readonly", "languages", "language"], [3, "data"], [3, "record", "FieldName", "LinkComponentType"], [3, "ngModel", "languages", "language"], [3, "ngModel"], [1, "narrower-component", 3, "value"], ["type", "checkbox", "kendoCheckBox", "", 3, "ngModel"], [3, "data", "ngModel"], [3, "data", "allowCustom", "ngModel"], [3, "ngModelChange", "ngModel", "languages", "language"], [3, "ngModelChange", "ngModel"], [1, "narrower-component", 3, "valueChange", "value"], ["type", "checkbox", "kendoCheckBox", "", 3, "ngModelChange", "ngModel"], [3, "ngModelChange", "data", "ngModel"], [3, "ngModelChange", "data", "allowCustom", "ngModel"]], template: function MJFormField_Template(rf, ctx) { if (rf & 1) {
408
+ } }, inputs: { record: "record", EditMode: "EditMode", FieldName: "FieldName", Type: "Type", LinkType: "LinkType", LinkComponentType: "LinkComponentType", ShowLabel: "ShowLabel", formContext: "formContext", hideWhenEmptyInReadOnlyMode: "hideWhenEmptyInReadOnlyMode", DisplayName: "DisplayName", PossibleValues: "PossibleValues", Value: "Value" }, outputs: { ValueChange: "ValueChange" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [["markdown", ""], ["class", "record-form-row", 4, "ngIf"], [1, "record-form-row"], [3, "innerHTML", 4, "ngIf"], ["mjEmailLink", "", 3, "field"], ["mjWebLink", "", 3, "field"], ["mjFieldLink", "", 3, "record", "fieldName"], [3, "innerHTML"], [3, "value", "readonly", "languages", "language"], ["type", "checkbox", "kendoCheckBox", "", "disabled", "", 3, "checked"], [3, "data"], [3, "record", "FieldName", "LinkComponentType"], [3, "ngModel", "languages", "language"], [3, "ngModel"], [1, "narrower-component", 3, "value"], ["type", "checkbox", "kendoCheckBox", "", 3, "ngModel"], [3, "data", "ngModel"], [3, "data", "allowCustom", "ngModel"], [3, "ngModelChange", "ngModel", "languages", "language"], [3, "ngModelChange", "ngModel"], [1, "narrower-component", 3, "valueChange", "value"], ["type", "checkbox", "kendoCheckBox", "", 3, "ngModelChange", "ngModel"], [3, "ngModelChange", "data", "ngModel"], [3, "ngModelChange", "data", "allowCustom", "ngModel"]], template: function MJFormField_Template(rf, ctx) { if (rf & 1) {
363
409
  i0.ɵɵtemplate(0, MJFormField_Conditional_0_Template, 2, 2);
364
410
  } if (rf & 2) {
365
411
  i0.ɵɵconditional(ctx.record.IsSaved || !ctx.IsFieldReadOnly ? 0 : -1);
366
- } }, dependencies: [i1.NgIf, i2.CheckboxControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.TextAreaComponent, i3.TextBoxComponent, i3.NumericTextBoxComponent, i3.CheckBoxDirective, i4.DatePickerComponent, i5.ComboBoxComponent, i5.DropDownListComponent, i6.EmailLink, i6.FieldLink, i6.WebLink, i7.CodeEditorComponent, i8.MarkdownComponent, i9.MJLinkField], styles: [".record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n align-items: start; \n\n} \n \n \n.narrower-component[_ngcontent-%COMP%] {\n width: 435px;\n}\n.record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-weight: bold;\n padding-right: 10px;\n width: 240px;\n margin-bottom: 0;\n align-self: start; \n\n}\n\n\n\n\n\n.record-form-row[_ngcontent-%COMP%] markdown[_ngcontent-%COMP%] > p[_ngcontent-%COMP%], \n.record-form-row[_ngcontent-%COMP%] markdown[_ngcontent-%COMP%] > h1[_ngcontent-%COMP%], \n.record-form-row[_ngcontent-%COMP%] markdown[_ngcontent-%COMP%] > h2[_ngcontent-%COMP%], \n.record-form-row[_ngcontent-%COMP%] markdown[_ngcontent-%COMP%] > h3[_ngcontent-%COMP%], \n.record-form-row[_ngcontent-%COMP%] markdown[_ngcontent-%COMP%] > h4[_ngcontent-%COMP%], \n.record-form-row[_ngcontent-%COMP%] markdown[_ngcontent-%COMP%] > h5[_ngcontent-%COMP%], \n.record-form-row[_ngcontent-%COMP%] markdown[_ngcontent-%COMP%] > h6[_ngcontent-%COMP%] {\n margin:0 !important;\n}\n\nmarkdown[_ngcontent-%COMP%] {\n font-size: 1rem; \n\n}\n\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n display: grid; \n\n grid-template-columns: auto 1fr;\n align-items: start; \n\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n align-self: start; \n\n }\n}"] });
412
+ } }, dependencies: [i1.NgIf, i2.CheckboxControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.TextAreaComponent, i3.TextBoxComponent, i3.NumericTextBoxComponent, i3.CheckBoxDirective, i4.DatePickerComponent, i5.ComboBoxComponent, i5.DropDownListComponent, i6.EmailLink, i6.FieldLink, i6.WebLink, i7.CodeEditorComponent, i8.MarkdownComponent, i9.MJLinkField], styles: [".record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n align-items: start; \n\n} \n \n \n.narrower-component[_ngcontent-%COMP%] {\n width: 435px;\n}\n.record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-weight: bold;\n padding-right: 10px;\n width: 240px;\n margin-bottom: 0;\n align-self: start; \n\n}\n\n\n\n.record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(2) {\n overflow-wrap: break-word;\n word-wrap: break-word;\n word-break: break-word;\n min-width: 0;\n max-width: 100%;\n}\n\n\n\n\n\n.record-form-row[_ngcontent-%COMP%] markdown[_ngcontent-%COMP%] > p[_ngcontent-%COMP%], \n.record-form-row[_ngcontent-%COMP%] markdown[_ngcontent-%COMP%] > h1[_ngcontent-%COMP%], \n.record-form-row[_ngcontent-%COMP%] markdown[_ngcontent-%COMP%] > h2[_ngcontent-%COMP%], \n.record-form-row[_ngcontent-%COMP%] markdown[_ngcontent-%COMP%] > h3[_ngcontent-%COMP%], \n.record-form-row[_ngcontent-%COMP%] markdown[_ngcontent-%COMP%] > h4[_ngcontent-%COMP%], \n.record-form-row[_ngcontent-%COMP%] markdown[_ngcontent-%COMP%] > h5[_ngcontent-%COMP%], \n.record-form-row[_ngcontent-%COMP%] markdown[_ngcontent-%COMP%] > h6[_ngcontent-%COMP%] {\n margin:0 !important;\n}\n\nmarkdown[_ngcontent-%COMP%] {\n font-size: 14px; \n\n}\n\n\n\n.record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] .search-highlight {\n background-color: #fef08a;\n color: #854d0e;\n padding: 0;\n border-radius: 2px;\n font-weight: 700;\n box-shadow: 0 0 0 2px #fef08a;\n}\n\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n display: grid; \n\n grid-template-columns: auto 1fr;\n align-items: start; \n\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n align-self: start; \n\n }\n}"] });
367
413
  }
368
414
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJFormField, [{
369
415
  type: Component,
370
- args: [{ selector: 'mj-form-field', template: "<!--\n Using a blend of *ngIf and the new @switch control flow because of a bug in early Angular 17 where\n the @if wrapping the @switch didn't fully remove elements when swtiching back and forth. In the future if Angular fixes the bug\n we can get rid of the *ngIf outer div blocks and instead use @if and contain the @switch within the same div block.\n-->\n@if (record.IsSaved || !IsFieldReadOnly) {\n <!-- We only render a field if the record is either saved, or the field is editable. Meaning, for NEW records, we only show editable fields -->\n <div class=\"record-form-row\" *ngIf=\"!EditMode || IsFieldReadOnly\">\n <label *ngIf=\"ShowLabel\">{{DisplayName}}</label>\n @switch (LinkType) {\n @case ('None') {\n @if (ExtendedType === 'Code') {\n <mj-code-editor [value]=\"record.Get(FieldName)\" [readonly]=\"true\" [languages]=\"languages\" [language]=\"'JavaScript'\"></mj-code-editor>\n }\n @else if (FieldInfo.Length === -1) {\n <!-- this is a varchar(max) type of field -->\n <markdown #markdown [data]=\"record.Get(FieldName)\"></markdown>\n <!-- <span [innerHTML]=\"record.Get(FieldName) | formatText\"></span> -->\n }\n @else {\n <span>{{FormatValue(FieldName, 0)}}</span>\n }\n }\n @case ('Email') {\n <span mjEmailLink [field]=\"record.GetFieldByName(FieldName)!\" >{{FormatValue(FieldName, 0)}}</span>\n }\n @case ('URL') {\n <span mjWebLink [field]=\"record.GetFieldByName(FieldName)!\" >{{FormatValue(FieldName, 0)}}</span>\n }\n @case ('Record') {\n <span mjFieldLink [record]=\"record\" [fieldName]=\"FieldName\" >{{FormatValue(FieldName, 0)}}</span>\n }\n }\n </div>\n <div class=\"record-form-row\" *ngIf=\"EditMode && !IsFieldReadOnly\">\n @if (ShowLabel) {\n <label>{{DisplayName}}</label>\n }\n @if (FieldInfo && FieldInfo.RelatedEntity && FieldInfo.RelatedEntity.length > 0) {\n <!-- Foreign Key Link here -->\n <mj-link-field [record]=\"record\" [FieldName]=\"FieldName\" [LinkComponentType]=\"LinkComponentType\"></mj-link-field>\n }\n @else {\n <!-- Not a foreign key -->\n @switch (Type) {\n @case ('code') {\n <mj-code-editor [(ngModel)]=\"Value\" [languages]=\"languages\" [language]=\"'JavaScript'\"></mj-code-editor>\n }\n @case ('textbox') {\n <kendo-textbox [(ngModel)]=\"Value\" />\n }\n @case ('textarea') {\n <kendo-textarea [(ngModel)]=\"Value\"></kendo-textarea>\n }\n @case ('numerictextbox') {\n <kendo-numerictextbox [(value)]=\"Value\" class=\"narrower-component\" />\n }\n @case ('datepicker') {\n <kendo-datepicker [(value)]=\"Value\" class=\"narrower-component\"></kendo-datepicker>\n }\n @case ('checkbox') {\n <input type=\"checkbox\" [(ngModel)]=\"Value\" kendoCheckBox />\n }\n @case ('dropdownlist') {\n <kendo-dropdownlist [data]=\"PossibleValues\" [(ngModel)]=\"Value\"></kendo-dropdownlist>\n }\n @case ('combobox') {\n <kendo-combobox [data]=\"PossibleValues\" [allowCustom]=\"true\" [(ngModel)]=\"Value\"></kendo-combobox>\n }\n }\n }\n </div>\n}\n", styles: [".record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n align-items: start; /* Ensure items are aligned at the top */\n} \n \n \n.narrower-component {\n width: 435px;\n}\n.record-form-row label {\n font-weight: bold;\n padding-right: 10px;\n width: 240px;\n margin-bottom: 0;\n align-self: start; /* Align the label to the start (top) */\n}\n\n/*\n Eliminate the default margin and padding for the markdown elements\n */\n.record-form-row markdown > p,\n.record-form-row markdown > h1,\n.record-form-row markdown > h2,\n.record-form-row markdown > h3,\n.record-form-row markdown > h4,\n.record-form-row markdown > h5,\n.record-form-row markdown > h6 {\n margin:0 !important;\n}\n\nmarkdown {\n font-size: 1rem; /* Adjust this value to match your app's regular text size */\n}\n\n\n@media (min-width: 768px) {\n .record-form-row {\n display: grid; /* Ensure grid display is used for larger screens as well */\n grid-template-columns: auto 1fr;\n align-items: start; /* Keep the alignment at the top */\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n align-self: start; /* Ensure the label is aligned to the top */\n }\n}\n "] }]
416
+ args: [{ selector: 'mj-form-field', template: "<!--\n Using a blend of *ngIf and the new @switch control flow because of a bug in early Angular 17 where\n the @if wrapping the @switch didn't fully remove elements when swtiching back and forth. In the future if Angular fixes the bug\n we can get rid of the *ngIf outer div blocks and instead use @if and contain the @switch within the same div block.\n-->\n@if (record.IsSaved || !IsFieldReadOnly) {\n <!-- We only render a field if the record is either saved, or the field is editable. Meaning, for NEW records, we only show editable fields -->\n <div class=\"record-form-row\" *ngIf=\"(!EditMode || IsFieldReadOnly) && !shouldHideField\">\n <label *ngIf=\"ShowLabel\" [innerHTML]=\"HighlightedDisplayName\"></label>\n @switch (LinkType) {\n @case ('None') {\n @if (ExtendedType === 'Code') {\n <mj-code-editor [value]=\"record.Get(FieldName)\" [readonly]=\"true\" [languages]=\"languages\" [language]=\"'JavaScript'\"></mj-code-editor>\n }\n @else if (Type === 'checkbox') {\n <!-- Render checkboxes as disabled checkbox controls in read mode -->\n <input type=\"checkbox\" [checked]=\"Value\" kendoCheckBox disabled />\n }\n @else if (FieldInfo.Length === -1) {\n <!-- this is a varchar(max) type of field -->\n <markdown #markdown [data]=\"record.Get(FieldName)\"></markdown>\n <!-- <span [innerHTML]=\"record.Get(FieldName) | formatText\"></span> -->\n }\n @else {\n <span>{{FormatValue(FieldName, 0)}}</span>\n }\n }\n @case ('Email') {\n <span mjEmailLink [field]=\"record.GetFieldByName(FieldName)!\" >{{FormatValue(FieldName, 0)}}</span>\n }\n @case ('URL') {\n <span mjWebLink [field]=\"record.GetFieldByName(FieldName)!\" >{{FormatValue(FieldName, 0)}}</span>\n }\n @case ('Record') {\n <span mjFieldLink [record]=\"record\" [fieldName]=\"FieldName\" >{{FormatValue(FieldName, 0)}}</span>\n }\n }\n </div>\n <div class=\"record-form-row\" *ngIf=\"EditMode && !IsFieldReadOnly\">\n @if (ShowLabel) {\n <label [innerHTML]=\"HighlightedDisplayName\"></label>\n }\n @if (FieldInfo && FieldInfo.RelatedEntity && FieldInfo.RelatedEntity.length > 0) {\n <!-- Foreign Key Link here -->\n <mj-link-field [record]=\"record\" [FieldName]=\"FieldName\" [LinkComponentType]=\"LinkComponentType\"></mj-link-field>\n }\n @else {\n <!-- Not a foreign key -->\n @switch (Type) {\n @case ('code') {\n <mj-code-editor [(ngModel)]=\"Value\" [languages]=\"languages\" [language]=\"'JavaScript'\"></mj-code-editor>\n }\n @case ('textbox') {\n <kendo-textbox [(ngModel)]=\"Value\" />\n }\n @case ('textarea') {\n <kendo-textarea [(ngModel)]=\"Value\"></kendo-textarea>\n }\n @case ('numerictextbox') {\n <kendo-numerictextbox [(value)]=\"Value\" class=\"narrower-component\" />\n }\n @case ('datepicker') {\n <kendo-datepicker [(value)]=\"Value\" class=\"narrower-component\"></kendo-datepicker>\n }\n @case ('checkbox') {\n <input type=\"checkbox\" [(ngModel)]=\"Value\" kendoCheckBox />\n }\n @case ('dropdownlist') {\n <kendo-dropdownlist [data]=\"PossibleValues\" [(ngModel)]=\"Value\"></kendo-dropdownlist>\n }\n @case ('combobox') {\n <kendo-combobox [data]=\"PossibleValues\" [allowCustom]=\"true\" [(ngModel)]=\"Value\"></kendo-combobox>\n }\n }\n }\n </div>\n}\n", styles: [".record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n align-items: start; /* Ensure items are aligned at the top */\n} \n \n \n.narrower-component {\n width: 435px;\n}\n.record-form-row label {\n font-weight: bold;\n padding-right: 10px;\n width: 240px;\n margin-bottom: 0;\n align-self: start; /* Align the label to the start (top) */\n}\n\n/* Enable wrapping and vertical scrolling for field values */\n.record-form-row > :nth-child(2) {\n overflow-wrap: break-word;\n word-wrap: break-word;\n word-break: break-word;\n min-width: 0;\n max-width: 100%;\n}\n\n/*\n Eliminate the default margin and padding for the markdown elements\n */\n.record-form-row markdown > p,\n.record-form-row markdown > h1,\n.record-form-row markdown > h2,\n.record-form-row markdown > h3,\n.record-form-row markdown > h4,\n.record-form-row markdown > h5,\n.record-form-row markdown > h6 {\n margin:0 !important;\n}\n\nmarkdown {\n font-size: 14px; /* Match app standard text size (changed from 1rem) */\n}\n\n/* Search highlighting for field labels */\n.record-form-row label ::ng-deep .search-highlight {\n background-color: #fef08a;\n color: #854d0e;\n padding: 0;\n border-radius: 2px;\n font-weight: 700;\n box-shadow: 0 0 0 2px #fef08a;\n}\n\n\n@media (min-width: 768px) {\n .record-form-row {\n display: grid; /* Ensure grid display is used for larger screens as well */\n grid-template-columns: auto 1fr;\n align-items: start; /* Keep the alignment at the top */\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n align-self: start; /* Ensure the label is aligned to the top */\n }\n}\n "] }]
371
417
  }], () => [{ type: i0.Renderer2 }], { record: [{
372
418
  type: Input
373
419
  }], EditMode: [{
@@ -382,6 +428,10 @@ export class MJFormField extends BaseRecordComponent {
382
428
  type: Input
383
429
  }], ShowLabel: [{
384
430
  type: Input
431
+ }], formContext: [{
432
+ type: Input
433
+ }], hideWhenEmptyInReadOnlyMode: [{
434
+ type: Input
385
435
  }], DisplayName: [{
386
436
  type: Input
387
437
  }], PossibleValues: [{
@@ -394,5 +444,5 @@ export class MJFormField extends BaseRecordComponent {
394
444
  type: ViewChild,
395
445
  args: ['markdown', { static: false }]
396
446
  }] }); })();
397
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJFormField, { className: "MJFormField", filePath: "src/lib/base-field-component.ts", lineNumber: 18 }); })();
447
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJFormField, { className: "MJFormField", filePath: "src/lib/base-field-component.ts", lineNumber: 19 }); })();
398
448
  //# sourceMappingURL=base-field-component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-field-component.js","sourceRoot":"","sources":["../../src/lib/base-field-component.ts","../../src/lib/base-field-component.html"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-field-component.js","sourceRoot":"","sources":["../../src/lib/base-field-component.ts","../../src/lib/base-field-component.html"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  import { AfterViewInit, OnInit, OnDestroy, QueryList, ElementRef, ChangeDetectorRef } from '@angular/core';
2
2
  import { EntityInfo, ValidationResult, EntityPermissionType, EntityRelationshipInfo, RunViewParams, RecordDependency } from '@memberjunction/core';
3
3
  import { BaseRecordComponent } from './base-record-component';
4
+ import { BaseFormSectionInfo } from './base-form-section-info';
5
+ import { BaseFormContext } from './base-form-context';
6
+ import { CollapsiblePanelComponent } from './collapsible-panel.component';
4
7
  import { SharedService } from '@memberjunction/ng-shared';
5
8
  import { ActivatedRoute, Router } from '@angular/router';
6
9
  import { MJTabStripComponent, TabEvent } from '@memberjunction/ng-tabstrip';
@@ -34,6 +37,7 @@ export declare abstract class BaseFormComponent extends BaseRecordComponent impl
34
37
  constructor(elementRef: ElementRef, sharedService: SharedService, router: Router, route: ActivatedRoute, cdr: ChangeDetectorRef);
35
38
  tabComponent: MJTabStripComponent;
36
39
  tabStrips: QueryList<MJTabStripComponent>;
40
+ collapsiblePanels: QueryList<CollapsiblePanelComponent>;
37
41
  get TabStripComponent(): MJTabStripComponent;
38
42
  /**
39
43
  * Convenience method to resize application container when required
@@ -115,6 +119,121 @@ export declare abstract class BaseFormComponent extends BaseRecordComponent impl
115
119
  GetListsCanAddTo(): Promise<ListEntity[]>;
116
120
  GetRecordDependencies(): Promise<RecordDependency[]>;
117
121
  get EntityInfo(): EntityInfo | undefined;
122
+ /**
123
+ * Array of section information including expanded state and row counts.
124
+ * Initialized by subclasses via initSections().
125
+ */
126
+ protected sections: BaseFormSectionInfo[];
127
+ /**
128
+ * Map for fast section lookup by key.
129
+ */
130
+ private sectionMap;
131
+ /**
132
+ * Current search filter text for filtering sections.
133
+ */
134
+ searchFilter: string;
135
+ /**
136
+ * Controls whether empty fields should be shown in read-only mode.
137
+ * When false (default), empty fields are hidden to reduce visual clutter.
138
+ */
139
+ showEmptyFields: boolean;
140
+ /**
141
+ * Returns the current form context containing all form-level state.
142
+ * This is a computed property that creates a fresh context object on each access,
143
+ * ensuring child components always have the latest values.
144
+ */
145
+ get formContext(): BaseFormContext;
146
+ /**
147
+ * Subject for debouncing filter changes.
148
+ */
149
+ private filterSubject;
150
+ private filterSubscription?;
151
+ /**
152
+ * Initializes the sections array. Called by subclasses in ngOnInit.
153
+ * Accepts either BaseFormSectionInfo instances or plain objects that will be converted.
154
+ * @param sections Array of section information or plain objects
155
+ */
156
+ protected initSections(sections: (BaseFormSectionInfo | {
157
+ sectionKey: string;
158
+ sectionName: string;
159
+ isExpanded: boolean;
160
+ rowCount?: number;
161
+ metadata?: any;
162
+ })[]): void;
163
+ /**
164
+ * Gets the section info by key.
165
+ * @param sectionKey The section key
166
+ * @returns The section info or undefined
167
+ */
168
+ protected getSection(sectionKey: string): BaseFormSectionInfo | undefined;
169
+ /**
170
+ * Checks if a section is expanded.
171
+ * @param sectionKey The section key
172
+ * @returns True if expanded, false otherwise
173
+ */
174
+ IsSectionExpanded(sectionKey: string): boolean;
175
+ /**
176
+ * Sets the expanded state of a section.
177
+ * @param sectionKey The section key
178
+ * @param isExpanded The new expanded state
179
+ */
180
+ SetSectionExpanded(sectionKey: string, isExpanded: boolean): void;
181
+ /**
182
+ * Gets the row count for a section.
183
+ * @param sectionKey The section key
184
+ * @returns The row count or undefined
185
+ */
186
+ GetSectionRowCount(sectionKey: string): number | undefined;
187
+ /**
188
+ * Sets the row count for a section.
189
+ * @param sectionKey The section key
190
+ * @param rowCount The row count
191
+ */
192
+ SetSectionRowCount(sectionKey: string, rowCount: number): void;
193
+ /**
194
+ * Toggles the expanded state of a section.
195
+ * @param sectionKey The section key to toggle
196
+ */
197
+ toggleSection(sectionKey: string): void;
198
+ /**
199
+ * Expands all sections.
200
+ */
201
+ expandAllSections(): void;
202
+ /**
203
+ * Collapses all sections.
204
+ */
205
+ collapseAllSections(): void;
206
+ /**
207
+ * Gets the count of currently expanded sections.
208
+ * @returns Number of expanded sections
209
+ */
210
+ getExpandedCount(): number;
211
+ /**
212
+ * Gets the count of visible sections after filtering.
213
+ * @returns Number of sections currently visible (not hidden by search filter)
214
+ */
215
+ getVisibleSectionCount(): number;
216
+ /**
217
+ * Gets the total count of all sections (regardless of filter).
218
+ * @returns Total number of sections
219
+ */
220
+ getTotalSectionCount(): number;
221
+ /**
222
+ * Handles filter change events from the section controls.
223
+ * Debounces the filter updates by 250ms to avoid excessive re-rendering during typing.
224
+ * @param searchTerm The search term to filter sections
225
+ */
226
+ onFilterChange(searchTerm: string): void;
227
+ /**
228
+ * Gets the entity name for the current record (used for localStorage keys).
229
+ * @returns Entity name or empty string
230
+ */
231
+ getEntityName(): string;
232
+ /**
233
+ * Resets all panel width modes to normal for the current entity.
234
+ * Clears localStorage for all panels associated with this entity.
235
+ */
236
+ resetAllPanelWidths(): void;
118
237
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseFormComponent, never>;
119
238
  static ɵdir: i0.ɵɵDirectiveDeclaration<BaseFormComponent, never, never, {}, {}, never, never, false, never>;
120
239
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base-form-component.d.ts","sourceRoot":"","sources":["../../src/lib/base-form-component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-form-component.d.ts","sourceRoot":"","sources":["../../src/lib/base-form-component.ts"],"names":[],"mappings":"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"}