@haneinfo/frontend-instances 0.0.0-stage → 0.2.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/LICENSE +14 -0
- package/README.md +72 -2
- package/agent-guide.md +39 -0
- package/dist/client.d.ts +63 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +465 -0
- package/dist/client.js.map +1 -0
- package/dist/contracts.d.ts +239 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +102 -0
- package/dist/contracts.js.map +1 -0
- package/dist/query.d.ts +20 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +73 -0
- package/dist/query.js.map +1 -0
- package/dist/server.d.ts +41 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +189 -0
- package/dist/server.js.map +1 -0
- package/package.json +57 -3
package/dist/client.js
ADDED
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { Button, Input, ListPagination } from '@haneinfo/frontend-shell';
|
|
4
|
+
import { useEffect, useId, useRef, useState } from 'react';
|
|
5
|
+
import { operators, } from './contracts.js';
|
|
6
|
+
import { canPoll, dateRange, fieldValue, importMapping, listHref, textValue } from './query.js';
|
|
7
|
+
const box = 'rounded-md border bg-card p-4';
|
|
8
|
+
const selectClass = 'min-w-0 rounded-md border bg-background px-3 py-2 text-foreground';
|
|
9
|
+
class RequestFailure extends Error {
|
|
10
|
+
constructor(reason) {
|
|
11
|
+
super(reason.key);
|
|
12
|
+
this.reason = reason;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
async function call(action, request) {
|
|
16
|
+
const result = await action(request);
|
|
17
|
+
if (result.error)
|
|
18
|
+
throw new RequestFailure(result.error);
|
|
19
|
+
return result.data;
|
|
20
|
+
}
|
|
21
|
+
function useTask() {
|
|
22
|
+
const lock = useRef(false);
|
|
23
|
+
const [pending, setPending] = useState(false);
|
|
24
|
+
const [error, setError] = useState();
|
|
25
|
+
async function run(work) {
|
|
26
|
+
if (lock.current)
|
|
27
|
+
return;
|
|
28
|
+
lock.current = true;
|
|
29
|
+
setPending(true);
|
|
30
|
+
setError(undefined);
|
|
31
|
+
try {
|
|
32
|
+
await work();
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
setError(error instanceof RequestFailure
|
|
36
|
+
? error.reason
|
|
37
|
+
: {
|
|
38
|
+
key: error instanceof Error && error.message === 'invalidInput'
|
|
39
|
+
? 'invalidInput'
|
|
40
|
+
: 'requestFailed',
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
lock.current = false;
|
|
45
|
+
setPending(false);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return { pending, error, run };
|
|
49
|
+
}
|
|
50
|
+
function ErrorMessage({ error, labels }) {
|
|
51
|
+
return error ? (_jsxs("p", { role: "alert", className: "break-words text-destructive", children: [labels[error.key], error.message && `: ${error.message}`] })) : null;
|
|
52
|
+
}
|
|
53
|
+
const inaccessible = (error) => error && ['unauthorized', 'forbidden', 'notFound'].includes(error.key);
|
|
54
|
+
function labelOf(field, labels) {
|
|
55
|
+
const system = {
|
|
56
|
+
$state: 'state',
|
|
57
|
+
$number: 'number',
|
|
58
|
+
$submitterId: 'submitter',
|
|
59
|
+
$createdAt: 'createdAt',
|
|
60
|
+
};
|
|
61
|
+
return system[field.id] ? labels[system[field.id]] : field.label;
|
|
62
|
+
}
|
|
63
|
+
function newRule(fields) {
|
|
64
|
+
return {
|
|
65
|
+
kind: 'PREDICATE',
|
|
66
|
+
operator: 'EQ',
|
|
67
|
+
left: { kind: 'FIELD', fieldId: fields[0]?.id ?? '' },
|
|
68
|
+
right: { kind: 'LITERAL', value: '' },
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export function FilterEditor({ condition, fields, labels, onChange, depth = 0, }) {
|
|
72
|
+
const t = labels;
|
|
73
|
+
if (condition.kind === 'GROUP')
|
|
74
|
+
return (_jsxs("fieldset", { className: "flex min-w-0 flex-col gap-3 rounded-md border p-3", children: [_jsx("legend", { className: "px-1 text-sm", children: t.filters }), _jsxs("select", { "aria-label": t.operator, className: selectClass, value: condition.operator, onChange: (e) => onChange({ ...condition, operator: e.target.value }), children: [_jsx("option", { value: "AND", children: t.AND }), _jsx("option", { value: "OR", children: t.OR })] }), condition.expressions.map((child, index) => (
|
|
75
|
+
// biome-ignore lint/suspicious/noArrayIndexKey: These controlled positional rows have no local input state.
|
|
76
|
+
_jsxs("div", { className: "flex min-w-0 flex-col gap-2", children: [_jsx(FilterEditor, { condition: child, fields: fields, labels: t, depth: depth + 1, onChange: (value) => onChange({
|
|
77
|
+
...condition,
|
|
78
|
+
expressions: condition.expressions.map((entry, i) => i === index ? value : entry),
|
|
79
|
+
}) }), _jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: () => onChange({
|
|
80
|
+
...condition,
|
|
81
|
+
expressions: condition.expressions.filter((_, i) => i !== index),
|
|
82
|
+
}), children: t.remove })] }, `${depth}-${index}`))), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Button, { type: "button", variant: "outline", disabled: !fields.length, onClick: () => onChange({ ...condition, expressions: [...condition.expressions, newRule(fields)] }), children: t.addRule }), depth < 4 && (_jsx(Button, { type: "button", variant: "outline", onClick: () => onChange({
|
|
83
|
+
...condition,
|
|
84
|
+
expressions: [
|
|
85
|
+
...condition.expressions,
|
|
86
|
+
{ kind: 'GROUP', operator: 'OR', expressions: [newRule(fields)] },
|
|
87
|
+
],
|
|
88
|
+
}), children: t.addGroup }))] })] }));
|
|
89
|
+
if (!editablePredicate(condition))
|
|
90
|
+
return _jsx("pre", { className: "whitespace-pre-wrap break-words", children: textValue(condition) });
|
|
91
|
+
const field = fields.find((f) => f.id === condition.left.fieldId);
|
|
92
|
+
const right = condition.right;
|
|
93
|
+
const value = Array.isArray(right)
|
|
94
|
+
? right.map((r) => String(r.value ?? '')).join('\n')
|
|
95
|
+
: String(right?.value ?? '');
|
|
96
|
+
let inputType = field?.type === 'number' ? 'number' : field?.type === 'date' ? 'date' : 'text';
|
|
97
|
+
if (field?.type === 'datetime')
|
|
98
|
+
inputType = 'datetime-local';
|
|
99
|
+
const shown = inputType === 'datetime-local' && value.endsWith('Z') ? value.slice(0, 23) : value;
|
|
100
|
+
return (_jsxs("div", { className: "grid min-w-0 gap-2 sm:grid-cols-3", children: [_jsx("select", { "aria-label": t.field, className: selectClass, value: field?.id ?? '', onChange: (e) => onChange({
|
|
101
|
+
...condition,
|
|
102
|
+
left: { kind: 'FIELD', fieldId: e.target.value },
|
|
103
|
+
right: { kind: 'LITERAL', value: '' },
|
|
104
|
+
}), children: fields.map((f) => (_jsx("option", { value: f.id, children: labelOf(f, t) }, f.id))) }), _jsx("select", { "aria-label": t.operator, className: selectClass, value: condition.operator, onChange: (e) => onChange({
|
|
105
|
+
...condition,
|
|
106
|
+
operator: e.target.value,
|
|
107
|
+
right: e.target.value === 'IN' ? [] : { kind: 'LITERAL', value: '' },
|
|
108
|
+
}), children: operators.map((op) => (_jsx("option", { value: op, children: t[op] }, op))) }), condition.operator !== 'NOT_EMPTY' &&
|
|
109
|
+
(condition.operator === 'IN' ? (_jsx("textarea", { className: selectClass, "aria-label": t.value, value: value, onChange: (e) => onChange({
|
|
110
|
+
...condition,
|
|
111
|
+
right: e.target.value.split('\n').map((v) => ({
|
|
112
|
+
kind: 'LITERAL',
|
|
113
|
+
value: field?.type === 'number' && v.trim() ? Number(v) : v,
|
|
114
|
+
})),
|
|
115
|
+
}) })) : (_jsx(Input, { type: inputType, step: "any", "aria-label": field?.type === 'datetime' ? `${t.value} (UTC)` : t.value, value: shown, onChange: (e) => onChange({
|
|
116
|
+
...condition,
|
|
117
|
+
right: {
|
|
118
|
+
kind: 'LITERAL',
|
|
119
|
+
value: field?.type === 'number' && e.target.value !== ''
|
|
120
|
+
? Number(e.target.value)
|
|
121
|
+
: e.target.value,
|
|
122
|
+
},
|
|
123
|
+
}) })))] }));
|
|
124
|
+
}
|
|
125
|
+
/** Normalizes datetime literals once, immediately before the API request. */
|
|
126
|
+
function editablePredicate(condition) {
|
|
127
|
+
const operands = Array.isArray(condition.right)
|
|
128
|
+
? condition.right
|
|
129
|
+
: condition.right
|
|
130
|
+
? [condition.right]
|
|
131
|
+
: [];
|
|
132
|
+
return condition.left?.kind === 'FIELD' && operands.every((right) => right.kind === 'LITERAL');
|
|
133
|
+
}
|
|
134
|
+
function prepareFilter(condition, fields) {
|
|
135
|
+
if (condition.kind === 'GROUP') {
|
|
136
|
+
const expressions = condition.expressions.flatMap((child) => {
|
|
137
|
+
const result = prepareFilter(child, fields);
|
|
138
|
+
return result ? [result] : [];
|
|
139
|
+
});
|
|
140
|
+
return expressions.length ? { ...condition, expressions } : undefined;
|
|
141
|
+
}
|
|
142
|
+
if (!editablePredicate(condition))
|
|
143
|
+
return condition;
|
|
144
|
+
const field = fields.find((f) => f.id === condition.left.fieldId);
|
|
145
|
+
if (!field?.filterable)
|
|
146
|
+
throw new Error('invalidInput');
|
|
147
|
+
if (condition.operator === 'NOT_EMPTY')
|
|
148
|
+
return { kind: 'PREDICATE', operator: condition.operator, left: condition.left };
|
|
149
|
+
const normalize = (literal) => ({
|
|
150
|
+
kind: 'LITERAL',
|
|
151
|
+
value: fieldValue(String(literal.value ?? ''), field),
|
|
152
|
+
});
|
|
153
|
+
if (!condition.right)
|
|
154
|
+
throw new Error('invalidInput');
|
|
155
|
+
return {
|
|
156
|
+
...condition,
|
|
157
|
+
right: Array.isArray(condition.right)
|
|
158
|
+
? condition.right.map(normalize)
|
|
159
|
+
: normalize(condition.right),
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
export { prepareFilter };
|
|
163
|
+
function Anchor({ href, children, className, }) {
|
|
164
|
+
return (_jsx("a", { href: href, className: className, children: children }));
|
|
165
|
+
}
|
|
166
|
+
export function ListClient({ fields, initial, initialQuery, views: initialViews, machineCode, basePath, labels: t, action, }) {
|
|
167
|
+
const task = useTask();
|
|
168
|
+
const limitId = useId();
|
|
169
|
+
const rangeId = useId();
|
|
170
|
+
const [query, setQuery] = useState(initialQuery);
|
|
171
|
+
const [result, setResult] = useState(initial);
|
|
172
|
+
const [filter, setFilter] = useState(initialQuery.filter ?? { kind: 'GROUP', operator: 'AND', expressions: [] });
|
|
173
|
+
const [sort, setSort] = useState(initialQuery.sort ?? []);
|
|
174
|
+
const [columns, setColumns] = useState(initialQuery.columns ?? fields.map((f) => f.id));
|
|
175
|
+
const [limit, setLimit] = useState(initialQuery.limit ?? 50);
|
|
176
|
+
const [views, setViews] = useState(initialViews);
|
|
177
|
+
const [name, setName] = useState('');
|
|
178
|
+
const [job, setJob] = useState();
|
|
179
|
+
const [format, setFormat] = useState('csv');
|
|
180
|
+
const dateFields = fields.filter((f) => f.filterable && ['date', 'datetime'].includes(f.type));
|
|
181
|
+
const [rangeField, setRangeField] = useState(dateFields[0]?.id ?? '');
|
|
182
|
+
const [from, setFrom] = useState(''), [to, setTo] = useState('');
|
|
183
|
+
if (inaccessible(task.error))
|
|
184
|
+
return _jsx(ErrorMessage, { error: task.error, labels: t });
|
|
185
|
+
const draft = () => ({ filter: prepareFilter(filter, fields), sort, columns, limit, offset: 0 });
|
|
186
|
+
const apply = async (next) => {
|
|
187
|
+
const data = await call(action, { kind: 'query', machineCode, query: next });
|
|
188
|
+
setResult(data);
|
|
189
|
+
setQuery(next);
|
|
190
|
+
};
|
|
191
|
+
return (_jsxs("div", { className: "flex min-w-0 flex-col gap-4", "aria-busy": task.pending, children: [_jsx(ErrorMessage, { error: task.error, labels: t }), task.pending && _jsx("p", { role: "status", children: t.loading }), _jsx("form", { className: `${box} flex flex-col gap-4`, onSubmit: (e) => {
|
|
192
|
+
e.preventDefault();
|
|
193
|
+
void task.run(() => apply(draft()));
|
|
194
|
+
}, children: _jsxs("fieldset", { disabled: task.pending, className: "flex min-w-0 flex-col gap-4", children: [_jsx(FilterEditor, { condition: filter, fields: fields.filter((f) => f.filterable), labels: t, onChange: setFilter }), !!dateFields.length && (_jsxs("fieldset", { className: "grid gap-2 rounded-md border p-3 sm:grid-cols-4", children: [_jsx("legend", { children: t.addRange }), _jsx("select", { "aria-label": `${t.addRange}: ${t.field}`, className: selectClass, value: rangeField, onChange: (e) => {
|
|
195
|
+
setRangeField(e.target.value);
|
|
196
|
+
setFrom('');
|
|
197
|
+
setTo('');
|
|
198
|
+
}, children: dateFields.map((f) => (_jsx("option", { value: f.id, children: labelOf(f, t) }, f.id))) }), _jsxs("label", { htmlFor: `${rangeId}-from`, className: "flex flex-col gap-1 text-sm", children: [_jsx("span", { children: t.rangeFrom }), _jsx(Input, { id: `${rangeId}-from`, "aria-label": t.rangeFrom, type: fields.find((f) => f.id === rangeField)?.type === 'datetime'
|
|
199
|
+
? 'datetime-local'
|
|
200
|
+
: 'date', value: from, onChange: (e) => setFrom(e.target.value) })] }), _jsxs("label", { htmlFor: `${rangeId}-to`, className: "flex flex-col gap-1 text-sm", children: [_jsx("span", { children: t.rangeTo }), _jsx(Input, { id: `${rangeId}-to`, "aria-label": t.rangeTo, type: fields.find((f) => f.id === rangeField)?.type === 'datetime'
|
|
201
|
+
? 'datetime-local'
|
|
202
|
+
: 'date', value: to, min: from, onChange: (e) => setTo(e.target.value) })] }), _jsx(Button, { variant: "outline", type: "button", disabled: !from || !to || from > to, onClick: () => {
|
|
203
|
+
const f = fields.find((f) => f.id === rangeField);
|
|
204
|
+
if (f) {
|
|
205
|
+
const range = dateRange(f, from, to);
|
|
206
|
+
setFilter((previous) => ({
|
|
207
|
+
kind: 'GROUP',
|
|
208
|
+
operator: 'AND',
|
|
209
|
+
expressions: [previous, range],
|
|
210
|
+
}));
|
|
211
|
+
}
|
|
212
|
+
}, children: t.addRange })] })), _jsxs("fieldset", { className: "flex flex-col gap-2", children: [_jsx("legend", { children: t.sort }), sort.map((entry, index) => (_jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx("select", { "aria-label": `${t.sort}: ${t.field}`, className: selectClass, value: entry.fieldId, onChange: (e) => setSort(sort.map((s, i) => (i === index ? { ...s, fieldId: e.target.value } : s))), children: fields
|
|
213
|
+
.filter((f) => f.sortable)
|
|
214
|
+
.map((f) => (_jsx("option", { value: f.id, disabled: f.id !== entry.fieldId && sort.some((s) => s.fieldId === f.id), children: labelOf(f, t) }, f.id))) }), _jsxs("select", { "aria-label": t.sort, className: selectClass, value: entry.direction, onChange: (e) => setSort(sort.map((s, i) => i === index ? { ...s, direction: e.target.value } : s)), children: [_jsx("option", { value: "asc", children: t.asc }), _jsx("option", { value: "desc", children: t.desc })] }), _jsx(Button, { type: "button", variant: "outline", onClick: () => setSort(sort.filter((_, i) => i !== index)), children: t.remove })] }, entry.fieldId))), _jsx(Button, { type: "button", variant: "outline", disabled: sort.length >= 8 || !fields.some((f) => f.sortable), onClick: () => {
|
|
215
|
+
const f = fields.find((f) => f.sortable && !sort.some((s) => s.fieldId === f.id));
|
|
216
|
+
if (f)
|
|
217
|
+
setSort([...sort, { fieldId: f.id, direction: 'asc' }]);
|
|
218
|
+
}, children: t.sort })] }), _jsxs("fieldset", { className: "flex flex-wrap gap-3", children: [_jsx("legend", { children: t.columns }), fields.map((f) => (_jsxs("label", { className: "flex items-center gap-2", children: [_jsx("input", { type: "checkbox", checked: columns.includes(f.id), onChange: (e) => setColumns(e.target.checked ? [...columns, f.id] : columns.filter((c) => c !== f.id)) }), labelOf(f, t)] }, f.id)))] }), _jsxs("label", { htmlFor: limitId, className: "flex items-center gap-2", children: [t.limit, _jsx(Input, { id: limitId, className: "w-24", type: "number", min: 1, max: 500, value: limit, onChange: (e) => setLimit(Number(e.target.value)) })] }), _jsx(Button, { type: "submit", disabled: !columns.length, children: t.apply })] }) }), _jsxs("section", { className: `${box} flex flex-col gap-3`, "aria-label": t.savedViews, children: [_jsx("h2", { className: "font-semibold", children: t.savedViews }), _jsxs("form", { className: "flex flex-wrap gap-2", onSubmit: (e) => {
|
|
219
|
+
e.preventDefault();
|
|
220
|
+
void task.run(async () => {
|
|
221
|
+
const view = await call(action, {
|
|
222
|
+
kind: 'saveView',
|
|
223
|
+
machineCode,
|
|
224
|
+
name,
|
|
225
|
+
query: draft(),
|
|
226
|
+
});
|
|
227
|
+
setViews([...views, view]);
|
|
228
|
+
setName('');
|
|
229
|
+
});
|
|
230
|
+
}, children: [_jsx(Input, { "aria-label": t.viewName, maxLength: 200, required: true, value: name, onChange: (e) => setName(e.target.value) }), _jsx(Button, { disabled: task.pending || !name.trim(), type: "submit", children: t.saveView })] }), views.map((view) => (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("span", { className: "break-all", children: view.name }), _jsxs("span", { className: "text-sm text-muted-foreground", children: [t[view.visibility], " ", view.roles.join(', ')] }), _jsx(Button, { type: "button", variant: "outline", disabled: task.pending, onClick: () => {
|
|
231
|
+
void task.run(async () => {
|
|
232
|
+
await apply(view.query);
|
|
233
|
+
setFilter(view.query.filter ?? { kind: 'GROUP', operator: 'AND', expressions: [] });
|
|
234
|
+
setSort(view.query.sort ?? []);
|
|
235
|
+
setColumns(view.query.columns ?? fields.map((f) => f.id));
|
|
236
|
+
setLimit(view.query.limit ?? 50);
|
|
237
|
+
});
|
|
238
|
+
}, children: t.apply }), view.canShare && (_jsx(ShareForm, { view: view, labels: t, disabled: task.pending, onShare: (visibility, roles) => {
|
|
239
|
+
void task.run(async () => {
|
|
240
|
+
await call(action, { kind: 'shareView', id: view.id, visibility, roles });
|
|
241
|
+
setViews(views.map((v) => (v.id === view.id ? { ...v, visibility, roles } : v)));
|
|
242
|
+
});
|
|
243
|
+
} }))] }, view.id)))] }), _jsxs("div", { className: "max-w-full overflow-x-auto rounded-md border", children: [_jsxs("table", { className: "w-full text-left text-sm", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { className: "p-3", children: t.open }), result.columns.map((id) => (_jsx("th", { className: "p-3", children: labelOf(fields.find((f) => f.id === id) ?? { id, label: id }, t) }, id)))] }) }), _jsx("tbody", { children: result.items.map((item) => (_jsxs("tr", { className: "border-t", children: [_jsx("td", { className: "p-3", children: _jsx("a", { className: "underline", href: `${basePath}/${encodeURIComponent(item.id)}`, children: item.number ?? t.open }) }), result.columns.map((id) => (_jsx("td", { className: "max-w-64 break-words p-3", children: textValue(id === '$submitterId'
|
|
244
|
+
? (item.submitterName ?? item.submitterId)
|
|
245
|
+
: item.values[id]) }, id)))] }, item.id))) })] }), !result.items.length && _jsx("p", { className: "p-4", children: t.empty })] }), _jsx(ListPagination, { page: Math.floor(result.offset / result.limit) + 1, totalPages: Math.max(1, Math.ceil(result.total / result.limit)), total: result.total, LinkComponent: Anchor, buildPageHref: (page) => listHref(basePath, { ...query, offset: (page - 1) * result.limit, limit: result.limit }), previousText: t.previous, nextText: t.next, infoText: `${t.total}: ${result.total}` }), _jsxs("form", { className: "flex flex-wrap items-center gap-2", onSubmit: (e) => {
|
|
246
|
+
e.preventDefault();
|
|
247
|
+
void task.run(async () => setJob(await call(action, { kind: 'export', machineCode, query, format })));
|
|
248
|
+
}, children: [_jsxs("select", { "aria-label": t.format, className: selectClass, value: format, onChange: (e) => setFormat(e.target.value), children: [_jsx("option", { value: "csv", children: t.csv }), _jsx("option", { value: "xlsx", children: t.xlsx })] }), _jsx(Button, { type: "submit", disabled: task.pending, children: t.export })] }), job && (_jsx(JobStatus, { initial: job, labels: t, action: action, downloadBase: `${basePath}/download` }, job.id))] }));
|
|
249
|
+
}
|
|
250
|
+
function ShareForm({ view, labels: t, disabled, onShare, }) {
|
|
251
|
+
const [visibility, setVisibility] = useState(view.visibility), [roles, setRoles] = useState(view.roles.join(', '));
|
|
252
|
+
return (_jsxs("form", { className: "flex flex-wrap gap-2", onSubmit: (e) => {
|
|
253
|
+
e.preventDefault();
|
|
254
|
+
onShare(visibility, roles
|
|
255
|
+
.split(',')
|
|
256
|
+
.map((r) => r.trim())
|
|
257
|
+
.filter(Boolean));
|
|
258
|
+
}, children: [_jsx("select", { "aria-label": t.share, className: selectClass, disabled: disabled, value: visibility, onChange: (e) => setVisibility(e.target.value), children: ['PRIVATE', 'ALL', 'ROLES'].map((value) => (_jsx("option", { value: value, children: t[value] }, value))) }), visibility === 'ROLES' && (_jsx(Input, { "aria-label": t.roles, required: true, value: roles, onChange: (e) => setRoles(e.target.value) })), _jsx(Button, { disabled: disabled, type: "submit", variant: "outline", children: t.share })] }));
|
|
259
|
+
}
|
|
260
|
+
function DataFields({ fields, data }) {
|
|
261
|
+
const flatten = (fields) => fields.flatMap((field) => (field.children ? flatten(field.children) : [field]));
|
|
262
|
+
const flattened = flatten(fields);
|
|
263
|
+
return (_jsx("dl", { className: "grid gap-3 sm:grid-cols-2", children: flattened
|
|
264
|
+
.filter((f) => (f.id ?? f.key) in data)
|
|
265
|
+
.map((field) => (_jsxs("div", { className: "min-w-0", children: [_jsx("dt", { className: "text-sm text-muted-foreground", children: field.label }), _jsx("dd", { className: "whitespace-pre-wrap break-words", children: textValue(data[field.id ?? field.key]) })] }, field.id ?? field.key))) }));
|
|
266
|
+
}
|
|
267
|
+
export function DetailClient({ id, data, fields, state, submitterId, submitterName, createdAt, initial, initialNumbers, labels: t, action, }) {
|
|
268
|
+
const task = useTask();
|
|
269
|
+
const [timeline, setTimeline] = useState(initial), [body, setBody] = useState('');
|
|
270
|
+
const [q, setQ] = useState(''), [people, setPeople] = useState(), [selected, setSelected] = useState('');
|
|
271
|
+
if (inaccessible(task.error))
|
|
272
|
+
return _jsx(ErrorMessage, { error: task.error, labels: t });
|
|
273
|
+
const loadTimeline = async (append) => {
|
|
274
|
+
const next = await call(action, {
|
|
275
|
+
kind: 'timeline',
|
|
276
|
+
id,
|
|
277
|
+
offset: append ? timeline.offset + timeline.items.length : 0,
|
|
278
|
+
});
|
|
279
|
+
setTimeline(append
|
|
280
|
+
? {
|
|
281
|
+
...next,
|
|
282
|
+
offset: 0,
|
|
283
|
+
items: [...timeline.items, ...next.items].filter((e, i, all) => all.findIndex((other) => other.id === e.id) === i),
|
|
284
|
+
}
|
|
285
|
+
: next);
|
|
286
|
+
};
|
|
287
|
+
const numbers = timeline.items.filter((e) => e.kind === 'NUMBER');
|
|
288
|
+
return (_jsxs("div", { className: "flex min-w-0 flex-col gap-4", "aria-busy": task.pending, children: [_jsx(ErrorMessage, { error: task.error, labels: t }), task.pending && _jsx("p", { role: "status", children: t.loading }), _jsxs("section", { className: `${box} flex flex-col gap-4`, children: [_jsxs("dl", { className: "grid gap-3 sm:grid-cols-2", children: [_jsxs("div", { children: [_jsx("dt", { children: t.state }), _jsx("dd", { children: state })] }), _jsxs("div", { children: [_jsx("dt", { children: t.number }), _jsx("dd", { children: initialNumbers?.length
|
|
289
|
+
? initialNumbers.join(', ')
|
|
290
|
+
: numbers.length
|
|
291
|
+
? numbers.map((e) => textValue(e.details.number)).join(', ')
|
|
292
|
+
: '—' })] }), _jsxs("div", { children: [_jsx("dt", { children: t.submitter }), _jsx("dd", { children: textValue(submitterName ?? submitterId) })] }), _jsxs("div", { children: [_jsx("dt", { children: t.createdAt }), _jsx("dd", { children: createdAt })] })] }), _jsx(DataFields, { fields: fields, data: data })] }), _jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [_jsx("p", { role: "status", children: timeline.following ? t.following : t.notFollowing }), _jsx(Button, { disabled: task.pending, type: "button", onClick: () => {
|
|
293
|
+
void task.run(async () => {
|
|
294
|
+
const next = await call(action, {
|
|
295
|
+
kind: 'follow',
|
|
296
|
+
id,
|
|
297
|
+
enabled: !timeline.following,
|
|
298
|
+
});
|
|
299
|
+
setTimeline({ ...timeline, following: next.following });
|
|
300
|
+
});
|
|
301
|
+
}, children: timeline.following ? t.unfollow : t.follow })] }), _jsxs("section", { className: `${box} flex flex-col gap-3`, "aria-label": t.timeline, children: [_jsx("h2", { className: "font-semibold", children: t.timeline }), _jsx("ol", { className: "flex flex-col gap-4", children: timeline.items.map((event) => (_jsx(TimelineItem, { event: event, labels: t }, event.id))) }), !timeline.items.length && _jsx("p", { children: t.empty }), timeline.hasMore && (_jsx(Button, { type: "button", variant: "outline", disabled: task.pending, onClick: () => {
|
|
302
|
+
void task.run(() => loadTimeline(true));
|
|
303
|
+
}, children: t.loadMore }))] }), _jsxs("form", { className: `${box} flex flex-col gap-3`, onSubmit: (e) => {
|
|
304
|
+
e.preventDefault();
|
|
305
|
+
void task.run(async () => {
|
|
306
|
+
await call(action, { kind: 'comment', id, body });
|
|
307
|
+
setBody('');
|
|
308
|
+
await loadTimeline(false);
|
|
309
|
+
});
|
|
310
|
+
}, children: [_jsxs("label", { className: "flex flex-col gap-2", children: [t.comment, _jsx("textarea", { required: true, "aria-label": t.comment, maxLength: 4000, className: `${selectClass} min-h-28`, value: body, onChange: (e) => setBody(e.target.value) })] }), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Input, { "aria-label": t.mentionSearch, maxLength: 200, value: q, onChange: (e) => setQ(e.target.value) }), _jsx(Button, { type: "button", variant: "outline", disabled: task.pending, onClick: () => {
|
|
311
|
+
void task.run(async () => {
|
|
312
|
+
const result = await call(action, {
|
|
313
|
+
kind: 'mentionable',
|
|
314
|
+
id,
|
|
315
|
+
q,
|
|
316
|
+
});
|
|
317
|
+
setPeople(result.items);
|
|
318
|
+
setSelected(result.items[0]?.id ?? '');
|
|
319
|
+
});
|
|
320
|
+
}, children: t.search })] }), people &&
|
|
321
|
+
(people.length ? (_jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx("select", { className: selectClass, "aria-label": t.mention, value: selected, onChange: (e) => setSelected(e.target.value), children: people.map((p) => (_jsx("option", { value: p.id, children: p.name ?? t.unnamed }, p.id))) }), _jsx(Button, { type: "button", disabled: task.pending || !selected, variant: "outline", onClick: () => setBody((value) => `${value}${value ? ' ' : ''}@{${selected}} `), children: t.mention })] })) : (_jsx("p", { children: t.noPeople }))), _jsx(Button, { type: "submit", disabled: task.pending || !body.trim() || body.length > 4000, children: t.sendComment })] })] }));
|
|
322
|
+
}
|
|
323
|
+
function TimelineItem({ event, labels: t }) {
|
|
324
|
+
return (_jsxs("li", { className: "min-w-0 border-l-2 pl-3", children: [_jsxs("p", { className: "text-sm text-muted-foreground", children: [_jsx("time", { dateTime: event.at, children: event.at }), " \u00B7 ", t[event.kind], " \u00B7 ", textValue(event.actorId)] }), event.kind === 'COMMENT' ? (_jsxs(_Fragment, { children: [_jsx("p", { className: "whitespace-pre-wrap break-words", children: textValue(event.details.body) }), event.details.isAiGenerated === true && (_jsx("strong", { className: "text-sm", children: t.aiGenerated }))] })) : (_jsx("p", { className: "whitespace-pre-wrap break-words", children: textValue(event.details) }))] }));
|
|
325
|
+
}
|
|
326
|
+
export function JobStatus({ initial, labels: t, action, downloadBase, onComplete, }) {
|
|
327
|
+
const [job, setJob] = useState(initial), [attempt, setAttempt] = useState(0), [stopped, setStopped] = useState(false);
|
|
328
|
+
const [error, setError] = useState();
|
|
329
|
+
const complete = useRef(onComplete);
|
|
330
|
+
complete.current = onComplete;
|
|
331
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: attempt is the explicit manual refresh signal.
|
|
332
|
+
useEffect(() => {
|
|
333
|
+
let active = true, timer;
|
|
334
|
+
let polls = 0;
|
|
335
|
+
setStopped(false);
|
|
336
|
+
setError(undefined);
|
|
337
|
+
const poll = async () => {
|
|
338
|
+
try {
|
|
339
|
+
const next = await call(action, { kind: 'job', id: initial.id });
|
|
340
|
+
if (!active)
|
|
341
|
+
return;
|
|
342
|
+
setJob(next);
|
|
343
|
+
if (!canPoll(next)) {
|
|
344
|
+
complete.current?.(next);
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
if (++polls >= 90) {
|
|
348
|
+
setStopped(true);
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
timer = setTimeout(poll, 2000);
|
|
352
|
+
}
|
|
353
|
+
catch (error) {
|
|
354
|
+
if (active) {
|
|
355
|
+
setError(error instanceof RequestFailure ? error.reason : { key: 'requestFailed' });
|
|
356
|
+
setStopped(true);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
if (canPoll(initial))
|
|
361
|
+
timer = setTimeout(poll, 2000);
|
|
362
|
+
else
|
|
363
|
+
complete.current?.(initial);
|
|
364
|
+
return () => {
|
|
365
|
+
active = false;
|
|
366
|
+
clearTimeout(timer);
|
|
367
|
+
};
|
|
368
|
+
}, [initial, action, attempt]);
|
|
369
|
+
if (inaccessible(error))
|
|
370
|
+
return _jsx(ErrorMessage, { error: error, labels: t });
|
|
371
|
+
return (_jsxs("section", { className: `${box} flex flex-col gap-2`, "aria-label": t.job, children: [_jsxs("p", { role: "status", children: [t.job, ": ", t[job.status], " (", Math.max(0, Math.min(100, job.progress)), "%)"] }), _jsx("progress", { "aria-label": t.job, value: Math.max(0, Math.min(100, job.progress)), max: 100, className: "w-full" }), _jsx(ErrorMessage, { error: error, labels: t }), job.lastError && (_jsx("p", { role: "alert", className: "break-words text-destructive", children: job.lastError })), stopped && (_jsxs("div", { children: [_jsx("p", { children: t.pollStopped }), _jsx(Button, { type: "button", variant: "outline", onClick: () => setAttempt(attempt + 1), children: t.retry })] })), job.status === 'SUCCEEDED' && job.result && (_jsx(JobReport, { result: job.result, labels: t, downloadBase: downloadBase }))] }));
|
|
372
|
+
}
|
|
373
|
+
export function JobReport({ result, labels: t, downloadBase, }) {
|
|
374
|
+
const failures = result.kind === 'preflight'
|
|
375
|
+
? (result.rows ?? []).filter((r) => r.errors.length)
|
|
376
|
+
: Array.isArray(result.failed)
|
|
377
|
+
? result.failed
|
|
378
|
+
: [];
|
|
379
|
+
return (_jsxs("div", { className: "flex min-w-0 flex-col gap-3", children: [_jsxs("div", { className: "flex flex-wrap gap-4", children: [_jsxs("span", { children: [t.total, ": ", result.total ?? result.rowCount ?? 0] }), result.kind === 'preflight' && (_jsxs("span", { children: [t.valid, ": ", result.valid ?? 0] })), result.kind === 'import' && (_jsxs("span", { children: [t.success, ": ", result.imported?.length ?? 0] })), result.kind !== 'export' && (_jsxs("span", { children: [t.failed, ": ", Array.isArray(result.failed) ? result.failed.length : (result.failed ?? 0)] }))] }), (result.errors ?? []).map((error) => (_jsxs("p", { className: "break-words text-destructive", children: [error.code, ": ", error.message] }, `${error.code}-${error.path}-${error.message}`))), !!failures.length && (_jsx("div", { className: "max-h-96 overflow-auto", children: _jsxs("table", { className: "w-full text-left text-sm", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: t.row }), _jsx("th", { children: t.value }), _jsx("th", { children: t.code }), _jsx("th", { children: t.reason })] }) }), _jsx("tbody", { children: failures.map((row) => (_jsxs("tr", { className: "border-t", children: [_jsx("td", { className: "p-2", children: row.rowNumber }), _jsx("td", { className: "max-w-64 break-words p-2", children: row.data ? textValue(row.data) : '—' }), _jsx("td", { className: "p-2", children: row.errors.map((e) => e.code).join(', ') }), _jsx("td", { className: "max-w-64 break-words p-2", children: row.errors.map((e) => e.message).join('; ') })] }, row.rowNumber))) })] }) })), result.downloadPath && (_jsx("a", { className: "underline", href: `${downloadBase}?${new URLSearchParams({ path: result.downloadPath })}`, children: result.kind === 'export' ? t.download : t.downloadErrors }))] }));
|
|
380
|
+
}
|
|
381
|
+
export function ImportClient({ machines, fields: initialFields, labels: t, action, uploadAction, downloadBase, }) {
|
|
382
|
+
const task = useTask();
|
|
383
|
+
const fileId = useId();
|
|
384
|
+
const [machine, setMachine] = useState(machines[0]?.code ?? ''), [fields, setFields] = useState(initialFields);
|
|
385
|
+
const [upload, setUpload] = useState();
|
|
386
|
+
const [targets, setTargets] = useState([]), [keys, setKeys] = useState([]);
|
|
387
|
+
const [preflight, setPreflight] = useState(), [completed, setCompleted] = useState(), [imported, setImported] = useState();
|
|
388
|
+
const [confirmed, setConfirmed] = useState(false);
|
|
389
|
+
const reset = () => {
|
|
390
|
+
setPreflight(undefined);
|
|
391
|
+
setCompleted(undefined);
|
|
392
|
+
setImported(undefined);
|
|
393
|
+
setConfirmed(false);
|
|
394
|
+
};
|
|
395
|
+
if (inaccessible(task.error))
|
|
396
|
+
return _jsx(ErrorMessage, { error: task.error, labels: t });
|
|
397
|
+
return (_jsxs("div", { className: "flex min-w-0 flex-col gap-4", "aria-busy": task.pending, children: [_jsx("p", { children: t.importHint }), _jsx(ErrorMessage, { error: task.error, labels: t }), task.pending && _jsx("p", { role: "status", children: t.loading }), _jsxs("label", { className: "flex flex-col gap-2", children: [t.machine, _jsx("select", { className: selectClass, disabled: task.pending, value: machine, onChange: (e) => {
|
|
398
|
+
const code = e.target.value;
|
|
399
|
+
void task.run(async () => {
|
|
400
|
+
const next = await call(action, {
|
|
401
|
+
kind: 'importFields',
|
|
402
|
+
machineCode: code,
|
|
403
|
+
});
|
|
404
|
+
setMachine(code);
|
|
405
|
+
setFields(next);
|
|
406
|
+
setUpload(undefined);
|
|
407
|
+
setTargets([]);
|
|
408
|
+
setKeys([]);
|
|
409
|
+
reset();
|
|
410
|
+
});
|
|
411
|
+
}, children: machines.map((m) => (_jsx("option", { value: m.code, children: m.label }, m.code))) })] }), _jsxs("form", { className: `${box} flex flex-col gap-3`, onSubmit: (e) => {
|
|
412
|
+
e.preventDefault();
|
|
413
|
+
const form = new FormData(e.currentTarget);
|
|
414
|
+
void task.run(async () => {
|
|
415
|
+
reset();
|
|
416
|
+
setUpload(undefined);
|
|
417
|
+
const result = await uploadAction(form);
|
|
418
|
+
if (result.error)
|
|
419
|
+
throw new RequestFailure(result.error);
|
|
420
|
+
const next = result.data;
|
|
421
|
+
setUpload(next);
|
|
422
|
+
setTargets(next.headers.map((header) => (fields.some((f) => f.key === header) ? header : '')));
|
|
423
|
+
setKeys([]);
|
|
424
|
+
});
|
|
425
|
+
}, children: [_jsxs("label", { htmlFor: fileId, className: "flex flex-col gap-2", children: [t.file, _jsx(Input, { id: fileId, name: "file", type: "file", accept: ".csv,.xlsx", required: true, disabled: task.pending, onChange: () => {
|
|
426
|
+
setUpload(undefined);
|
|
427
|
+
reset();
|
|
428
|
+
} })] }), _jsx(Button, { type: "submit", disabled: task.pending, children: t.readHeaders })] }), upload && (_jsx("form", { className: `${box} flex flex-col gap-4`, onSubmit: (e) => {
|
|
429
|
+
e.preventDefault();
|
|
430
|
+
void task.run(async () => {
|
|
431
|
+
const mapping = importMapping(upload.headers, targets, keys, fields);
|
|
432
|
+
reset();
|
|
433
|
+
setPreflight(await call(action, {
|
|
434
|
+
kind: 'preflight',
|
|
435
|
+
input: {
|
|
436
|
+
machineCode: machine,
|
|
437
|
+
format: upload.format,
|
|
438
|
+
contentBase64: upload.contentBase64,
|
|
439
|
+
...mapping,
|
|
440
|
+
},
|
|
441
|
+
}));
|
|
442
|
+
});
|
|
443
|
+
}, children: _jsxs("fieldset", { disabled: task.pending || !!preflight, className: "flex flex-col gap-3", children: [_jsx("legend", { className: "font-semibold", children: t.mapping }), upload.headers.map((header, index) => (_jsxs("label", { className: "grid gap-2 sm:grid-cols-2", children: [_jsx("span", { className: "break-all", children: header }), _jsxs("select", { "aria-label": header, className: selectClass, value: targets[index] ?? '', onChange: (e) => {
|
|
444
|
+
setTargets(targets.map((target, i) => (i === index ? e.target.value : target)));
|
|
445
|
+
setKeys([]);
|
|
446
|
+
}, children: [_jsx("option", { value: "", children: t.skip }), fields.map((f) => (_jsxs("option", { value: f.key, children: [f.label, " (", f.type, ")", f.required ? ` · ${t.required}` : ''] }, f.key)))] })] }, header))), _jsxs("fieldset", { className: "flex flex-wrap gap-3", children: [_jsx("legend", { children: t.duplicateKey }), _jsx("p", { className: "w-full text-sm text-muted-foreground", children: t.duplicateHint }), fields
|
|
447
|
+
.filter((f) => targets.includes(f.key))
|
|
448
|
+
.map((f) => (_jsxs("label", { className: "flex items-center gap-2", children: [_jsx("input", { type: "checkbox", checked: keys.includes(f.key), disabled: !keys.includes(f.key) && keys.length >= 5, onChange: (e) => setKeys(e.target.checked ? [...keys, f.key] : keys.filter((key) => key !== f.key)) }), f.label] }, f.key)))] }), _jsx(Button, { type: "submit", children: t.preflight })] }) })), preflight && (_jsx(JobStatus, { initial: preflight, labels: t, action: action, downloadBase: downloadBase, onComplete: setCompleted })), completed && (_jsx(ImportConfirmation, { job: completed, labels: t, pending: task.pending || confirmed, onConfirm: () => {
|
|
449
|
+
void task.run(async () => {
|
|
450
|
+
const job = await call(action, {
|
|
451
|
+
kind: 'confirm',
|
|
452
|
+
id: completed.id,
|
|
453
|
+
confirmed: true,
|
|
454
|
+
});
|
|
455
|
+
setConfirmed(true);
|
|
456
|
+
setImported(job);
|
|
457
|
+
});
|
|
458
|
+
} })), imported && (_jsx(JobStatus, { initial: imported, labels: t, action: action, downloadBase: downloadBase }))] }));
|
|
459
|
+
}
|
|
460
|
+
export function ImportConfirmation({ job, labels: t, pending, onConfirm, }) {
|
|
461
|
+
if (job.status !== 'SUCCEEDED' || job.result?.kind !== 'preflight')
|
|
462
|
+
return null;
|
|
463
|
+
return (_jsxs("div", { className: `${box} flex flex-col gap-3`, children: [_jsx("p", { children: t.confirmHint }), _jsx(Button, { type: "button", disabled: pending || !!job.result.errors?.length || !job.result.valid, onClick: onConfirm, children: t.confirmImport })] }));
|
|
464
|
+
}
|
|
465
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":"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"}
|