blixify-ui-web 1.2.163 → 1.2.165
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/lib/components/data/dataTemplate/activityChanges.d.ts +12 -4
- package/lib/components/data/dataTemplate/activityChanges.d.ts.map +1 -1
- package/lib/components/data/dataTemplate/activityChanges.js +256 -53
- package/lib/components/data/dataTemplate/activityChanges.js.map +1 -1
- package/lib/components/data/dataTemplate/activityModal.d.ts +3 -1
- package/lib/components/data/dataTemplate/activityModal.d.ts.map +1 -1
- package/lib/components/data/dataTemplate/activityModal.js +45 -28
- package/lib/components/data/dataTemplate/activityModal.js.map +1 -1
- package/lib/components/data/dataTemplate/dataStateModel.d.ts +1 -0
- package/lib/components/data/dataTemplate/dataStateModel.d.ts.map +1 -1
- package/lib/components/data/dataTemplate/dataStateModel.js.map +1 -1
- package/lib/components/data/dataTemplate/index.d.ts.map +1 -1
- package/lib/components/data/dataTemplate/index.js +398 -61
- package/lib/components/data/dataTemplate/index.js.map +1 -1
- package/lib/components/data/dataTemplate/viewStatePersistence.d.ts +1 -0
- package/lib/components/data/dataTemplate/viewStatePersistence.d.ts.map +1 -1
- package/lib/components/data/dataTemplate/viewStatePersistence.js +2 -1
- package/lib/components/data/dataTemplate/viewStatePersistence.js.map +1 -1
- package/lib/components/data/utils.d.ts +1 -0
- package/lib/components/data/utils.d.ts.map +1 -1
- package/lib/components/data/utils.js +20 -8
- package/lib/components/data/utils.js.map +1 -1
- package/lib/components/display/newTable/index.d.ts +13 -1
- package/lib/components/display/newTable/index.d.ts.map +1 -1
- package/lib/components/display/newTable/index.js +292 -54
- package/lib/components/display/newTable/index.js.map +1 -1
- package/lib/tail.css +2 -2
- package/package.json +1 -1
|
@@ -1,8 +1,16 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
import dayjs from "../../dayjs";
|
|
3
|
+
import { DataStructure } from "./model";
|
|
2
4
|
export declare const handleActivityChanges: (record: any) => any[];
|
|
3
|
-
export declare const
|
|
5
|
+
export declare const handleRelativeTime: (date: dayjs.Dayjs, now?: dayjs.Dayjs) => string;
|
|
6
|
+
interface LogRowsProps {
|
|
4
7
|
record: any;
|
|
8
|
+
model?: DataStructure[];
|
|
9
|
+
authorName: string;
|
|
5
10
|
darkMode?: boolean;
|
|
6
|
-
|
|
7
|
-
|
|
11
|
+
personName?: (id: string) => string;
|
|
12
|
+
recordHeader?: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
export declare const ActivityLogRows: (props: LogRowsProps) => React.JSX.Element;
|
|
15
|
+
export {};
|
|
8
16
|
//# sourceMappingURL=activityChanges.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activityChanges.d.ts","sourceRoot":"","sources":["../../../../src/components/data/dataTemplate/activityChanges.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"activityChanges.d.ts","sourceRoot":"","sources":["../../../../src/components/data/dataTemplate/activityChanges.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,MAAM,aAAa,CAAC;AAIhC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,eAAO,MAAM,qBAAqB,WAAY,GAAG,KAAG,GAAG,EAMpD,CAAC;AAGJ,eAAO,MAAM,kBAAkB,SAAU,KAAK,CAAC,KAAK,8BAWnD,CAAC;AAgOF,UAAU,YAAY;IACpB,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,eAAO,MAAM,eAAe,UAAW,YAAY,sBA6RlD,CAAC"}
|
|
@@ -22,9 +22,17 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
25
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
29
|
+
exports.ActivityLogRows = exports.handleRelativeTime = exports.handleActivityChanges = void 0;
|
|
30
|
+
var outline_1 = require("@heroicons/react/24/outline");
|
|
27
31
|
var react_1 = __importStar(require("react"));
|
|
32
|
+
var dayjs_1 = __importDefault(require("../../dayjs"));
|
|
33
|
+
var chatBase_1 = require("../../chat/chatBase");
|
|
34
|
+
var tag_1 = require("../../display/tag");
|
|
35
|
+
var popUp_1 = require("../../advanced/popUp");
|
|
28
36
|
var handleActivityChanges = function (record) {
|
|
29
37
|
var _a;
|
|
30
38
|
return Object.values((_a = record.values) !== null && _a !== void 0 ? _a : {}).filter(function (value) {
|
|
@@ -34,59 +42,254 @@ var handleActivityChanges = function (record) {
|
|
|
34
42
|
});
|
|
35
43
|
};
|
|
36
44
|
exports.handleActivityChanges = handleActivityChanges;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
var
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
var
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
45
|
+
// INFO: compact monday-style age — the full timestamp is in the details popover
|
|
46
|
+
var handleRelativeTime = function (date, now) {
|
|
47
|
+
if (now === void 0) { now = (0, dayjs_1.default)(); }
|
|
48
|
+
var minutes = Math.max(now.diff(date, "minute"), 0);
|
|
49
|
+
if (minutes < 1)
|
|
50
|
+
return "now";
|
|
51
|
+
if (minutes < 60)
|
|
52
|
+
return "".concat(minutes, "m");
|
|
53
|
+
var hours = Math.floor(minutes / 60);
|
|
54
|
+
if (hours < 24)
|
|
55
|
+
return "".concat(hours, "h");
|
|
56
|
+
var days = Math.floor(hours / 24);
|
|
57
|
+
if (days < 7)
|
|
58
|
+
return "".concat(days, "d");
|
|
59
|
+
if (days < 30)
|
|
60
|
+
return "".concat(Math.floor(days / 7), "w");
|
|
61
|
+
if (days < 365)
|
|
62
|
+
return "".concat(Math.floor(days / 30), "mo");
|
|
63
|
+
return "".concat(Math.floor(days / 365), "y");
|
|
64
|
+
};
|
|
65
|
+
exports.handleRelativeTime = handleRelativeTime;
|
|
66
|
+
var isEmpty = function (value) {
|
|
67
|
+
return value === undefined ||
|
|
68
|
+
value === null ||
|
|
69
|
+
value === "" ||
|
|
70
|
+
(Array.isArray(value) && value.length === 0);
|
|
71
|
+
};
|
|
72
|
+
var urlPattern = /^https?:\/\/\S+$/i;
|
|
73
|
+
var renderFieldIcon = function (type) {
|
|
74
|
+
var className = "h-4 w-4 shrink-0";
|
|
75
|
+
switch (type) {
|
|
76
|
+
case "string":
|
|
77
|
+
case "password":
|
|
78
|
+
return (react_1.default.createElement("span", { "aria-hidden": "true", className: "w-4 shrink-0 text-center text-[11px] font-semibold leading-none" }, "Tt"));
|
|
79
|
+
case "email":
|
|
80
|
+
return react_1.default.createElement(outline_1.EnvelopeIcon, { "aria-hidden": "true", className: className });
|
|
81
|
+
case "contact":
|
|
82
|
+
return react_1.default.createElement(outline_1.DevicePhoneMobileIcon, { "aria-hidden": "true", className: className });
|
|
83
|
+
case "date":
|
|
84
|
+
return react_1.default.createElement(outline_1.CalendarIcon, { "aria-hidden": "true", className: className });
|
|
85
|
+
case "number":
|
|
86
|
+
case "math":
|
|
87
|
+
return react_1.default.createElement(outline_1.HashtagIcon, { "aria-hidden": "true", className: className });
|
|
88
|
+
case "boolean":
|
|
89
|
+
return react_1.default.createElement(outline_1.CheckCircleIcon, { "aria-hidden": "true", className: className });
|
|
90
|
+
case "person":
|
|
91
|
+
case "listPerson":
|
|
92
|
+
case "roles":
|
|
93
|
+
return react_1.default.createElement(outline_1.UserIcon, { "aria-hidden": "true", className: className });
|
|
94
|
+
case "list":
|
|
95
|
+
case "multipleList":
|
|
96
|
+
return react_1.default.createElement(outline_1.Bars3BottomLeftIcon, { "aria-hidden": "true", className: className });
|
|
97
|
+
case "reference":
|
|
98
|
+
case "listReference":
|
|
99
|
+
case "referenceSelection":
|
|
100
|
+
return react_1.default.createElement(outline_1.LinkIcon, { "aria-hidden": "true", className: className });
|
|
101
|
+
case "image":
|
|
102
|
+
case "multipleImage":
|
|
103
|
+
case "signature":
|
|
104
|
+
return react_1.default.createElement(outline_1.PhotoIcon, { "aria-hidden": "true", className: className });
|
|
105
|
+
case "file":
|
|
106
|
+
case "multipleFile":
|
|
107
|
+
return react_1.default.createElement(outline_1.PaperClipIcon, { "aria-hidden": "true", className: className });
|
|
108
|
+
case "address":
|
|
109
|
+
case "listAddress":
|
|
110
|
+
return react_1.default.createElement(outline_1.MapPinIcon, { "aria-hidden": "true", className: className });
|
|
111
|
+
case "textArea":
|
|
112
|
+
case "markdown":
|
|
113
|
+
return react_1.default.createElement(outline_1.DocumentTextIcon, { "aria-hidden": "true", className: className });
|
|
114
|
+
case "object":
|
|
115
|
+
case "listObject":
|
|
116
|
+
return react_1.default.createElement(outline_1.ListBulletIcon, { "aria-hidden": "true", className: className });
|
|
117
|
+
default:
|
|
118
|
+
return react_1.default.createElement(outline_1.MinusIcon, { "aria-hidden": "true", className: className });
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
var handleValueText = function (value, field, personName) {
|
|
122
|
+
if (typeof value === "string") {
|
|
123
|
+
if ((field === null || field === void 0 ? void 0 : field.type) === "date") {
|
|
124
|
+
var date = (0, dayjs_1.default)(value);
|
|
125
|
+
if (date.isValid())
|
|
126
|
+
return date.format(value.length <= 10 ? "D MMM YYYY" : "D MMM YYYY, HH:mm");
|
|
127
|
+
}
|
|
128
|
+
if ((field === null || field === void 0 ? void 0 : field.type) === "person" && personName)
|
|
129
|
+
return personName(value);
|
|
130
|
+
return value;
|
|
131
|
+
}
|
|
132
|
+
if ((field === null || field === void 0 ? void 0 : field.type) === "boolean" && typeof value === "boolean")
|
|
133
|
+
return value ? "Yes" : "No";
|
|
134
|
+
if ((field === null || field === void 0 ? void 0 : field.type) === "listPerson" && Array.isArray(value) && personName)
|
|
135
|
+
return value.map(function (id) { return personName(String(id)); }).join(", ");
|
|
136
|
+
if (Array.isArray(value) && value.every(function (item) { return typeof item !== "object"; }))
|
|
137
|
+
return value.join(", ");
|
|
138
|
+
if (typeof value === "number" || typeof value === "boolean")
|
|
139
|
+
return String(value);
|
|
140
|
+
return JSON.stringify(value);
|
|
141
|
+
};
|
|
142
|
+
// INFO: "compact" is the one-line cell inside the row trigger (plain text, no
|
|
143
|
+
// nested link — the row itself is a button); "full" is the untruncated value
|
|
144
|
+
// in the details popover, where URLs become real links
|
|
145
|
+
var renderValue = function (value, mode, field, darkMode, personName) {
|
|
146
|
+
var _a, _b, _c;
|
|
147
|
+
if (isEmpty(value))
|
|
148
|
+
return (react_1.default.createElement("span", { className: darkMode ? "text-gray-500" : "text-gray-400" }, "-"));
|
|
149
|
+
var text = handleValueText(value, field, personName);
|
|
150
|
+
if ((field === null || field === void 0 ? void 0 : field.type) === "list" && typeof value === "string") {
|
|
151
|
+
var index = (_b = (_a = field.listSelection) === null || _a === void 0 ? void 0 : _a.indexOf(value)) !== null && _b !== void 0 ? _b : -1;
|
|
152
|
+
return (react_1.default.createElement("span", { className: mode === "compact" ? "block min-w-0 truncate" : "" },
|
|
153
|
+
react_1.default.createElement(tag_1.Tag, { tagText: text, size: "small", variant: "flat", rounded: "md", color: index >= 0 ? (_c = field.listSelectionColour) === null || _c === void 0 ? void 0 : _c[index] : undefined })));
|
|
154
|
+
}
|
|
155
|
+
var isUrl = urlPattern.test(text);
|
|
156
|
+
if (mode === "compact")
|
|
157
|
+
return (react_1.default.createElement("span", { className: "block truncate ".concat(isUrl ? "text-primary-500" : "") }, text));
|
|
158
|
+
if (isUrl)
|
|
159
|
+
return (react_1.default.createElement("a", { href: text, target: "_blank", rel: "noopener noreferrer", className: "break-all text-primary-500 hover:underline" }, text));
|
|
160
|
+
return (react_1.default.createElement("span", { className: "whitespace-pre-wrap break-words [overflow-wrap:anywhere]" }, text));
|
|
161
|
+
};
|
|
162
|
+
// INFO: each row is a PopUp trigger, so a log with many or long values stays one
|
|
163
|
+
// line tall and the full before/after opens on demand instead of growing the list
|
|
164
|
+
var ActivityLogRow = function (props) {
|
|
165
|
+
var _a = (0, react_1.useState)("bottom"), direction = _a[0], setDirection = _a[1];
|
|
166
|
+
var muted = props.darkMode ? "text-gray-400" : "text-gray-500";
|
|
167
|
+
// INFO: the panel is not portalled (a body portal falls outside the Modal's
|
|
168
|
+
// dialog and closes it), so open upward when the clipping bounds leave no room below
|
|
169
|
+
var handleDirection = function (element) {
|
|
170
|
+
var _a, _b, _c;
|
|
171
|
+
var rect = element.getBoundingClientRect();
|
|
172
|
+
var bounds = (_a = element
|
|
173
|
+
.closest("[data-activity-bounds]")) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
174
|
+
var bottom = Math.min((_b = bounds === null || bounds === void 0 ? void 0 : bounds.bottom) !== null && _b !== void 0 ? _b : window.innerHeight, window.innerHeight);
|
|
175
|
+
var top = Math.max((_c = bounds === null || bounds === void 0 ? void 0 : bounds.top) !== null && _c !== void 0 ? _c : 0, 0);
|
|
176
|
+
var below = bottom - rect.bottom;
|
|
177
|
+
setDirection(below < 300 && rect.top - top > below ? "top" : "bottom");
|
|
178
|
+
};
|
|
179
|
+
return (react_1.default.createElement("li", { className: "border-t first:border-t-0 ".concat(props.darkMode ? "border-gray-700" : "border-gray-100") },
|
|
180
|
+
react_1.default.createElement(popUp_1.PopUp, { className: "w-full", anchor: "right", direction: direction, darkMode: props.darkMode, lib: { Transition: undefined }, ctaComp: react_1.default.createElement("button", { type: "button", "aria-haspopup": "dialog", className: "grid w-full grid-cols-[3rem_minmax(0,1fr)] items-center gap-x-3 gap-y-1 px-3 py-2 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary-500 sm:grid-cols-[3rem_minmax(0,1fr)_minmax(0,1fr)_minmax(0,1.6fr)] ".concat(props.darkMode ? "hover:bg-white/5" : "hover:bg-gray-50"), onPointerDown: function (event) { return handleDirection(event.currentTarget); }, onKeyDown: function (event) { return handleDirection(event.currentTarget); } },
|
|
181
|
+
props.meta,
|
|
182
|
+
react_1.default.createElement("span", { className: "col-span-2 flex min-w-0 items-center gap-2 text-sm sm:col-span-1" },
|
|
183
|
+
react_1.default.createElement("span", { className: muted }, props.icon),
|
|
184
|
+
props.srPrefix && (react_1.default.createElement("span", { className: "sr-only" }, props.srPrefix)),
|
|
185
|
+
react_1.default.createElement("span", { className: "truncate" }, props.label)),
|
|
186
|
+
react_1.default.createElement("span", { className: "col-span-2 min-w-0 text-sm sm:col-span-1" }, props.summary)), renderComp: react_1.default.createElement("div", { role: "dialog", "aria-label": "Change details", className: "w-80 max-w-[calc(100vw-3rem)] p-3 text-left text-sm" }, props.details) })));
|
|
54
187
|
};
|
|
55
|
-
var
|
|
56
|
-
var record =
|
|
57
|
-
var _b = (0, react_1.useState)(false), expanded = _b[0], setExpanded = _b[1];
|
|
188
|
+
var ActivityLogRows = function (props) {
|
|
189
|
+
var record = props.record, darkMode = props.darkMode;
|
|
58
190
|
var changes = (0, exports.handleActivityChanges)(record);
|
|
59
|
-
var
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
191
|
+
var date = record.createdAt ? (0, dayjs_1.default)(record.createdAt) : null;
|
|
192
|
+
var muted = darkMode ? "text-gray-400" : "text-gray-500";
|
|
193
|
+
var panelDivider = darkMode ? "border-gray-700" : "border-gray-100";
|
|
194
|
+
var author = "".concat(props.authorName).concat(record.userRole ? " (".concat(record.userRole, ")") : "");
|
|
195
|
+
var handleField = function (columnId) { var _a; return (_a = props.model) === null || _a === void 0 ? void 0 : _a.find(function (field) { return field.id === columnId; }); };
|
|
196
|
+
var renderMeta = function () { return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
197
|
+
react_1.default.createElement("span", { className: "flex items-center gap-1 text-xs ".concat(muted) },
|
|
198
|
+
react_1.default.createElement(outline_1.ClockIcon, { "aria-hidden": "true", className: "h-3.5 w-3.5 shrink-0" }),
|
|
199
|
+
(date === null || date === void 0 ? void 0 : date.isValid()) ? (react_1.default.createElement("time", { dateTime: date.toISOString() }, (0, exports.handleRelativeTime)(date))) : (react_1.default.createElement("span", null, "-"))),
|
|
200
|
+
react_1.default.createElement("span", { className: "flex min-w-0 items-center gap-2" },
|
|
201
|
+
(0, chatBase_1.renderChatAvatar)({ id: record.userId, name: props.authorName }, "h-6 w-6 shrink-0 text-[10px]", darkMode),
|
|
202
|
+
react_1.default.createElement("span", { className: "truncate text-sm font-medium" }, author)))); };
|
|
203
|
+
var renderDetailsHeader = function (icon, label) { return (react_1.default.createElement("div", { className: "mb-3 border-b pb-2 ".concat(panelDivider) },
|
|
204
|
+
react_1.default.createElement("p", { className: "flex items-center gap-2 font-semibold" },
|
|
205
|
+
react_1.default.createElement("span", { className: muted }, icon),
|
|
206
|
+
react_1.default.createElement("span", { className: "break-words" }, label)),
|
|
207
|
+
react_1.default.createElement("p", { className: "mt-1 text-xs ".concat(muted) },
|
|
208
|
+
author,
|
|
209
|
+
(date === null || date === void 0 ? void 0 : date.isValid()) && " \u00B7 ".concat(date.format("D MMM YYYY, HH:mm:ss"))))); };
|
|
210
|
+
var renderDetailsValue = function (title, value) { return (react_1.default.createElement("div", { className: "mt-2 first:mt-0" },
|
|
211
|
+
react_1.default.createElement("p", { className: "mb-1 text-xs font-medium uppercase tracking-wide ".concat(muted) }, title),
|
|
212
|
+
react_1.default.createElement("div", { className: "max-h-40 overflow-y-auto" }, value))); };
|
|
213
|
+
var renderChange = function (change) {
|
|
214
|
+
var _a;
|
|
215
|
+
var field = handleField(change.columnId);
|
|
216
|
+
var label = (_a = field === null || field === void 0 ? void 0 : field.name) !== null && _a !== void 0 ? _a : change.columnId;
|
|
217
|
+
var icon = renderFieldIcon(field === null || field === void 0 ? void 0 : field.type);
|
|
218
|
+
var before = record.type === "create" ? undefined : change.oldValue;
|
|
219
|
+
return (react_1.default.createElement(ActivityLogRow, { key: change.columnId, label: label, icon: icon, meta: renderMeta(), srPrefix: "changed ", darkMode: darkMode, summary: react_1.default.createElement("span", { className: "flex min-w-0 items-center gap-2" },
|
|
220
|
+
react_1.default.createElement("span", { className: "sr-only" }, "from "),
|
|
221
|
+
react_1.default.createElement("span", { className: "min-w-0 flex-1" }, renderValue(before, "compact", field, darkMode, props.personName)),
|
|
222
|
+
react_1.default.createElement(outline_1.ChevronRightIcon, { "aria-hidden": "true", className: "h-4 w-4 shrink-0 ".concat(muted) }),
|
|
223
|
+
react_1.default.createElement("span", { className: "sr-only" }, "to "),
|
|
224
|
+
react_1.default.createElement("span", { className: "min-w-0 flex-1" }, renderValue(change.newValue, "compact", field, darkMode, props.personName))), details: react_1.default.createElement(react_1.default.Fragment, null,
|
|
225
|
+
renderDetailsHeader(icon, label),
|
|
226
|
+
renderDetailsValue("Before", renderValue(before, "full", field, darkMode, props.personName)),
|
|
227
|
+
renderDetailsValue("After", renderValue(change.newValue, "full", field, darkMode, props.personName))) }));
|
|
228
|
+
};
|
|
229
|
+
var renderChangeDetails = function (change) {
|
|
230
|
+
var _a;
|
|
231
|
+
var field = handleField(change.columnId);
|
|
232
|
+
var before = record.type === "create" ? undefined : change.oldValue;
|
|
233
|
+
return (react_1.default.createElement("div", { key: change.columnId },
|
|
234
|
+
react_1.default.createElement("dt", { className: "flex items-center gap-2 text-xs ".concat(muted) },
|
|
235
|
+
renderFieldIcon(field === null || field === void 0 ? void 0 : field.type), (_a = field === null || field === void 0 ? void 0 : field.name) !== null && _a !== void 0 ? _a : change.columnId),
|
|
236
|
+
react_1.default.createElement("dd", { className: "mt-0.5 flex min-w-0 items-start gap-2" },
|
|
237
|
+
record.type !== "create" && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
238
|
+
react_1.default.createElement("span", { className: "sr-only" }, "from "),
|
|
239
|
+
react_1.default.createElement("span", { className: "min-w-0 flex-1" }, renderValue(before, "full", field, darkMode, props.personName)),
|
|
240
|
+
react_1.default.createElement(outline_1.ChevronRightIcon, { "aria-hidden": "true", className: "mt-0.5 h-4 w-4 shrink-0 ".concat(muted) }),
|
|
241
|
+
react_1.default.createElement("span", { className: "sr-only" }, "to "))),
|
|
242
|
+
react_1.default.createElement("span", { className: "min-w-0 flex-1" }, renderValue(change.newValue, "full", field, darkMode, props.personName)))));
|
|
243
|
+
};
|
|
244
|
+
// INFO: one save that touched several columns stays one row; the field names
|
|
245
|
+
// are listed on the row and each before › after opens in the popover
|
|
246
|
+
var renderGroup = function () {
|
|
247
|
+
var isCreate = record.type === "create";
|
|
248
|
+
var label = isCreate ? "Created" : "Updated ".concat(changes.length, " fields");
|
|
249
|
+
var icon = isCreate ? (react_1.default.createElement(outline_1.PlusCircleIcon, { "aria-hidden": "true", className: "h-4 w-4 shrink-0" })) : (react_1.default.createElement(outline_1.PencilSquareIcon, { "aria-hidden": "true", className: "h-4 w-4 shrink-0" }));
|
|
250
|
+
var names = changes
|
|
251
|
+
.map(function (change) { var _a, _b; return (_b = (_a = handleField(change.columnId)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : change.columnId; })
|
|
252
|
+
.join(", ");
|
|
253
|
+
return (react_1.default.createElement(ActivityLogRow, { key: "group", label: label, icon: icon, meta: renderMeta(), darkMode: darkMode, summary: react_1.default.createElement("span", { className: "block truncate ".concat(muted) }, names), details: react_1.default.createElement(react_1.default.Fragment, null,
|
|
254
|
+
renderDetailsHeader(icon, label),
|
|
255
|
+
react_1.default.createElement("dl", { className: "max-h-72 space-y-3 overflow-y-auto" }, changes.map(renderChangeDetails))) }));
|
|
256
|
+
};
|
|
257
|
+
var renderDeleted = function () {
|
|
258
|
+
var icon = react_1.default.createElement(outline_1.TrashIcon, { "aria-hidden": "true", className: "h-4 w-4 shrink-0" });
|
|
259
|
+
return (react_1.default.createElement(ActivityLogRow, { key: "deleted", label: "Deleted", icon: icon, meta: renderMeta(), darkMode: darkMode, summary: react_1.default.createElement("span", { className: "block truncate text-xs ".concat(muted) }, changes.length
|
|
260
|
+
? "".concat(changes.length, " deleted value").concat(changes.length === 1 ? "" : "s")
|
|
261
|
+
: "No field values recorded."), details: react_1.default.createElement(react_1.default.Fragment, null,
|
|
262
|
+
renderDetailsHeader(icon, "Deleted"),
|
|
263
|
+
changes.length ? (react_1.default.createElement("dl", { className: "max-h-72 space-y-2 overflow-y-auto" }, changes.map(function (change) {
|
|
264
|
+
var _a;
|
|
265
|
+
var field = handleField(change.columnId);
|
|
266
|
+
return (react_1.default.createElement("div", { key: change.columnId },
|
|
267
|
+
react_1.default.createElement("dt", { className: "flex items-center gap-2 text-xs ".concat(muted) },
|
|
268
|
+
renderFieldIcon(field === null || field === void 0 ? void 0 : field.type), (_a = field === null || field === void 0 ? void 0 : field.name) !== null && _a !== void 0 ? _a : change.columnId),
|
|
269
|
+
react_1.default.createElement("dd", { className: "mt-0.5" }, renderValue(change.oldValue !== undefined
|
|
270
|
+
? change.oldValue
|
|
271
|
+
: change.newValue, "full", field, darkMode, props.personName))));
|
|
272
|
+
}))) : (react_1.default.createElement("p", { className: muted }, "No field values recorded."))) }));
|
|
273
|
+
};
|
|
274
|
+
var renderRows = function () {
|
|
275
|
+
var _a;
|
|
276
|
+
if (record.type === "delete")
|
|
277
|
+
return [renderDeleted()];
|
|
278
|
+
if (changes.length > 1)
|
|
279
|
+
return [renderGroup()];
|
|
280
|
+
if (changes.length)
|
|
281
|
+
return [renderChange(changes[0])];
|
|
282
|
+
var label = record.type === "create" ? "Created" : ((_a = record.type) !== null && _a !== void 0 ? _a : "Activity");
|
|
283
|
+
var icon = record.type === "create" ? (react_1.default.createElement(outline_1.PlusCircleIcon, { "aria-hidden": "true", className: "h-4 w-4 shrink-0" })) : (renderFieldIcon());
|
|
284
|
+
return [
|
|
285
|
+
react_1.default.createElement(ActivityLogRow, { key: "empty", label: label, icon: icon, meta: renderMeta(), darkMode: darkMode, summary: react_1.default.createElement("span", { className: muted }, "No field changes recorded."), details: react_1.default.createElement(react_1.default.Fragment, null,
|
|
286
|
+
renderDetailsHeader(icon, label),
|
|
287
|
+
react_1.default.createElement("p", { className: muted }, "No field changes recorded.")) }),
|
|
288
|
+
];
|
|
289
|
+
};
|
|
290
|
+
return (react_1.default.createElement("li", { className: "border-b last:border-b-0 ".concat(darkMode ? "border-gray-700" : "border-gray-200") },
|
|
291
|
+
props.recordHeader && (react_1.default.createElement("div", { className: "px-3 pt-2" }, props.recordHeader)),
|
|
292
|
+
react_1.default.createElement("ul", null, renderRows())));
|
|
90
293
|
};
|
|
91
|
-
exports.
|
|
294
|
+
exports.ActivityLogRows = ActivityLogRows;
|
|
92
295
|
//# sourceMappingURL=activityChanges.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activityChanges.js","sourceRoot":"","sources":["../../../../src/components/data/dataTemplate/activityChanges.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"activityChanges.js","sourceRoot":"","sources":["../../../../src/components/data/dataTemplate/activityChanges.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Query } from "../readQuery";
|
|
3
3
|
import { ActivityLog } from "./dataStateModel";
|
|
4
|
-
import { DevSettings } from "./model";
|
|
4
|
+
import { DataStructure, DevSettings } from "./model";
|
|
5
5
|
interface Props {
|
|
6
6
|
title: string;
|
|
7
7
|
devSettings: DevSettings;
|
|
@@ -12,6 +12,8 @@ interface Props {
|
|
|
12
12
|
initialTab?: "comments" | "logs";
|
|
13
13
|
recordTitleColumn?: string;
|
|
14
14
|
recordQuery?: Query[];
|
|
15
|
+
/** Collection schema, used to show field names and type icons in logs. */
|
|
16
|
+
model?: DataStructure[];
|
|
15
17
|
onOpenRecord?: (id: string) => void;
|
|
16
18
|
}
|
|
17
19
|
export declare const ActivityModal: (props: Props) => React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activityModal.d.ts","sourceRoot":"","sources":["../../../../src/components/data/dataTemplate/activityModal.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"activityModal.d.ts","sourceRoot":"","sources":["../../../../src/components/data/dataTemplate/activityModal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGrC,OAAO,EACL,WAAW,EAGZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAOrD,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;IACtB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAeD,eAAO,MAAM,aAAa,UAAW,KAAK,sBAkBzC,CAAC"}
|
|
@@ -83,7 +83,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
83
83
|
};
|
|
84
84
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
85
85
|
exports.ActivityModal = void 0;
|
|
86
|
-
var solid_1 = require("@heroicons/react/24/solid");
|
|
87
86
|
var axios_1 = __importDefault(require("axios"));
|
|
88
87
|
var react_1 = __importStar(require("react"));
|
|
89
88
|
var uuid_1 = require("uuid");
|
|
@@ -432,43 +431,42 @@ var ActivityPanel = function (props) {
|
|
|
432
431
|
setDeleteId(id);
|
|
433
432
|
} }, "Delete"))));
|
|
434
433
|
};
|
|
434
|
+
var renderRecordTitle = function (record) {
|
|
435
|
+
var _a;
|
|
436
|
+
return record.itemId ? (props.onOpenRecord && recordTitles[record.itemId] ? (react_1.default.createElement("button", { type: "button", className: "text-left text-xs font-medium text-primary-500 break-words", onClick: function (event) {
|
|
437
|
+
var _a;
|
|
438
|
+
event.stopPropagation();
|
|
439
|
+
(_a = props.onOpenRecord) === null || _a === void 0 ? void 0 : _a.call(props, record.itemId);
|
|
440
|
+
} }, recordTitles[record.itemId])) : (react_1.default.createElement("p", { className: "break-words text-xs text-gray-500" }, (_a = recordTitles[record.itemId]) !== null && _a !== void 0 ? _a : "Data ".concat(record.itemId, " (unavailable)")))) : (react_1.default.createElement("p", { className: "text-xs text-gray-500" }, "Collection discussion"));
|
|
441
|
+
};
|
|
435
442
|
var renderFeedData = function (records) {
|
|
436
443
|
return records.map(function (record) {
|
|
437
|
-
var _a
|
|
444
|
+
var _a;
|
|
438
445
|
var name = handleAuthorName(record.userId);
|
|
439
446
|
var date = record.createdAt ? (0, dayjs_1.default)(record.createdAt) : null;
|
|
440
|
-
var count = (0, activityChanges_1.handleActivityChanges)(record).length;
|
|
441
|
-
var action = record.type === "update"
|
|
442
|
-
? "updated ".concat(count, " field").concat(count === 1 ? "" : "s")
|
|
443
|
-
: record.type === "create"
|
|
444
|
-
? "created this record"
|
|
445
|
-
: record.type === "delete"
|
|
446
|
-
? "deleted this record"
|
|
447
|
-
: ((_a = record.type) !== null && _a !== void 0 ? _a : "Activity");
|
|
448
447
|
return {
|
|
449
|
-
id: (
|
|
448
|
+
id: (_a = record._id) !== null && _a !== void 0 ? _a : record.id,
|
|
450
449
|
desc: null,
|
|
451
450
|
title: (react_1.default.createElement("span", { className: "flex flex-wrap items-baseline gap-x-3 gap-y-1" },
|
|
452
|
-
react_1.default.createElement("span", null,
|
|
453
|
-
? name
|
|
454
|
-
: "".concat(name).concat(record.userRole ? " (".concat(record.userRole, ")") : "", " ").concat(action)),
|
|
451
|
+
react_1.default.createElement("span", null, name),
|
|
455
452
|
(date === null || date === void 0 ? void 0 : date.isValid()) && (react_1.default.createElement("time", { className: "text-xs font-normal ".concat(props.darkMode ? "text-gray-400" : "text-gray-500"), dateTime: date.toISOString(), title: date.format("YYYY-MM-DD HH:mm:ss") }, date.format("MMM D, HH:mm"))))),
|
|
456
|
-
icon:
|
|
457
|
-
iconClass:
|
|
458
|
-
? ""
|
|
459
|
-
: props.darkMode
|
|
460
|
-
? "bg-gray-800"
|
|
461
|
-
: "bg-primary-50",
|
|
453
|
+
icon: (0, chatBase_1.renderChatAvatar)({ id: record.userId, name: name }, "h-7 w-7 sm:h-9 sm:w-9", props.darkMode),
|
|
454
|
+
iconClass: "",
|
|
462
455
|
content: (react_1.default.createElement("div", { className: "space-y-2" },
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
event.stopPropagation();
|
|
466
|
-
(_a = props.onOpenRecord) === null || _a === void 0 ? void 0 : _a.call(props, record.itemId);
|
|
467
|
-
} }, recordTitles[record.itemId])) : (react_1.default.createElement("p", { className: "break-words text-xs text-gray-500" }, (_c = recordTitles[record.itemId]) !== null && _c !== void 0 ? _c : "Data ".concat(record.itemId, " (unavailable)")))) : (react_1.default.createElement("p", { className: "text-xs text-gray-500" }, "Collection discussion")),
|
|
468
|
-
isComments ? (renderComment(record)) : (react_1.default.createElement(activityChanges_1.ActivityChanges, { key: (_d = record._id) !== null && _d !== void 0 ? _d : record.id, record: record, darkMode: props.darkMode, showRecord: false })))),
|
|
456
|
+
renderRecordTitle(record),
|
|
457
|
+
renderComment(record))),
|
|
469
458
|
};
|
|
470
459
|
});
|
|
471
460
|
};
|
|
461
|
+
// INFO: logs render as a flat, one-row-per-field list instead of feed cards
|
|
462
|
+
var renderLogList = function (records) {
|
|
463
|
+
return (records === null || records === void 0 ? void 0 : records.length) ? (react_1.default.createElement("ul", { "aria-label": "Activity logs",
|
|
464
|
+
// INFO: no overflow-hidden — it would clip the row details popovers
|
|
465
|
+
className: "rounded-lg border ".concat(props.darkMode ? "border-gray-700 bg-white/5" : "border-gray-200 bg-white") }, records.map(function (record) {
|
|
466
|
+
var _a;
|
|
467
|
+
return (react_1.default.createElement(activityChanges_1.ActivityLogRows, { key: (_a = record._id) !== null && _a !== void 0 ? _a : record.id, record: record, model: props.model, authorName: handleAuthorName(record.userId), personName: function (id) { return handleAuthorName(id); }, darkMode: props.darkMode, recordHeader: activeRecordId ? undefined : renderRecordTitle(record) }));
|
|
468
|
+
}))) : null;
|
|
469
|
+
};
|
|
472
470
|
if (!commentsEnabled && !logsEnabled)
|
|
473
471
|
return null;
|
|
474
472
|
var filters = __spreadArray(__spreadArray(__spreadArray([
|
|
@@ -478,7 +476,7 @@ var ActivityPanel = function (props) {
|
|
|
478
476
|
: []), true), ((_e = (isComments ? config === null || config === void 0 ? void 0 : config.commentQuery : config === null || config === void 0 ? void 0 : config.logQuery)) !== null && _e !== void 0 ? _e : []), true), (!isComments && logType !== "all"
|
|
479
477
|
? [{ type: "=", queryId: "type", value: logType }]
|
|
480
478
|
: []), true);
|
|
481
|
-
return (react_1.default.createElement("div", { className: "min-w-0 space-y-4 p-1 sm:p-3 ".concat(props.darkMode ? "text-gray-100" : "text-gray-800") },
|
|
479
|
+
return (react_1.default.createElement("div", { "data-activity-bounds": true, className: "min-w-0 space-y-4 p-1 sm:p-3 ".concat(props.darkMode ? "text-gray-100" : "text-gray-800") },
|
|
482
480
|
react_1.default.createElement("div", { className: "flex flex-wrap items-center justify-between gap-3" },
|
|
483
481
|
react_1.default.createElement(buttonGroup_1.ButtonGroup, { darkMode: props.darkMode, size: "small", selectedId: activeTab, selection: __spreadArray(__spreadArray([], (commentsEnabled ? [{ id: "comments", name: "Comments" }] : []), true), (logsEnabled ? [{ id: "logs", name: "Logs" }] : []), true), onClick: function (nextTab) {
|
|
484
482
|
if (nextTab === activeTab)
|
|
@@ -568,7 +566,11 @@ var ActivityPanel = function (props) {
|
|
|
568
566
|
}, devSettings: props.devSettings, edit: { allEditable: false, createBtn: false, deleteBtn: false }, sort: { sortId: "createdAt", type: "desc" }, organise: { hideSearch: true, darkMode: props.darkMode }, bareSettings: {
|
|
569
567
|
bareNewDTW: true,
|
|
570
568
|
bareListFilterQuery: filters,
|
|
569
|
+
bareListComponent: isComments
|
|
570
|
+
? undefined
|
|
571
|
+
: function (records) { return renderLogList(records); },
|
|
571
572
|
bareListHandleData: function (records) {
|
|
573
|
+
var _a;
|
|
572
574
|
setRowCount(records.length);
|
|
573
575
|
var itemIds = Array.from(new Set(records.map(function (record) { return record.itemId; }).filter(Boolean)));
|
|
574
576
|
setRecordIds(function (previous) {
|
|
@@ -576,7 +578,22 @@ var ActivityPanel = function (props) {
|
|
|
576
578
|
? previous
|
|
577
579
|
: itemIds;
|
|
578
580
|
});
|
|
579
|
-
|
|
581
|
+
// INFO: person and listPerson values are user ids too, so they are
|
|
582
|
+
// resolved to names with the authors instead of showing the raw id
|
|
583
|
+
var personColumns = new Set(((_a = props.model) !== null && _a !== void 0 ? _a : [])
|
|
584
|
+
.filter(function (field) {
|
|
585
|
+
return ["person", "listPerson"].includes(field.type);
|
|
586
|
+
})
|
|
587
|
+
.map(function (field) { return field.id; }));
|
|
588
|
+
var personIds = records.flatMap(function (record) {
|
|
589
|
+
var _a;
|
|
590
|
+
return Object.values((_a = record.values) !== null && _a !== void 0 ? _a : {}).flatMap(function (value) {
|
|
591
|
+
return value && personColumns.has(value.columnId)
|
|
592
|
+
? [value.oldValue, value.newValue].flat()
|
|
593
|
+
: [];
|
|
594
|
+
});
|
|
595
|
+
});
|
|
596
|
+
var ids = Array.from(new Set(__spreadArray(__spreadArray([], records.map(function (record) { return record.userId; }), true), personIds, true).filter(function (id) { return typeof id === "string" && id; })));
|
|
580
597
|
setAuthorIds(function (previous) {
|
|
581
598
|
return JSON.stringify(previous) === JSON.stringify(ids) ? previous : ids;
|
|
582
599
|
});
|