@evolver-fi/evolver-basics-admin-components 0.0.12 → 0.0.19-beta.1

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.
Files changed (57) hide show
  1. package/dist/ConfirmButton-jayUa8_J.js.map +1 -1
  2. package/dist/{ExpandMore-CCOUGfS4.js → ExpandMore-CFLBmfHS.js} +2 -2
  3. package/dist/{ExpandMore-CCOUGfS4.js.map → ExpandMore-CFLBmfHS.js.map} +1 -1
  4. package/dist/{JwtTokensRoute-DKaxXWe8.js → JwtTokensRoute-CavNQu9F.js} +3 -3
  5. package/dist/JwtTokensRoute-CavNQu9F.js.map +1 -0
  6. package/dist/{ScheduledTaskFormRoute-BpHIsRQr.js → ScheduledTaskFormRoute-CnVsqh-c.js} +11 -10
  7. package/dist/ScheduledTaskFormRoute-CnVsqh-c.js.map +1 -0
  8. package/dist/SingleLogMessageRoute-B6hkr7rG.js +305 -0
  9. package/dist/SingleLogMessageRoute-B6hkr7rG.js.map +1 -0
  10. package/dist/SingleMessageRoute-Bxix2rv7.js +320 -0
  11. package/dist/SingleMessageRoute-Bxix2rv7.js.map +1 -0
  12. package/dist/TableMetadataDisplay-DTDUH1KY.js +330 -0
  13. package/dist/TableMetadataDisplay-DTDUH1KY.js.map +1 -0
  14. package/dist/{TriggerablesRoute-CHtOEVBR.js → TriggerablesRoute-BY72XS5U.js} +3 -3
  15. package/dist/TriggerablesRoute-BY72XS5U.js.map +1 -0
  16. package/dist/{createSvgIcon-DHqCx8A0.js → createSvgIcon-DCKQGUI3.js} +963 -953
  17. package/dist/createSvgIcon-DCKQGUI3.js.map +1 -0
  18. package/dist/jwt-tokens/index.js +1 -1
  19. package/dist/main/index.js +5 -5
  20. package/dist/message-log/index.js +1 -1
  21. package/dist/message-sending/index.js +1 -1
  22. package/dist/{validation-C1lKYJJR.js → parser-CI353PAC.js} +470 -486
  23. package/dist/parser-CI353PAC.js.map +1 -0
  24. package/dist/scheduled-tasks/index.js +1 -1
  25. package/dist/triggerables/index.js +1 -1
  26. package/dist/types/admin-components/src/common/format.d.ts +1 -0
  27. package/dist/types/admin-components/src/common/types.d.ts +27 -0
  28. package/dist/types/admin-components/src/common/validation.d.ts +5 -0
  29. package/dist/types/admin-components/src/components/filter/EnumSelectFilter.d.ts +11 -0
  30. package/dist/types/admin-components/src/components/filter/FilterHelperTexts.d.ts +4 -0
  31. package/dist/types/admin-components/src/components/filter/FilterLink.d.ts +2 -0
  32. package/dist/types/admin-components/src/components/filter/TextFilter.d.ts +2 -0
  33. package/dist/types/admin-components/src/components/filter/types.d.ts +20 -0
  34. package/dist/types/admin-components/src/components/metadata/TableMetadataDisplay.d.ts +2 -0
  35. package/dist/types/admin-components/src/components/metadata/utils.d.ts +1 -0
  36. package/dist/types/admin-components/src/components/table/Pagination.d.ts +7 -0
  37. package/dist/types/admin-components/src/components/table/Table.d.ts +3 -0
  38. package/dist/types/admin-components/src/components/table/types.d.ts +48 -0
  39. package/dist/types/admin-components/src/routes/message-log/messageLogColumns.d.ts +3 -0
  40. package/dist/types/admin-components/src/routes/message-log/types.d.ts +35 -0
  41. package/dist/types/admin-components/src/routes/message-sending/loader.d.ts +1 -1
  42. package/dist/types/admin-components/src/routes/message-sending/messageSendingColumns.d.ts +3 -0
  43. package/dist/types/admin-components/src/routes/message-sending/types.d.ts +41 -0
  44. package/dist/validation-BRENvwZ0.js +22 -0
  45. package/dist/validation-BRENvwZ0.js.map +1 -0
  46. package/package.json +6 -3
  47. package/dist/ArrowBack-C8PcQDeL.js +0 -161
  48. package/dist/ArrowBack-C8PcQDeL.js.map +0 -1
  49. package/dist/JwtTokensRoute-DKaxXWe8.js.map +0 -1
  50. package/dist/ScheduledTaskFormRoute-BpHIsRQr.js.map +0 -1
  51. package/dist/SingleLogMessageRoute-i_AbkS5G.js +0 -245
  52. package/dist/SingleLogMessageRoute-i_AbkS5G.js.map +0 -1
  53. package/dist/SingleMessageRoute-Dh7BWlPt.js +0 -254
  54. package/dist/SingleMessageRoute-Dh7BWlPt.js.map +0 -1
  55. package/dist/TriggerablesRoute-CHtOEVBR.js.map +0 -1
  56. package/dist/createSvgIcon-DHqCx8A0.js.map +0 -1
  57. 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-BpHIsRQr.js";
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,
@@ -1,4 +1,4 @@
1
- import { T as a, g, l as s } from "../TriggerablesRoute-CHtOEVBR.js";
1
+ import { T as a, g, l as s } from "../TriggerablesRoute-BY72XS5U.js";
2
2
  export {
3
3
  a as TriggerablesRoute,
4
4
  g as getTriggerablesLoader,
@@ -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,4 @@
1
+ export declare const FilterHelperTexts: ({ helperText, error, }: {
2
+ helperText?: React.ReactNode;
3
+ error?: string;
4
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { GenericCellProps } from '../table/types';
2
+ export declare const FilterLink: ({ value, rowKey, searchKey, }: GenericCellProps<string | number | undefined | null>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { GenericFilterProps } from './types';
2
+ export declare const TextFilter: ({ name, value, defaultValue, onChange, helperText, validator, }: 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,2 @@
1
+ import { GenericCellProps } from '../table/types';
2
+ export declare const TableMetadataDisplay: ({ value, }: GenericCellProps<Record<string, string>>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const mapMetadata: (message: unknown) => unknown;
@@ -0,0 +1,7 @@
1
+ export declare const Pagination: ({ page, rowsPerPage, total, onPageChange, }: {
2
+ /** zero-indexed page number */
3
+ page: number;
4
+ rowsPerPage: number;
5
+ total: number;
6
+ onPageChange: (page: number) => void;
7
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -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,3 @@
1
+ import { ColumnDefinitions } from '../../components/table/types';
2
+ import { LogFilter, LogMessage } from './types';
3
+ export declare const messageLogColumns: ColumnDefinitions<LogMessage, LogFilter>;
@@ -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<import('@evolver-fi/evolver-basics/messages').MessageResponse>;
5
+ export declare const getMessageListLoader: (backendClient?: AxiosInstance) => ({ request }: LoaderFunctionArgs) => Promise<unknown>;
6
6
  export declare const messageListLoader: LoaderFunction;
@@ -0,0 +1,3 @@
1
+ import { ColumnDefinitions } from '../../components/table/types';
2
+ import { MessageData, MessageFilter } from './types';
3
+ export declare const messageSendingColumns: ColumnDefinitions<MessageData, MessageFilter>;
@@ -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.12",
3
+ "version": "0.0.19-beta.1",
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": "^3.0.2",
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": "^3.0.2",
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]}