@memberjunction/ng-record-changes 6.2.0-edge.0 → 6.2.0-edge.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/format-change-value.d.ts +32 -0
- package/dist/lib/format-change-value.d.ts.map +1 -0
- package/dist/lib/format-change-value.js +81 -0
- package/dist/lib/format-change-value.js.map +1 -0
- package/dist/lib/ng-record-changes.component.d.ts +96 -9
- package/dist/lib/ng-record-changes.component.d.ts.map +1 -1
- package/dist/lib/ng-record-changes.component.js +223 -85
- package/dist/lib/ng-record-changes.component.js.map +1 -1
- package/dist/lib/restore-preview-panel/restore-preview-panel.component.d.ts +4 -1
- package/dist/lib/restore-preview-panel/restore-preview-panel.component.d.ts.map +1 -1
- package/dist/lib/restore-preview-panel/restore-preview-panel.component.js +18 -35
- package/dist/lib/restore-preview-panel/restore-preview-panel.component.js.map +1 -1
- package/package.json +10 -10
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { EntityFieldInfo } from '@memberjunction/core';
|
|
2
|
+
/**
|
|
3
|
+
* Formats a field value from a change record, a snapshot, or a live record for display.
|
|
4
|
+
*
|
|
5
|
+
* Shared by the change history and the restore preview so the two cannot disagree about the same
|
|
6
|
+
* value. A SQL `date` column is a calendar day that arrives as UTC midnight: it is formatted as that
|
|
7
|
+
* day, with no time. Run through the timestamp format, a stored 2026-10-01 read "Sep 30, 2026,
|
|
8
|
+
* 7:00 PM" for a reader in US Central — the wrong day, and a time the value never had.
|
|
9
|
+
*
|
|
10
|
+
* A live record's date field is a `Date` object, not a string, and is formatted the same way rather
|
|
11
|
+
* than falling into the generic object branch, which rendered it as an empty string.
|
|
12
|
+
*
|
|
13
|
+
* @param value The raw value: a string or Date for date fields, any JSON value otherwise
|
|
14
|
+
* @param field The field's metadata, when known; without it the value is treated as text
|
|
15
|
+
*/
|
|
16
|
+
export declare function FormatChangeValue(value: unknown, field: EntityFieldInfo | undefined): string;
|
|
17
|
+
/**
|
|
18
|
+
* Whether two values of the same field hold the same data, for deciding whether a restore would
|
|
19
|
+
* change anything.
|
|
20
|
+
*
|
|
21
|
+
* Comparing the display strings is not enough for a date: the display drops seconds, so a timestamp
|
|
22
|
+
* that moved by 30 seconds formats identically and would read as unchanged. A timestamp is compared
|
|
23
|
+
* as the instant it names, and a SQL `date` column as the calendar day it stores, so a snapshot's
|
|
24
|
+
* `'2026-10-01'` matches a live `Date` at UTC midnight of that day. Anything else, and a date that
|
|
25
|
+
* does not parse, falls back to the display strings, as before.
|
|
26
|
+
*
|
|
27
|
+
* @param a One value: a string or Date for date fields, any JSON value otherwise
|
|
28
|
+
* @param b The other value
|
|
29
|
+
* @param field The field's metadata, when known
|
|
30
|
+
*/
|
|
31
|
+
export declare function ChangeValuesMatch(a: unknown, b: unknown, field: EntityFieldInfo | undefined): boolean;
|
|
32
|
+
//# sourceMappingURL=format-change-value.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-change-value.d.ts","sourceRoot":"","sources":["../../src/lib/format-change-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAwD,MAAM,sBAAsB,CAAC;AAe7G;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,GAAG,SAAS,GAAG,MAAM,CAmB5F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,GAAG,SAAS,GAAG,OAAO,CAWrG"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { EntityFieldTSType, FormatDateOnly, IsDateOnlySQLType } from '@memberjunction/core';
|
|
2
|
+
/** An instant: the moment it happened, in the reader's zone. */
|
|
3
|
+
const TIMESTAMP_FORMAT = {
|
|
4
|
+
month: 'short',
|
|
5
|
+
day: 'numeric',
|
|
6
|
+
year: 'numeric',
|
|
7
|
+
hour: 'numeric',
|
|
8
|
+
minute: '2-digit',
|
|
9
|
+
hour12: true,
|
|
10
|
+
};
|
|
11
|
+
/** A calendar day: no time, and no zone to shift it. */
|
|
12
|
+
const DATE_ONLY_FORMAT = { month: 'short', day: 'numeric', year: 'numeric' };
|
|
13
|
+
/**
|
|
14
|
+
* Formats a field value from a change record, a snapshot, or a live record for display.
|
|
15
|
+
*
|
|
16
|
+
* Shared by the change history and the restore preview so the two cannot disagree about the same
|
|
17
|
+
* value. A SQL `date` column is a calendar day that arrives as UTC midnight: it is formatted as that
|
|
18
|
+
* day, with no time. Run through the timestamp format, a stored 2026-10-01 read "Sep 30, 2026,
|
|
19
|
+
* 7:00 PM" for a reader in US Central — the wrong day, and a time the value never had.
|
|
20
|
+
*
|
|
21
|
+
* A live record's date field is a `Date` object, not a string, and is formatted the same way rather
|
|
22
|
+
* than falling into the generic object branch, which rendered it as an empty string.
|
|
23
|
+
*
|
|
24
|
+
* @param value The raw value: a string or Date for date fields, any JSON value otherwise
|
|
25
|
+
* @param field The field's metadata, when known; without it the value is treated as text
|
|
26
|
+
*/
|
|
27
|
+
export function FormatChangeValue(value, field) {
|
|
28
|
+
if (value == null)
|
|
29
|
+
return '';
|
|
30
|
+
if (field?.TSType === EntityFieldTSType.Date && (value instanceof Date || typeof value === 'string')) {
|
|
31
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
32
|
+
if (!isNaN(date.getTime())) {
|
|
33
|
+
return IsDateOnlySQLType(field.Type)
|
|
34
|
+
? FormatDateOnly(date, DATE_ONLY_FORMAT, 'en-US')
|
|
35
|
+
: new Intl.DateTimeFormat('en-US', TIMESTAMP_FORMAT).format(date);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (typeof value === 'object') {
|
|
39
|
+
const keys = Object.keys(value);
|
|
40
|
+
if (keys.length === 0)
|
|
41
|
+
return '';
|
|
42
|
+
return JSON.stringify(value);
|
|
43
|
+
}
|
|
44
|
+
return String(value);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Whether two values of the same field hold the same data, for deciding whether a restore would
|
|
48
|
+
* change anything.
|
|
49
|
+
*
|
|
50
|
+
* Comparing the display strings is not enough for a date: the display drops seconds, so a timestamp
|
|
51
|
+
* that moved by 30 seconds formats identically and would read as unchanged. A timestamp is compared
|
|
52
|
+
* as the instant it names, and a SQL `date` column as the calendar day it stores, so a snapshot's
|
|
53
|
+
* `'2026-10-01'` matches a live `Date` at UTC midnight of that day. Anything else, and a date that
|
|
54
|
+
* does not parse, falls back to the display strings, as before.
|
|
55
|
+
*
|
|
56
|
+
* @param a One value: a string or Date for date fields, any JSON value otherwise
|
|
57
|
+
* @param b The other value
|
|
58
|
+
* @param field The field's metadata, when known
|
|
59
|
+
*/
|
|
60
|
+
export function ChangeValuesMatch(a, b, field) {
|
|
61
|
+
if (field?.TSType === EntityFieldTSType.Date) {
|
|
62
|
+
const left = asValidDate(a);
|
|
63
|
+
const right = asValidDate(b);
|
|
64
|
+
if (left && right) {
|
|
65
|
+
return IsDateOnlySQLType(field.Type)
|
|
66
|
+
? left.toISOString().slice(0, 10) === right.toISOString().slice(0, 10)
|
|
67
|
+
: left.getTime() === right.getTime();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return FormatChangeValue(a, field) === FormatChangeValue(b, field);
|
|
71
|
+
}
|
|
72
|
+
/** A date or date string as a valid Date, or `null`. */
|
|
73
|
+
function asValidDate(value) {
|
|
74
|
+
if (!(value instanceof Date) && typeof value !== 'string')
|
|
75
|
+
return null;
|
|
76
|
+
if (typeof value === 'string' && value.trim() === '')
|
|
77
|
+
return null;
|
|
78
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
79
|
+
return isNaN(date.getTime()) ? null : date;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=format-change-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-change-value.js","sourceRoot":"","sources":["../../src/lib/format-change-value.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityFieldInfo, EntityFieldTSType, FormatDateOnly, IsDateOnlySQLType } from '@memberjunction/core';\n\n/** An instant: the moment it happened, in the reader's zone. */\nconst TIMESTAMP_FORMAT: Intl.DateTimeFormatOptions = {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n};\n\n/** A calendar day: no time, and no zone to shift it. */\nconst DATE_ONLY_FORMAT: Intl.DateTimeFormatOptions = { month: 'short', day: 'numeric', year: 'numeric' };\n\n/**\n * Formats a field value from a change record, a snapshot, or a live record for display.\n *\n * Shared by the change history and the restore preview so the two cannot disagree about the same\n * value. A SQL `date` column is a calendar day that arrives as UTC midnight: it is formatted as that\n * day, with no time. Run through the timestamp format, a stored 2026-10-01 read \"Sep 30, 2026,\n * 7:00 PM\" for a reader in US Central — the wrong day, and a time the value never had.\n *\n * A live record's date field is a `Date` object, not a string, and is formatted the same way rather\n * than falling into the generic object branch, which rendered it as an empty string.\n *\n * @param value The raw value: a string or Date for date fields, any JSON value otherwise\n * @param field The field's metadata, when known; without it the value is treated as text\n */\nexport function FormatChangeValue(value: unknown, field: EntityFieldInfo | undefined): string {\n if (value == null) return '';\n\n if (field?.TSType === EntityFieldTSType.Date && (value instanceof Date || typeof value === 'string')) {\n const date = value instanceof Date ? value : new Date(value);\n if (!isNaN(date.getTime())) {\n return IsDateOnlySQLType(field.Type)\n ? FormatDateOnly(date, DATE_ONLY_FORMAT, 'en-US')\n : new Intl.DateTimeFormat('en-US', TIMESTAMP_FORMAT).format(date);\n }\n }\n\n if (typeof value === 'object') {\n const keys = Object.keys(value as Record<string, unknown>);\n if (keys.length === 0) return '';\n return JSON.stringify(value);\n }\n\n return String(value);\n}\n\n/**\n * Whether two values of the same field hold the same data, for deciding whether a restore would\n * change anything.\n *\n * Comparing the display strings is not enough for a date: the display drops seconds, so a timestamp\n * that moved by 30 seconds formats identically and would read as unchanged. A timestamp is compared\n * as the instant it names, and a SQL `date` column as the calendar day it stores, so a snapshot's\n * `'2026-10-01'` matches a live `Date` at UTC midnight of that day. Anything else, and a date that\n * does not parse, falls back to the display strings, as before.\n *\n * @param a One value: a string or Date for date fields, any JSON value otherwise\n * @param b The other value\n * @param field The field's metadata, when known\n */\nexport function ChangeValuesMatch(a: unknown, b: unknown, field: EntityFieldInfo | undefined): boolean {\n if (field?.TSType === EntityFieldTSType.Date) {\n const left = asValidDate(a);\n const right = asValidDate(b);\n if (left && right) {\n return IsDateOnlySQLType(field.Type)\n ? left.toISOString().slice(0, 10) === right.toISOString().slice(0, 10)\n : left.getTime() === right.getTime();\n }\n }\n return FormatChangeValue(a, field) === FormatChangeValue(b, field);\n}\n\n/** A date or date string as a valid Date, or `null`. */\nfunction asValidDate(value: unknown): Date | null {\n if (!(value instanceof Date) && typeof value !== 'string') return null;\n if (typeof value === 'string' && value.trim() === '') return null;\n const date = value instanceof Date ? value : new Date(value);\n return isNaN(date.getTime()) ? null : date;\n}\n"]}
|
|
@@ -93,6 +93,14 @@ export declare class RecordChangesComponent extends BaseAngularComponent impleme
|
|
|
93
93
|
private sanitizer;
|
|
94
94
|
IsLoading: boolean;
|
|
95
95
|
IsVisible: boolean;
|
|
96
|
+
DialogClosed: EventEmitter<any>;
|
|
97
|
+
/**
|
|
98
|
+
* @deprecated Use {@link DialogClosed}.
|
|
99
|
+
*
|
|
100
|
+
* The same emitter under the old binding name, so a template still binding
|
|
101
|
+
* (dialogClosed) keeps working. Must stay AFTER DialogClosed: class fields
|
|
102
|
+
* initialise in order, and the other way round this captures undefined.
|
|
103
|
+
*/
|
|
96
104
|
dialogClosed: EventEmitter<any>;
|
|
97
105
|
record: BaseEntity;
|
|
98
106
|
/** Whether to show a "Restore" button on each historical version row. Default false. */
|
|
@@ -103,8 +111,16 @@ export declare class RecordChangesComponent extends BaseAngularComponent impleme
|
|
|
103
111
|
* saving with `record.SetRestoreContext()` set first.
|
|
104
112
|
*/
|
|
105
113
|
RestoreRequested: EventEmitter<RestoreVersionEvent>;
|
|
106
|
-
|
|
107
|
-
|
|
114
|
+
ViewData: MJRecordChangeEntity[];
|
|
115
|
+
/** @deprecated Use {@link ViewData}. */
|
|
116
|
+
get viewData(): MJRecordChangeEntity[];
|
|
117
|
+
/** @deprecated Use {@link ViewData}. */
|
|
118
|
+
set viewData(value: MJRecordChangeEntity[]);
|
|
119
|
+
FilteredData: MJRecordChangeEntity[];
|
|
120
|
+
/** @deprecated Use {@link FilteredData}. */
|
|
121
|
+
get filteredData(): MJRecordChangeEntity[];
|
|
122
|
+
/** @deprecated Use {@link FilteredData}. */
|
|
123
|
+
set filteredData(value: MJRecordChangeEntity[]);
|
|
108
124
|
/**
|
|
109
125
|
* Change lookup keyed by NormalizeUUID(ID), rebuilt whenever {@link viewData}
|
|
110
126
|
* loads. Lets {@link getRestoredFromSourceChange} resolve a restore row's
|
|
@@ -113,8 +129,16 @@ export declare class RecordChangesComponent extends BaseAngularComponent impleme
|
|
|
113
129
|
* template `@if` and once inside `getChangeSummary`), giving O(rows^2)/CD.
|
|
114
130
|
*/
|
|
115
131
|
private viewDataById;
|
|
116
|
-
|
|
117
|
-
|
|
132
|
+
DateGroups: DateGroup[];
|
|
133
|
+
/** @deprecated Use {@link DateGroups}. */
|
|
134
|
+
get dateGroups(): DateGroup[];
|
|
135
|
+
/** @deprecated Use {@link DateGroups}. */
|
|
136
|
+
set dateGroups(value: DateGroup[]);
|
|
137
|
+
ExpandedItems: Set<string>;
|
|
138
|
+
/** @deprecated Use {@link ExpandedItems}. */
|
|
139
|
+
get expandedItems(): Set<string>;
|
|
140
|
+
/** @deprecated Use {@link ExpandedItems}. */
|
|
141
|
+
set expandedItems(value: Set<string>);
|
|
118
142
|
/** The change record currently selected for restore preview, or null. */
|
|
119
143
|
RestorePreviewChange: MJRecordChangeEntity | null;
|
|
120
144
|
/** Visibility of the embedded restore preview slide-in. */
|
|
@@ -124,10 +148,22 @@ export declare class RecordChangesComponent extends BaseAngularComponent impleme
|
|
|
124
148
|
RecordLabels: RecordLabel[];
|
|
125
149
|
IsLoadingLabels: boolean;
|
|
126
150
|
ShowCreateWizard: boolean;
|
|
127
|
-
|
|
151
|
+
SearchTerm: string;
|
|
152
|
+
/** @deprecated Use {@link SearchTerm}. */
|
|
153
|
+
get searchTerm(): string;
|
|
154
|
+
/** @deprecated Use {@link SearchTerm}. */
|
|
155
|
+
set searchTerm(value: string);
|
|
128
156
|
/** Single selected type filter (legacy, kept for backwards compat). */
|
|
129
|
-
|
|
130
|
-
|
|
157
|
+
SelectedType: string;
|
|
158
|
+
/** @deprecated Use {@link SelectedType}. */
|
|
159
|
+
get selectedType(): string;
|
|
160
|
+
/** @deprecated Use {@link SelectedType}. */
|
|
161
|
+
set selectedType(value: string);
|
|
162
|
+
SelectedSource: string;
|
|
163
|
+
/** @deprecated Use {@link SelectedSource}. */
|
|
164
|
+
get selectedSource(): string;
|
|
165
|
+
/** @deprecated Use {@link SelectedSource}. */
|
|
166
|
+
set selectedSource(value: string);
|
|
131
167
|
/** Map of Key → selected, used by the conditional chip system. */
|
|
132
168
|
ChipSelections: Record<string, boolean>;
|
|
133
169
|
/** Whether the overflow popover is open. */
|
|
@@ -167,6 +203,8 @@ export declare class RecordChangesComponent extends BaseAngularComponent impleme
|
|
|
167
203
|
Refresh(): void;
|
|
168
204
|
OnClose(): void;
|
|
169
205
|
LoadRecordChanges(pkey: CompositeKey, appName: string, entityName: string): Promise<void>;
|
|
206
|
+
OnSearchChange(): void;
|
|
207
|
+
/** @deprecated Use {@link OnSearchChange}. */
|
|
170
208
|
onSearchChange(): void;
|
|
171
209
|
onFilterChange(): void;
|
|
172
210
|
/**
|
|
@@ -209,8 +247,14 @@ export declare class RecordChangesComponent extends BaseAngularComponent impleme
|
|
|
209
247
|
ItemCount: number;
|
|
210
248
|
}): void;
|
|
211
249
|
OnLabelCreateCancelled(): void;
|
|
250
|
+
GetLabelStatusClass(status: string): string;
|
|
251
|
+
/** @deprecated Use {@link GetLabelStatusClass}. */
|
|
212
252
|
getLabelStatusClass(status: string): string;
|
|
253
|
+
ToggleExpansion(changeId: string): void;
|
|
254
|
+
/** @deprecated Use {@link ToggleExpansion}. */
|
|
213
255
|
toggleExpansion(changeId: string): void;
|
|
256
|
+
OnTimelineItemKeydown(event: KeyboardEvent, changeId: string): void;
|
|
257
|
+
/** @deprecated Use {@link OnTimelineItemKeydown}. */
|
|
214
258
|
onTimelineItemKeydown(event: KeyboardEvent, changeId: string): void;
|
|
215
259
|
/**
|
|
216
260
|
* Opens the embedded restore preview panel for a given change record.
|
|
@@ -235,6 +279,8 @@ export declare class RecordChangesComponent extends BaseAngularComponent impleme
|
|
|
235
279
|
* currently loaded changes. Returns null when the source isn't loaded
|
|
236
280
|
* (e.g., it's been pruned from history) or when this row isn't a restore.
|
|
237
281
|
*/
|
|
282
|
+
GetRestoredFromSourceChange(change: MJRecordChangeEntity): MJRecordChangeEntity | null;
|
|
283
|
+
/** @deprecated Use {@link GetRestoredFromSourceChange}. */
|
|
238
284
|
getRestoredFromSourceChange(change: MJRecordChangeEntity): MJRecordChangeEntity | null;
|
|
239
285
|
/**
|
|
240
286
|
* Rebuilds {@link viewDataById} from the current {@link viewData}. Called once
|
|
@@ -245,6 +291,8 @@ export declare class RecordChangesComponent extends BaseAngularComponent impleme
|
|
|
245
291
|
* True when the row was produced by a restore operation (either the
|
|
246
292
|
* `Source` is `'Restore'` OR `RestoredFromID` is populated).
|
|
247
293
|
*/
|
|
294
|
+
IsRestoreRow(change: MJRecordChangeEntity): boolean;
|
|
295
|
+
/** @deprecated Use {@link IsRestoreRow}. */
|
|
248
296
|
isRestoreRow(change: MJRecordChangeEntity): boolean;
|
|
249
297
|
/**
|
|
250
298
|
* True when this change is the most recent in the loaded history.
|
|
@@ -252,6 +300,8 @@ export declare class RecordChangesComponent extends BaseAngularComponent impleme
|
|
|
252
300
|
* Restoring to the most recent version is a no-op, so the timeline hides
|
|
253
301
|
* the Restore button on this row.
|
|
254
302
|
*/
|
|
303
|
+
IsMostRecentChange(change: MJRecordChangeEntity): boolean;
|
|
304
|
+
/** @deprecated Use {@link IsMostRecentChange}. */
|
|
255
305
|
isMostRecentChange(change: MJRecordChangeEntity): boolean;
|
|
256
306
|
/**
|
|
257
307
|
* Click handler for the lineage chip — scrolls/highlights the source
|
|
@@ -260,7 +310,11 @@ export declare class RecordChangesComponent extends BaseAngularComponent impleme
|
|
|
260
310
|
JumpToSourceChange(sourceChange: MJRecordChangeEntity, event: MouseEvent): void;
|
|
261
311
|
private buildDateGroups;
|
|
262
312
|
private formatDateGroupLabel;
|
|
313
|
+
GetChangeTypeCardClass(type: string): string;
|
|
314
|
+
/** @deprecated Use {@link GetChangeTypeCardClass}. */
|
|
263
315
|
getChangeTypeCardClass(type: string): string;
|
|
316
|
+
GetChangeTypeBadgeText(type: string): string;
|
|
317
|
+
/** @deprecated Use {@link GetChangeTypeBadgeText}. */
|
|
264
318
|
getChangeTypeBadgeText(type: string): string;
|
|
265
319
|
/**
|
|
266
320
|
* Badge text for the row's primary type tag. For restore rows we override
|
|
@@ -268,40 +322,73 @@ export declare class RecordChangesComponent extends BaseAngularComponent impleme
|
|
|
268
322
|
* mockup's intent of treating restore as a first-class operation in the
|
|
269
323
|
* timeline rather than a flavor of update.
|
|
270
324
|
*/
|
|
325
|
+
GetEffectiveBadgeText(change: MJRecordChangeEntity): string;
|
|
326
|
+
/** @deprecated Use {@link GetEffectiveBadgeText}. */
|
|
271
327
|
getEffectiveBadgeText(change: MJRecordChangeEntity): string;
|
|
272
328
|
/**
|
|
273
329
|
* Optional restore reason — pulled from the dynamic `RestoreReason`
|
|
274
330
|
* column added by the lineage migration. Returns null when not present
|
|
275
331
|
* or not a restore row.
|
|
276
332
|
*/
|
|
333
|
+
GetRestoreReason(change: MJRecordChangeEntity): string | null;
|
|
334
|
+
/** @deprecated Use {@link GetRestoreReason}. */
|
|
277
335
|
getRestoreReason(change: MJRecordChangeEntity): string | null;
|
|
336
|
+
GetSourceClass(source: string): string;
|
|
337
|
+
/** @deprecated Use {@link GetSourceClass}. */
|
|
278
338
|
getSourceClass(source: string): string;
|
|
339
|
+
GetStatusClass(status: string): string;
|
|
340
|
+
/** @deprecated Use {@link GetStatusClass}. */
|
|
279
341
|
getStatusClass(status: string): string;
|
|
342
|
+
GetTimelineItemLabel(change: MJRecordChangeEntity): string;
|
|
343
|
+
/** @deprecated Use {@link GetTimelineItemLabel}. */
|
|
280
344
|
getTimelineItemLabel(change: MJRecordChangeEntity): string;
|
|
345
|
+
GetUserInitials(user: string | null): string;
|
|
346
|
+
/** @deprecated Use {@link GetUserInitials}. */
|
|
281
347
|
getUserInitials(user: string | null): string;
|
|
348
|
+
GetUserDisplayName(user: string | null): string;
|
|
349
|
+
/** @deprecated Use {@link GetUserDisplayName}. */
|
|
282
350
|
getUserDisplayName(user: string | null): string;
|
|
351
|
+
GetUniqueContributorCount(): number;
|
|
352
|
+
/** @deprecated Use {@link GetUniqueContributorCount}. */
|
|
283
353
|
getUniqueContributorCount(): number;
|
|
354
|
+
FormatTime(date: Date): string;
|
|
355
|
+
/** @deprecated Use {@link FormatTime}. */
|
|
284
356
|
formatTime(date: Date): string;
|
|
357
|
+
FormatRelativeTime(date: Date): string;
|
|
358
|
+
/** @deprecated Use {@link FormatRelativeTime}. */
|
|
285
359
|
formatRelativeTime(date: Date): string;
|
|
360
|
+
FormatFullDateTime(date: Date): string;
|
|
361
|
+
/** @deprecated Use {@link FormatFullDateTime}. */
|
|
286
362
|
formatFullDateTime(date: Date): string;
|
|
363
|
+
GetChangeSummary(change: MJRecordChangeEntity): string;
|
|
364
|
+
/** @deprecated Use {@link GetChangeSummary}. */
|
|
287
365
|
getChangeSummary(change: MJRecordChangeEntity): string;
|
|
366
|
+
GetCreatedFieldCount(change: MJRecordChangeEntity): number;
|
|
367
|
+
/** @deprecated Use {@link GetCreatedFieldCount}. */
|
|
288
368
|
getCreatedFieldCount(change: MJRecordChangeEntity): number;
|
|
289
369
|
private extractFieldDisplayNames;
|
|
290
370
|
private buildFieldListSummary;
|
|
371
|
+
GetFieldChanges(change: MJRecordChangeEntity): FieldChangeInfo[];
|
|
372
|
+
/** @deprecated Use {@link GetFieldChanges}. */
|
|
291
373
|
getFieldChanges(change: MJRecordChangeEntity): FieldChangeInfo[];
|
|
292
374
|
private buildFieldChangeInfo;
|
|
293
375
|
private classifyFieldType;
|
|
376
|
+
GetCreatedFields(change: MJRecordChangeEntity): Array<{
|
|
377
|
+
name: string;
|
|
378
|
+
displayName: string;
|
|
379
|
+
value: string;
|
|
380
|
+
}>;
|
|
381
|
+
/** @deprecated Use {@link GetCreatedFields}. */
|
|
294
382
|
getCreatedFields(change: MJRecordChangeEntity): Array<{
|
|
295
383
|
name: string;
|
|
296
384
|
displayName: string;
|
|
297
385
|
value: string;
|
|
298
386
|
}>;
|
|
299
|
-
private formatChangeValue;
|
|
300
387
|
private generateDiffHtml;
|
|
301
388
|
private shouldUseWordDiff;
|
|
302
389
|
private escapeHtml;
|
|
303
390
|
static ɵfac: i0.ɵɵFactoryDeclaration<RecordChangesComponent, never>;
|
|
304
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RecordChangesComponent, "mj-record-changes", never, { "record": { "alias": "record"; "required": false; }; "AllowRestore": { "alias": "AllowRestore"; "required": false; }; }, { "dialogClosed": "dialogClosed"; "RestoreRequested": "RestoreRequested"; }, never, never, false, never>;
|
|
391
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RecordChangesComponent, "mj-record-changes", never, { "record": { "alias": "record"; "required": false; }; "AllowRestore": { "alias": "AllowRestore"; "required": false; }; }, { "DialogClosed": "DialogClosed"; "dialogClosed": "dialogClosed"; "RestoreRequested": "RestoreRequested"; }, never, never, false, never>;
|
|
305
392
|
}
|
|
306
393
|
export {};
|
|
307
394
|
//# sourceMappingURL=ng-record-changes.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-record-changes.component.d.ts","sourceRoot":"","sources":["../../src/lib/ng-record-changes.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAEZ,SAAS,EACT,MAAM,EAEN,iBAAiB,EAGjB,MAAM,EACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EACL,UAAU,EAEV,YAAY,EAIb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"ng-record-changes.component.d.ts","sourceRoot":"","sources":["../../src/lib/ng-record-changes.component.ts"],"names":[],"mappings":"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"}
|