@haneinfo/frontend-instances 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +141 -26
- package/agent-guide.md +12 -0
- package/dist/attachments-client.d.ts +7 -2
- package/dist/attachments-client.d.ts.map +1 -1
- package/dist/attachments-client.js +47 -11
- package/dist/attachments-client.js.map +1 -1
- package/dist/client.d.ts +12 -75
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +12 -463
- package/dist/client.js.map +1 -1
- package/dist/contracts.d.ts +167 -5
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +5 -98
- package/dist/contracts.js.map +1 -1
- package/dist/dashboard.d.ts +43 -0
- package/dist/dashboard.d.ts.map +1 -0
- package/dist/dashboard.js +72 -0
- package/dist/dashboard.js.map +1 -0
- package/dist/detail-client.d.ts +59 -0
- package/dist/detail-client.d.ts.map +1 -0
- package/dist/detail-client.js +253 -0
- package/dist/detail-client.js.map +1 -0
- package/dist/documents-client.d.ts +2 -1
- package/dist/documents-client.d.ts.map +1 -1
- package/dist/documents-client.js +13 -9
- package/dist/documents-client.js.map +1 -1
- package/dist/draft-client.d.ts +27 -3
- package/dist/draft-client.d.ts.map +1 -1
- package/dist/draft-client.js +107 -54
- package/dist/draft-client.js.map +1 -1
- package/dist/draft-session.d.ts +1 -0
- package/dist/draft-session.d.ts.map +1 -1
- package/dist/draft-session.js +2 -1
- package/dist/draft-session.js.map +1 -1
- package/dist/field-errors.d.ts +4 -0
- package/dist/field-errors.d.ts.map +1 -0
- package/dist/field-errors.js +25 -0
- package/dist/field-errors.js.map +1 -0
- package/dist/filter-editor.d.ts +18 -0
- package/dist/filter-editor.d.ts.map +1 -0
- package/dist/filter-editor.js +145 -0
- package/dist/filter-editor.js.map +1 -0
- package/dist/format.d.ts +152 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +402 -0
- package/dist/format.js.map +1 -0
- package/dist/import-client.d.ts +31 -0
- package/dist/import-client.d.ts.map +1 -0
- package/dist/import-client.js +179 -0
- package/dist/import-client.js.map +1 -0
- package/dist/instance-management-client.d.ts +23 -6
- package/dist/instance-management-client.d.ts.map +1 -1
- package/dist/instance-management-client.js +96 -70
- package/dist/instance-management-client.js.map +1 -1
- package/dist/labels.d.ts +10 -0
- package/dist/labels.d.ts.map +1 -0
- package/dist/labels.js +42 -0
- package/dist/labels.js.map +1 -0
- package/dist/list-client.d.ts +39 -0
- package/dist/list-client.d.ts.map +1 -0
- package/dist/list-client.js +403 -0
- package/dist/list-client.js.map +1 -0
- package/dist/list-query.d.ts +41 -0
- package/dist/list-query.d.ts.map +1 -0
- package/dist/list-query.js +171 -0
- package/dist/list-query.js.map +1 -0
- package/dist/management-client.d.ts +6 -2
- package/dist/management-client.d.ts.map +1 -1
- package/dist/management-client.js +113 -84
- package/dist/management-client.js.map +1 -1
- package/dist/messages.d.ts +4 -4
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +23 -5
- package/dist/messages.js.map +1 -1
- package/dist/process-client.d.ts +27 -0
- package/dist/process-client.d.ts.map +1 -0
- package/dist/process-client.js +129 -0
- package/dist/process-client.js.map +1 -0
- package/dist/process-messages.d.ts +73 -0
- package/dist/process-messages.d.ts.map +1 -0
- package/dist/process-messages.js +154 -0
- package/dist/process-messages.js.map +1 -0
- package/dist/server.d.ts +34 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +302 -50
- package/dist/server.js.map +1 -1
- package/dist/tasks-client.d.ts +38 -0
- package/dist/tasks-client.d.ts.map +1 -0
- package/dist/tasks-client.js +127 -0
- package/dist/tasks-client.js.map +1 -0
- package/dist/timeline.d.ts +24 -0
- package/dist/timeline.d.ts.map +1 -0
- package/dist/timeline.js +189 -0
- package/dist/timeline.js.map +1 -0
- package/dist/ui-messages.d.ts +284 -0
- package/dist/ui-messages.d.ts.map +1 -0
- package/dist/ui-messages.js +372 -0
- package/dist/ui-messages.js.map +1 -0
- package/dist/ui.d.ts +101 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +169 -0
- package/dist/ui.js.map +1 -0
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-management-client.js","sourceRoot":"","sources":["../src/instance-management-client.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"instance-management-client.js","sourceRoot":"","sources":["../src/instance-management-client.tsx"],"names":[],"mappings":"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"}
|
package/dist/labels.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Labels, type Translation } from './contracts.js';
|
|
2
|
+
import { type DisplayLocale } from './format.js';
|
|
3
|
+
/** The package's complete English or Traditional Chinese catalog for every label key. */
|
|
4
|
+
export declare function defaultLabels(locale?: DisplayLocale | string): Labels;
|
|
5
|
+
/**
|
|
6
|
+
* The host's translations with the package defaults behind them: a key the host does not translate
|
|
7
|
+
* (missing, empty or echoed back as the key itself) uses the default for the locale.
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolveLabels(t: Translation, locale?: DisplayLocale | string): Labels;
|
|
10
|
+
//# sourceMappingURL=labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,MAAM,EAAa,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEzF,OAAO,EAAE,KAAK,aAAa,EAAiB,MAAM,aAAa,CAAC;AAkBhE,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,MAAM,GAAE,aAAa,GAAG,MAAgB,GAAG,MAAM,CAG9E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAarF"}
|
package/dist/labels.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { attachmentMessages } from './attachment-messages.js';
|
|
2
|
+
import { labelKeys } from './contracts.js';
|
|
3
|
+
import { documentMessages } from './document-messages.js';
|
|
4
|
+
import { displayLocale } from './format.js';
|
|
5
|
+
import { instanceManagementMessages } from './instance-management-messages.js';
|
|
6
|
+
import { errorMessages, managementMessages } from './messages.js';
|
|
7
|
+
import { processMessages } from './process-messages.js';
|
|
8
|
+
import { coreMessages, uiMessages } from './ui-messages.js';
|
|
9
|
+
const sources = [
|
|
10
|
+
processMessages,
|
|
11
|
+
coreMessages,
|
|
12
|
+
uiMessages,
|
|
13
|
+
instanceManagementMessages,
|
|
14
|
+
documentMessages,
|
|
15
|
+
attachmentMessages,
|
|
16
|
+
errorMessages,
|
|
17
|
+
managementMessages,
|
|
18
|
+
];
|
|
19
|
+
const tuples = Object.assign({}, ...sources);
|
|
20
|
+
/** The package's complete English or Traditional Chinese catalog for every label key. */
|
|
21
|
+
export function defaultLabels(locale = 'zh-TW') {
|
|
22
|
+
const index = displayLocale(locale) === 'en' ? 0 : 1;
|
|
23
|
+
return Object.fromEntries(labelKeys.map((key) => [key, tuples[key]?.[index] ?? key]));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The host's translations with the package defaults behind them: a key the host does not translate
|
|
27
|
+
* (missing, empty or echoed back as the key itself) uses the default for the locale.
|
|
28
|
+
*/
|
|
29
|
+
export function resolveLabels(t, locale) {
|
|
30
|
+
const defaults = defaultLabels(locale);
|
|
31
|
+
return Object.fromEntries(labelKeys.map((key) => {
|
|
32
|
+
let value;
|
|
33
|
+
try {
|
|
34
|
+
value = t(key);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
value = undefined;
|
|
38
|
+
}
|
|
39
|
+
return [key, typeof value === 'string' && value && value !== key ? value : defaults[key]];
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAA8B,SAAS,EAAoB,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAsB,aAAa,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,OAAO,GAAG;IACd,eAAe;IACf,YAAY;IACZ,UAAU;IACV,0BAA0B;IAC1B,gBAAgB;IAChB,kBAAkB;IAClB,aAAa;IACb,kBAAkB;CACV,CAAC;AACX,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,OAAO,CAAgD,CAAC;AAE5F,yFAAyF;AACzF,MAAM,UAAU,aAAa,CAAC,SAAiC,OAAO;IACpE,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAW,CAAC;AAClG,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,CAAc,EAAE,MAA+B;IAC3E,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,WAAW,CACvB,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACpB,IAAI,KAAc,CAAC;QACnB,IAAI,CAAC;YACH,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,GAAG,SAAS,CAAC;QACpB,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,CACO,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type FormField, type InstanceAction, type InstanceQuery, type Labels, type LinkComponent, type ListResult, type QueryField, type SavedView, type StateOption } from './contracts.js';
|
|
2
|
+
export interface ListClientProps {
|
|
3
|
+
fields: QueryField[];
|
|
4
|
+
initial: ListResult;
|
|
5
|
+
initialQuery: InstanceQuery;
|
|
6
|
+
initialTagsAvailable?: boolean;
|
|
7
|
+
views: SavedView[];
|
|
8
|
+
machineCode: string;
|
|
9
|
+
basePath: string;
|
|
10
|
+
labels: Labels;
|
|
11
|
+
action: InstanceAction;
|
|
12
|
+
locale?: string;
|
|
13
|
+
timeZone?: string;
|
|
14
|
+
/** All states of the machine (label, tone) for the state chips; may be empty. */
|
|
15
|
+
states?: StateOption[];
|
|
16
|
+
/** The subject Form's fields, to render option labels in cells. */
|
|
17
|
+
formFields?: FormField[];
|
|
18
|
+
personField?: string;
|
|
19
|
+
showCreate?: boolean;
|
|
20
|
+
LinkComponent?: LinkComponent;
|
|
21
|
+
}
|
|
22
|
+
export declare function ListClient(props: ListClientProps): import("react").JSX.Element;
|
|
23
|
+
/** Starts a draft and opens it; the backend decides whether the caller may create one. */
|
|
24
|
+
export declare function CreateRecordButton({ machineCode, basePath, labels: t, action, variant, initialData, }: {
|
|
25
|
+
machineCode: string;
|
|
26
|
+
/** Initial draft data, e.g. from blankDraftData. */
|
|
27
|
+
initialData?: Record<string, unknown>;
|
|
28
|
+
basePath: string;
|
|
29
|
+
labels: Labels;
|
|
30
|
+
action: InstanceAction;
|
|
31
|
+
variant?: 'default' | 'outline';
|
|
32
|
+
}): import("react").JSX.Element;
|
|
33
|
+
export declare function ShareForm({ view, labels: t, disabled, onShare, }: {
|
|
34
|
+
view: SavedView;
|
|
35
|
+
labels: Labels;
|
|
36
|
+
disabled: boolean;
|
|
37
|
+
onShare: (visibility: SavedView['visibility'], roles: string[]) => void;
|
|
38
|
+
}): import("react").JSX.Element;
|
|
39
|
+
//# sourceMappingURL=list-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-client.d.ts","sourceRoot":"","sources":["../src/list-client.tsx"],"names":[],"mappings":"AAqDA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,aAAa,EAElB,KAAK,MAAM,EACX,KAAK,aAAa,EAElB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AAqCxB,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,EAAE,UAAU,CAAC;IACpB,YAAY,EAAE,aAAa,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,mEAAmE;IACnE,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,+BA8xBhD;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,QAAQ,EACR,MAAM,EAAE,CAAC,EACT,MAAM,EACN,OAAmB,EACnB,WAAW,GACZ,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACjC,+BAyBA;AAyhBD,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,MAAM,EAAE,CAAC,EACT,QAAQ,EACR,OAAO,GACR,EAAE;IACD,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACzE,+BAgDA"}
|
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* The record list (draft 202610-a8d3 point 7): toolbar with exact-match search, state chips, saved
|
|
5
|
+
* views and a filter drawer; removable applied-filter chips; a table on wide screens and cards on
|
|
6
|
+
* narrow ones; skeleton rows while loading, two empty states, pagination and a "More" menu.
|
|
7
|
+
*/
|
|
8
|
+
import { Button, Checkbox, cn, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger, Input, Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, } from '@haneinfo/frontend-shell';
|
|
9
|
+
import { ArrowDown, ArrowUp, ArrowUpDown, ChevronDown, ChevronLeft, ChevronRight, FileDown, FileSpreadsheet, FileUp, Inbox, MoreHorizontal, Plus, Search, SearchX, SlidersHorizontal, Trash2, X, } from 'lucide-react';
|
|
10
|
+
import NextLink from 'next/link';
|
|
11
|
+
import { useId, useMemo, useRef, useState } from 'react';
|
|
12
|
+
import { call, ErrorMessage, useTask } from './action-client.js';
|
|
13
|
+
import { FilterEditor, labelOf, prepareFilter } from './filter-editor.js';
|
|
14
|
+
import { formatDateTime, formatFieldValue, formatNumber, fromZonedInput } from './format.js';
|
|
15
|
+
import { JobStatus } from './import-client.js';
|
|
16
|
+
import { queryWithTagsFallback, TagPicker } from './instance-management-client.js';
|
|
17
|
+
import { blankDraftData, composeFilter, conditionCount, defaultColumns, emptyGroup, personFieldOf, queryIdentity, searchFieldsOf, splitFilter, } from './list-query.js';
|
|
18
|
+
import { dateRange, listHref } from './query.js';
|
|
19
|
+
import { Chip, DateTimeText, EmptyState, ErrorState, fillText, NativeSelect, Skeleton, StateBadge, Tag, ToneDot, touch, } from './ui.js';
|
|
20
|
+
const LIMITS = [10, 25, 50, 100, 200, 500];
|
|
21
|
+
const inaccessible = (error) => error &&
|
|
22
|
+
['unauthorized', 'forbidden', 'notFound', 'FORBIDDEN', 'INSTANCE_NOT_FOUND'].includes(error.key);
|
|
23
|
+
export function ListClient(props) {
|
|
24
|
+
const { fields, initial, initialQuery, initialTagsAvailable = true, machineCode, basePath, labels: t, action, locale = 'zh-TW', timeZone = 'Asia/Taipei', states = [], formFields = [], showCreate = false, LinkComponent = NextLink, } = props;
|
|
25
|
+
const task = useTask();
|
|
26
|
+
const searchId = useId();
|
|
27
|
+
// The numbered data field repeats $number, so the search box names it only once.
|
|
28
|
+
const searchFields = useMemo(() => searchFieldsOf(fields).filter((field) => !formFields.some((form) => form.numbered && (form.id ?? form.key) === field.dataKey)), [fields, formFields]);
|
|
29
|
+
const columnsDefault = useMemo(() => defaultColumns(fields, props.personField), [fields, props.personField]);
|
|
30
|
+
const person = personFieldOf(fields, props.personField);
|
|
31
|
+
const [query, setQuery] = useState(initialQuery);
|
|
32
|
+
const [result, setResult] = useState(initial);
|
|
33
|
+
const [tagsAvailable, setTagsAvailable] = useState(initialTagsAvailable);
|
|
34
|
+
const [views, setViews] = useState(props.views);
|
|
35
|
+
const parts = splitFilter(query.filter, searchFields);
|
|
36
|
+
const [searchText, setSearchText] = useState(parts.search);
|
|
37
|
+
const [drawer, setDrawer] = useState(false);
|
|
38
|
+
const [saveOpen, setSaveOpen] = useState(false);
|
|
39
|
+
const [job, setJob] = useState();
|
|
40
|
+
const [announcement, setAnnouncement] = useState('');
|
|
41
|
+
const knownStates = useMemo(() => {
|
|
42
|
+
const map = new Map(states.map((state) => [state.key, state]));
|
|
43
|
+
for (const item of result.items)
|
|
44
|
+
if (!map.has(item.state) && item.stateLabel)
|
|
45
|
+
map.set(item.state, {
|
|
46
|
+
key: item.state,
|
|
47
|
+
label: item.stateLabel,
|
|
48
|
+
tone: item.stateTone ?? 'neutral',
|
|
49
|
+
});
|
|
50
|
+
return map;
|
|
51
|
+
}, [states, result.items]);
|
|
52
|
+
if (inaccessible(task.error))
|
|
53
|
+
return (_jsx(ErrorState, { title: task.error?.key === 'unauthorized' ? t.signInTitle : t.forbiddenTitle, description: t[task.error?.key ?? 'requestFailed'] }));
|
|
54
|
+
const apply = (next, message = t.listUpdated) => task.run(async () => {
|
|
55
|
+
const prepared = {
|
|
56
|
+
...next,
|
|
57
|
+
columns: next.columns ?? columnsDefault,
|
|
58
|
+
filter: next.filter ? prepareFilter(next.filter, fields) : undefined,
|
|
59
|
+
};
|
|
60
|
+
if (!prepared.filter)
|
|
61
|
+
delete prepared.filter;
|
|
62
|
+
const response = await queryWithTagsFallback(action, machineCode, prepared);
|
|
63
|
+
const applied = { ...response, query: { ...response.query, columns: next.columns } };
|
|
64
|
+
if (!applied.query.columns)
|
|
65
|
+
delete applied.query.columns;
|
|
66
|
+
if (!applied.available)
|
|
67
|
+
setTagsAvailable(false);
|
|
68
|
+
setResult(applied.result);
|
|
69
|
+
setQuery(applied.query);
|
|
70
|
+
setSearchText(splitFilter(applied.query.filter, searchFields).search);
|
|
71
|
+
setAnnouncement(`${message} ${fillText(t.resultCount, { count: formatNumber(applied.result.total, locale) })}`);
|
|
72
|
+
try {
|
|
73
|
+
window.history.replaceState(window.history.state, '', listHref(basePath, applied.query));
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
/* URL sync is a convenience only. */
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
const withParts = (change, base = query) => {
|
|
80
|
+
const filter = composeFilter({ ...splitFilter(base.filter, searchFields), ...change }, searchFields);
|
|
81
|
+
const { filter: _old, ...rest } = base;
|
|
82
|
+
return { ...rest, ...(filter ? { filter } : {}), offset: 0 };
|
|
83
|
+
};
|
|
84
|
+
const columns = (query.columns ?? columnsDefault).filter((id) => id !== '$number');
|
|
85
|
+
const visibleColumns = result.columns.filter((id) => id !== '$number');
|
|
86
|
+
const limit = result.limit || query.limit || 50;
|
|
87
|
+
const page = Math.floor(result.offset / limit) + 1;
|
|
88
|
+
const pages = Math.max(1, Math.ceil(result.total / limit));
|
|
89
|
+
const archived = query.archived ?? 'EXCLUDE';
|
|
90
|
+
const filtered = !!query.filter || !!query.tags?.length || archived !== 'EXCLUDE';
|
|
91
|
+
const currentView = views.find((view) => queryIdentity(view.query) === queryIdentity(query));
|
|
92
|
+
const fieldById = (id) => fields.find((field) => field.id === id);
|
|
93
|
+
const formFieldOf = (id) => {
|
|
94
|
+
const key = fieldById(id)?.dataKey;
|
|
95
|
+
return key ? formFields.find((field) => (field.id ?? field.key) === key) : undefined;
|
|
96
|
+
};
|
|
97
|
+
const stateOf = (item) => {
|
|
98
|
+
const known = knownStates.get(item.state);
|
|
99
|
+
return {
|
|
100
|
+
label: item.stateLabel ?? known?.label ?? item.state,
|
|
101
|
+
tone: item.stateTone ?? known?.tone,
|
|
102
|
+
routing: known?.type === 'CHOICE',
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
const cell = (item, id) => {
|
|
106
|
+
if (id === '$state') {
|
|
107
|
+
const state = stateOf(item);
|
|
108
|
+
return _jsx(StateBadge, { label: state.label, tone: state.tone, routing: state.routing });
|
|
109
|
+
}
|
|
110
|
+
if (id === '$submitterId')
|
|
111
|
+
return item.submitterName ?? (item.submitterId ? t.unknownPerson : '—');
|
|
112
|
+
if (id === '$createdAt') {
|
|
113
|
+
const text = formatDateTime(item.createdAt, { locale, timeZone });
|
|
114
|
+
return text ? (_jsx(DateTimeText, { iso: new Date(item.createdAt).toISOString(), text: text, full: formatDateTime(item.createdAt, { locale, timeZone, full: true }) ?? text })) : ('—');
|
|
115
|
+
}
|
|
116
|
+
const field = fieldById(id);
|
|
117
|
+
const display = formatFieldValue(formFieldOf(id) ?? { type: field?.type ?? 'text' }, item.values[id], { locale, timeZone });
|
|
118
|
+
if (display.kind === 'empty')
|
|
119
|
+
return _jsx("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
120
|
+
if (display.kind === 'date' || display.kind === 'datetime')
|
|
121
|
+
return _jsx(DateTimeText, { iso: display.iso, text: display.text, full: display.full });
|
|
122
|
+
return (_jsx("span", { className: "line-clamp-2 [overflow-wrap:anywhere]", title: display.text, children: display.text }));
|
|
123
|
+
};
|
|
124
|
+
const title = (item) => item.number ?? t.untitledDraft;
|
|
125
|
+
const href = (item) => `${basePath}/${encodeURIComponent(item.id)}`;
|
|
126
|
+
const tags = (item) => item.tags?.length ? (_jsxs("span", { className: "flex flex-wrap gap-1", children: [item.tags.slice(0, 2).map((tag) => (_jsx(Tag, { children: tag }, tag))), item.tags.length > 2 && (_jsx("span", { className: "text-muted-foreground text-xs leading-5", title: item.tags.slice(2).join('、'), children: fillText(t.moreTags, { count: item.tags.length - 2 }) }))] })) : null;
|
|
127
|
+
const sortOf = (id) => query.sort?.find((entry) => entry.fieldId === id)?.direction;
|
|
128
|
+
const toggleSort = (id) => {
|
|
129
|
+
const current = query.sort?.[0]?.fieldId === id ? query.sort[0].direction : undefined;
|
|
130
|
+
const sort = current === 'asc'
|
|
131
|
+
? [{ fieldId: id, direction: 'desc' }]
|
|
132
|
+
: current === 'desc'
|
|
133
|
+
? []
|
|
134
|
+
: [{ fieldId: id, direction: 'asc' }];
|
|
135
|
+
void apply({ ...query, sort, offset: 0 });
|
|
136
|
+
};
|
|
137
|
+
const toggleState = (key) => void apply(withParts({
|
|
138
|
+
states: parts.states.includes(key)
|
|
139
|
+
? parts.states.filter((state) => state !== key)
|
|
140
|
+
: [...parts.states, key],
|
|
141
|
+
}));
|
|
142
|
+
const exportAs = (format) => void task.run(async () => {
|
|
143
|
+
setJob(await call(action, { kind: 'export', machineCode, query, format }));
|
|
144
|
+
setAnnouncement(t.exportStarted);
|
|
145
|
+
});
|
|
146
|
+
const chips = [];
|
|
147
|
+
if (parts.search)
|
|
148
|
+
chips.push({
|
|
149
|
+
key: 'search',
|
|
150
|
+
label: fillText(t.chipSearch, { value: parts.search }),
|
|
151
|
+
remove: () => void apply(withParts({ search: '' })),
|
|
152
|
+
});
|
|
153
|
+
if (parts.mine)
|
|
154
|
+
chips.push({
|
|
155
|
+
key: 'mine',
|
|
156
|
+
label: t.chipMine,
|
|
157
|
+
remove: () => void apply(withParts({ mine: false })),
|
|
158
|
+
});
|
|
159
|
+
for (const key of parts.states)
|
|
160
|
+
chips.push({
|
|
161
|
+
key: `state:${key}`,
|
|
162
|
+
label: fillText(t.chipState, { value: knownStates.get(key)?.label ?? t.unknownState }),
|
|
163
|
+
remove: () => toggleState(key),
|
|
164
|
+
});
|
|
165
|
+
for (const tag of query.tags ?? [])
|
|
166
|
+
chips.push({
|
|
167
|
+
key: `tag:${tag}`,
|
|
168
|
+
label: fillText(t.chipTag, { value: tag }),
|
|
169
|
+
remove: () => {
|
|
170
|
+
const rest = (query.tags ?? []).filter((value) => value !== tag);
|
|
171
|
+
void apply({ ...query, tags: rest.length ? rest : undefined, offset: 0 });
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
if (archived !== 'EXCLUDE')
|
|
175
|
+
chips.push({
|
|
176
|
+
key: 'archived',
|
|
177
|
+
label: t[archived],
|
|
178
|
+
remove: () => void apply({ ...query, archived: 'EXCLUDE', offset: 0 }),
|
|
179
|
+
});
|
|
180
|
+
if (parts.advanced.expressions.length)
|
|
181
|
+
chips.push({
|
|
182
|
+
key: 'advanced',
|
|
183
|
+
label: fillText(t.chipConditions, { count: conditionCount(parts.advanced) }),
|
|
184
|
+
remove: () => void apply(withParts({ advanced: emptyGroup() })),
|
|
185
|
+
});
|
|
186
|
+
const drawerCount = (parts.advanced.expressions.length ? 1 : 0) +
|
|
187
|
+
(query.tags?.length ? 1 : 0) +
|
|
188
|
+
(archived !== 'EXCLUDE' ? 1 : 0);
|
|
189
|
+
const clearAll = () => {
|
|
190
|
+
const { filter: _f, tags: _t, tagMatch: _m, ...rest } = query;
|
|
191
|
+
setSearchText('');
|
|
192
|
+
void apply({ ...rest, archived: 'EXCLUDE', offset: 0 });
|
|
193
|
+
};
|
|
194
|
+
const searchPlaceholder = fillText(t.searchPlaceholder, {
|
|
195
|
+
fields: searchFields
|
|
196
|
+
.map((field) => labelOf(field, t))
|
|
197
|
+
.join(locale.startsWith('en') ? ', ' : '、'),
|
|
198
|
+
});
|
|
199
|
+
const columnLabel = (id) => labelOf(fieldById(id) ?? { id, label: id }, t);
|
|
200
|
+
const from = result.total ? result.offset + 1 : 0;
|
|
201
|
+
const to = Math.min(result.offset + result.items.length, result.total);
|
|
202
|
+
return (
|
|
203
|
+
// Table or cards follow the width of the list itself (sidebar open or not), not the viewport.
|
|
204
|
+
_jsxs("div", { className: "@container flex min-w-0 flex-col gap-4", "aria-busy": task.pending, children: [_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [_jsx("h1", { className: "font-bold text-2xl tracking-tight", children: t.listTitle }), _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [showCreate && (_jsx(CreateRecordButton, { initialData: blankDraftData(formFields), machineCode: machineCode, basePath: basePath, labels: t, action: action })), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", className: touch, children: [_jsx(MoreHorizontal, { "aria-hidden": "true", "data-icon": "inline-start" }), t.moreMenu, _jsx(ChevronDown, { "aria-hidden": "true", "data-icon": "inline-end" })] }) }), _jsxs(DropdownMenuContent, { align: "end", className: "w-56", children: [_jsx(DropdownMenuItem, { asChild: true, className: "max-md:min-h-11", children: _jsxs(LinkComponent, { href: `${basePath}/import`, children: [_jsx(FileUp, { "aria-hidden": "true" }), t.importTitle] }) }), _jsxs(DropdownMenuItem, { className: "max-md:min-h-11", disabled: task.pending, onSelect: () => exportAs('csv'), children: [_jsx(FileDown, { "aria-hidden": "true" }), t.exportCsv] }), _jsxs(DropdownMenuItem, { className: "max-md:min-h-11", disabled: task.pending, onSelect: () => exportAs('xlsx'), children: [_jsx(FileSpreadsheet, { "aria-hidden": "true" }), t.exportXlsx] }), _jsx(DropdownMenuSeparator, {}), _jsx(DropdownMenuItem, { asChild: true, className: "max-md:min-h-11", children: _jsxs(LinkComponent, { href: `${basePath}/deleted`, children: [_jsx(Trash2, { "aria-hidden": "true" }), t.deletedLink] }) })] })] })] })] }), _jsxs("div", { className: "flex min-w-0 flex-col gap-3", children: [_jsxs("div", { className: "flex min-w-0 flex-col gap-2 @3xl:flex-row @3xl:items-center", children: [searchFields.length > 0 && (
|
|
205
|
+
// biome-ignore lint/a11y/useSemanticElements: <search> is not yet a React DOM element.
|
|
206
|
+
_jsxs("form", { role: "search", className: "relative min-w-0 flex-1", onSubmit: (event) => {
|
|
207
|
+
event.preventDefault();
|
|
208
|
+
void apply(withParts({ search: searchText }));
|
|
209
|
+
}, children: [_jsx("label", { htmlFor: searchId, className: "sr-only", children: t.searchLabel }), _jsx(Search, { "aria-hidden": "true", className: "pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { id: searchId, type: "search", value: searchText, placeholder: searchPlaceholder, maxLength: 200, enterKeyHint: "search", onChange: (event) => setSearchText(event.target.value), className: "h-9 pl-9 max-md:h-11 sm:pr-20" }), _jsx(Button, { type: "submit", size: "sm", variant: "secondary", disabled: task.pending, className: "absolute top-1/2 right-1 -translate-y-1/2 max-sm:hidden max-md:h-9", children: t.searchSubmit })] })), _jsxs("div", { className: "flex shrink-0 flex-wrap items-center gap-2", children: [_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", className: cn('max-w-64 justify-between', touch), children: [_jsx("span", { className: "truncate", children: fillText(t.currentView, { name: currentView?.name ?? t.defaultView }) }), _jsx(ChevronDown, { "aria-hidden": "true", "data-icon": "inline-end" })] }) }), _jsxs(DropdownMenuContent, { align: "end", className: "w-64", children: [_jsx(DropdownMenuLabel, { children: t.savedViews }), _jsxs(DropdownMenuRadioGroup, { value: currentView?.id ?? (filtered ? '' : '__default'), onValueChange: (value) => {
|
|
210
|
+
if (value === '__default') {
|
|
211
|
+
setSearchText('');
|
|
212
|
+
void apply({ columns: query.columns, limit: query.limit, offset: 0 });
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const view = views.find((candidate) => candidate.id === value);
|
|
216
|
+
if (view)
|
|
217
|
+
void apply({ ...view.query, offset: 0 });
|
|
218
|
+
}, children: [_jsx(DropdownMenuRadioItem, { value: "__default", className: "max-md:min-h-11", children: t.defaultView }), views.map((view) => (_jsx(DropdownMenuRadioItem, { value: view.id, className: "max-md:min-h-11", children: _jsx("span", { className: "min-w-0 truncate", children: view.name }) }, view.id)))] }), _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { className: "max-md:min-h-11", onSelect: () => setSaveOpen(true), children: [_jsx(Plus, { "aria-hidden": "true" }), t.saveCurrentView] })] })] }), _jsxs(Button, { variant: "outline", className: touch, onClick: () => setDrawer(true), "aria-haspopup": "dialog", children: [_jsx(SlidersHorizontal, { "aria-hidden": "true", "data-icon": "inline-start" }), t.filters, drawerCount > 0 && (_jsx("span", { className: "ml-1 rounded-full bg-primary px-1.5 text-primary-foreground text-xs tabular-nums leading-5", children: drawerCount }))] })] })] }), knownStates.size > 0 && (_jsxs("fieldset", { className: "min-w-0", children: [_jsx("legend", { className: "sr-only", children: t.stateFilterLabel }), _jsx("div", { className: "-mx-1 flex gap-2 overflow-x-auto px-1 pb-1 [scrollbar-width:thin] sm:flex-wrap sm:overflow-visible", children: [...knownStates.values()].map((state) => {
|
|
219
|
+
const pressed = parts.states.includes(state.key);
|
|
220
|
+
return (_jsxs("button", { type: "button", "aria-pressed": pressed, disabled: task.pending, onClick: () => toggleState(state.key), className: cn('inline-flex h-8 shrink-0 items-center gap-2 rounded-full border px-3 text-sm outline-none focus-visible:ring-3 focus-visible:ring-ring/50 disabled:opacity-50 max-md:h-11 motion-safe:transition-colors', pressed
|
|
221
|
+
? 'border-foreground bg-foreground text-background'
|
|
222
|
+
: 'bg-background text-foreground hover:bg-muted'), children: [_jsx(ToneDot, { tone: state.tone }), state.label] }, state.key));
|
|
223
|
+
}) })] })), chips.length > 0 && (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [chips.map((chip) => (_jsx(Chip, { removeLabel: fillText(t.removeFilter, { name: chip.label }), disabled: task.pending, onRemove: chip.remove, children: chip.label }, chip.key))), _jsx(Button, { variant: "link", size: "sm", className: touch, disabled: task.pending, onClick: clearAll, children: t.clearAll })] }))] }), _jsx("p", { role: "status", "aria-live": "polite", className: "sr-only", children: task.pending ? t.loading : announcement }), _jsx(ErrorMessage, { error: task.error, labels: t }), job && (_jsx(JobStatus, { initial: job, labels: t, action: action, downloadBase: `${basePath}/download` }, job.id)), _jsxs("section", { "aria-label": t.listTitle, className: "flex min-w-0 flex-col gap-3", children: [_jsx("div", { className: "flex flex-wrap items-center justify-between gap-2 text-muted-foreground text-sm", children: _jsx("span", { children: result.total
|
|
224
|
+
? fillText(t.resultRange, {
|
|
225
|
+
from: formatNumber(from, locale),
|
|
226
|
+
to: formatNumber(to, locale),
|
|
227
|
+
total: formatNumber(result.total, locale),
|
|
228
|
+
})
|
|
229
|
+
: fillText(t.resultCount, { count: 0 }) }) }), !task.pending && !result.items.length ? (filtered ? (_jsx(EmptyState, { icon: _jsx(SearchX, {}), title: t.noMatchTitle, description: t.noMatchHint, action: _jsx(Button, { variant: "outline", className: touch, onClick: clearAll, children: t.clearAll }) })) : (_jsx(EmptyState, { icon: _jsx(Inbox, {}), title: t.emptyTitle, description: t.emptyHint, action: showCreate ? (_jsx(CreateRecordButton, { initialData: blankDraftData(formFields), machineCode: machineCode, basePath: basePath, labels: t, action: action })) : undefined }))) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "hidden max-h-[calc(100dvh-14rem)] min-h-64 overflow-auto rounded-xl ring-1 ring-foreground/10 @3xl:block", children: _jsxs("table", { className: "w-full border-separate border-spacing-0 text-left text-sm", children: [_jsx("thead", { children: _jsxs("tr", { children: [['$number', ...visibleColumns].map((id) => {
|
|
230
|
+
const field = fieldById(id);
|
|
231
|
+
const direction = sortOf(id);
|
|
232
|
+
return (_jsx("th", { scope: "col", "aria-sort": direction === 'asc'
|
|
233
|
+
? 'ascending'
|
|
234
|
+
: direction === 'desc'
|
|
235
|
+
? 'descending'
|
|
236
|
+
: undefined, className: "sticky top-0 z-10 whitespace-nowrap border-b bg-muted px-3 py-2 font-medium", children: field?.sortable ? (_jsxs("button", { type: "button", className: "inline-flex items-center gap-1 rounded-sm outline-none hover:text-foreground focus-visible:ring-3 focus-visible:ring-ring/50", disabled: task.pending, onClick: () => toggleSort(id), "aria-label": fillText(t.sortBy, { field: columnLabel(id) }), children: [columnLabel(id), direction === 'asc' ? (_jsx(ArrowUp, { "aria-hidden": "true", className: "size-3.5" })) : direction === 'desc' ? (_jsx(ArrowDown, { "aria-hidden": "true", className: "size-3.5" })) : (_jsx(ArrowUpDown, { "aria-hidden": "true", className: "size-3.5 text-muted-foreground" }))] })) : (columnLabel(id)) }, id));
|
|
237
|
+
}), tagsAvailable && (_jsx("th", { scope: "col", className: "sticky top-0 z-10 border-b bg-muted px-3 py-2 font-medium", children: t.tags }))] }) }), _jsx("tbody", { children: task.pending
|
|
238
|
+
? Array.from({ length: Math.min(8, Math.max(3, result.items.length)) }, (_, row) => (
|
|
239
|
+
// biome-ignore lint/suspicious/noArrayIndexKey: placeholder rows.
|
|
240
|
+
_jsx("tr", { children: ['$number', ...visibleColumns, ...(tagsAvailable ? ['tags'] : [])].map((id) => (_jsx("td", { className: "border-b px-3 py-3", children: _jsx(Skeleton, { className: "h-4 w-24" }) }, id))) }, row)))
|
|
241
|
+
: result.items.map((item) => (_jsxs("tr", { className: "group cursor-pointer align-middle outline-ring hover:bg-muted/50 has-[a:focus-visible]:bg-muted/50 has-[a:focus-visible]:outline-2", onClick: (event) => {
|
|
242
|
+
if (event.target.closest('a,button'))
|
|
243
|
+
return;
|
|
244
|
+
event.currentTarget.querySelector('a')?.click();
|
|
245
|
+
}, children: [_jsx("td", { className: "whitespace-nowrap border-b px-3 py-3", children: _jsxs("span", { className: "flex flex-col items-start gap-1", children: [_jsx(LinkComponent, { href: href(item), className: cn('font-medium underline-offset-4 outline-none hover:underline focus-visible:underline', !item.number && 'text-muted-foreground'), children: title(item) }), item.archived && _jsx(Tag, { children: t.archived })] }) }), visibleColumns.map((id) => (_jsx("td", { className: cn('max-w-72 border-b px-3 py-3', (id === '$createdAt' || id === '$state') && 'whitespace-nowrap'), children: cell(item, id) }, id))), tagsAvailable && (_jsx("td", { className: "min-w-40 max-w-56 border-b px-3 py-3", children: tags(item) }))] }, item.id))) })] }) }), _jsx("ul", { className: "flex flex-col gap-2 @3xl:hidden", children: task.pending
|
|
246
|
+
? [0, 1, 2].map((row) => (_jsxs("li", { className: "flex flex-col gap-2 rounded-xl p-4 ring-1 ring-foreground/10", children: [_jsx(Skeleton, { className: "h-4 w-32" }), _jsx(Skeleton, { className: "h-4 w-48" })] }, row)))
|
|
247
|
+
: result.items.map((item) => {
|
|
248
|
+
const state = stateOf(item);
|
|
249
|
+
const secondary = visibleColumns.filter((id) => id !== '$state').slice(0, 3);
|
|
250
|
+
return (_jsx("li", { children: _jsxs(LinkComponent, { href: href(item), className: "flex min-w-0 flex-col gap-2 rounded-xl bg-card p-4 text-card-foreground outline-none ring-1 ring-foreground/10 hover:bg-muted/40 focus-visible:ring-3 focus-visible:ring-ring/50", children: [_jsxs("span", { className: "flex min-w-0 flex-wrap items-start justify-between gap-2", children: [_jsx("span", { className: cn('min-w-0 font-medium [overflow-wrap:anywhere]', !item.number && 'text-muted-foreground'), children: title(item) }), _jsx(StateBadge, { label: state.label, tone: state.tone, routing: state.routing, className: "shrink-0" })] }), secondary.length > 0 && (_jsx("span", { className: "flex min-w-0 flex-col gap-1 text-sm", children: secondary.map((id) => (_jsxs("span", { className: "flex min-w-0 gap-2", children: [_jsx("span", { className: "shrink-0 text-muted-foreground", children: columnLabel(id) }), _jsx("span", { className: "min-w-0", children: cell(item, id) })] }, id))) })), (!!item.archived || !!item.tags?.length) && (_jsxs("span", { className: "flex flex-wrap items-center gap-1", children: [item.archived && _jsx(Tag, { children: t.archived }), tags(item)] }))] }) }, item.id));
|
|
251
|
+
}) })] })), result.total > 0 && (_jsxs("nav", { "aria-label": t.pagination, className: "flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-2 text-sm", children: [_jsx("span", { "aria-hidden": "true", className: "text-muted-foreground", children: t.limit }), _jsx(NativeSelect, { "aria-label": t.limit, value: String(limit), disabled: task.pending, onChange: (event) => void apply({ ...query, limit: Number(event.target.value), offset: 0 }), children: [...new Set([...LIMITS, limit])]
|
|
252
|
+
.sort((a, b) => a - b)
|
|
253
|
+
.map((value) => (_jsx("option", { value: value, children: value }, value))) })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Button, { variant: "outline", className: touch, disabled: task.pending || page <= 1, onClick: () => void apply({ ...query, offset: Math.max(0, result.offset - limit) }), children: [_jsx(ChevronLeft, { "aria-hidden": "true", "data-icon": "inline-start" }), t.previous] }), _jsx("span", { className: "text-sm tabular-nums", children: fillText(t.pageOf, { page, pages }) }), _jsxs(Button, { variant: "outline", className: touch, disabled: task.pending || page >= pages, onClick: () => void apply({ ...query, offset: result.offset + limit }), children: [t.next, _jsx(ChevronRight, { "aria-hidden": "true", "data-icon": "inline-end" })] })] })] }))] }), _jsx(FilterDrawer, { open: drawer, onOpenChange: setDrawer, fields: fields, query: query, parts: parts, columnsDefault: columnsDefault, columns: columns, tagsAvailable: tagsAvailable, views: views, labels: t, action: action, timeZone: timeZone, pending: task.pending, person: person, onApply: (next) => {
|
|
254
|
+
setDrawer(false);
|
|
255
|
+
void apply(next);
|
|
256
|
+
}, onShare: (view, visibility, roles) => void task.run(async () => {
|
|
257
|
+
await call(action, { kind: 'shareView', id: view.id, visibility, roles });
|
|
258
|
+
setViews(views.map((v) => (v.id === view.id ? { ...v, visibility, roles } : v)));
|
|
259
|
+
setAnnouncement(t.sharingSaved);
|
|
260
|
+
}), searchFields: searchFields }), _jsx(SaveViewDialog, { open: saveOpen, onOpenChange: setSaveOpen, labels: t, pending: task.pending, onSave: (name) => void task.run(async () => {
|
|
261
|
+
const view = await call(action, {
|
|
262
|
+
kind: 'saveView',
|
|
263
|
+
machineCode,
|
|
264
|
+
name,
|
|
265
|
+
query,
|
|
266
|
+
});
|
|
267
|
+
setViews([...views, view]);
|
|
268
|
+
setSaveOpen(false);
|
|
269
|
+
setAnnouncement(t.viewSaved);
|
|
270
|
+
}) })] }));
|
|
271
|
+
}
|
|
272
|
+
/** Starts a draft and opens it; the backend decides whether the caller may create one. */
|
|
273
|
+
export function CreateRecordButton({ machineCode, basePath, labels: t, action, variant = 'default', initialData, }) {
|
|
274
|
+
const task = useTask();
|
|
275
|
+
return (_jsxs("span", { className: "inline-flex flex-col items-start gap-1", children: [_jsxs(Button, { variant: variant, className: touch, disabled: task.pending, onClick: () => void task.run(async () => {
|
|
276
|
+
const created = await call(action, {
|
|
277
|
+
kind: 'create',
|
|
278
|
+
machineCode,
|
|
279
|
+
...(initialData && Object.keys(initialData).length ? { data: initialData } : {}),
|
|
280
|
+
});
|
|
281
|
+
window.location.assign(`${basePath}/${encodeURIComponent(created.id)}`);
|
|
282
|
+
}), children: [_jsx(Plus, { "aria-hidden": "true", "data-icon": "inline-start" }), task.pending ? t.creating : t.createRecord] }), _jsx(ErrorMessage, { error: task.error, labels: t })] }));
|
|
283
|
+
}
|
|
284
|
+
function SaveViewDialog({ open, onOpenChange, labels: t, pending, onSave, }) {
|
|
285
|
+
const [name, setName] = useState('');
|
|
286
|
+
const id = useId();
|
|
287
|
+
return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsx(DialogContent, { closeLabel: t.dialogClose, className: "sm:max-w-md", children: _jsxs("form", { className: "grid gap-4", onSubmit: (event) => {
|
|
288
|
+
event.preventDefault();
|
|
289
|
+
if (name.trim())
|
|
290
|
+
onSave(name.trim());
|
|
291
|
+
}, children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: t.saveView }), _jsx(DialogDescription, { children: t.groupViewsHint })] }), _jsxs("label", { htmlFor: id, className: "grid gap-1.5 text-sm", children: [_jsx("span", { className: "font-medium", children: t.viewName }), _jsx(Input, { id: id, required: true, maxLength: 200, value: name, onChange: (e) => setName(e.target.value), className: "h-9 max-md:h-11" })] }), _jsxs(DialogFooter, { children: [_jsx(Button, { type: "button", variant: "outline", className: touch, onClick: () => onOpenChange(false), children: t.cancel }), _jsx(Button, { type: "submit", className: touch, disabled: pending || !name.trim(), children: t.saveView })] })] }) }) }));
|
|
292
|
+
}
|
|
293
|
+
function DrawerGroup({ title, hint, children, }) {
|
|
294
|
+
const id = useId();
|
|
295
|
+
return (_jsxs("section", { "aria-labelledby": id, className: "flex min-w-0 flex-col gap-3 border-b px-4 py-4 last:border-b-0 sm:px-5", children: [_jsxs("div", { className: "flex flex-col gap-0.5", children: [_jsx("h3", { id: id, className: "font-medium text-sm", children: title }), hint && _jsx("p", { className: "text-muted-foreground text-xs", children: hint })] }), children] }));
|
|
296
|
+
}
|
|
297
|
+
function FilterDrawer({ open, onOpenChange, fields, query, parts, columnsDefault, columns, tagsAvailable, views, labels: t, action, timeZone, pending, person, searchFields, onApply, onShare, }) {
|
|
298
|
+
return (_jsx(Sheet, { open: open, onOpenChange: onOpenChange, children: _jsx(SheetContent, { side: "right", showCloseButton: false, className: "gap-0 p-0 data-[side=right]:w-full data-[side=right]:sm:max-w-lg", children: open && (_jsx(DrawerBody, { fields,
|
|
299
|
+
query,
|
|
300
|
+
parts,
|
|
301
|
+
columnsDefault,
|
|
302
|
+
columns,
|
|
303
|
+
tagsAvailable,
|
|
304
|
+
views,
|
|
305
|
+
labels: t,
|
|
306
|
+
action,
|
|
307
|
+
timeZone,
|
|
308
|
+
pending,
|
|
309
|
+
person,
|
|
310
|
+
searchFields,
|
|
311
|
+
onApply,
|
|
312
|
+
onShare, onClose: () => onOpenChange(false) }, JSON.stringify(query))) }) }));
|
|
313
|
+
}
|
|
314
|
+
function DrawerBody({ fields, query, parts, columnsDefault, columns: initialColumns, tagsAvailable, views, labels: t, action, timeZone, pending, searchFields, onApply, onShare, onClose, }) {
|
|
315
|
+
const [archived, setArchived] = useState(query.archived ?? 'EXCLUDE');
|
|
316
|
+
const [tags, setTags] = useState(query.tags ?? []);
|
|
317
|
+
const [tagMatch, setTagMatch] = useState(query.tagMatch ?? 'ALL');
|
|
318
|
+
const [advanced, setAdvanced] = useState(parts.advanced);
|
|
319
|
+
const [sort, setSort] = useState(query.sort ?? []);
|
|
320
|
+
const [columns, setColumns] = useState(initialColumns);
|
|
321
|
+
const [error, setError] = useState();
|
|
322
|
+
const dateFields = fields.filter((f) => f.filterable && ['date', 'datetime'].includes(f.type));
|
|
323
|
+
const [rangeField, setRangeField] = useState(dateFields[0]?.id ?? '');
|
|
324
|
+
const [from, setFrom] = useState('');
|
|
325
|
+
const [to, setTo] = useState('');
|
|
326
|
+
const rangeId = useId();
|
|
327
|
+
const sortable = fields.filter((f) => f.sortable);
|
|
328
|
+
const filterable = fields.filter((f) => f.filterable);
|
|
329
|
+
const rangeType = fields.find((f) => f.id === rangeField)?.type === 'datetime' ? 'datetime-local' : 'date';
|
|
330
|
+
const toggleable = fields.filter((field) => field.id !== '$number');
|
|
331
|
+
const submit = () => {
|
|
332
|
+
if (!columns.length) {
|
|
333
|
+
setError({ key: 'invalidInput' });
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
try {
|
|
337
|
+
const group = advanced;
|
|
338
|
+
prepareFilter(group, fields);
|
|
339
|
+
const filter = composeFilter({ ...parts, advanced: group }, searchFields);
|
|
340
|
+
const { filter: _f, tags: _t, tagMatch: _m, ...rest } = query;
|
|
341
|
+
const sameColumns = columns.length === columnsDefault.filter((id) => id !== '$number').length &&
|
|
342
|
+
columns.every((id) => columnsDefault.includes(id));
|
|
343
|
+
onApply({
|
|
344
|
+
...rest,
|
|
345
|
+
...(filter ? { filter } : {}),
|
|
346
|
+
archived,
|
|
347
|
+
sort,
|
|
348
|
+
columns: sameColumns ? undefined : ['$number', ...columns],
|
|
349
|
+
offset: 0,
|
|
350
|
+
...(tagsAvailable && tags.length ? { tags, tagMatch } : {}),
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
catch {
|
|
354
|
+
setError({ key: 'invalidInput' });
|
|
355
|
+
}
|
|
356
|
+
};
|
|
357
|
+
return (_jsxs("form", { className: "flex h-full min-h-0 flex-col", onSubmit: (event) => {
|
|
358
|
+
event.preventDefault();
|
|
359
|
+
submit();
|
|
360
|
+
}, children: [_jsxs(SheetHeader, { className: "flex-row items-start justify-between gap-2 border-b px-4 py-4 sm:px-5", children: [_jsxs("div", { className: "flex min-w-0 flex-col gap-0.5", children: [_jsx(SheetTitle, { children: t.filtersTitle }), _jsx(SheetDescription, { children: t.filtersDescription })] }), _jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", className: touch, "aria-label": t.filterDrawerClose, onClick: onClose, children: _jsx(X, { "aria-hidden": "true" }) })] }), _jsxs("div", { className: "min-h-0 flex-1 overflow-y-auto", children: [_jsx(DrawerGroup, { title: t.groupArchive, hint: t.groupArchiveHint, children: _jsx("div", { role: "radiogroup", "aria-label": t.groupArchive, className: "grid gap-1 sm:grid-cols-3", children: ['EXCLUDE', 'INCLUDE', 'ONLY'].map((value) => (_jsxs("label", { className: "flex cursor-pointer items-center gap-2 rounded-lg border px-3 py-2 text-sm has-[:checked]:border-foreground has-[:focus-visible]:ring-3 has-[:focus-visible]:ring-ring/50 max-md:min-h-11", children: [_jsx("input", { type: "radio", name: "archived", value: value, checked: archived === value, onChange: () => setArchived(value), className: "size-4 accent-primary" }), t[value]] }, value))) }) }), tagsAvailable && (_jsxs(DrawerGroup, { title: t.groupTags, hint: t.groupTagsHint, children: [_jsx(TagPicker, { hideLabel: true, label: t.tagFilter, labels: t, action: action, disabled: pending || tags.length >= 10, onPick: (added) => setTags([...new Set([...tags, ...added])].slice(0, 10)) }), tags.length > 0 && (_jsx("div", { className: "flex flex-wrap gap-2", children: tags.map((tag) => (_jsx(Chip, { removeLabel: fillText(t.removeFilter, { name: tag }), onRemove: () => setTags(tags.filter((v) => v !== tag)), children: tag }, tag))) })), tags.length > 1 && (_jsxs(NativeSelect, { "aria-label": t.tagFilter, value: tagMatch, onChange: (e) => setTagMatch(e.target.value), children: [_jsx("option", { value: "ALL", children: t.tagAll }), _jsx("option", { value: "ANY", children: t.tagAny })] }))] })), _jsx(DrawerGroup, { title: t.groupConditions, hint: t.groupConditionsHint, children: _jsx(FilterEditor, { condition: advanced, fields: filterable, labels: t, timeZone: timeZone, onChange: setAdvanced }) }), dateFields.length > 0 && (_jsxs(DrawerGroup, { title: t.groupDates, hint: t.groupDatesHint, children: [_jsxs("div", { className: "grid gap-2 sm:grid-cols-2", children: [_jsxs("div", { className: "grid gap-1 text-sm sm:col-span-2", children: [_jsx("label", { htmlFor: `${rangeId}-field`, className: "text-muted-foreground", children: t.field }), _jsx(NativeSelect, { id: `${rangeId}-field`, value: rangeField, onChange: (e) => {
|
|
361
|
+
setRangeField(e.target.value);
|
|
362
|
+
setFrom('');
|
|
363
|
+
setTo('');
|
|
364
|
+
}, children: dateFields.map((f) => (_jsx("option", { value: f.id, children: labelOf(f, t) }, f.id))) })] }), _jsxs("label", { htmlFor: `${rangeId}-from`, className: "grid gap-1 text-sm", children: [_jsx("span", { className: "text-muted-foreground", children: t.rangeFrom }), _jsx(Input, { id: `${rangeId}-from`, type: rangeType, value: from, className: "h-9 max-md:h-11", onChange: (e) => setFrom(e.target.value) })] }), _jsxs("label", { htmlFor: `${rangeId}-to`, className: "grid gap-1 text-sm", children: [_jsx("span", { className: "text-muted-foreground", children: t.rangeTo }), _jsx(Input, { id: `${rangeId}-to`, type: rangeType, value: to, min: from, className: "h-9 max-md:h-11", onChange: (e) => setTo(e.target.value) })] })] }), _jsxs(Button, { type: "button", variant: "outline", size: "sm", className: cn('self-start', touch), disabled: !from || !to || from > to, onClick: () => {
|
|
365
|
+
const field = fields.find((f) => f.id === rangeField);
|
|
366
|
+
if (!field)
|
|
367
|
+
return;
|
|
368
|
+
const zoned = (value) => rangeType === 'datetime-local'
|
|
369
|
+
? (fromZonedInput(value, timeZone) ?? value)
|
|
370
|
+
: value;
|
|
371
|
+
const range = dateRange(field, zoned(from), zoned(to));
|
|
372
|
+
const group = advanced;
|
|
373
|
+
setAdvanced({
|
|
374
|
+
...group,
|
|
375
|
+
operator: group.expressions.length ? group.operator : 'AND',
|
|
376
|
+
expressions: [...group.expressions, range],
|
|
377
|
+
});
|
|
378
|
+
setFrom('');
|
|
379
|
+
setTo('');
|
|
380
|
+
}, children: [_jsx(Plus, { "aria-hidden": "true", "data-icon": "inline-start" }), t.addRange] })] })), _jsxs(DrawerGroup, { title: t.groupSort, hint: t.groupSortHint, children: [sort.map((entry, index) => (_jsxs("div", { className: "grid gap-2 sm:grid-cols-[minmax(0,1fr)_minmax(0,10rem)_auto]", children: [_jsx(NativeSelect, { "aria-label": `${t.sort}: ${t.field}`, value: entry.fieldId, onChange: (e) => setSort(sort.map((s, i) => (i === index ? { ...s, fieldId: e.target.value } : s))), children: sortable.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(NativeSelect, { "aria-label": t.sort, 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: "ghost", size: "icon-sm", className: touch, "aria-label": t.remove, onClick: () => setSort(sort.filter((_, i) => i !== index)), children: _jsx(Trash2, { "aria-hidden": "true" }) })] }, entry.fieldId))), _jsxs(Button, { type: "button", variant: "outline", size: "sm", className: cn('self-start', touch), disabled: sort.length >= 8 || !sortable.some((f) => !sort.some((s) => s.fieldId === f.id)), onClick: () => {
|
|
381
|
+
const f = sortable.find((f) => !sort.some((s) => s.fieldId === f.id));
|
|
382
|
+
if (f)
|
|
383
|
+
setSort([...sort, { fieldId: f.id, direction: 'asc' }]);
|
|
384
|
+
}, children: [_jsx(Plus, { "aria-hidden": "true", "data-icon": "inline-start" }), t.addSort] })] }), _jsxs(DrawerGroup, { title: t.groupColumns, hint: t.groupColumnsHint, children: [_jsx("div", { className: "grid gap-1 sm:grid-cols-2", children: toggleable.map((f) => (_jsxs("span", { className: "flex items-center gap-2 rounded-md px-1 py-1.5 text-sm max-md:min-h-11", children: [_jsx(Checkbox, { id: `${rangeId}-column-${f.id}`, checked: columns.includes(f.id), onCheckedChange: (checked) => setColumns(checked === true ? [...columns, f.id] : columns.filter((c) => c !== f.id)) }), _jsx("label", { htmlFor: `${rangeId}-column-${f.id}`, className: "cursor-pointer", children: labelOf(f, t) })] }, f.id))) }), !columns.length && _jsx("p", { className: "text-destructive text-sm", children: t.columnsRequired })] }), views.some((view) => view.canShare) && (_jsx(DrawerGroup, { title: t.groupViews, hint: t.groupViewsHint, children: _jsx("ul", { className: "flex flex-col gap-3", children: views
|
|
385
|
+
.filter((view) => view.canShare)
|
|
386
|
+
.map((view) => (_jsxs("li", { className: "flex flex-col gap-2 rounded-lg border p-3", children: [_jsx("span", { className: "font-medium text-sm [overflow-wrap:anywhere]", children: view.name }), _jsx(ShareForm, { view: view, labels: t, disabled: pending, onShare: (visibility, roles) => onShare(view, visibility, roles) })] }, view.id))) }) }))] }), _jsxs("div", { className: "flex flex-col gap-2 border-t bg-muted/30 px-4 py-3 sm:px-5", children: [_jsx(ErrorMessage, { error: error, labels: t }), _jsxs("div", { className: "flex flex-wrap justify-end gap-2", children: [_jsx(Button, { type: "button", variant: "ghost", className: touch, onClick: () => {
|
|
387
|
+
setArchived('EXCLUDE');
|
|
388
|
+
setTags([]);
|
|
389
|
+
setAdvanced(emptyGroup());
|
|
390
|
+
setSort([]);
|
|
391
|
+
setColumns(columnsDefault.filter((id) => id !== '$number'));
|
|
392
|
+
}, children: t.resetFilters }), _jsx(Button, { type: "submit", className: touch, disabled: pending || !columns.length, children: t.apply })] })] })] }));
|
|
393
|
+
}
|
|
394
|
+
export function ShareForm({ view, labels: t, disabled, onShare, }) {
|
|
395
|
+
const [visibility, setVisibility] = useState(view.visibility);
|
|
396
|
+
const [roles, setRoles] = useState(view.roles.join(', '));
|
|
397
|
+
const ref = useRef(null);
|
|
398
|
+
return (_jsxs("div", { ref: ref, className: "flex flex-wrap items-end gap-2", children: [_jsx(NativeSelect, { "aria-label": t.share, disabled: disabled, value: visibility, onChange: (e) => setVisibility(e.target.value), className: "w-full sm:w-auto", children: ['PRIVATE', 'ALL', 'ROLES'].map((value) => (_jsx("option", { value: value, children: t[value] }, value))) }), visibility === 'ROLES' && (_jsx(Input, { "aria-label": t.roles, placeholder: t.roles, value: roles, onChange: (e) => setRoles(e.target.value), className: "h-9 min-w-0 flex-1 max-md:h-11" })), _jsx(Button, { type: "button", variant: "outline", size: "sm", className: touch, disabled: disabled || (visibility === 'ROLES' && !roles.trim()), onClick: () => onShare(visibility, roles
|
|
399
|
+
.split(',')
|
|
400
|
+
.map((r) => r.trim())
|
|
401
|
+
.filter(Boolean)), children: t.share })] }));
|
|
402
|
+
}
|
|
403
|
+
//# sourceMappingURL=list-client.js.map
|