@memberjunction/ng-base-forms 5.38.0 → 5.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -0
- package/dist/lib/base-form-component.d.ts +18 -0
- package/dist/lib/base-form-component.d.ts.map +1 -1
- package/dist/lib/base-form-component.js +31 -2
- package/dist/lib/base-form-component.js.map +1 -1
- package/dist/lib/container/record-form-container.component.d.ts +14 -0
- package/dist/lib/container/record-form-container.component.d.ts.map +1 -1
- package/dist/lib/container/record-form-container.component.js +59 -33
- package/dist/lib/container/record-form-container.component.js.map +1 -1
- package/dist/lib/field/fk-search-utils.d.ts +31 -0
- package/dist/lib/field/fk-search-utils.d.ts.map +1 -0
- package/dist/lib/field/fk-search-utils.js +47 -0
- package/dist/lib/field/fk-search-utils.js.map +1 -0
- package/dist/lib/field/form-field.component.d.ts +401 -6
- package/dist/lib/field/form-field.component.d.ts.map +1 -1
- package/dist/lib/field/form-field.component.js +1646 -214
- package/dist/lib/field/form-field.component.js.map +1 -1
- package/dist/lib/field/linked-field-options.d.ts +76 -0
- package/dist/lib/field/linked-field-options.d.ts.map +1 -0
- package/dist/lib/field/linked-field-options.js +80 -0
- package/dist/lib/field/linked-field-options.js.map +1 -0
- package/dist/lib/host/entity-form-host.component.d.ts +159 -0
- package/dist/lib/host/entity-form-host.component.d.ts.map +1 -0
- package/dist/lib/host/entity-form-host.component.js +539 -0
- package/dist/lib/host/entity-form-host.component.js.map +1 -0
- package/dist/lib/isa-related-panel/isa-related-card.component.js +2 -2
- package/dist/lib/overlays/base-form-overlay.d.ts +114 -0
- package/dist/lib/overlays/base-form-overlay.d.ts.map +1 -0
- package/dist/lib/overlays/base-form-overlay.js +227 -0
- package/dist/lib/overlays/base-form-overlay.js.map +1 -0
- package/dist/lib/overlays/form-dialog.component.d.ts +35 -0
- package/dist/lib/overlays/form-dialog.component.d.ts.map +1 -0
- package/dist/lib/overlays/form-dialog.component.js +92 -0
- package/dist/lib/overlays/form-dialog.component.js.map +1 -0
- package/dist/lib/overlays/form-presenter.service.d.ts +37 -0
- package/dist/lib/overlays/form-presenter.service.d.ts.map +1 -0
- package/dist/lib/overlays/form-presenter.service.js +130 -0
- package/dist/lib/overlays/form-presenter.service.js.map +1 -0
- package/dist/lib/overlays/form-presenter.types.d.ts +65 -0
- package/dist/lib/overlays/form-presenter.types.d.ts.map +1 -0
- package/dist/lib/overlays/form-presenter.types.js +25 -0
- package/dist/lib/overlays/form-presenter.types.js.map +1 -0
- package/dist/lib/overlays/form-slide-in.component.d.ts +38 -0
- package/dist/lib/overlays/form-slide-in.component.d.ts.map +1 -0
- package/dist/lib/overlays/form-slide-in.component.js +106 -0
- package/dist/lib/overlays/form-slide-in.component.js.map +1 -0
- package/dist/lib/overlays/form-window.component.d.ts +32 -0
- package/dist/lib/overlays/form-window.component.d.ts.map +1 -0
- package/dist/lib/overlays/form-window.component.js +93 -0
- package/dist/lib/overlays/form-window.component.js.map +1 -0
- package/dist/lib/panel/collapsible-panel.component.d.ts +19 -2
- package/dist/lib/panel/collapsible-panel.component.d.ts.map +1 -1
- package/dist/lib/panel/collapsible-panel.component.js +70 -13
- package/dist/lib/panel/collapsible-panel.component.js.map +1 -1
- package/dist/lib/resolver/form-resolver.service.d.ts +139 -0
- package/dist/lib/resolver/form-resolver.service.d.ts.map +1 -0
- package/dist/lib/resolver/form-resolver.service.js +235 -0
- package/dist/lib/resolver/form-resolver.service.js.map +1 -0
- package/dist/lib/section-manager/section-manager.component.js +2 -2
- package/dist/lib/toolbar/form-toolbar.component.js +2 -2
- package/dist/lib/types/entity-form-config.d.ts +125 -0
- package/dist/lib/types/entity-form-config.d.ts.map +1 -0
- package/dist/lib/types/entity-form-config.js +75 -0
- package/dist/lib/types/entity-form-config.js.map +1 -0
- package/dist/lib/types/form-types.d.ts +24 -0
- package/dist/lib/types/form-types.d.ts.map +1 -1
- package/dist/lib/types/form-types.js.map +1 -1
- package/dist/lib/types/navigation-events.d.ts +46 -2
- package/dist/lib/types/navigation-events.d.ts.map +1 -1
- package/dist/lib/types/navigation-events.js.map +1 -1
- package/dist/module.d.ts +12 -8
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +26 -7
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +11 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +14 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +17 -13
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, framework-free helpers for the FK autocomplete in {@link MjFormFieldComponent}.
|
|
3
|
+
*
|
|
4
|
+
* These functions hold the parts of the FK search UX that have real logic worth
|
|
5
|
+
* unit-testing in isolation — cell formatting, the in-memory cached-entity filter,
|
|
6
|
+
* and the empty-input "focus-show" (first N, sorted by name). Keeping them out of
|
|
7
|
+
* the Angular component means they can be tested without TestBed / DI.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Format a raw entity cell value for display in the dropdown.
|
|
11
|
+
* - `Date` → locale date string
|
|
12
|
+
* - `null` / `undefined` → empty string
|
|
13
|
+
* - `boolean` → `Yes` / `No`
|
|
14
|
+
* - everything else → `String(value)`
|
|
15
|
+
*/
|
|
16
|
+
export declare function FormatFKCell(val: unknown): string;
|
|
17
|
+
/**
|
|
18
|
+
* In-memory filter/sort over cached rows for the FK dropdown.
|
|
19
|
+
*
|
|
20
|
+
* - **Empty query** → returns the first `limit` rows sorted ascending by the
|
|
21
|
+
* formatted name field (the "focus-show" behavior).
|
|
22
|
+
* - **Non-empty query** → returns every row whose formatted name field contains
|
|
23
|
+
* the query as a case-insensitive substring (no limit; the full match set).
|
|
24
|
+
*
|
|
25
|
+
* `getName` extracts the raw name-field value for a row; formatting + comparison
|
|
26
|
+
* are handled here so callers don't duplicate the rules.
|
|
27
|
+
*
|
|
28
|
+
* @returns A NEW array (never mutates the input) suitable for rendering.
|
|
29
|
+
*/
|
|
30
|
+
export declare function FilterCachedFKRows<T>(rows: ReadonlyArray<T>, query: string, limit: number, getName: (row: T) => unknown): T[];
|
|
31
|
+
//# sourceMappingURL=fk-search-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fk-search-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/field/fk-search-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAKjD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EACtB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,GAC3B,CAAC,EAAE,CAQL"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, framework-free helpers for the FK autocomplete in {@link MjFormFieldComponent}.
|
|
3
|
+
*
|
|
4
|
+
* These functions hold the parts of the FK search UX that have real logic worth
|
|
5
|
+
* unit-testing in isolation — cell formatting, the in-memory cached-entity filter,
|
|
6
|
+
* and the empty-input "focus-show" (first N, sorted by name). Keeping them out of
|
|
7
|
+
* the Angular component means they can be tested without TestBed / DI.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Format a raw entity cell value for display in the dropdown.
|
|
11
|
+
* - `Date` → locale date string
|
|
12
|
+
* - `null` / `undefined` → empty string
|
|
13
|
+
* - `boolean` → `Yes` / `No`
|
|
14
|
+
* - everything else → `String(value)`
|
|
15
|
+
*/
|
|
16
|
+
export function FormatFKCell(val) {
|
|
17
|
+
if (val === null || val === undefined)
|
|
18
|
+
return '';
|
|
19
|
+
if (val instanceof Date)
|
|
20
|
+
return val.toLocaleDateString();
|
|
21
|
+
if (typeof val === 'boolean')
|
|
22
|
+
return val ? 'Yes' : 'No';
|
|
23
|
+
return String(val);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* In-memory filter/sort over cached rows for the FK dropdown.
|
|
27
|
+
*
|
|
28
|
+
* - **Empty query** → returns the first `limit` rows sorted ascending by the
|
|
29
|
+
* formatted name field (the "focus-show" behavior).
|
|
30
|
+
* - **Non-empty query** → returns every row whose formatted name field contains
|
|
31
|
+
* the query as a case-insensitive substring (no limit; the full match set).
|
|
32
|
+
*
|
|
33
|
+
* `getName` extracts the raw name-field value for a row; formatting + comparison
|
|
34
|
+
* are handled here so callers don't duplicate the rules.
|
|
35
|
+
*
|
|
36
|
+
* @returns A NEW array (never mutates the input) suitable for rendering.
|
|
37
|
+
*/
|
|
38
|
+
export function FilterCachedFKRows(rows, query, limit, getName) {
|
|
39
|
+
const q = query.trim().toLowerCase();
|
|
40
|
+
if (q.length === 0) {
|
|
41
|
+
return [...rows]
|
|
42
|
+
.sort((a, b) => FormatFKCell(getName(a)).localeCompare(FormatFKCell(getName(b))))
|
|
43
|
+
.slice(0, limit);
|
|
44
|
+
}
|
|
45
|
+
return rows.filter(r => FormatFKCell(getName(r)).toLowerCase().includes(q));
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=fk-search-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fk-search-utils.js","sourceRoot":"","sources":["../../../src/lib/field/fk-search-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACjD,IAAI,GAAG,YAAY,IAAI;QAAE,OAAO,GAAG,CAAC,kBAAkB,EAAE,CAAC;IACzD,IAAI,OAAO,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAsB,EACtB,KAAa,EACb,KAAa,EACb,OAA4B;IAE5B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,IAAI,CAAC;aACb,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAChF,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC","sourcesContent":["/**\n * Pure, framework-free helpers for the FK autocomplete in {@link MjFormFieldComponent}.\n *\n * These functions hold the parts of the FK search UX that have real logic worth\n * unit-testing in isolation — cell formatting, the in-memory cached-entity filter,\n * and the empty-input \"focus-show\" (first N, sorted by name). Keeping them out of\n * the Angular component means they can be tested without TestBed / DI.\n */\n\n/**\n * Format a raw entity cell value for display in the dropdown.\n * - `Date` → locale date string\n * - `null` / `undefined` → empty string\n * - `boolean` → `Yes` / `No`\n * - everything else → `String(value)`\n */\nexport function FormatFKCell(val: unknown): string {\n if (val === null || val === undefined) return '';\n if (val instanceof Date) return val.toLocaleDateString();\n if (typeof val === 'boolean') return val ? 'Yes' : 'No';\n return String(val);\n}\n\n/**\n * In-memory filter/sort over cached rows for the FK dropdown.\n *\n * - **Empty query** → returns the first `limit` rows sorted ascending by the\n * formatted name field (the \"focus-show\" behavior).\n * - **Non-empty query** → returns every row whose formatted name field contains\n * the query as a case-insensitive substring (no limit; the full match set).\n *\n * `getName` extracts the raw name-field value for a row; formatting + comparison\n * are handled here so callers don't duplicate the rules.\n *\n * @returns A NEW array (never mutates the input) suitable for rendering.\n */\nexport function FilterCachedFKRows<T>(\n rows: ReadonlyArray<T>,\n query: string,\n limit: number,\n getName: (row: T) => unknown\n): T[] {\n const q = query.trim().toLowerCase();\n if (q.length === 0) {\n return [...rows]\n .sort((a, b) => FormatFKCell(getName(a)).localeCompare(FormatFKCell(getName(b))))\n .slice(0, limit);\n }\n return rows.filter(r => FormatFKCell(getName(r)).toLowerCase().includes(q));\n}\n"]}
|
|
@@ -5,12 +5,63 @@ import { ValidationErrorInfo } from '@memberjunction/global';
|
|
|
5
5
|
import { FormContext } from '../types/form-types';
|
|
6
6
|
import { FormNavigationEvent } from '../types/navigation-events';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
|
+
/**
|
|
9
|
+
* How a field's value should be rendered/edited beyond a plain input.
|
|
10
|
+
* - `markdown` / `html`: render formatted in read mode, code editor in edit mode
|
|
11
|
+
* - `code`: source code (uses the field's CodeType as the editor language)
|
|
12
|
+
* - `plain`: standard text rendering (default)
|
|
13
|
+
*/
|
|
14
|
+
export type FieldRichTextMode = 'markdown' | 'html' | 'code' | 'plain';
|
|
15
|
+
/**
|
|
16
|
+
* One extra (non-name, non-PK) column rendered in an FK suggestion row.
|
|
17
|
+
* Built from the related entity's fields where `DefaultInView === true`.
|
|
18
|
+
*/
|
|
19
|
+
export interface FKSuggestionColumn {
|
|
20
|
+
/** Field code name on the related entity. */
|
|
21
|
+
FieldName: string;
|
|
22
|
+
/** Friendly column header (the field's DisplayNameOrName). */
|
|
23
|
+
Header: string;
|
|
24
|
+
/** Pre-formatted display value for this row+column. */
|
|
25
|
+
Value: string;
|
|
26
|
+
/**
|
|
27
|
+
* {@link Value} with the query substring highlighted when this column is the one
|
|
28
|
+
* being searched (else plain, still HTML-escaped). Bound to `[innerHTML]`.
|
|
29
|
+
*/
|
|
30
|
+
HighlightedValue: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A field the user can scope the FK search to, shown in the scope-picker menu.
|
|
34
|
+
* `Group` separates the columns visible in the grid ('shown') from other
|
|
35
|
+
* searchable fields like ID/Status ('other').
|
|
36
|
+
*/
|
|
37
|
+
export interface FKSearchableField {
|
|
38
|
+
/** Related-entity field code name to search against. */
|
|
39
|
+
FieldName: string;
|
|
40
|
+
/** Friendly label (DisplayNameOrName) shown in the menu + scope pill. */
|
|
41
|
+
Label: string;
|
|
42
|
+
/** FontAwesome icon class for the menu row. */
|
|
43
|
+
Icon: string;
|
|
44
|
+
/** Which menu group this field belongs to. */
|
|
45
|
+
Group: 'shown' | 'other';
|
|
46
|
+
}
|
|
8
47
|
/**
|
|
9
48
|
* Represents a suggestion item for FK autocomplete search results.
|
|
10
49
|
*/
|
|
11
50
|
export interface FKSuggestion {
|
|
51
|
+
/** Primary-key value used as the FK value when selected. */
|
|
12
52
|
PrimaryKeyValue: unknown;
|
|
53
|
+
/** The related entity's NameField value — the primary clickable label. */
|
|
13
54
|
DisplayName: string;
|
|
55
|
+
/** {@link DisplayName} with the typed query substring wrapped in a highlight mark. Bound to `[innerHTML]`. */
|
|
56
|
+
HighlightedName: string;
|
|
57
|
+
/** Additional DefaultInView columns shown to the right of the name (multi-column rows). */
|
|
58
|
+
ExtraColumns: FKSuggestionColumn[];
|
|
59
|
+
/**
|
|
60
|
+
* Leading icon for this row — a FontAwesome class. Per-row when the related
|
|
61
|
+
* entity has an `ExtendedType = 'Icon'` field; otherwise the entity-level
|
|
62
|
+
* icon; null when neither exists.
|
|
63
|
+
*/
|
|
64
|
+
Icon: string | null;
|
|
14
65
|
}
|
|
15
66
|
/**
|
|
16
67
|
* Modern form field component that renders entity fields in both read-only and edit modes.
|
|
@@ -41,6 +92,8 @@ export interface FKSuggestion {
|
|
|
41
92
|
*/
|
|
42
93
|
export declare class MjFormFieldComponent extends BaseAngularComponent implements OnChanges, OnDestroy {
|
|
43
94
|
private cdr;
|
|
95
|
+
private renderer;
|
|
96
|
+
private hostRef;
|
|
44
97
|
/** The entity record containing this field */
|
|
45
98
|
Record: BaseEntity;
|
|
46
99
|
/** Whether the form is in edit mode */
|
|
@@ -70,6 +123,12 @@ export declare class MjFormFieldComponent extends BaseAngularComponent implement
|
|
|
70
123
|
ShowLabel: boolean;
|
|
71
124
|
/** Form-level context (search filter, showEmptyFields) */
|
|
72
125
|
FormContext?: FormContext;
|
|
126
|
+
/**
|
|
127
|
+
* Whether FK / record links are interactive. Driven by
|
|
128
|
+
* `FormContext.enableRecordLinks`; false renders FK values as plain text
|
|
129
|
+
* (dialog/slide-in surfaces). Undefined / true means links are live.
|
|
130
|
+
*/
|
|
131
|
+
get RecordLinksEnabled(): boolean;
|
|
73
132
|
/** @deprecated Use [Record] instead */
|
|
74
133
|
set _deprecatedRecord(value: BaseEntity);
|
|
75
134
|
/** @deprecated Use [FormContext] instead */
|
|
@@ -161,46 +220,345 @@ export declare class MjFormFieldComponent extends BaseAngularComponent implement
|
|
|
161
220
|
/** Calculated position for fixed-position dropdowns */
|
|
162
221
|
DropdownTop: number;
|
|
163
222
|
DropdownLeft: number;
|
|
164
|
-
|
|
223
|
+
/** Computed: dropdown is at least the trigger width, at most {@link DropdownMaxWidth}. */
|
|
224
|
+
DropdownMinWidth: number;
|
|
225
|
+
DropdownMaxWidth: number;
|
|
165
226
|
OpenAbove: boolean;
|
|
227
|
+
/**
|
|
228
|
+
* Max width (px) of the FK suggestion dropdown. The panel grows to fit its
|
|
229
|
+
* columns up to this cap (then scrolls horizontally). When null, defaults to
|
|
230
|
+
* 2× the trigger width so multi-column rows aren't cramped by a narrow field.
|
|
231
|
+
* Always additionally bounded by the viewport's right edge.
|
|
232
|
+
*/
|
|
233
|
+
FKDropdownMaxWidth: number | null;
|
|
234
|
+
/**
|
|
235
|
+
* Whether to highlight the typed query substring within each suggestion's name
|
|
236
|
+
* in the FK dropdown. On by default — uses the muted, theme-aware
|
|
237
|
+
* `--mj-status-warning` highlight (not the old bright yellow). Set false for
|
|
238
|
+
* plain, un-marked names.
|
|
239
|
+
*/
|
|
240
|
+
FKHighlightMatches: boolean;
|
|
241
|
+
/**
|
|
242
|
+
* Whether to offer inline "create new" for the related record when the one you need
|
|
243
|
+
* isn't found. The affordance only renders when this is true AND the current user can
|
|
244
|
+
* create records of the related entity (entity allows creation + role permits it).
|
|
245
|
+
*/
|
|
246
|
+
AllowFKCreate: boolean;
|
|
247
|
+
/** Surface used for the inline create form: a modal dialog (default) or a slide-in. */
|
|
248
|
+
FKCreatePresentation: 'dialog' | 'slide-in';
|
|
166
249
|
/** Cleanup function for scroll/resize listeners */
|
|
167
250
|
private _scrollCleanup;
|
|
168
251
|
/** Inline style for the fixed-position dropdown */
|
|
169
252
|
get DropdownPositionStyle(): Record<string, string>;
|
|
170
253
|
/** Calculate dropdown position relative to viewport from anchor element */
|
|
171
254
|
private updateDropdownPosition;
|
|
255
|
+
/**
|
|
256
|
+
* The dropdown is `position: fixed` with viewport coords. Inside the slide-in /
|
|
257
|
+
* dialog overlays (which use CSS `transform`), a `fixed` descendant is positioned
|
|
258
|
+
* relative to the transformed ancestor instead of the viewport, so it renders
|
|
259
|
+
* off-screen. Re-parenting the dropdown element to `document.body` removes it from
|
|
260
|
+
* any transformed containing block, restoring true viewport-fixed positioning.
|
|
261
|
+
*
|
|
262
|
+
* Call after change detection has rendered the dropdown (microtask). Angular still
|
|
263
|
+
* owns the node — when the structural `@if` tears it down it removes the node by
|
|
264
|
+
* reference regardless of where it currently lives, so no manual cleanup is needed
|
|
265
|
+
* beyond clearing our tracking pointer.
|
|
266
|
+
*/
|
|
267
|
+
private portalDropdownToBody;
|
|
268
|
+
/** Tracks a dropdown element we relocated to body so we can drop the reference on close. */
|
|
269
|
+
private _portaledDropdownEl;
|
|
172
270
|
/** Start listening for scroll/resize to close dropdowns */
|
|
173
271
|
private startScrollListener;
|
|
174
272
|
/** Remove scroll/resize listeners */
|
|
175
273
|
private stopScrollListener;
|
|
176
274
|
/** Close all dropdown types */
|
|
177
275
|
private closeAllDropdowns;
|
|
276
|
+
/** Max rows shown on an empty-input focus-show (cached fast path only). */
|
|
277
|
+
private static readonly FK_FOCUS_SHOW_LIMIT;
|
|
278
|
+
/** Max rows returned from a DB search. */
|
|
279
|
+
private static readonly FK_DB_SEARCH_LIMIT;
|
|
178
280
|
/** Suggestions returned from the FK entity search */
|
|
179
281
|
FKSuggestions: FKSuggestion[];
|
|
282
|
+
/**
|
|
283
|
+
* The currently-linked record, pinned as a sticky "Currently selected" section at the
|
|
284
|
+
* top of the dropdown (browse mode only). Null when there's no selection or the user is
|
|
285
|
+
* actively filtering. Removed from {@link FKSuggestions} so it isn't listed twice.
|
|
286
|
+
*/
|
|
287
|
+
FKSelectedSuggestion: FKSuggestion | null;
|
|
180
288
|
/** Whether the current FK value is a confirmed match (user selected from dropdown) */
|
|
181
289
|
FKIsMatched: boolean;
|
|
182
290
|
/** Whether the FK dropdown is visible */
|
|
183
291
|
ShowFKDropdown: boolean;
|
|
292
|
+
/** Whether a DB search is currently in flight (drives the loading indicator). */
|
|
293
|
+
FKLoading: boolean;
|
|
294
|
+
/** True when a search completed with zero results (drives the "No matches" row). */
|
|
295
|
+
FKNoMatches: boolean;
|
|
296
|
+
/** Index of the keyboard-highlighted active suggestion (-1 = none). */
|
|
297
|
+
FKActiveIndex: number;
|
|
298
|
+
/** Headers for the extra (DefaultInView) columns shown in the dropdown. */
|
|
299
|
+
FKColumnHeaders: string[];
|
|
300
|
+
/** Field code names for the extra columns, index-aligned with {@link FKColumnHeaders}. */
|
|
301
|
+
FKColumnFields: string[];
|
|
302
|
+
/** Code name of the name column (used as its sort key). */
|
|
303
|
+
FKNameField: string;
|
|
304
|
+
/** Whether rows render a leading icon column (drives the header's empty icon cell). */
|
|
305
|
+
FKHasIconColumn: boolean;
|
|
306
|
+
/** Active sort column (field code name), or null for natural (unsorted) order. */
|
|
307
|
+
FKSortField: string | null;
|
|
308
|
+
/** Active sort direction; only meaningful when {@link FKSortField} is set. */
|
|
309
|
+
FKSortDir: 'asc' | 'desc';
|
|
310
|
+
/** Unsorted snapshot of the current suggestions, used to restore natural order. */
|
|
311
|
+
private _fkSuggestionsNatural;
|
|
184
312
|
/** Text the user is currently typing in the FK search input. null = use display name. */
|
|
185
313
|
private _fkInputText;
|
|
314
|
+
/**
|
|
315
|
+
* The active search query that produced the current results — `''` on a focus/clear
|
|
316
|
+
* browse (full list), the typed text when filtering. Distinct from {@link _fkInputText},
|
|
317
|
+
* which holds the *displayed* text (the selected record's name when not typing). This is
|
|
318
|
+
* the correct signal for "browse mode" and for the create-footer label.
|
|
319
|
+
*/
|
|
320
|
+
private _fkQuery;
|
|
186
321
|
/** Debounce timer for FK search */
|
|
187
322
|
private _fkSearchTimeout;
|
|
188
323
|
/** Last known FK input element for position recalculation */
|
|
189
324
|
private _lastFKInputEl;
|
|
325
|
+
/** Monotonic token so a slow DB response from a stale query can't clobber a newer one. */
|
|
326
|
+
private _fkSearchSeq;
|
|
327
|
+
/** Cached column plan for the current related entity (rebuilt on demand). */
|
|
328
|
+
private _fkColumnPlan;
|
|
329
|
+
/** Related-entity field code name currently searched against (defaults to the name field). */
|
|
330
|
+
FKSearchField: string;
|
|
331
|
+
/** Friendly label of {@link FKSearchField}, shown on the scope pill. */
|
|
332
|
+
FKSearchFieldLabel: string;
|
|
333
|
+
/** Whether the scope-picker menu is open. */
|
|
334
|
+
FKShowScopeMenu: boolean;
|
|
335
|
+
/** Whether the FK input is focused — the scope pill only appears while focused. */
|
|
336
|
+
FKFocused: boolean;
|
|
337
|
+
/** Fields the user can scope the search to (name + shown columns + other fields). */
|
|
338
|
+
FKSearchableFields: FKSearchableField[];
|
|
339
|
+
/** User-resized column widths in px, keyed by related-entity field code name. */
|
|
340
|
+
private _fkColWidths;
|
|
341
|
+
/** The (host entity|field) pref key currently loaded; reload when it changes. */
|
|
342
|
+
private _fkPrefKey;
|
|
343
|
+
/** Active column-resize drag, or null when not resizing. */
|
|
344
|
+
private _fkResize;
|
|
345
|
+
private _fkResizeMove;
|
|
346
|
+
private _fkResizeUp;
|
|
190
347
|
/** The display text shown in the FK search input */
|
|
191
348
|
get FKSearchText(): string;
|
|
349
|
+
/**
|
|
350
|
+
* True when this FK currently points at a real record (has a value AND we can show
|
|
351
|
+
* its name). Drives the "linked" affordance — the chain icon + accent — so the user
|
|
352
|
+
* can tell at a glance this is a resolved link, not free text.
|
|
353
|
+
*/
|
|
354
|
+
get FKHasLinkedValue(): boolean;
|
|
355
|
+
/** Whether a dropdown row is the record currently linked by this FK (UUID-safe compare). */
|
|
356
|
+
IsFKRowSelected(suggestion: FKSuggestion): boolean;
|
|
357
|
+
/**
|
|
358
|
+
* Resolves the related `EntityInfo` for this FK field via the instance provider
|
|
359
|
+
* (multi-provider safe — never the global `Metadata`).
|
|
360
|
+
*/
|
|
361
|
+
private getRelatedEntityInfo;
|
|
362
|
+
/**
|
|
363
|
+
* Returns the LIVE cached array of records for the related entity IF a loaded
|
|
364
|
+
* engine holds the full (unfiltered) set; otherwise null. Records are read-only —
|
|
365
|
+
* never mutate. Wraps {@link BaseEngineRegistry.TryGetCachedRecords}.
|
|
366
|
+
*/
|
|
367
|
+
private getCachedRecordsForRelatedEntity;
|
|
368
|
+
/**
|
|
369
|
+
* Builds (and memoizes) the column plan for the related entity: the name field,
|
|
370
|
+
* the PK field used as the FK value, and the extra `DefaultInView` columns
|
|
371
|
+
* (excluding the name + PK). Returns null when the related entity can't be resolved
|
|
372
|
+
* or has no usable name/PK.
|
|
373
|
+
*/
|
|
374
|
+
private buildColumnPlan;
|
|
375
|
+
/**
|
|
376
|
+
* Whether a `DefaultInView` field is worth showing as an extra dropdown column.
|
|
377
|
+
* Excludes columns that read as opaque noise to a human picking a record:
|
|
378
|
+
* • Primary keys (UUIDs/identities).
|
|
379
|
+
* • Foreign-key columns — these hold the related record's raw ID (e.g. `ParentID`
|
|
380
|
+
* → a GUID), not a human-readable label. The view's joined *name* field (if it's
|
|
381
|
+
* itself `DefaultInView`) is the readable substitute and is kept.
|
|
382
|
+
*/
|
|
383
|
+
private isUsefulExtraColumn;
|
|
384
|
+
/**
|
|
385
|
+
* The ordered list of display columns INCLUDING the name field — the user-reorderable
|
|
386
|
+
* column order. Honors a user `visibleFields` override (exact set + order, letting them
|
|
387
|
+
* add fields like ID, drop defaults, or move the name field); otherwise falls back to
|
|
388
|
+
* `[name, ...DefaultInView columns]`. The name field is always guaranteed present, and
|
|
389
|
+
* the icon field is never a text column.
|
|
390
|
+
*/
|
|
391
|
+
private computeOrderedColumns;
|
|
392
|
+
/** Host entity name (the entity whose form this field belongs to), or null. */
|
|
393
|
+
private get fkHostEntityName();
|
|
394
|
+
/** This FK field's code name on the host entity, or null. */
|
|
395
|
+
private get fkFieldCodeName();
|
|
396
|
+
/** Whether the active search column is the name field (drives where we highlight). */
|
|
397
|
+
private isSearchingNameField;
|
|
398
|
+
/** A field is scope-searchable if it's a string column (LIKE-able) and not a system column. */
|
|
399
|
+
private isScopeSearchableField;
|
|
400
|
+
/** Friendly label for a related-entity field code name. */
|
|
401
|
+
private labelForRelatedField;
|
|
402
|
+
/** Whether a field code name exists on the related entity (guards stale saved prefs). */
|
|
403
|
+
private isValidRelatedField;
|
|
404
|
+
/**
|
|
405
|
+
* Build the scope-picker field list: the name + shown columns ('shown' group),
|
|
406
|
+
* then any other searchable string fields like ID/Status ('other' group).
|
|
407
|
+
*/
|
|
408
|
+
private buildSearchableFields;
|
|
409
|
+
/**
|
|
410
|
+
* Load this (host entity, FK field)'s saved prefs — search scope, sort, column
|
|
411
|
+
* widths — once per field. No-ops when the field hasn't changed. Falls back to
|
|
412
|
+
* defaults (search the name field, natural sort, content-sized columns) and only
|
|
413
|
+
* applies a saved value when it still resolves to a real field.
|
|
414
|
+
*/
|
|
415
|
+
private ensureLinkedFieldPrefsLoaded;
|
|
416
|
+
/** Format a raw cell value for display in the dropdown (delegates to the pure helper). */
|
|
417
|
+
private formatCell;
|
|
418
|
+
/**
|
|
419
|
+
* Build the suggestion view-models from a set of plain rows (cached or DB),
|
|
420
|
+
* applying the typed-query substring highlight to the name column.
|
|
421
|
+
* `getField` abstracts cached BaseEntity rows (`.Get(name)`) vs simple objects.
|
|
422
|
+
*/
|
|
423
|
+
private buildSuggestions;
|
|
424
|
+
/** Apply a freshly-built suggestion list to the dropdown state + reposition + portal. */
|
|
425
|
+
private applySuggestions;
|
|
426
|
+
/**
|
|
427
|
+
* Build a lightweight pinned row for the selected record when it isn't present in the
|
|
428
|
+
* current result set (DB beyond first-N, or cached beyond the focus-show limit). We have
|
|
429
|
+
* its display name from the FK name resolution; extra-column values are left blank.
|
|
430
|
+
*/
|
|
431
|
+
private buildSelectedFallbackSuggestion;
|
|
432
|
+
/**
|
|
433
|
+
* Returns a sorted copy of the suggestions per the active sort column/direction.
|
|
434
|
+
* Null sort field → natural order (original array, untouched). Sorts on the name
|
|
435
|
+
* column's `DisplayName` or the matching extra column's formatted `Value`,
|
|
436
|
+
* case-insensitively.
|
|
437
|
+
*/
|
|
438
|
+
private sortSuggestions;
|
|
439
|
+
/**
|
|
440
|
+
* Toggle the sort on a column header: same column cycles asc → desc → none;
|
|
441
|
+
* a new column starts at asc. Re-derives the visible list from the natural snapshot.
|
|
442
|
+
*/
|
|
443
|
+
OnFKSortToggle(fieldName: string): void;
|
|
444
|
+
/** Persist the active sort for this (host entity, FK field) pair. */
|
|
445
|
+
private persistLinkedFieldSort;
|
|
446
|
+
/** FontAwesome class for a column header's sort indicator (idle / asc / desc). */
|
|
447
|
+
FKSortIcon(fieldName: string): string;
|
|
448
|
+
/** Toggle the scope-picker menu. mousedown+preventDefault keeps the input focused. */
|
|
449
|
+
OnFKScopeToggle(event: MouseEvent): void;
|
|
450
|
+
/** Whether a scope-menu row is the active search field. */
|
|
451
|
+
IsFKScopeActive(field: FKSearchableField): boolean;
|
|
452
|
+
/** Whether there are non-visible searchable fields (drives the "Other fields" group). */
|
|
453
|
+
get FKHasOtherSearchableFields(): boolean;
|
|
454
|
+
/** User picked a field to search by — persist the override and re-run the search. */
|
|
455
|
+
OnFKScopeSelect(event: MouseEvent, field: FKSearchableField): void;
|
|
456
|
+
/** Set the active search field (used by click + the no-drag path of menu drag). */
|
|
457
|
+
private selectScope;
|
|
458
|
+
/** Re-run the active query against the (possibly newly-chosen) search field. */
|
|
459
|
+
private rerunCurrentFKSearch;
|
|
460
|
+
/** Whether a field is currently rendered as a column (the Name column is always shown). */
|
|
461
|
+
IsFKColumnVisible(field: FKSearchableField): boolean;
|
|
462
|
+
/** Whether this field's column visibility can be toggled (Name is always shown). */
|
|
463
|
+
CanToggleFKColumn(field: FKSearchableField): boolean;
|
|
464
|
+
/**
|
|
465
|
+
* Toggle whether a field shows as a column. Persists the full visible set, then
|
|
466
|
+
* rebuilds the column plan + re-runs the search so the grid reflects it live.
|
|
467
|
+
* stopPropagation so the row's search-scope click doesn't also fire.
|
|
468
|
+
*/
|
|
469
|
+
OnFKColumnToggle(event: MouseEvent, field: FKSearchableField): void;
|
|
470
|
+
/** Persist a new visible-column set/order and rebuild the grid live. */
|
|
471
|
+
private applyVisibleColumns;
|
|
472
|
+
/** Whether the column can move up (it's a column and not already first). */
|
|
473
|
+
CanMoveFKColumnUp(field: string): boolean;
|
|
474
|
+
/** Whether the column can move down (it's a column and not already last). */
|
|
475
|
+
CanMoveFKColumnDown(field: string): boolean;
|
|
476
|
+
/**
|
|
477
|
+
* Move a column one slot up (delta -1) or down (delta +1) and persist. mousedown +
|
|
478
|
+
* stopPropagation so the row's select-scope handler doesn't fire and the menu stays open.
|
|
479
|
+
*/
|
|
480
|
+
MoveFKColumn(event: MouseEvent, field: string, delta: -1 | 1): void;
|
|
481
|
+
/**
|
|
482
|
+
* CSS `grid-template-columns` for the dropdown grid: optional icon column, then one
|
|
483
|
+
* track per ordered column. The LAST column grows to fill any remaining width (`1fr`)
|
|
484
|
+
* so the grid never leaves dead space on the right; earlier columns size to content.
|
|
485
|
+
* A user-resized column uses its saved pixel width as the floor.
|
|
486
|
+
*/
|
|
487
|
+
get FKGridTemplateColumns(): string;
|
|
488
|
+
/**
|
|
489
|
+
* Track sizing for one column. Resized → fixed px (the last column still grows past it
|
|
490
|
+
* via `1fr` when there's room). Default → content-sized, except the last column which
|
|
491
|
+
* fills remaining space.
|
|
492
|
+
*/
|
|
493
|
+
private fkColumnTrack;
|
|
494
|
+
/** Whether a column's cells should stretch to fill their track (last column or resized). */
|
|
495
|
+
FKColumnFillsTrack(field: string, isLast: boolean): boolean;
|
|
496
|
+
/** The built cell (value + highlighted html) for a non-name column of a suggestion. */
|
|
497
|
+
FKCellFor(suggestion: FKSuggestion, field: string): FKSuggestionColumn | undefined;
|
|
498
|
+
/** Header sort handler (grid headers click-to-sort only; drag-reorder is menu-only). */
|
|
499
|
+
OnFKHeaderSort(event: MouseEvent, field: string): void;
|
|
500
|
+
/** Begin resizing a column. stopPropagation so the header's sort handler doesn't fire. */
|
|
501
|
+
OnFKColResizeStart(event: MouseEvent, field: string): void;
|
|
502
|
+
private onFKColResizeMove;
|
|
503
|
+
private onFKColResizeEnd;
|
|
504
|
+
private teardownFKResizeListeners;
|
|
192
505
|
/** Handle typing in the FK search input */
|
|
193
506
|
OnFKInput(event: Event): void;
|
|
194
|
-
/**
|
|
507
|
+
/**
|
|
508
|
+
* Show dropdown on focus. With a cached-unfiltered entity we immediately show the
|
|
509
|
+
* first N rows (sorted by name) even on empty input — zero DB round-trips. Without
|
|
510
|
+
* a cache we keep prior behavior: only re-open if we already have suggestions.
|
|
511
|
+
*/
|
|
195
512
|
OnFKFocus(event: FocusEvent): void;
|
|
513
|
+
/**
|
|
514
|
+
* Show the initial suggestion list (no/empty query): the full set from a cached
|
|
515
|
+
* unfiltered engine, otherwise the first N rows via a DB query. Used on focus and
|
|
516
|
+
* when the field is cleared, so the user always sees options without typing.
|
|
517
|
+
*/
|
|
518
|
+
private showInitialFKSuggestions;
|
|
519
|
+
/**
|
|
520
|
+
* In-memory search over a cached-unfiltered entity array. Case-insensitive substring
|
|
521
|
+
* on the name field. Empty query → first N rows sorted by name (focus-show). Instant,
|
|
522
|
+
* no spinner, no DB.
|
|
523
|
+
*/
|
|
524
|
+
private searchCachedEntity;
|
|
196
525
|
/** Hide dropdown on blur, revert to matched name if user didn't select */
|
|
197
526
|
OnFKBlur(): void;
|
|
198
|
-
/**
|
|
527
|
+
/**
|
|
528
|
+
* Keyboard navigation in the FK input: ArrowDown/ArrowUp move the active row,
|
|
529
|
+
* Enter selects it, Escape closes the dropdown.
|
|
530
|
+
*/
|
|
531
|
+
OnFKKeydown(event: KeyboardEvent): void;
|
|
532
|
+
/** Scroll the keyboard-active option into view inside the (possibly portaled) dropdown. */
|
|
533
|
+
private scrollActiveOptionIntoView;
|
|
534
|
+
/** Select an item from the FK dropdown (mouse) */
|
|
199
535
|
OnFKSelectItem(suggestion: FKSuggestion, event: MouseEvent): void;
|
|
536
|
+
/** Shared selection logic for mouse-click and keyboard-Enter. */
|
|
537
|
+
private selectFKSuggestion;
|
|
538
|
+
/**
|
|
539
|
+
* Whether to show the inline-create affordance: the field opts in (`AllowFKCreate`),
|
|
540
|
+
* the related entity resolves, and the current user can create records of it (entity
|
|
541
|
+
* allows creation + role permits — `GetUserPermisions().CanCreate` folds in `AllowCreateAPI`).
|
|
542
|
+
*/
|
|
543
|
+
get CanCreateFK(): boolean;
|
|
544
|
+
/** Footer label: prefilled with the typed text when present, else generic "create new". */
|
|
545
|
+
get FKCreateLabel(): string;
|
|
546
|
+
/**
|
|
547
|
+
* Ask the host (app layer) to create a new related record, prefilled with the typed
|
|
548
|
+
* text as the name. We only EMIT the request — opening the form is the app's job (the
|
|
549
|
+
* generic forms layer must not depend on the app-level form presenter). The host calls
|
|
550
|
+
* `Complete(record)` when saved and we select it.
|
|
551
|
+
*/
|
|
552
|
+
OnFKCreateNew(event: MouseEvent): void;
|
|
553
|
+
/** Select a freshly-created related record as this field's value. */
|
|
554
|
+
private selectCreatedFKRecord;
|
|
200
555
|
/** Clear FK value via the X button */
|
|
201
556
|
OnFKClearClick(event: MouseEvent): void;
|
|
557
|
+
/** Close the FK dropdown and reset its transient view state. */
|
|
558
|
+
private closeFKDropdown;
|
|
202
559
|
/**
|
|
203
|
-
* Perform a RunView search on the related entity's name field
|
|
560
|
+
* Perform a RunView search on the related entity's name field (DB path — used only
|
|
561
|
+
* when no loaded engine caches the related entity unfiltered).
|
|
204
562
|
* Falls back to searching by primary key when no NameField exists (single-field PKs only).
|
|
205
563
|
*/
|
|
206
564
|
private searchRelatedEntity;
|
|
@@ -226,8 +584,45 @@ export declare class MjFormFieldComponent extends BaseAngularComponent implement
|
|
|
226
584
|
OnSelectTriggerBlur(): void;
|
|
227
585
|
/** Select an option from the custom select dropdown */
|
|
228
586
|
OnSelectOptionClick(value: string, event: MouseEvent): void;
|
|
229
|
-
/** Whether the field's varchar(max) - long text that gets
|
|
587
|
+
/** Whether the field's varchar(max) - long text that gets the wide read-only style */
|
|
230
588
|
get IsLongText(): boolean;
|
|
589
|
+
/**
|
|
590
|
+
* Whether this field is large enough to be a candidate for rich-text (markdown/html)
|
|
591
|
+
* auto-detection. Generic & multi-platform: keys off the TS type and character length
|
|
592
|
+
* rather than a specific SQL type, so nvarchar(max)/ntext (MaxLength === 0 means
|
|
593
|
+
* unlimited) and longer fixed fields (nvarchar(400)/varchar(500)/...) all qualify,
|
|
594
|
+
* while short strings, UUIDs, numbers, dates, etc. do not.
|
|
595
|
+
*/
|
|
596
|
+
get IsRichTextEligible(): boolean;
|
|
597
|
+
/**
|
|
598
|
+
* Resolved rendering mode for this field. Honors an explicit `ExtendedType` first
|
|
599
|
+
* ('Markdown' | 'HTML' | 'Code'); when `ExtendedType` is null, falls back to lightweight
|
|
600
|
+
* client-side content detection — but only for {@link IsRichTextEligible} long-text fields.
|
|
601
|
+
*/
|
|
602
|
+
get RichTextMode(): FieldRichTextMode;
|
|
603
|
+
/** Backing snapshot for {@link EditRichTextMode}; null until first computed for the session. */
|
|
604
|
+
private _editRichTextMode;
|
|
605
|
+
/**
|
|
606
|
+
* Stable rendering mode for EDIT mode. Unlike {@link RichTextMode} (which re-detects on the
|
|
607
|
+
* live value), this is snapshotted when edit mode is entered so that typing markdown/html into
|
|
608
|
+
* a plain textarea doesn't swap the control out from under the user mid-keystroke. Explicit
|
|
609
|
+
* ExtendedType always wins regardless; only the auto-detect branch is frozen for the session.
|
|
610
|
+
*/
|
|
611
|
+
get EditRichTextMode(): FieldRichTextMode;
|
|
612
|
+
/** Cached detection result, keyed by the exact string value it was computed from. */
|
|
613
|
+
private _detectCacheValue;
|
|
614
|
+
private _detectCacheResult;
|
|
615
|
+
/** Memoized content detection so the getter stays cheap under OnPush change detection. */
|
|
616
|
+
private detectFormat;
|
|
617
|
+
/**
|
|
618
|
+
* Editor language for the code editor. In edit mode it tracks the frozen
|
|
619
|
+
* {@link EditRichTextMode}; in read mode it tracks the live {@link RichTextMode}.
|
|
620
|
+
*/
|
|
621
|
+
get CodeEditorLanguage(): string;
|
|
622
|
+
/** Map the field's CodeType metadata value to a CodeMirror language id. */
|
|
623
|
+
private codeTypeToLanguage;
|
|
624
|
+
/** Handle value changes coming from the embedded code editor (emits a plain string). */
|
|
625
|
+
OnCodeEditorChange(value: string): void;
|
|
231
626
|
/** Format a value for display */
|
|
232
627
|
FormatValue(): string;
|
|
233
628
|
ngOnChanges(changes: SimpleChanges): void;
|
|
@@ -265,6 +660,6 @@ export declare class MjFormFieldComponent extends BaseAngularComponent implement
|
|
|
265
660
|
*/
|
|
266
661
|
get DateInputValue(): string;
|
|
267
662
|
static ɵfac: i0.ɵɵFactoryDeclaration<MjFormFieldComponent, never>;
|
|
268
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MjFormFieldComponent, "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; }; "ShowLabel": { "alias": "ShowLabel"; "required": false; }; "FormContext": { "alias": "FormContext"; "required": false; }; "_deprecatedRecord": { "alias": "record"; "required": false; }; "_deprecatedFormContext": { "alias": "formContext"; "required": false; }; "HideWhenEmptyInReadOnlyMode": { "alias": "HideWhenEmptyInReadOnlyMode"; "required": false; }; "DisplayNameOverride": { "alias": "DisplayNameOverride"; "required": false; }; "PossibleValuesOverride": { "alias": "PossibleValuesOverride"; "required": false; }; }, { "ValueChange": "ValueChange"; "Navigate": "Navigate"; }, never, never, false, never>;
|
|
663
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MjFormFieldComponent, "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; }; "ShowLabel": { "alias": "ShowLabel"; "required": false; }; "FormContext": { "alias": "FormContext"; "required": false; }; "_deprecatedRecord": { "alias": "record"; "required": false; }; "_deprecatedFormContext": { "alias": "formContext"; "required": false; }; "HideWhenEmptyInReadOnlyMode": { "alias": "HideWhenEmptyInReadOnlyMode"; "required": false; }; "DisplayNameOverride": { "alias": "DisplayNameOverride"; "required": false; }; "PossibleValuesOverride": { "alias": "PossibleValuesOverride"; "required": false; }; "FKDropdownMaxWidth": { "alias": "FKDropdownMaxWidth"; "required": false; }; "FKHighlightMatches": { "alias": "FKHighlightMatches"; "required": false; }; "AllowFKCreate": { "alias": "AllowFKCreate"; "required": false; }; "FKCreatePresentation": { "alias": "FKCreatePresentation"; "required": false; }; }, { "ValueChange": "ValueChange"; "Navigate": "Navigate"; }, never, never, false, never>;
|
|
269
664
|
}
|
|
270
665
|
//# sourceMappingURL=form-field.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-field.component.d.ts","sourceRoot":"","sources":["../../../src/lib/field/form-field.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAsD,SAAS,EAAE,aAAa,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"form-field.component.d.ts","sourceRoot":"","sources":["../../../src/lib/field/form-field.component.ts"],"names":[],"mappings":"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"}
|