@evolver-fi/evolver-basics-admin-components 0.0.12 → 0.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ConfirmButton-jayUa8_J.js.map +1 -1
- package/dist/{ExpandMore-CCOUGfS4.js → ExpandMore-CFLBmfHS.js} +2 -2
- package/dist/{ExpandMore-CCOUGfS4.js.map → ExpandMore-CFLBmfHS.js.map} +1 -1
- package/dist/{JwtTokensRoute-DKaxXWe8.js → JwtTokensRoute-CavNQu9F.js} +3 -3
- package/dist/JwtTokensRoute-CavNQu9F.js.map +1 -0
- package/dist/{ScheduledTaskFormRoute-BpHIsRQr.js → ScheduledTaskFormRoute-CnVsqh-c.js} +11 -10
- package/dist/ScheduledTaskFormRoute-CnVsqh-c.js.map +1 -0
- package/dist/SingleLogMessageRoute-B6hkr7rG.js +305 -0
- package/dist/SingleLogMessageRoute-B6hkr7rG.js.map +1 -0
- package/dist/SingleMessageRoute-Bxix2rv7.js +320 -0
- package/dist/SingleMessageRoute-Bxix2rv7.js.map +1 -0
- package/dist/TableMetadataDisplay-DTDUH1KY.js +330 -0
- package/dist/TableMetadataDisplay-DTDUH1KY.js.map +1 -0
- package/dist/{TriggerablesRoute-CHtOEVBR.js → TriggerablesRoute-BY72XS5U.js} +3 -3
- package/dist/TriggerablesRoute-BY72XS5U.js.map +1 -0
- package/dist/{createSvgIcon-DHqCx8A0.js → createSvgIcon-DCKQGUI3.js} +963 -953
- package/dist/createSvgIcon-DCKQGUI3.js.map +1 -0
- package/dist/jwt-tokens/index.js +1 -1
- package/dist/main/index.js +5 -5
- package/dist/message-log/index.js +1 -1
- package/dist/message-sending/index.js +1 -1
- package/dist/{validation-C1lKYJJR.js → parser-CI353PAC.js} +470 -486
- package/dist/parser-CI353PAC.js.map +1 -0
- package/dist/scheduled-tasks/index.js +1 -1
- package/dist/triggerables/index.js +1 -1
- package/dist/types/admin-components/src/common/format.d.ts +1 -0
- package/dist/types/admin-components/src/common/types.d.ts +27 -0
- package/dist/types/admin-components/src/common/validation.d.ts +5 -0
- package/dist/types/admin-components/src/components/filter/EnumSelectFilter.d.ts +11 -0
- package/dist/types/admin-components/src/components/filter/FilterHelperTexts.d.ts +4 -0
- package/dist/types/admin-components/src/components/filter/FilterLink.d.ts +2 -0
- package/dist/types/admin-components/src/components/filter/TextFilter.d.ts +2 -0
- package/dist/types/admin-components/src/components/filter/types.d.ts +20 -0
- package/dist/types/admin-components/src/components/metadata/TableMetadataDisplay.d.ts +2 -0
- package/dist/types/admin-components/src/components/metadata/utils.d.ts +1 -0
- package/dist/types/admin-components/src/components/table/Pagination.d.ts +7 -0
- package/dist/types/admin-components/src/components/table/Table.d.ts +3 -0
- package/dist/types/admin-components/src/components/table/types.d.ts +48 -0
- package/dist/types/admin-components/src/routes/message-log/messageLogColumns.d.ts +3 -0
- package/dist/types/admin-components/src/routes/message-log/types.d.ts +35 -0
- package/dist/types/admin-components/src/routes/message-sending/loader.d.ts +1 -1
- package/dist/types/admin-components/src/routes/message-sending/messageSendingColumns.d.ts +3 -0
- package/dist/types/admin-components/src/routes/message-sending/types.d.ts +41 -0
- package/dist/validation-BRENvwZ0.js +22 -0
- package/dist/validation-BRENvwZ0.js.map +1 -0
- package/package.json +6 -3
- package/dist/ArrowBack-C8PcQDeL.js +0 -161
- package/dist/ArrowBack-C8PcQDeL.js.map +0 -1
- package/dist/JwtTokensRoute-DKaxXWe8.js.map +0 -1
- package/dist/ScheduledTaskFormRoute-BpHIsRQr.js.map +0 -1
- package/dist/SingleLogMessageRoute-i_AbkS5G.js +0 -245
- package/dist/SingleLogMessageRoute-i_AbkS5G.js.map +0 -1
- package/dist/SingleMessageRoute-Dh7BWlPt.js +0 -254
- package/dist/SingleMessageRoute-Dh7BWlPt.js.map +0 -1
- package/dist/TriggerablesRoute-CHtOEVBR.js.map +0 -1
- package/dist/createSvgIcon-DHqCx8A0.js.map +0 -1
- package/dist/validation-C1lKYJJR.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as a, S as d, b as o, g as r, a as k, s as l } from "../ScheduledTaskFormRoute-
|
|
1
|
+
import { c as a, S as d, b as o, g as r, a as k, s as l } from "../ScheduledTaskFormRoute-CnVsqh-c.js";
|
|
2
2
|
export {
|
|
3
3
|
a as ScheduledTaskFormRoute,
|
|
4
4
|
d as ScheduledTasksRoute,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const formatDateTime: (value: string) => string;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
interface SortElement {
|
|
2
|
+
sorted: boolean;
|
|
3
|
+
unsorted: boolean;
|
|
4
|
+
empty: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface PagedResponse<T> {
|
|
7
|
+
content: T[];
|
|
8
|
+
last: boolean;
|
|
9
|
+
totalPages: number;
|
|
10
|
+
totalElements: number;
|
|
11
|
+
size: number;
|
|
12
|
+
number: number;
|
|
13
|
+
pageable: {
|
|
14
|
+
sort: SortElement;
|
|
15
|
+
offset: number;
|
|
16
|
+
pageNumber: number;
|
|
17
|
+
pageSize: number;
|
|
18
|
+
paged: boolean;
|
|
19
|
+
unpaged: boolean;
|
|
20
|
+
};
|
|
21
|
+
sort: SortElement;
|
|
22
|
+
first: boolean;
|
|
23
|
+
numberOfElements: number;
|
|
24
|
+
empty: boolean;
|
|
25
|
+
}
|
|
26
|
+
export type ValidationError = string | undefined;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ValidationError } from './types';
|
|
2
|
+
export declare const numberValidator: (value: string) => ValidationError;
|
|
3
|
+
export declare const booleanValidator: (value: string) => ValidationError;
|
|
4
|
+
export declare const numberRangeValidator: (value: string) => ValidationError;
|
|
5
|
+
export declare const datetimeRangeValidator: (value: string) => ValidationError;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { GenericFilterProps } from './types';
|
|
2
|
+
export declare const EnumSelectFilter: ({ name, value, defaultValue, onChange, helperText, validator, enumValues, }: GenericFilterProps<string> & {
|
|
3
|
+
enumValues: {
|
|
4
|
+
label: string;
|
|
5
|
+
value: string;
|
|
6
|
+
}[];
|
|
7
|
+
}) => JSX.Element;
|
|
8
|
+
export declare const createEnumSelectFilter: (enumValues: {
|
|
9
|
+
label: string;
|
|
10
|
+
value: string;
|
|
11
|
+
}[]) => (props: GenericFilterProps<string>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ValidationError } from '../../common/types';
|
|
3
|
+
export type Filter<T> = Partial<Record<keyof T, unknown>>;
|
|
4
|
+
export interface FilterProps<T, K extends keyof T, F extends Filter<T>> {
|
|
5
|
+
name: string;
|
|
6
|
+
value?: F[K];
|
|
7
|
+
defaultValue?: F[K];
|
|
8
|
+
filter: F;
|
|
9
|
+
onChange?: (value: F[K], filter?: F) => void;
|
|
10
|
+
validator?: (value: F[K]) => ValidationError;
|
|
11
|
+
helperText?: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
export interface GenericFilterProps<S> {
|
|
14
|
+
name: string;
|
|
15
|
+
value?: S;
|
|
16
|
+
defaultValue?: S;
|
|
17
|
+
onChange?: (value: S) => void;
|
|
18
|
+
validator?: (value: S) => ValidationError;
|
|
19
|
+
helperText?: ReactNode;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const mapMetadata: (message: unknown) => unknown;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Filter } from '../filter/types';
|
|
2
|
+
import { TableProps } from './types';
|
|
3
|
+
export declare const Table: <T, F extends Filter<T>>({ columns, rows, filter, defaultFilter, onFilterChange, getRowId, onRowClick, }: TableProps<T, F>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ComponentType, ReactNode } from 'react';
|
|
2
|
+
import { Filter, FilterProps } from '../filter/types';
|
|
3
|
+
export interface CellProps<T, K extends keyof T> {
|
|
4
|
+
row: T;
|
|
5
|
+
value: T[K];
|
|
6
|
+
rowKey: K;
|
|
7
|
+
/**
|
|
8
|
+
* If provided, should be used instead of rowKey for e.g. filter input names or search params.
|
|
9
|
+
*/
|
|
10
|
+
searchKey?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface GenericCellProps<S> {
|
|
13
|
+
value: S;
|
|
14
|
+
rowKey: string;
|
|
15
|
+
/**
|
|
16
|
+
* If provided, should be used instead of rowKey for e.g. filter input names or search params.
|
|
17
|
+
*/
|
|
18
|
+
searchKey?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ColumnDefinition<T, K extends keyof T, F extends Filter<T>> {
|
|
21
|
+
key: K;
|
|
22
|
+
/**
|
|
23
|
+
* Optional key to use instead of the row key for e.g. filter input names.
|
|
24
|
+
*/
|
|
25
|
+
searchKey?: string;
|
|
26
|
+
title: string;
|
|
27
|
+
CellComponent?: ComponentType<CellProps<T, K>>;
|
|
28
|
+
FilterComponent?: ComponentType<FilterProps<T, K, F>>;
|
|
29
|
+
filterValidator?: (value: F[K]) => string | undefined;
|
|
30
|
+
filterHelperText?: ReactNode;
|
|
31
|
+
minWidth?: number | string;
|
|
32
|
+
}
|
|
33
|
+
export type ColumnDefinitions<T, F extends Filter<T>> = ReadonlyArray<{
|
|
34
|
+
[K in keyof T]: ColumnDefinition<T, K, F>;
|
|
35
|
+
}[keyof T]>;
|
|
36
|
+
export type TableProps<T, F extends Filter<T>> = {
|
|
37
|
+
columns: ColumnDefinitions<T, F>;
|
|
38
|
+
rows: ReadonlyArray<T>;
|
|
39
|
+
getRowId: (row: T) => string | number;
|
|
40
|
+
onRowClick?: (row: T) => void;
|
|
41
|
+
onFilterChange?: (value: F) => void;
|
|
42
|
+
} & ({
|
|
43
|
+
filter: F;
|
|
44
|
+
defaultFilter?: undefined;
|
|
45
|
+
} | {
|
|
46
|
+
filter?: undefined;
|
|
47
|
+
defaultFilter: F;
|
|
48
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { PagedResponse } from '../../common/types';
|
|
2
|
+
export type LogMessage = {
|
|
3
|
+
id: number;
|
|
4
|
+
address: string;
|
|
5
|
+
appServer: string;
|
|
6
|
+
appVersion: string;
|
|
7
|
+
durationMs: number;
|
|
8
|
+
messageChainId: number;
|
|
9
|
+
dataDirection: "OUTBOUND" | "INBOUND";
|
|
10
|
+
messageType: string;
|
|
11
|
+
protocol: string;
|
|
12
|
+
requestHeaders: string;
|
|
13
|
+
requestSize: number;
|
|
14
|
+
responseHeaders: string;
|
|
15
|
+
responseSize: number;
|
|
16
|
+
requestingSystem: string;
|
|
17
|
+
startTime: string;
|
|
18
|
+
statusCode: string;
|
|
19
|
+
statusMessage: string;
|
|
20
|
+
respondingSystem: string;
|
|
21
|
+
metadata: Record<string, string>;
|
|
22
|
+
};
|
|
23
|
+
export type LogMessageResponse = PagedResponse<LogMessage>;
|
|
24
|
+
export interface LogFilter {
|
|
25
|
+
appVersion: string;
|
|
26
|
+
messageType: string;
|
|
27
|
+
protocol: string;
|
|
28
|
+
startTime: string;
|
|
29
|
+
durationMs: string;
|
|
30
|
+
statusCode: string;
|
|
31
|
+
messageChainId: string;
|
|
32
|
+
requestSize: string;
|
|
33
|
+
responseSize: string;
|
|
34
|
+
metadata: string;
|
|
35
|
+
}
|
|
@@ -2,5 +2,5 @@ import { AxiosInstance } from 'axios';
|
|
|
2
2
|
import { LoaderFunction, LoaderFunctionArgs } from 'react-router';
|
|
3
3
|
export declare const getSingleMessageLoader: (backendClient?: AxiosInstance) => ({ params }: LoaderFunctionArgs) => Promise<import('@evolver-fi/evolver-basics/messages').Message>;
|
|
4
4
|
export declare const singleMessageLoader: LoaderFunction;
|
|
5
|
-
export declare const getMessageListLoader: (backendClient?: AxiosInstance) => ({ request }: LoaderFunctionArgs) => Promise<
|
|
5
|
+
export declare const getMessageListLoader: (backendClient?: AxiosInstance) => ({ request }: LoaderFunctionArgs) => Promise<unknown>;
|
|
6
6
|
export declare const messageListLoader: LoaderFunction;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { PagedResponse } from '../../common/types';
|
|
2
|
+
export type MessageStatus = "DELAYED" | "PENDING" | "SENDING" | "SENT" | "FAILED" | "DISABLED";
|
|
3
|
+
export type MessageData = {
|
|
4
|
+
creationTime: string;
|
|
5
|
+
failCount: number;
|
|
6
|
+
id: number;
|
|
7
|
+
lastUpdatedTime: string;
|
|
8
|
+
messageChainId: number;
|
|
9
|
+
messageGroupId: string;
|
|
10
|
+
messageTargetConfig: MessageTargetConfig;
|
|
11
|
+
messageType: string;
|
|
12
|
+
metadata: Record<string, string>;
|
|
13
|
+
priority: number;
|
|
14
|
+
state: MessageStatus;
|
|
15
|
+
targetSystem: string;
|
|
16
|
+
targetUri: string;
|
|
17
|
+
};
|
|
18
|
+
export type MessageTargetConfigStatus = "ENABLED" | "LOG_ONLY" | "PAUSED" | "DISABLED";
|
|
19
|
+
export type MessageTargetConfig = {
|
|
20
|
+
filters: string | null;
|
|
21
|
+
id: number;
|
|
22
|
+
messageType: string;
|
|
23
|
+
properties: Record<string, string>;
|
|
24
|
+
retryDelayMs: number;
|
|
25
|
+
retryLimit: number;
|
|
26
|
+
state: MessageTargetConfigStatus;
|
|
27
|
+
targetSystem: string;
|
|
28
|
+
throttling: string | null;
|
|
29
|
+
uri: string;
|
|
30
|
+
};
|
|
31
|
+
export type MessageFilter = {
|
|
32
|
+
state: string;
|
|
33
|
+
messageChainId: string;
|
|
34
|
+
creationTime: string;
|
|
35
|
+
lastUpdatedTime: string;
|
|
36
|
+
failCount: string;
|
|
37
|
+
messageGroupId: string;
|
|
38
|
+
priority: string;
|
|
39
|
+
metadata: string;
|
|
40
|
+
};
|
|
41
|
+
export type MessageResponse = PagedResponse<MessageData>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { p as a } from "./parser-CI353PAC.js";
|
|
2
|
+
const u = (e) => /^\d*$/.test(e) ? void 0 : "Value must be numeric!", c = (e) => /^[0-9]*\s*-{0,1}\s*[0-9]*$/.test(e) ? void 0 : "Value must be numeric or a range!", l = (e) => /^(\d{4}-\d{2}-\d{2}((\s|T)\d{2}:\d{2}:\d{2})?){0,1}\s*-{0,1}\s*(\d{4}-\d{2}-\d{2}((\s|T)\d{2}:\d{2}:\d{2})?){0,1}$/.test(e) ? void 0 : "Value must be a date(time) or range!", f = (e, t = {}) => {
|
|
3
|
+
try {
|
|
4
|
+
const r = { ...{ utc: !0 }, ...t }, s = e.trim().split(/\s/).filter((d) => d !== "").length;
|
|
5
|
+
if (s === 6 && !r.allowSeconds && !r.requireSeconds)
|
|
6
|
+
return "Seconds field is not allowed!";
|
|
7
|
+
if (s === 5 && r.requireSeconds)
|
|
8
|
+
return "Seconds field is required!";
|
|
9
|
+
if (s < 5 || s > 6)
|
|
10
|
+
return "Invalid number of fields, expected 5 or 6!";
|
|
11
|
+
const o = a.parseExpression(e, r);
|
|
12
|
+
} catch (n) {
|
|
13
|
+
return "Invalid cron expression: " + (n instanceof Error ? n.message : "");
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export {
|
|
17
|
+
c as a,
|
|
18
|
+
f as c,
|
|
19
|
+
l as d,
|
|
20
|
+
u as n
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=validation-BRENvwZ0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-BRENvwZ0.js","sources":["../../node_modules/@evolver-fi/evolver-basics/dist/esm/common/utils/validation.js"],"sourcesContent":["import parser from 'cron-parser';\nexport const numberValidator = (value) => !/^\\d*$/.test(value) ? 'Value must be numeric!' : undefined;\nexport const booleanValidator = (value) => !/^(true|false)$/.test(value) ? 'Value must be true or false!' : undefined;\nexport const numberRangeValidator = (value) => !/^[0-9]*\\s*-{0,1}\\s*[0-9]*$/.test(value) ? 'Value must be numeric or a range!' : undefined;\nexport const datetimeRangeValidator = (value) => !/^(\\d{4}-\\d{2}-\\d{2}((\\s|T)\\d{2}:\\d{2}:\\d{2})?){0,1}\\s*-{0,1}\\s*(\\d{4}-\\d{2}-\\d{2}((\\s|T)\\d{2}:\\d{2}:\\d{2})?){0,1}$/.test(value)\n ? 'Value must be a date(time) or range!'\n : undefined;\n/**\n * Cron expression valditor: checks it the cron expression is valid.\n * Supports seconds field if allowSeconds is true. Does not support years field.\n *\n * @param value Cron expression\n * @param options Options for the parser\n * @returns error string if the cron expression is invalid, otherwise undefined\n */\nexport const cronExpressionValidator = (value, options = {}) => {\n try {\n const parserDefaults = { utc: true };\n const parserOptions = { ...parserDefaults, ...options };\n const fieldCount = value\n .trim()\n .split(/\\s/)\n .filter((el) => el !== '').length;\n if (fieldCount === 6 && !parserOptions.allowSeconds && !parserOptions.requireSeconds) {\n return 'Seconds field is not allowed!';\n }\n if (fieldCount === 5 && parserOptions.requireSeconds) {\n return 'Seconds field is required!';\n }\n if (fieldCount < 5 || fieldCount > 6) {\n return 'Invalid number of fields, expected 5 or 6!';\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const interval = parser.parseExpression(value, parserOptions);\n }\n catch (e) {\n const errorMessage = e instanceof Error ? e.message : '';\n return 'Invalid cron expression: ' + errorMessage;\n }\n return undefined;\n};\n"],"names":["numberValidator","value","numberRangeValidator","datetimeRangeValidator","cronExpressionValidator","options","parserOptions","fieldCount","el","interval","parser","e"],"mappings":";AACY,MAACA,IAAkB,CAACC,MAAW,QAAQ,KAAKA,CAAK,IAA+B,SAA3B,0BAEpDC,IAAuB,CAACD,MAAW,6BAA6B,KAAKA,CAAK,IAA0C,SAAtC,qCAC9EE,IAAyB,CAACF,MAAW,qHAAqH,KAAKA,CAAK,IAE3K,SADA,wCAUOG,IAA0B,CAACH,GAAOI,IAAU,OAAO;AAC5D,MAAI;AAEA,UAAMC,IAAgB,EAAE,GADD,EAAE,KAAK,GAAM,GACO,GAAGD,EAAS,GACjDE,IAAaN,EACd,KAAI,EACJ,MAAM,IAAI,EACV,OAAO,CAACO,MAAOA,MAAO,EAAE,EAAE;AAC/B,QAAID,MAAe,KAAK,CAACD,EAAc,gBAAgB,CAACA,EAAc;AAClE,aAAO;AAEX,QAAIC,MAAe,KAAKD,EAAc;AAClC,aAAO;AAEX,QAAIC,IAAa,KAAKA,IAAa;AAC/B,aAAO;AAGX,UAAME,IAAWC,EAAO,gBAAgBT,GAAOK,CAAa;AAAA,EACpE,SACWK,GAAG;AAEN,WAAO,+BADcA,aAAa,QAAQA,EAAE,UAAU;AAAA,EAE9D;AAEA;","x_google_ignoreList":[0]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@evolver-fi/evolver-basics-admin-components",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.19",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "APACHE-2.0",
|
|
6
6
|
"module": "dist/evolver-basics-admin-ui.js",
|
|
@@ -44,14 +44,16 @@
|
|
|
44
44
|
"scripts": {
|
|
45
45
|
"dev": "vite",
|
|
46
46
|
"build": "tsc && vite build",
|
|
47
|
+
"build:watch": "vite build --watch",
|
|
47
48
|
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
|
48
49
|
"preview": "vite preview"
|
|
49
50
|
},
|
|
50
51
|
"peerDependencies": {
|
|
51
52
|
"@emotion/react": "^11.11.4",
|
|
52
53
|
"@emotion/styled": "^11.11.5",
|
|
53
|
-
"@evolver-fi/evolver-basics": "
|
|
54
|
+
"@evolver-fi/evolver-basics": "3.1.0",
|
|
54
55
|
"@mui/material": "^5.15.20",
|
|
56
|
+
"@mui/icons-material": "^5.15.20",
|
|
55
57
|
"axios": "^1.0.0",
|
|
56
58
|
"react": ">=18",
|
|
57
59
|
"react-dom": ">=18",
|
|
@@ -61,8 +63,9 @@
|
|
|
61
63
|
"react-router": "^7.1.1",
|
|
62
64
|
"@emotion/react": "^11.11.4",
|
|
63
65
|
"@emotion/styled": "^11.11.5",
|
|
64
|
-
"@evolver-fi/evolver-basics": "
|
|
66
|
+
"@evolver-fi/evolver-basics": "3.1.0",
|
|
65
67
|
"@mui/material": "^5.15.20",
|
|
68
|
+
"@mui/icons-material": "^5.15.20",
|
|
66
69
|
"@types/node": "^22.10.1",
|
|
67
70
|
"@types/react": "^18.2.66",
|
|
68
71
|
"@types/react-dom": "^18.2.22",
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
import { j as e } from "./jsx-runtime-B6kdoens.js";
|
|
2
|
-
import { Box as E, IconButton as j, Grid as $, TextField as v, InputAdornment as S, TableHead as z, TableRow as b, TableCell as f, Button as y, TableContainer as C, Table as I, TableBody as w, TablePagination as A } from "@mui/material";
|
|
3
|
-
import { r as k, i as R } from "./createSvgIcon-DHqCx8A0.js";
|
|
4
|
-
import { d as H } from "./ExpandMore-CCOUGfS4.js";
|
|
5
|
-
import P, { useEffect as M, useState as O } from "react";
|
|
6
|
-
var T = {}, V = R;
|
|
7
|
-
Object.defineProperty(T, "__esModule", {
|
|
8
|
-
value: !0
|
|
9
|
-
});
|
|
10
|
-
var F = T.default = void 0, q = V(k()), W = e;
|
|
11
|
-
F = T.default = (0, q.default)(/* @__PURE__ */ (0, W.jsx)("path", {
|
|
12
|
-
d: "m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"
|
|
13
|
-
}), "ExpandLess");
|
|
14
|
-
const U = (t, n) => n !== void 0 ? `${t}: ${n}` : "", G = ({ metadata: t, open: n }) => {
|
|
15
|
-
const a = n ? Object.entries(t) : Object.entries(t).slice(0, 1);
|
|
16
|
-
return e.jsx(E, { sx: { whiteSpace: "pre-line", padding: "10px" }, children: a.map(([s, l]) => U(s, l)).join(`
|
|
17
|
-
`) });
|
|
18
|
-
}, J = ({ metadata: t }) => {
|
|
19
|
-
const [n, a] = P.useState(!1), s = (l) => {
|
|
20
|
-
l.preventDefault(), l.stopPropagation(), a(!n);
|
|
21
|
-
};
|
|
22
|
-
return e.jsxs(E, { sx: { display: "flex", flexDirection: "row", alignItems: "flex-start" }, children: [e.jsx(j, { onClick: s, children: n ? e.jsx(F, {}) : e.jsx(H, {}) }), e.jsx(G, { open: n, metadata: t })] });
|
|
23
|
-
}, xe = (t, n) => {
|
|
24
|
-
const a = t.trim(), s = new URLSearchParams();
|
|
25
|
-
if (!a)
|
|
26
|
-
return s;
|
|
27
|
-
const l = a.indexOf("-"), r = String(n);
|
|
28
|
-
if (l >= 0) {
|
|
29
|
-
const i = a.split("-", 2), c = i[0].trim(), d = i[1].trim();
|
|
30
|
-
return c && s.append(`${r}.min`, c), d && s.append(`${r}.max`, d), s;
|
|
31
|
-
}
|
|
32
|
-
return s.append(`${r}.min`, a), s.append(`${r}.max`, a), s;
|
|
33
|
-
}, N = /\d{4}-\d{2}-\d{2}((\s|T)\d{2}:\d{2}:\d{2})?/g, me = (t, n) => {
|
|
34
|
-
const a = (p) => p.length > 10 ? p : `${p} 00:00:00`, s = (p) => p.length > 10 ? p : `${p} 23:59:59`, l = t.trim(), r = new URLSearchParams();
|
|
35
|
-
if (!l)
|
|
36
|
-
return r;
|
|
37
|
-
const i = l.charAt(l.length - 1) === "-", c = l.indexOf("-") === 0, d = t.match(N);
|
|
38
|
-
if (!d || d.length === 0)
|
|
39
|
-
return r;
|
|
40
|
-
const o = String(n);
|
|
41
|
-
return d.length === 1 ? !i && !c ? (r.append(`${o}.min`, a(d[0])), r.append(`${o}.max`, s(d[0])), r) : (r.append(`${o}.${c ? "max" : "min"}`, c ? s(d[0]) : a(d[0])), r) : (r.append(`${o}.min`, a(d[0])), r.append(`${o}.max`, s(d[1])), r);
|
|
42
|
-
}, he = (t) => t.slice(0, t.indexOf(".")).replace("T", " "), fe = (t) => e.jsx(J, { metadata: t }), je = (t) => Array.isArray(t) ? B(t) : typeof t == "object" ? Q(t) : t.toString(), Q = (t) => Object.entries(t).map(([n, a]) => `${n}=${a}`).join(","), B = (t) => t.map((n) => `${n.key}=${n.value}`).join(","), ge = (t, n) => {
|
|
43
|
-
const a = new URLSearchParams();
|
|
44
|
-
return t && Object.entries(t).forEach(([s, l]) => {
|
|
45
|
-
var r;
|
|
46
|
-
l && (((r = n == null ? void 0 : n[s]) == null ? void 0 : r.call(n, l, s)) ?? new URLSearchParams({ [s]: l })).forEach((c, d) => {
|
|
47
|
-
a.append(d, c);
|
|
48
|
-
});
|
|
49
|
-
}), a;
|
|
50
|
-
};
|
|
51
|
-
var _ = {}, X = R;
|
|
52
|
-
Object.defineProperty(_, "__esModule", {
|
|
53
|
-
value: !0
|
|
54
|
-
});
|
|
55
|
-
var g = _.default = void 0, Y = X(k()), Z = e;
|
|
56
|
-
g = _.default = (0, Y.default)(/* @__PURE__ */ (0, Z.jsx)("path", {
|
|
57
|
-
d: "M22 3H7c-.69 0-1.23.35-1.59.88L0 12l5.41 8.11c.36.53.9.89 1.59.89h15c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-3 12.59L17.59 17 14 13.41 10.41 17 9 15.59 12.59 12 9 8.41 10.41 7 14 10.59 17.59 7 19 8.41 15.41 12z"
|
|
58
|
-
}), "Backspace");
|
|
59
|
-
const be = ({ filterValue: t, validationError: n, setFilterValue: a }) => {
|
|
60
|
-
const [s, l] = (t == null ? void 0 : t.split("-")) || "", [r, i] = P.useState(s), [c, d] = P.useState(l);
|
|
61
|
-
return M(() => {
|
|
62
|
-
const o = `${r || ""}${c || r ? "-" : ""}${c || ""}`;
|
|
63
|
-
a(o);
|
|
64
|
-
}, [r, c]), e.jsxs($, { container: !0, direction: "row", spacing: 1, children: [e.jsx($, { item: !0, xs: 12, xl: 6, children: e.jsx(v, { size: "small", error: !!n, helperText: n || "Start", value: r || "", onChange: (o) => {
|
|
65
|
-
i(`${o.target.value}:00`);
|
|
66
|
-
}, fullWidth: !0, InputProps: {
|
|
67
|
-
endAdornment: r && r.length > 0 ? e.jsx(S, { position: "end", children: e.jsx(j, { onClick: (o) => {
|
|
68
|
-
o.preventDefault(), o.stopPropagation(), i(void 0);
|
|
69
|
-
}, size: "small", children: e.jsx(g, {}) }) }) : void 0
|
|
70
|
-
} }) }), e.jsx($, { item: !0, xs: 12, xl: 6, children: e.jsx(v, { size: "small", value: c || "", helperText: "End", onChange: (o) => {
|
|
71
|
-
d(`${o.target.value}:00`);
|
|
72
|
-
}, fullWidth: !0, InputProps: {
|
|
73
|
-
endAdornment: c && c.length > 0 ? e.jsx(S, { position: "end", children: e.jsx(j, { onClick: (o) => {
|
|
74
|
-
o.preventDefault(), o.stopPropagation(), d(void 0);
|
|
75
|
-
}, size: "small", children: e.jsx(g, {}) }) }) : void 0
|
|
76
|
-
} }) })] });
|
|
77
|
-
}, K = ({ columns: t }) => e.jsx(z, { children: e.jsxs(b, { children: [t.map((n) => e.jsx(f, { sx: {
|
|
78
|
-
backgroundColor: "primary.main",
|
|
79
|
-
color: "common.white",
|
|
80
|
-
fontSize: 16,
|
|
81
|
-
minWidth: n.minWidth
|
|
82
|
-
}, children: n.label }, n.id)), e.jsx(f, { sx: {
|
|
83
|
-
backgroundColor: "primary.main",
|
|
84
|
-
color: "common.white",
|
|
85
|
-
fontSize: 16,
|
|
86
|
-
width: 100
|
|
87
|
-
} }, "submit-cell")] }) }), ee = ({ rows: t, onClickRowAction: n, columns: a, updateFilters: s, selectedRowId: l }) => e.jsx(e.Fragment, { children: t.map((r) => e.jsx(b, { sx: [
|
|
88
|
-
r.id !== l ? {
|
|
89
|
-
"&:nth-of-type(odd)": {
|
|
90
|
-
backgroundColor: "action.hover"
|
|
91
|
-
},
|
|
92
|
-
"&:hover": {
|
|
93
|
-
cursor: "pointer"
|
|
94
|
-
}
|
|
95
|
-
} : {}
|
|
96
|
-
], onClick: (i) => n(r.id, i.ctrlKey || i.button === 1), hover: !0, role: "checkbox", tabIndex: -1, selected: l === r.id, children: a.map((i) => {
|
|
97
|
-
const c = r[i.id];
|
|
98
|
-
return e.jsx(f, { children: i.renderValue ? i.renderValue(c, i, s) : `${c}` }, i.id);
|
|
99
|
-
}) }, r.id)) }), te = ({ validationError: t, filterKey: n, filterValue: a, filterHelper: s, setFilterValue: l, onFilterClear: r }) => e.jsx(v, { size: "small", error: !!t, helperText: t || s, value: a || "", onChange: (i) => {
|
|
100
|
-
l(i.target.value);
|
|
101
|
-
}, InputProps: {
|
|
102
|
-
endAdornment: a && r ? e.jsx(S, { position: "end", children: e.jsx(j, { onClick: (i) => {
|
|
103
|
-
i.preventDefault(), i.stopPropagation(), r(n);
|
|
104
|
-
}, size: "small", children: e.jsx(g, {}) }) }) : void 0
|
|
105
|
-
} }), ne = ({ columns: t, onFilterClear: n, setFormValidationErrors: a, removeFilterError: s, setFilterValues: l, handleFilterChange: r, filterValues: i, formValidationErrors: c }) => e.jsxs(e.Fragment, { children: [t.map((d) => {
|
|
106
|
-
const o = d.filterKey, p = i[o] || "", x = c[o], u = d.filterValidator, m = (h) => {
|
|
107
|
-
if (u && h && h.length > 0) {
|
|
108
|
-
const D = u(h);
|
|
109
|
-
D ? a({ ...c, [o]: D }) : x && s(o);
|
|
110
|
-
} else x && s(o);
|
|
111
|
-
};
|
|
112
|
-
return e.jsx(f, { style: { width: d.minWidth }, children: d.renderFilter ? d.renderFilter({
|
|
113
|
-
filterKey: o,
|
|
114
|
-
filterValue: `${p}`,
|
|
115
|
-
filterHelper: d.filterHelper,
|
|
116
|
-
validationError: x,
|
|
117
|
-
setFilterValue: (h) => {
|
|
118
|
-
l({ ...i, [o]: h }), m(h.toString());
|
|
119
|
-
},
|
|
120
|
-
onFilterClear: () => n == null ? void 0 : n(o)
|
|
121
|
-
}) : e.jsx(te, { filterKey: o, filterValue: `${p}`, filterHelper: d.filterHelper, validationError: x, setFilterValue: (h) => {
|
|
122
|
-
l({ ...i, [o]: h }), m(h.toString());
|
|
123
|
-
}, onFilterClear: () => n == null ? void 0 : n(o) }) }, d.id);
|
|
124
|
-
}), e.jsx(f, { style: { width: 100 }, children: e.jsx(y, { variant: "contained", disabled: !!Object.keys(c).length, onClick: r, children: "Filter" }) }, "submit-cell")] }), re = ({ columns: t, filters: n, onFilterChange: a, onPageChange: s, onFilterClear: l }) => {
|
|
125
|
-
const [r, i] = O({}), c = (u) => {
|
|
126
|
-
const m = { ...r };
|
|
127
|
-
delete m[u], i(m);
|
|
128
|
-
}, [d, o] = O(n), p = () => {
|
|
129
|
-
a(d);
|
|
130
|
-
}, x = (u) => {
|
|
131
|
-
u.key === "Enter" && a(d);
|
|
132
|
-
};
|
|
133
|
-
return e.jsx(b, { sx: { verticalAlign: "baseline" }, onKeyPress: x, children: e.jsx(ne, { onPageChange: s, columns: t, onFilterClear: l, setFormValidationErrors: i, removeFilterError: c, setFilterValues: (u) => o((m) => ({ ...m, ...u })), handleFilterChange: p, filterValues: d, formValidationErrors: r }) });
|
|
134
|
-
}, $e = ({ onPageChange: t, rows: n, columns: a, filters: s, messageTotalCount: l, onClickRowAction: r, onFilterChange: i, onAddNew: c, onFilterClear: d, selectedEntityId: o }) => {
|
|
135
|
-
const p = (u, m) => {
|
|
136
|
-
t(m);
|
|
137
|
-
}, x = (u) => {
|
|
138
|
-
i == null || i(u);
|
|
139
|
-
};
|
|
140
|
-
return e.jsxs(e.Fragment, { children: [e.jsx(C, { sx: { maxHeight: "calc(100vh - 200px)" }, children: e.jsxs(I, { stickyHeader: !0, "aria-label": "sticky table", size: "small", children: [e.jsx(K, { columns: a }), e.jsxs(w, { children: [c && e.jsx(b, { children: e.jsx(f, { children: e.jsx(y, { variant: "contained", type: "button", onClick: c, children: "Add new" }) }) }), i ? e.jsx(re, { onPageChange: t, columns: a, onFilterChange: x, filters: s, onFilterClear: d }, JSON.stringify(s)) : null, e.jsx(ee, { rows: n, onClickRowAction: r, columns: a, updateFilters: x, selectedRowId: o })] })] }) }), e.jsx(A, { component: "div", count: l, rowsPerPage: s.size && parseInt(s.size, 10) || 100, page: s.page && parseInt(s.page, 10) || 0, onPageChange: p, rowsPerPageOptions: [] })] });
|
|
141
|
-
};
|
|
142
|
-
var L = {}, se = R;
|
|
143
|
-
Object.defineProperty(L, "__esModule", {
|
|
144
|
-
value: !0
|
|
145
|
-
});
|
|
146
|
-
var ae = L.default = void 0, ie = se(k()), oe = e;
|
|
147
|
-
ae = L.default = (0, ie.default)(/* @__PURE__ */ (0, oe.jsx)("path", {
|
|
148
|
-
d: "M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z"
|
|
149
|
-
}), "ArrowBack");
|
|
150
|
-
export {
|
|
151
|
-
be as D,
|
|
152
|
-
$e as L,
|
|
153
|
-
xe as a,
|
|
154
|
-
je as b,
|
|
155
|
-
ge as c,
|
|
156
|
-
he as d,
|
|
157
|
-
fe as e,
|
|
158
|
-
me as f,
|
|
159
|
-
ae as g
|
|
160
|
-
};
|
|
161
|
-
//# sourceMappingURL=ArrowBack-C8PcQDeL.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ArrowBack-C8PcQDeL.js","sources":["../../node_modules/@mui/icons-material/ExpandLess.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/ListMetadata.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/listUtils.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/utils/filterUtils.js","../../node_modules/@mui/icons-material/Backspace.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/DateTimeRangeFilterField.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/ListHeader.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/ListRow.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/ListFilterField.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/ListFilters.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/ListControls.js","../node_modules/@evolver-fi/evolver-basics/dist/esm/common/components/ListTable.js","../../node_modules/@mui/icons-material/ArrowBack.js"],"sourcesContent":["\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z\"\n}), 'ExpandLess');","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Box, IconButton } from '@mui/material';\nimport ExpandLess from '@mui/icons-material/ExpandLess';\nimport ExpandMore from '@mui/icons-material/ExpandMore';\nimport React from 'react';\nconst formatSingleMetadata = (key, value) => {\n if (value !== undefined)\n return `${key}: ${value}`;\n return '';\n};\nconst Metadata = ({ metadata, open }) => {\n const metadataList = open ? Object.entries(metadata) : Object.entries(metadata).slice(0, 1);\n return (_jsx(Box, { sx: { whiteSpace: 'pre-line', padding: '10px' }, children: metadataList.map(([key, value]) => formatSingleMetadata(key, value)).join('\\n') }));\n};\nexport const ListMetadata = ({ metadata }) => {\n const [open, setOpen] = React.useState(false);\n const handleClick = (event) => {\n event.preventDefault();\n event.stopPropagation();\n setOpen(!open);\n };\n return (_jsxs(Box, { sx: { display: 'flex', flexDirection: 'row', alignItems: 'flex-start' }, children: [_jsx(IconButton, { onClick: handleClick, children: open ? _jsx(ExpandLess, {}) : _jsx(ExpandMore, {}) }), _jsx(Metadata, { open: open, metadata: metadata })] }));\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { ListMetadata } from './ListMetadata';\n// TODO add typings for all the formatters so that only valid keys are passed\nexport const formatNumberRangeFilter = (value, key) => {\n const trimmed = value.trim();\n const result = new URLSearchParams();\n if (!trimmed) {\n return result;\n }\n const rangeSeparatorIndex = trimmed.indexOf('-');\n const keyStr = String(key);\n if (rangeSeparatorIndex >= 0) {\n const parts = trimmed.split('-', 2);\n const start = parts[0].trim();\n const end = parts[1].trim();\n if (start) {\n result.append(`${keyStr}.min`, start);\n }\n if (end) {\n result.append(`${keyStr}.max`, end);\n }\n return result;\n }\n result.append(`${keyStr}.min`, trimmed);\n result.append(`${keyStr}.max`, trimmed);\n return result;\n};\nconst datetimePattern = /\\d{4}-\\d{2}-\\d{2}((\\s|T)\\d{2}:\\d{2}:\\d{2})?/g;\nexport const formatDatetimeRangeFilter = (value, key) => {\n const formatMin = (value) => (value.length > 10 ? value : `${value} 00:00:00`);\n const formatMax = (value) => (value.length > 10 ? value : `${value} 23:59:59`);\n const trimmed = value.trim();\n const result = new URLSearchParams();\n if (!trimmed) {\n return result;\n }\n const isStartOnly = trimmed.charAt(trimmed.length - 1) === '-';\n const isEndOnly = trimmed.indexOf('-') === 0;\n const matches = value.match(datetimePattern);\n if (!matches || matches.length === 0) {\n return result;\n }\n const keyStr = String(key);\n if (matches.length === 1) {\n if (!isStartOnly && !isEndOnly) {\n result.append(`${keyStr}.min`, formatMin(matches[0]));\n result.append(`${keyStr}.max`, formatMax(matches[0]));\n return result;\n }\n result.append(`${keyStr}.${isEndOnly ? 'max' : 'min'}`, isEndOnly ? formatMax(matches[0]) : formatMin(matches[0]));\n return result;\n }\n result.append(`${keyStr}.min`, formatMin(matches[0]));\n result.append(`${keyStr}.max`, formatMax(matches[1]));\n return result;\n};\nexport const formatDateTime = (value) => value.slice(0, value.indexOf('.')).replace('T', ' ');\nexport const formatMetadata = (metadata) => {\n return _jsx(ListMetadata, { metadata: metadata });\n};\nexport const getParameterValueFormatters = (definitions) => {\n const result = {};\n definitions.forEach((definition) => {\n if (definition.paramValueFormatter) {\n result[definition.filterKey] = definition.paramValueFormatter;\n }\n });\n return result;\n};\n","export const filterFromUrlSearchParams = (query, keys) => {\n const filter = {};\n keys.forEach((k) => {\n const value = query.get(k.toString());\n if (value) {\n filter[k] = value.toString();\n }\n });\n return filter;\n};\n/**\n * Produce a filter value from a row value. Best effort recognition of the different types of objects.\n * @param rowValue\n * @returns\n */\nexport const filterValueFromRowValue = (rowValue) => {\n if (Array.isArray(rowValue)) {\n return formatKeyValueArray(rowValue);\n }\n else if (typeof rowValue === 'object') {\n return formatObject(rowValue);\n }\n return rowValue.toString();\n};\nexport const formatObject = (value) => {\n return Object.entries(value)\n .map(([k, v]) => `${k}=${v}`)\n .join(',');\n};\nexport const formatKeyValueArray = (value) => {\n return value.map((v) => `${v.key}=${v.value}`).join(',');\n};\nexport const createFilterQuery = (filters, formatterByKey) => {\n const result = new URLSearchParams();\n if (!filters) {\n return result;\n }\n Object.entries(filters).forEach(([key, value]) => {\n if (value) {\n const subResult = formatterByKey?.[key]?.(value, key) ?? new URLSearchParams({ [key]: value });\n subResult.forEach((subValue, subKey) => {\n result.append(subKey, subValue);\n });\n }\n });\n return result;\n};\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M22 3H7c-.69 0-1.23.35-1.59.88L0 12l5.41 8.11c.36.53.9.89 1.59.89h15c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-3 12.59L17.59 17 14 13.41 10.41 17 9 15.59 12.59 12 9 8.41 10.41 7 14 10.59 17.59 7 19 8.41 15.41 12z\"\n}), 'Backspace');","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useEffect } from 'react';\nimport { Grid, IconButton, InputAdornment, TextField } from '@mui/material';\nimport Backspace from '@mui/icons-material/Backspace';\nconst DateTimeRangeFilterField = ({ filterValue, validationError, setFilterValue, }) => {\n const [initialStartDateTime, initialEndDateTime] = filterValue?.split('-') || '';\n const [startDateTime, setStartDateTime] = React.useState(initialStartDateTime);\n const [endDateTime, setEndDateTime] = React.useState(initialEndDateTime);\n useEffect(() => {\n const value = `${startDateTime || ''}${endDateTime || startDateTime ? '-' : ''}${endDateTime || ''}`;\n setFilterValue(value);\n }, [startDateTime, endDateTime]);\n return (_jsxs(Grid, { container: true, direction: \"row\", spacing: 1, children: [_jsx(Grid, { item: true, xs: 12, xl: 6, children: _jsx(TextField, { size: \"small\", error: !!validationError, helperText: validationError || 'Start', value: startDateTime || '', onChange: (event) => {\n setStartDateTime(`${event.target.value}:00`);\n }, fullWidth: true, InputProps: {\n endAdornment: startDateTime && startDateTime.length > 0 ? (_jsx(InputAdornment, { position: \"end\", children: _jsx(IconButton, { onClick: (e) => {\n e.preventDefault();\n e.stopPropagation();\n setStartDateTime(undefined);\n }, size: \"small\", children: _jsx(Backspace, {}) }) })) : undefined,\n } }) }), _jsx(Grid, { item: true, xs: 12, xl: 6, children: _jsx(TextField, { size: \"small\", value: endDateTime || '', helperText: \"End\", onChange: (event) => {\n setEndDateTime(`${event.target.value}:00`);\n }, fullWidth: true, InputProps: {\n endAdornment: endDateTime && endDateTime.length > 0 ? (_jsx(InputAdornment, { position: \"end\", children: _jsx(IconButton, { onClick: (e) => {\n e.preventDefault();\n e.stopPropagation();\n setEndDateTime(undefined);\n }, size: \"small\", children: _jsx(Backspace, {}) }) })) : undefined,\n } }) })] }));\n};\nexport default DateTimeRangeFilterField;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { TableCell, TableHead, TableRow } from '@mui/material';\nexport const ListHeader = ({ columns }) => {\n return (_jsx(TableHead, { children: _jsxs(TableRow, { children: [columns.map((column) => (_jsx(TableCell, { sx: {\n backgroundColor: 'primary.main',\n color: 'common.white',\n fontSize: 16,\n minWidth: column.minWidth,\n }, children: column.label }, column.id))), _jsx(TableCell, { sx: {\n backgroundColor: 'primary.main',\n color: 'common.white',\n fontSize: 16,\n width: 100,\n } }, \"submit-cell\")] }) }));\n};\n","import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { TableCell, TableRow } from '@mui/material';\nexport const ListRow = ({ rows, onClickRowAction, columns, updateFilters, selectedRowId, }) => {\n return (_jsx(_Fragment, { children: rows.map((row) => (_jsx(TableRow, { sx: [\n row.id !== selectedRowId\n ? {\n '&:nth-of-type(odd)': {\n backgroundColor: 'action.hover',\n },\n '&:hover': {\n cursor: 'pointer',\n },\n }\n : {},\n ], onClick: (e) => onClickRowAction(row.id, e.ctrlKey || e.button === 1), hover: true, role: \"checkbox\", tabIndex: -1, selected: selectedRowId === row.id, children: columns.map((column) => {\n const value = row[column.id];\n return (_jsx(TableCell, { children: column.renderValue ? column.renderValue(value, column, updateFilters) : `${value}` }, column.id));\n }) }, row.id))) }));\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { IconButton, InputAdornment, TextField } from '@mui/material';\nimport Backspace from '@mui/icons-material/Backspace';\nconst ListFilterField = ({ validationError, filterKey, filterValue, filterHelper, setFilterValue, onFilterClear, }) => (_jsx(TextField, { size: \"small\", error: !!validationError, helperText: validationError || filterHelper, value: filterValue || '', onChange: (event) => {\n setFilterValue(event.target.value);\n }, InputProps: {\n endAdornment: filterValue && onFilterClear ? (_jsx(InputAdornment, { position: \"end\", children: _jsx(IconButton, { onClick: (e) => {\n e.preventDefault();\n e.stopPropagation();\n onFilterClear(filterKey);\n }, size: \"small\", children: _jsx(Backspace, {}) }) })) : undefined,\n } }));\nexport default ListFilterField;\n","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Button, TableCell } from '@mui/material';\nimport ListFilterField from './ListFilterField';\nexport const ListFilters = ({ columns, onFilterClear, setFormValidationErrors, removeFilterError, setFilterValues, handleFilterChange, filterValues, formValidationErrors, }) => {\n return (_jsxs(_Fragment, { children: [columns.map((column) => {\n const filterKey = column.filterKey;\n const filterValue = filterValues[filterKey] || '';\n const validationError = formValidationErrors[filterKey];\n const validator = column.filterValidator;\n const handleValidate = (value) => {\n if (validator && value && value.length > 0) {\n const error = validator(value);\n if (error) {\n setFormValidationErrors({ ...formValidationErrors, [filterKey]: error });\n }\n else if (validationError) {\n removeFilterError(filterKey);\n }\n }\n else if (validationError) {\n removeFilterError(filterKey);\n }\n };\n return (_jsx(TableCell, { style: { width: column.minWidth }, children: column.renderFilter ? (column.renderFilter({\n filterKey,\n filterValue: `${filterValue}`,\n filterHelper: column.filterHelper,\n validationError,\n setFilterValue: (value) => {\n setFilterValues({ ...filterValues, [filterKey]: value });\n handleValidate(value.toString());\n },\n onFilterClear: () => onFilterClear?.(filterKey),\n })) : (_jsx(ListFilterField, { filterKey: filterKey, filterValue: `${filterValue}`, filterHelper: column.filterHelper, validationError: validationError, setFilterValue: (value) => {\n setFilterValues({ ...filterValues, [filterKey]: value });\n handleValidate(value.toString());\n }, onFilterClear: () => onFilterClear?.(filterKey) })) }, column.id));\n }), _jsx(TableCell, { style: { width: 100 }, children: _jsx(Button, { variant: \"contained\", disabled: !!Object.keys(formValidationErrors).length, onClick: handleFilterChange, children: \"Filter\" }) }, \"submit-cell\")] }));\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useState } from 'react';\nimport { ListFilters } from './ListFilters';\nimport { TableRow } from '@mui/material';\nexport const ListControls = ({ columns, filters, onFilterChange, onPageChange, onFilterClear, }) => {\n const [formValidationErrors, setFormValidationErrors] = useState({});\n const removeFilterError = (filterKey) => {\n const currentErrors = { ...formValidationErrors };\n delete currentErrors[filterKey];\n setFormValidationErrors(currentErrors);\n };\n const [filterValues, setFilterValues] = useState(filters);\n const handleFilterChange = () => {\n onFilterChange(filterValues);\n };\n const onKeyPress = (e) => {\n if (e.key === 'Enter') {\n onFilterChange(filterValues);\n }\n };\n return (_jsx(TableRow, { sx: { verticalAlign: 'baseline' }, onKeyPress: onKeyPress, children: _jsx(ListFilters, { onPageChange: onPageChange, columns: columns, onFilterClear: onFilterClear, setFormValidationErrors: setFormValidationErrors, removeFilterError: removeFilterError, setFilterValues: (value) => setFilterValues((prev) => ({ ...prev, ...value })), handleFilterChange: handleFilterChange, filterValues: filterValues, formValidationErrors: formValidationErrors }) }));\n};\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { Button, Table, TableBody, TableCell, TableContainer, TablePagination, TableRow, } from '@mui/material';\nimport { ListHeader } from './ListHeader';\nimport { ListRow } from './ListRow';\nimport { ListControls } from './ListControls';\nexport const ListTable = ({ onPageChange, rows, columns, filters, messageTotalCount, onClickRowAction, onFilterChange, onAddNew, onFilterClear, selectedEntityId, }) => {\n const handleChangePage = (_event, newPage) => {\n onPageChange(newPage);\n };\n const handleFilterChange = (value) => {\n onFilterChange?.(value);\n };\n return (_jsxs(_Fragment, { children: [_jsx(TableContainer, { sx: { maxHeight: 'calc(100vh - 200px)' }, children: _jsxs(Table, { stickyHeader: true, \"aria-label\": \"sticky table\", size: \"small\", children: [_jsx(ListHeader, { columns: columns }), _jsxs(TableBody, { children: [onAddNew && (_jsx(TableRow, { children: _jsx(TableCell, { children: _jsx(Button, { variant: \"contained\", type: \"button\", onClick: onAddNew, children: \"Add new\" }) }) })), onFilterChange ? (_jsx(ListControls, { onPageChange: onPageChange, columns: columns, onFilterChange: handleFilterChange, filters: filters, onFilterClear: onFilterClear }, JSON.stringify(filters))) : null, _jsx(ListRow, { rows: rows, onClickRowAction: onClickRowAction, columns: columns, updateFilters: handleFilterChange, selectedRowId: selectedEntityId })] })] }) }), _jsx(TablePagination, { component: \"div\", count: messageTotalCount, rowsPerPage: (filters.size && parseInt(filters.size, 10)) || 100, page: (filters.page && parseInt(filters.page, 10)) || 0, onPageChange: handleChangePage, rowsPerPageOptions: [] })] }));\n};\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z\"\n}), 'ArrowBack');"],"names":["_interopRequireDefault","require$$0","ExpandLess","default_1","_createSvgIcon","require$$1","_jsxRuntime","require$$2","formatSingleMetadata","key","value","Metadata","metadata","open","metadataList","_jsx","Box","ListMetadata","setOpen","React","handleClick","event","_jsxs","IconButton","ExpandMore","formatNumberRangeFilter","trimmed","result","rangeSeparatorIndex","keyStr","parts","start","end","datetimePattern","formatDatetimeRangeFilter","formatMin","formatMax","isStartOnly","isEndOnly","matches","formatDateTime","formatMetadata","filterValueFromRowValue","rowValue","formatKeyValueArray","formatObject","k","v","createFilterQuery","filters","formatterByKey","_a","subValue","subKey","Backspace","DateTimeRangeFilterField","filterValue","validationError","setFilterValue","initialStartDateTime","initialEndDateTime","startDateTime","setStartDateTime","endDateTime","setEndDateTime","useEffect","Grid","TextField","InputAdornment","e","ListHeader","columns","TableHead","TableRow","column","TableCell","ListRow","rows","onClickRowAction","updateFilters","selectedRowId","_Fragment","row","ListFilterField","filterKey","filterHelper","onFilterClear","ListFilters","setFormValidationErrors","removeFilterError","setFilterValues","handleFilterChange","filterValues","formValidationErrors","validator","handleValidate","error","Button","ListControls","onFilterChange","onPageChange","useState","currentErrors","onKeyPress","prev","ListTable","messageTotalCount","onAddNew","selectedEntityId","handleChangePage","_event","newPage","TableContainer","Table","TableBody","TablePagination","ArrowBack"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12]}
|