@cryptlex/web-components 1.3.4 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- package/dist/components/data-table/column-picker.es.js +12 -11
- package/dist/components/data-table/column-picker.es.js.map +1 -1
- package/dist/components/data-table/data-table.es.js +112 -95
- package/dist/components/data-table/data-table.es.js.map +1 -1
- package/dist/components/data-table/table-actions.es.js +8 -8
- package/dist/components/data-table/table-actions.es.js.map +1 -1
- package/dist/components/data-table/table-content.es.js +20 -15
- package/dist/components/data-table/table-content.es.js.map +1 -1
- package/dist/components/data-table/table-filter.es.js +264 -0
- package/dist/components/data-table/table-filter.es.js.map +1 -0
- package/dist/components/data-table/table-utils/constants.es.js +20 -6
- package/dist/components/data-table/table-utils/constants.es.js.map +1 -1
- package/dist/components/data-table/table-utils/link-display.es.js +4 -4
- package/dist/components/data-table/table-utils/link-display.es.js.map +1 -1
- package/dist/components/key-value-card/key-value-card.es.js +87 -0
- package/dist/components/key-value-card/key-value-card.es.js.map +1 -0
- package/dist/components/sidebar/app-layout.es.js +41 -47
- package/dist/components/sidebar/app-layout.es.js.map +1 -1
- package/dist/components/sidebar/breadcrumb.es.js +58 -0
- package/dist/components/sidebar/breadcrumb.es.js.map +1 -0
- package/dist/components/sidebar/nav-main.es.js +65 -51
- package/dist/components/sidebar/nav-main.es.js.map +1 -1
- package/dist/components/static-data-table/data-table.es.js +8 -8
- package/dist/components/static-data-table/data-table.es.js.map +1 -1
- package/dist/components/ui/avatar.es.js +1 -1
- package/dist/components/ui/avatar.es.js.map +1 -1
- package/dist/components/ui/badge.es.js +1 -1
- package/dist/components/ui/badge.es.js.map +1 -1
- package/dist/components/ui/button.es.js +15 -14
- package/dist/components/ui/button.es.js.map +1 -1
- package/dist/components/ui/calendar.es.js +3 -3
- package/dist/components/ui/chart.es.js +16 -16
- package/dist/components/ui/chart.es.js.map +1 -1
- package/dist/components/ui/checkbox.es.js +1 -1
- package/dist/components/ui/checkbox.es.js.map +1 -1
- package/dist/components/ui/command.es.js +28 -28
- package/dist/components/ui/command.es.js.map +1 -1
- package/dist/components/ui/copy-button.es.js +76 -0
- package/dist/components/ui/copy-button.es.js.map +1 -0
- package/dist/components/ui/dialog.es.js +8 -8
- package/dist/components/ui/dialog.es.js.map +1 -1
- package/dist/components/ui/drawer.es.js +18 -21
- package/dist/components/ui/drawer.es.js.map +1 -1
- package/dist/components/ui/dropdown-menu.es.js +38 -38
- package/dist/components/ui/dropdown-menu.es.js.map +1 -1
- package/dist/components/ui/form.es.js +4 -4
- package/dist/components/ui/input-otp.es.js +2 -2
- package/dist/components/ui/input-otp.es.js.map +1 -1
- package/dist/components/ui/input.es.js +7 -7
- package/dist/components/ui/input.es.js.map +1 -1
- package/dist/components/ui/link-button.es.js +22 -0
- package/dist/components/ui/link-button.es.js.map +1 -0
- package/dist/components/ui/mutli-select.es.js +17 -15
- package/dist/components/ui/mutli-select.es.js.map +1 -1
- package/dist/components/ui/navigation-menu.es.js +3 -3
- package/dist/components/ui/navigation-menu.es.js.map +1 -1
- package/dist/components/ui/password-input.es.js +10 -10
- package/dist/components/ui/password-input.es.js.map +1 -1
- package/dist/components/ui/popover.es.js +1 -1
- package/dist/components/ui/popover.es.js.map +1 -1
- package/dist/components/ui/radio-group.es.js +7 -7
- package/dist/components/ui/radio-group.es.js.map +1 -1
- package/dist/components/ui/select.es.js +20 -20
- package/dist/components/ui/select.es.js.map +1 -1
- package/dist/components/ui/sheet.es.js +8 -8
- package/dist/components/ui/sheet.es.js.map +1 -1
- package/dist/components/ui/sidebar.es.js +76 -76
- package/dist/components/ui/sidebar.es.js.map +1 -1
- package/dist/components/ui/table-page-layout.es.js +8 -8
- package/dist/components/ui/table-page-layout.es.js.map +1 -1
- package/dist/components/ui/table.es.js +19 -19
- package/dist/components/ui/table.es.js.map +1 -1
- package/dist/components/ui/tabs.es.js +11 -11
- package/dist/components/ui/tabs.es.js.map +1 -1
- package/dist/index.es.d.ts +54 -21
- package/dist/index.es.js +231 -226
- package/dist/index.es.js.map +1 -1
- package/dist/utils/index.es.js +19 -14
- package/dist/utils/index.es.js.map +1 -1
- package/lib/index.css +15 -87
- package/lib/tailwind.preset.css +220 -0
- package/lib/tokens.css +54 -54
- package/package.json +9 -8
- package/dist/components/info-card/info-card.es.js +0 -71
- package/dist/components/info-card/info-card.es.js.map +0 -1
- package/tailwind.preset.ts +0 -183
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { Table as
|
|
3
|
-
import { flexRender as
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
columns:
|
|
1
|
+
import { jsxs as r, jsx as e, Fragment as d } from "react/jsx-runtime";
|
|
2
|
+
import { Table as p, TableHeader as h, TableRow as c, TableCell as a, TableBody as u, TableFooter as f } from "../ui/table.es.js";
|
|
3
|
+
import { flexRender as m } from "@tanstack/react-table";
|
|
4
|
+
import { Info as x } from "lucide-react";
|
|
5
|
+
function y({
|
|
6
|
+
table: n,
|
|
7
|
+
columns: g,
|
|
8
|
+
dataQuery: s
|
|
8
9
|
}) {
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
var i;
|
|
11
|
+
return /* @__PURE__ */ r(p, { className: "relative h-full w-full", children: [
|
|
12
|
+
/* @__PURE__ */ e(h, { className: "sticky top-0 z-10", children: n.getHeaderGroups().map((o, l) => /* @__PURE__ */ e(c, { className: "border-b", children: o.headers.map((t) => /* @__PURE__ */ r(
|
|
11
13
|
a,
|
|
12
14
|
{
|
|
13
15
|
className: `
|
|
@@ -17,7 +19,7 @@ function h({
|
|
|
17
19
|
`,
|
|
18
20
|
onClick: t.column.getToggleSortingHandler(),
|
|
19
21
|
children: [
|
|
20
|
-
t.isPlaceholder ? null :
|
|
22
|
+
t.isPlaceholder ? null : m(t.column.columnDef.header, t.getContext()),
|
|
21
23
|
{
|
|
22
24
|
asc: "↑",
|
|
23
25
|
desc: "↓"
|
|
@@ -26,21 +28,24 @@ function h({
|
|
|
26
28
|
},
|
|
27
29
|
t.id
|
|
28
30
|
)) }, l)) }),
|
|
29
|
-
/* @__PURE__ */ e(u, { className: "flex-1 overflow-y-auto", children:
|
|
31
|
+
/* @__PURE__ */ e(u, { className: "flex-1 overflow-y-auto", children: n.getRowModel().rows.length ? n.getRowModel().rows.map((o) => /* @__PURE__ */ e(c, { "data-state": o.getIsSelected() && "selected", children: o.getVisibleCells().map((l) => /* @__PURE__ */ e(
|
|
30
32
|
a,
|
|
31
33
|
{
|
|
32
34
|
className: `
|
|
33
35
|
px-4 py-2 text-left text-sm whitespace-nowrap
|
|
34
36
|
${l.column.id === "actions" ? "sticky right-0 bg-card text-center shadow-2xl" : ""}
|
|
35
37
|
`,
|
|
36
|
-
children:
|
|
38
|
+
children: m(l.column.columnDef.cell, l.getContext())
|
|
37
39
|
},
|
|
38
40
|
l.id
|
|
39
|
-
)) },
|
|
40
|
-
|
|
41
|
+
)) }, o.id)) : /* @__PURE__ */ e(c, { className: "h-[55vh] hover:bg-transparent cursor-not-allowed", children: /* @__PURE__ */ e(a, { colSpan: g.length, className: "border-none", children: /* @__PURE__ */ e("span", { className: "flex gap-3 justify-center items-center", children: !s.isFetching && (s.isError ? /* @__PURE__ */ r(d, { children: [
|
|
42
|
+
/* @__PURE__ */ e(x, {}),
|
|
43
|
+
" You don't have the required permissions. Please contact your admin."
|
|
44
|
+
] }) : (i = s.data) != null && i.data ? null : /* @__PURE__ */ e(d, { children: "No result found." })) }) }) }) }),
|
|
45
|
+
s.isFetching && /* @__PURE__ */ e(f, { className: "absolute inset-0 z-20 flex justify-center items-center bg-card/80" })
|
|
41
46
|
] });
|
|
42
47
|
}
|
|
43
48
|
export {
|
|
44
|
-
|
|
49
|
+
y as TableContent
|
|
45
50
|
};
|
|
46
51
|
//# sourceMappingURL=table-content.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-content.es.js","sources":["../../../lib/components/data-table/table-content.tsx"],"sourcesContent":["import {\n Table as CxTable,\n TableBody,\n TableCell,\n TableFooter,\n TableHeader,\n TableRow,\n} from '@/components/ui/table';\nimport { ColumnDef, Table, flexRender } from '@tanstack/react-table';\n\nexport function TableContent<TData, TValue>({\n table,\n
|
|
1
|
+
{"version":3,"file":"table-content.es.js","sources":["../../../lib/components/data-table/table-content.tsx"],"sourcesContent":["import {\n Table as CxTable,\n TableBody,\n TableCell,\n TableFooter,\n TableHeader,\n TableRow,\n} from '@/components/ui/table';\nimport type { UseQueryResult } from '@tanstack/react-query';\nimport { ColumnDef, Table, flexRender } from '@tanstack/react-table';\nimport { Info } from 'lucide-react';\n\nexport function TableContent<TData, TValue>({\n table,\n columns,\n dataQuery,\n}: {\n table: Table<TData>;\n columns: ColumnDef<TData, TValue>[];\n dataQuery: UseQueryResult<any, unknown>;\n}) {\n return (\n <CxTable className=\"relative h-full w-full\">\n <TableHeader className=\"sticky top-0 z-10\">\n {table.getHeaderGroups().map((headerGroup, index) => (\n <TableRow key={index} className=\"border-b\">\n {headerGroup.headers.map((header) => (\n <TableCell\n key={header.id}\n className={`\n px-4 py-2 text-left text-sm font-medium cursor-pointer whitespace-nowrap \n bg-card \n ${header.id === 'actions' ? 'sticky right-0 z-50 bg-card' : ''}\n `}\n onClick={header.column.getToggleSortingHandler()}\n >\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n {{\n asc: '↑',\n desc: '↓',\n }[header.column.getIsSorted() as string] ?? null}\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody className=\"flex-1 overflow-y-auto\">\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow key={row.id} data-state={row.getIsSelected() && 'selected'}>\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n className={`\n px-4 py-2 text-left text-sm whitespace-nowrap \n ${\n cell.column.id === 'actions'\n ? 'sticky right-0 bg-card text-center shadow-2xl'\n : ''\n }\n `}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow className=\"h-[55vh] hover:bg-transparent cursor-not-allowed\">\n <TableCell colSpan={columns.length} className=\"border-none\">\n <span className=\"flex gap-3 justify-center items-center\">\n {!dataQuery.isFetching && (\n dataQuery.isError ? (\n <>\n <Info /> You don't have the required permissions. Please contact your admin.\n </>\n ) : !dataQuery.data?.data ? (\n <>No result found.</>\n ) : null\n )}\n </span>\n </TableCell>\n </TableRow>\n \n )}\n </TableBody>\n {/* Loader positioned to cover entire table viewport */}\n {dataQuery.isFetching && (\n <TableFooter className=\"absolute inset-0 z-20 flex justify-center items-center bg-card/80\" />\n )}\n </CxTable>\n );\n}\n"],"names":["TableContent","table","columns","dataQuery","jsxs","CxTable","jsx","TableHeader","headerGroup","index","TableRow","header","TableCell","flexRender","TableBody","row","cell","Fragment","Info","_a","TableFooter"],"mappings":";;;;AAYO,SAASA,EAA4B;AAAA,EAC1C,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AACF,GAIG;;AAEC,SAAA,gBAAAC,EAACC,GAAQ,EAAA,WAAU,0BACjB,UAAA;AAAA,IAAA,gBAAAC,EAACC,KAAY,WAAU,qBACpB,YAAM,gBAAgB,EAAE,IAAI,CAACC,GAAaC,MACzC,gBAAAH,EAACI,KAAqB,WAAU,YAC7B,YAAY,QAAQ,IAAI,CAACC,MACxB,gBAAAP;AAAA,MAACQ;AAAA,MAAA;AAAA,QAEC,WAAW;AAAA;AAAA;AAAA,oBAGPD,EAAO,OAAO,YAAY,gCAAgC,EAAE;AAAA;AAAA,QAEhE,SAASA,EAAO,OAAO,wBAAwB;AAAA,QAE9C,UAAA;AAAA,UAAOA,EAAA,gBACJ,OACAE,EAAWF,EAAO,OAAO,UAAU,QAAQA,EAAO,YAAY;AAAA,UACjE;AAAA,YACC,KAAK;AAAA,YACL,MAAM;AAAA,UACN,EAAAA,EAAO,OAAO,YAAA,CAAuB,KAAK;AAAA,QAAA;AAAA,MAAA;AAAA,MAdvCA,EAAO;AAAA,IAAA,CAgBf,EAAA,GAnBYF,CAoBf,CACD,GACH;AAAA,IACC,gBAAAH,EAAAQ,GAAA,EAAU,WAAU,0BAClB,UAAMb,EAAA,YAAA,EAAc,KAAK,SACxBA,EAAM,YAAY,EAAE,KAAK,IAAI,CAACc,MAC3B,gBAAAT,EAAAI,GAAA,EAAsB,cAAYK,EAAI,cAAc,KAAK,YACvD,UAAAA,EAAI,gBAAgB,EAAE,IAAI,CAACC,MAC1B,gBAAAV;AAAA,MAACM;AAAA,MAAA;AAAA,QAEC,WAAW;AAAA;AAAA,sBAGPI,EAAK,OAAO,OAAO,YACf,kDACA,EACN;AAAA;AAAA,QAGD,YAAWA,EAAK,OAAO,UAAU,MAAMA,EAAK,WAAY,CAAA;AAAA,MAAA;AAAA,MAVpDA,EAAK;AAAA,IAAA,CAYb,EAfY,GAAAD,EAAI,EAgBnB,CACD,IAED,gBAAAT,EAACI,GAAS,EAAA,WAAU,oDACpB,UAAA,gBAAAJ,EAACM,GAAU,EAAA,SAASV,EAAQ,QAAQ,WAAU,eAC5C,UAAA,gBAAAI,EAAC,QAAK,EAAA,WAAU,0CACb,UAAA,CAACH,EAAU,eACVA,EAAU,UAEN,gBAAAC,EAAAa,GAAA,EAAA,UAAA;AAAA,MAAA,gBAAAX,EAACY,GAAK,EAAA;AAAA,MAAE;AAAA,IAAA,EACV,CAAA,KACGC,IAAAhB,EAAU,SAAV,QAAAgB,EAAgB,OAEjB,OADA,gBAAAb,EAAAW,GAAA,EAAA,UAAA,mBAAA,CAAgB,GAGxB,CAAA,EACF,CAAA,EACF,CAAA,GAGF;AAAA,IAECd,EAAU,cACR,gBAAAG,EAAAc,GAAA,EAAY,WAAU,oEAAoE,CAAA;AAAA,EAAA,GAE/F;AAEJ;"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { jsxs as n, jsx as e, Fragment as M } from "react/jsx-runtime";
|
|
2
|
+
import { Badge as $ } from "../ui/badge.es.js";
|
|
3
|
+
import { Button as F } from "../ui/button.es.js";
|
|
4
|
+
import { Calendar as q } from "../ui/calendar.es.js";
|
|
5
|
+
import { Form as B, FormField as s, FormItem as m, FormLabel as u, FormControl as h, FormMessage as p } from "../ui/form.es.js";
|
|
6
|
+
import { Input as P } from "../ui/input.es.js";
|
|
7
|
+
import { Popover as f, PopoverTrigger as R, PopoverContent as b } from "../ui/popover.es.js";
|
|
8
|
+
import { Select as N, SelectTrigger as S, SelectValue as y, SelectContent as w, SelectItem as v } from "../ui/select.es.js";
|
|
9
|
+
import { cn as k } from "../../utils/index.es.js";
|
|
10
|
+
import { zodResolver as U } from "@hookform/resolvers/zod";
|
|
11
|
+
import { format as X } from "date-fns";
|
|
12
|
+
import { X as Y, FilterIcon as G } from "lucide-react";
|
|
13
|
+
import { useState as T } from "react";
|
|
14
|
+
import { useForm as H } from "react-hook-form";
|
|
15
|
+
import g from "zod";
|
|
16
|
+
import { getResourceDisplayName as E, COMPARISON_OPERATOR_LABELS as j, OPERATORS_FOR_FILTER_TYPE as J, FILTER_COMPARISON_OPERATORS as K } from "./table-utils/constants.es.js";
|
|
17
|
+
const Q = g.object({
|
|
18
|
+
// For identifing a filter for updation and deletion
|
|
19
|
+
id: g.string().min(1, "Field is required"),
|
|
20
|
+
property: g.string().min(1, "Field is required."),
|
|
21
|
+
operator: g.enum(K, {
|
|
22
|
+
errorMap: () => ({ message: "Invalid comparison operator" })
|
|
23
|
+
}),
|
|
24
|
+
value: g.string().min(1, "Field is required.")
|
|
25
|
+
}), ve = ({
|
|
26
|
+
filterableProperties: t,
|
|
27
|
+
filters: c,
|
|
28
|
+
onFiltersChange: a
|
|
29
|
+
}) => {
|
|
30
|
+
const [x, C] = T(null), [z, O] = T(!1), L = (r) => {
|
|
31
|
+
const l = E(r.property, "admin-portal"), i = j[r.operator], V = r.value;
|
|
32
|
+
return `${l} ${i} ${V}`;
|
|
33
|
+
}, _ = (r) => {
|
|
34
|
+
a(c.filter((l) => l.id !== r));
|
|
35
|
+
}, A = ({ filter: r }) => {
|
|
36
|
+
const l = H({
|
|
37
|
+
resolver: U(Q),
|
|
38
|
+
defaultValues: {
|
|
39
|
+
property: (r == null ? void 0 : r.property) || "",
|
|
40
|
+
// TODO: Add dynamic default operator as per property type
|
|
41
|
+
operator: (r == null ? void 0 : r.operator) || "eq",
|
|
42
|
+
value: (r == null ? void 0 : r.value) || "",
|
|
43
|
+
id: (r == null ? void 0 : r.id) || `filter-${Date.now()}-${Math.random().toString(36)}`
|
|
44
|
+
},
|
|
45
|
+
mode: "all"
|
|
46
|
+
}), i = l.watch("property"), V = (d) => {
|
|
47
|
+
const o = {
|
|
48
|
+
...d,
|
|
49
|
+
operator: d.operator
|
|
50
|
+
};
|
|
51
|
+
r ? (a(c.map((I) => I.id === r.id ? o : I)), C(null)) : (a([...c, o]), O(!1));
|
|
52
|
+
}, D = () => {
|
|
53
|
+
r ? C(null) : O(!1);
|
|
54
|
+
};
|
|
55
|
+
return /* @__PURE__ */ e(B, { ...l, children: /* @__PURE__ */ n("form", { onSubmit: l.handleSubmit(V), className: "flex flex-col gap-2 min-w-60", children: [
|
|
56
|
+
/* @__PURE__ */ e(
|
|
57
|
+
s,
|
|
58
|
+
{
|
|
59
|
+
control: l.control,
|
|
60
|
+
name: "property",
|
|
61
|
+
render: ({ field: d }) => /* @__PURE__ */ n(m, { children: [
|
|
62
|
+
/* @__PURE__ */ e(u, { children: "Property" }),
|
|
63
|
+
/* @__PURE__ */ n(
|
|
64
|
+
N,
|
|
65
|
+
{
|
|
66
|
+
onValueChange: d.onChange,
|
|
67
|
+
defaultValue: d.value,
|
|
68
|
+
disabled: !!r,
|
|
69
|
+
children: [
|
|
70
|
+
/* @__PURE__ */ e(h, { children: /* @__PURE__ */ e(S, { children: /* @__PURE__ */ e(y, {}) }) }),
|
|
71
|
+
/* @__PURE__ */ e(w, { autoFocus: !0, children: Object.entries(t).map(([o]) => /* @__PURE__ */ e(v, { value: o, children: E(o, "admin-portal") }, o)) })
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
),
|
|
75
|
+
/* @__PURE__ */ e(p, {})
|
|
76
|
+
] })
|
|
77
|
+
}
|
|
78
|
+
),
|
|
79
|
+
i && /* @__PURE__ */ n(M, { children: [
|
|
80
|
+
/* @__PURE__ */ e(
|
|
81
|
+
s,
|
|
82
|
+
{
|
|
83
|
+
control: l.control,
|
|
84
|
+
name: "operator",
|
|
85
|
+
render: ({ field: d }) => /* @__PURE__ */ n(m, { children: [
|
|
86
|
+
/* @__PURE__ */ e(u, { children: "Comparison" }),
|
|
87
|
+
/* @__PURE__ */ n(N, { onValueChange: d.onChange, defaultValue: d.value, children: [
|
|
88
|
+
/* @__PURE__ */ e(h, { children: /* @__PURE__ */ e(S, { children: /* @__PURE__ */ e(y, {}) }) }),
|
|
89
|
+
/* @__PURE__ */ e(w, { children: t[i] && J[t[i]].map(
|
|
90
|
+
(o) => /* @__PURE__ */ e(v, { value: o, children: j[o] }, o)
|
|
91
|
+
) })
|
|
92
|
+
] }),
|
|
93
|
+
/* @__PURE__ */ e(p, {})
|
|
94
|
+
] })
|
|
95
|
+
}
|
|
96
|
+
),
|
|
97
|
+
t[i] && /* @__PURE__ */ e(
|
|
98
|
+
W,
|
|
99
|
+
{
|
|
100
|
+
control: l.control,
|
|
101
|
+
propertyType: t[i]
|
|
102
|
+
}
|
|
103
|
+
)
|
|
104
|
+
] }),
|
|
105
|
+
/* @__PURE__ */ n("div", { className: "flex justify-end gap-2", children: [
|
|
106
|
+
/* @__PURE__ */ e(F, { type: "button", variant: "outline", size: "sm", onClick: D, children: "Cancel" }),
|
|
107
|
+
/* @__PURE__ */ e(F, { type: "submit", size: "sm", children: "Apply Filter" })
|
|
108
|
+
] })
|
|
109
|
+
] }) });
|
|
110
|
+
};
|
|
111
|
+
return /* @__PURE__ */ n("div", { className: "flex items-center py-2 justify-between gap-4", children: [
|
|
112
|
+
/* @__PURE__ */ e("div", { className: "flex flex-wrap gap-2 items-center", children: c.length === 0 ? /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: "No filters active. Add a filter to refine the results." }) : /* @__PURE__ */ n("div", { className: "flex flex-wrap gap-2 items-center", children: [
|
|
113
|
+
/* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: "Active Filters:" }),
|
|
114
|
+
/* @__PURE__ */ e("div", { className: "flex flex-wrap gap-2 items-center", children: c.map((r, l) => /* @__PURE__ */ n("div", { className: "flex items-center gap-2", children: [
|
|
115
|
+
/* @__PURE__ */ n("div", { className: "flex items-center", children: [
|
|
116
|
+
/* @__PURE__ */ n(
|
|
117
|
+
f,
|
|
118
|
+
{
|
|
119
|
+
open: x === r.id,
|
|
120
|
+
onOpenChange: (i) => {
|
|
121
|
+
i || C(null);
|
|
122
|
+
},
|
|
123
|
+
children: [
|
|
124
|
+
/* @__PURE__ */ e(R, { children: /* @__PURE__ */ e(
|
|
125
|
+
$,
|
|
126
|
+
{
|
|
127
|
+
onClick: () => C(r.id),
|
|
128
|
+
variant: "default",
|
|
129
|
+
className: "cursor-pointer h-7",
|
|
130
|
+
children: L(r)
|
|
131
|
+
}
|
|
132
|
+
) }),
|
|
133
|
+
/* @__PURE__ */ e(b, { className: "w-auto", align: "start", children: /* @__PURE__ */ e(A, { filter: r }) })
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
),
|
|
137
|
+
/* @__PURE__ */ e(
|
|
138
|
+
F,
|
|
139
|
+
{
|
|
140
|
+
icon: Y,
|
|
141
|
+
variant: "destructive",
|
|
142
|
+
className: "h-7 -ml-0.5",
|
|
143
|
+
size: "icon",
|
|
144
|
+
onClick: () => _(r.id)
|
|
145
|
+
}
|
|
146
|
+
)
|
|
147
|
+
] }),
|
|
148
|
+
l < c.length - 1 && /* @__PURE__ */ e("span", { className: "text-sm text-muted-foreground", children: "and" })
|
|
149
|
+
] }, r.id)) })
|
|
150
|
+
] }) }),
|
|
151
|
+
/* @__PURE__ */ n(f, { open: z, onOpenChange: O, children: [
|
|
152
|
+
/* @__PURE__ */ e(R, { asChild: !0, children: /* @__PURE__ */ e(F, { icon: G, variant: "outline" }) }),
|
|
153
|
+
/* @__PURE__ */ e(b, { className: "w-auto p-4", align: "start", children: /* @__PURE__ */ e(A, {}) })
|
|
154
|
+
] })
|
|
155
|
+
] });
|
|
156
|
+
}, W = ({ control: t, propertyType: c }) => {
|
|
157
|
+
switch (c) {
|
|
158
|
+
case "boolean":
|
|
159
|
+
return /* @__PURE__ */ e(
|
|
160
|
+
s,
|
|
161
|
+
{
|
|
162
|
+
control: t,
|
|
163
|
+
name: "value",
|
|
164
|
+
render: ({ field: a }) => /* @__PURE__ */ n(m, { children: [
|
|
165
|
+
/* @__PURE__ */ e(u, { children: "Value" }),
|
|
166
|
+
/* @__PURE__ */ n(N, { onValueChange: a.onChange, defaultValue: a.value, children: [
|
|
167
|
+
/* @__PURE__ */ e(h, { children: /* @__PURE__ */ e(S, { children: /* @__PURE__ */ e(y, {}) }) }),
|
|
168
|
+
/* @__PURE__ */ n(w, { children: [
|
|
169
|
+
/* @__PURE__ */ e(v, { value: "true", children: "True" }),
|
|
170
|
+
/* @__PURE__ */ e(v, { value: "false", children: "False" })
|
|
171
|
+
] })
|
|
172
|
+
] }),
|
|
173
|
+
/* @__PURE__ */ e(p, {})
|
|
174
|
+
] })
|
|
175
|
+
}
|
|
176
|
+
);
|
|
177
|
+
case "objectDate":
|
|
178
|
+
return /* @__PURE__ */ e(
|
|
179
|
+
s,
|
|
180
|
+
{
|
|
181
|
+
control: t,
|
|
182
|
+
name: "value",
|
|
183
|
+
render: ({ field: a }) => /* @__PURE__ */ n(m, { className: "flex flex-col", children: [
|
|
184
|
+
/* @__PURE__ */ e(u, { children: "Value" }),
|
|
185
|
+
/* @__PURE__ */ n(f, { children: [
|
|
186
|
+
/* @__PURE__ */ e(R, { asChild: !0, children: /* @__PURE__ */ e(h, { children: /* @__PURE__ */ e(
|
|
187
|
+
F,
|
|
188
|
+
{
|
|
189
|
+
variant: "outline",
|
|
190
|
+
className: k(
|
|
191
|
+
"w-full pl-3 text-left font-normal",
|
|
192
|
+
!a.value && "text-muted-foreground"
|
|
193
|
+
),
|
|
194
|
+
children: a.value ? X(new Date(a.value), "PPP") : /* @__PURE__ */ e("span", { children: "Pick a date" })
|
|
195
|
+
}
|
|
196
|
+
) }) }),
|
|
197
|
+
/* @__PURE__ */ e(b, { className: "w-auto p-0", align: "start", children: /* @__PURE__ */ e(
|
|
198
|
+
q,
|
|
199
|
+
{
|
|
200
|
+
mode: "single",
|
|
201
|
+
selected: a.value ? new Date(a.value) : void 0,
|
|
202
|
+
onSelect: (x) => {
|
|
203
|
+
x && a.onChange(x.toISOString());
|
|
204
|
+
},
|
|
205
|
+
initialFocus: !0
|
|
206
|
+
}
|
|
207
|
+
) })
|
|
208
|
+
] }),
|
|
209
|
+
/* @__PURE__ */ e(p, {})
|
|
210
|
+
] })
|
|
211
|
+
}
|
|
212
|
+
);
|
|
213
|
+
case "role":
|
|
214
|
+
return /* @__PURE__ */ e(
|
|
215
|
+
s,
|
|
216
|
+
{
|
|
217
|
+
control: t,
|
|
218
|
+
name: "value",
|
|
219
|
+
render: ({ field: a }) => /* @__PURE__ */ n(m, { children: [
|
|
220
|
+
/* @__PURE__ */ e(u, { children: "Value" }),
|
|
221
|
+
/* @__PURE__ */ n(N, { onValueChange: a.onChange, defaultValue: a.value, children: [
|
|
222
|
+
/* @__PURE__ */ e(h, { children: /* @__PURE__ */ e(S, { children: /* @__PURE__ */ e(y, {}) }) }),
|
|
223
|
+
/* @__PURE__ */ n(w, { children: [
|
|
224
|
+
/* @__PURE__ */ e(v, { value: "user", children: "User" }),
|
|
225
|
+
/* @__PURE__ */ e(v, { value: "organization-admin", children: "Organization Admin" }),
|
|
226
|
+
/* @__PURE__ */ e(v, { value: "reseller-admin", children: "Reseller Admin" })
|
|
227
|
+
] })
|
|
228
|
+
] }),
|
|
229
|
+
/* @__PURE__ */ e(p, {})
|
|
230
|
+
] })
|
|
231
|
+
}
|
|
232
|
+
);
|
|
233
|
+
case "number":
|
|
234
|
+
return /* @__PURE__ */ e(
|
|
235
|
+
s,
|
|
236
|
+
{
|
|
237
|
+
control: t,
|
|
238
|
+
name: "value",
|
|
239
|
+
render: ({ field: a }) => /* @__PURE__ */ n(m, { children: [
|
|
240
|
+
/* @__PURE__ */ e(u, { children: "Value" }),
|
|
241
|
+
/* @__PURE__ */ e(h, { children: /* @__PURE__ */ e(P, { ...a, type: "number" }) }),
|
|
242
|
+
/* @__PURE__ */ e(p, {})
|
|
243
|
+
] })
|
|
244
|
+
}
|
|
245
|
+
);
|
|
246
|
+
default:
|
|
247
|
+
return /* @__PURE__ */ e(
|
|
248
|
+
s,
|
|
249
|
+
{
|
|
250
|
+
control: t,
|
|
251
|
+
name: "value",
|
|
252
|
+
render: ({ field: a }) => /* @__PURE__ */ n(m, { children: [
|
|
253
|
+
/* @__PURE__ */ e(u, { children: "Value" }),
|
|
254
|
+
/* @__PURE__ */ e(h, { children: /* @__PURE__ */ e(P, { ...a, type: "text" }) }),
|
|
255
|
+
/* @__PURE__ */ e(p, {})
|
|
256
|
+
] })
|
|
257
|
+
}
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
export {
|
|
262
|
+
ve as TableFilter
|
|
263
|
+
};
|
|
264
|
+
//# sourceMappingURL=table-filter.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-filter.es.js","sources":["../../../lib/components/data-table/table-filter.tsx"],"sourcesContent":["import {\n COMPARISON_OPERATOR_LABELS,\n FILTER_COMPARISON_OPERATORS,\n getResourceDisplayName,\n OPERATORS_FOR_FILTER_TYPE,\n type FilterableProperties,\n type FilterablePropertyType,\n} from '@/components/data-table/table-utils';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { Calendar } from '@/components/ui/calendar';\nimport {\n Form,\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '@/components/ui/form';\nimport { Input } from '@/components/ui/input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/ui/select';\nimport { cn } from '@/utils';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { format } from 'date-fns';\nimport { FilterIcon, X } from 'lucide-react';\nimport { useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport z from 'zod';\nconst filterSchema = z.object({\n // For identifing a filter for updation and deletion\n id: z.string().min(1, 'Field is required'),\n property: z.string().min(1, 'Field is required.'),\n operator: z.enum(FILTER_COMPARISON_OPERATORS, {\n errorMap: () => ({ message: 'Invalid comparison operator' }),\n }),\n value: z.string().min(1, 'Field is required.'),\n});\nexport type FilterFormType = z.infer<typeof filterSchema>;\n\ninterface TableFilterProps {\n filterableProperties: FilterableProperties<any>;\n filters: FilterFormType[];\n onFiltersChange: (filters: FilterFormType[]) => void;\n}\n\nexport const TableFilter = ({\n filterableProperties,\n filters,\n onFiltersChange,\n}: TableFilterProps) => {\n const [editingFilter, setEditingFilter] = useState<string | null>(null);\n const [isAddingFilter, setIsAddingFilter] = useState(false);\n const getFilterLabel = (filter: FilterFormType): string => {\n const property = getResourceDisplayName(filter.property, 'admin-portal');\n const operatorLabel = COMPARISON_OPERATOR_LABELS[filter.operator];\n const value = filter.value;\n return `${property} ${operatorLabel} ${value}`;\n };\n\n const removeFilter = (id: string) => {\n onFiltersChange(filters.filter((filter) => filter.id !== id));\n };\n\n interface FilterFormProps {\n filter?: FilterFormType;\n }\n const FilterForm = ({ filter }: FilterFormProps) => {\n const form = useForm<FilterFormType>({\n resolver: zodResolver(filterSchema),\n defaultValues: {\n property: filter?.property || '',\n // TODO: Add dynamic default operator as per property type\n operator: filter?.operator || 'eq',\n value: filter?.value || '',\n id: filter?.id || `filter-${Date.now()}-${Math.random().toString(36)}`,\n },\n mode: 'all',\n });\n\n const watchProperty = form.watch('property');\n const handleSubmit = (values: FilterFormType) => {\n const newFilter: FilterFormType = {\n ...values,\n operator: values.operator,\n };\n\n if (filter) {\n // Update existing filter\n onFiltersChange(filters.map((f) => (f.id === filter.id ? newFilter : f)));\n setEditingFilter(null);\n } else {\n // Add new filter\n onFiltersChange([...filters, newFilter]);\n setIsAddingFilter(false);\n }\n };\n\n const handleClose = () => {\n if (filter) {\n setEditingFilter(null);\n } else {\n setIsAddingFilter(false);\n }\n };\n\n return (\n <Form {...form}>\n <form onSubmit={form.handleSubmit(handleSubmit)} className=\"flex flex-col gap-2 min-w-60\">\n <FormField\n control={form.control}\n name=\"property\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Property</FormLabel>\n <Select\n onValueChange={field.onChange}\n defaultValue={field.value}\n disabled={!!filter}\n >\n <FormControl>\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n </FormControl>\n <SelectContent autoFocus>\n {Object.entries(filterableProperties).map(([key]) => (\n <SelectItem key={key} value={key}>\n {getResourceDisplayName(key, 'admin-portal')}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <FormMessage />\n </FormItem>\n )}\n />\n\n {watchProperty && (\n <>\n <FormField\n control={form.control}\n name=\"operator\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Comparison</FormLabel>\n <Select onValueChange={field.onChange} defaultValue={field.value}>\n <FormControl>\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n </FormControl>\n <SelectContent>\n {filterableProperties[watchProperty] &&\n OPERATORS_FOR_FILTER_TYPE[filterableProperties[watchProperty]].map(\n (op) => (\n <SelectItem key={op} value={op}>\n {COMPARISON_OPERATOR_LABELS[op]}\n </SelectItem>\n ),\n )}\n </SelectContent>\n </Select>\n <FormMessage />\n </FormItem>\n )}\n />\n {filterableProperties[watchProperty] && (\n <ValueField\n control={form.control}\n propertyType={filterableProperties[watchProperty]}\n />\n )}\n </>\n )}\n\n <div className=\"flex justify-end gap-2\">\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={handleClose}>\n Cancel\n </Button>\n <Button type=\"submit\" size=\"sm\">\n Apply Filter\n </Button>\n </div>\n </form>\n </Form>\n );\n };\n\n return (\n <div className=\"flex items-center py-2 justify-between gap-4\">\n <div className=\"flex flex-wrap gap-2 items-center\">\n {filters.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">\n No filters active. Add a filter to refine the results.\n </p>\n ) : (\n <div className=\"flex flex-wrap gap-2 items-center\">\n <p className=\"text-sm text-muted-foreground\">Active Filters:</p>\n <div className=\"flex flex-wrap gap-2 items-center\">\n {filters.map((filter, index) => {\n return (\n <div key={filter.id} className=\"flex items-center gap-2\">\n <div className=\"flex items-center\">\n <Popover\n open={editingFilter === filter.id}\n onOpenChange={(open) => {\n if (!open) setEditingFilter(null);\n }}\n >\n <PopoverTrigger>\n <Badge\n onClick={() => setEditingFilter(filter.id)}\n variant=\"default\"\n className=\"cursor-pointer h-7\"\n >\n {getFilterLabel(filter)}\n </Badge>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto\" align=\"start\">\n <FilterForm filter={filter} />\n </PopoverContent>\n </Popover>\n <Button\n icon={X}\n variant=\"destructive\"\n className=\"h-7 -ml-0.5\"\n size=\"icon\"\n onClick={() => removeFilter(filter.id)}\n />\n </div>\n {index < filters.length - 1 && (\n <span className=\"text-sm text-muted-foreground\">and</span>\n )}\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\n <Popover open={isAddingFilter} onOpenChange={setIsAddingFilter}>\n <PopoverTrigger asChild>\n <Button icon={FilterIcon} variant=\"outline\" />\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-4\" align=\"start\">\n <FilterForm />\n </PopoverContent>\n </Popover>\n </div>\n );\n};\ninterface ValueFieldProps {\n control: any;\n propertyType: FilterablePropertyType;\n}\nconst ValueField = ({ control, propertyType }: ValueFieldProps) => {\n switch (propertyType) {\n case 'boolean':\n return (\n <FormField\n control={control}\n name=\"value\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Value</FormLabel>\n <Select onValueChange={field.onChange} defaultValue={field.value}>\n <FormControl>\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n </FormControl>\n <SelectContent>\n <SelectItem value=\"true\">True</SelectItem>\n <SelectItem value=\"false\">False</SelectItem>\n </SelectContent>\n </Select>\n <FormMessage />\n </FormItem>\n )}\n />\n );\n\n case 'objectDate':\n return (\n <FormField\n control={control}\n name=\"value\"\n render={({ field }) => (\n <FormItem className=\"flex flex-col\">\n <FormLabel>Value</FormLabel>\n <Popover>\n <PopoverTrigger asChild>\n <FormControl>\n <Button\n variant=\"outline\"\n className={cn(\n 'w-full pl-3 text-left font-normal',\n !field.value && 'text-muted-foreground',\n )}\n >\n {field.value ? (\n format(new Date(field.value), 'PPP')\n ) : (\n <span>Pick a date</span>\n )}\n </Button>\n </FormControl>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={field.value ? new Date(field.value) : undefined}\n onSelect={(date) => {\n if (date) {\n field.onChange(date.toISOString()); // Convert date to ISO\n }\n }}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n <FormMessage />\n </FormItem>\n )}\n />\n );\n\n case 'role':\n return (\n <FormField\n control={control}\n name=\"value\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Value</FormLabel>\n <Select onValueChange={field.onChange} defaultValue={field.value}>\n <FormControl>\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n </FormControl>\n <SelectContent>\n <SelectItem value=\"user\">User</SelectItem>\n <SelectItem value=\"organization-admin\">Organization Admin</SelectItem>\n <SelectItem value=\"reseller-admin\">Reseller Admin</SelectItem>\n </SelectContent>\n </Select>\n <FormMessage />\n </FormItem>\n )}\n />\n );\n case 'number':\n return (\n <FormField\n control={control}\n name=\"value\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Value</FormLabel>\n <FormControl>\n <Input {...field} type=\"number\" />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n );\n\n default:\n return (\n <FormField\n control={control}\n name=\"value\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Value</FormLabel>\n <FormControl>\n <Input {...field} type=\"text\" />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n );\n }\n};\n"],"names":["filterSchema","z","FILTER_COMPARISON_OPERATORS","TableFilter","filterableProperties","filters","onFiltersChange","editingFilter","setEditingFilter","useState","isAddingFilter","setIsAddingFilter","getFilterLabel","filter","property","getResourceDisplayName","operatorLabel","COMPARISON_OPERATOR_LABELS","value","removeFilter","id","FilterForm","form","useForm","zodResolver","watchProperty","handleSubmit","values","newFilter","f","handleClose","jsx","Form","jsxs","FormField","field","FormItem","FormLabel","Select","FormControl","SelectTrigger","SelectValue","SelectContent","key","SelectItem","FormMessage","Fragment","OPERATORS_FOR_FILTER_TYPE","op","ValueField","Button","index","Popover","open","PopoverTrigger","Badge","PopoverContent","X","FilterIcon","control","propertyType","cn","format","Calendar","date","Input"],"mappings":"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"}
|
|
@@ -19,7 +19,10 @@ const m = [
|
|
|
19
19
|
"resource",
|
|
20
20
|
"resourceId",
|
|
21
21
|
"reseller",
|
|
22
|
-
"role"
|
|
22
|
+
"role",
|
|
23
|
+
"note",
|
|
24
|
+
"os",
|
|
25
|
+
"action"
|
|
23
26
|
], p = {
|
|
24
27
|
createdAt: "objectDate",
|
|
25
28
|
updatedAt: "objectDate"
|
|
@@ -68,8 +71,11 @@ const m = [
|
|
|
68
71
|
country: ["in", "nin"],
|
|
69
72
|
resource: ["in", "nin"],
|
|
70
73
|
resourceId: ["eq", "ne", "in", "nin"],
|
|
71
|
-
role: ["in", "nin"]
|
|
72
|
-
|
|
74
|
+
role: ["in", "nin"],
|
|
75
|
+
note: ["eq", "ne", "cn", "nc", "sw", "ew"],
|
|
76
|
+
os: ["in", "nin"],
|
|
77
|
+
action: ["in", "nin"]
|
|
78
|
+
}, a = {
|
|
73
79
|
"product.displayName": "Product"
|
|
74
80
|
}, y = [
|
|
75
81
|
"access-token",
|
|
@@ -212,7 +218,7 @@ const m = [
|
|
|
212
218
|
sendingDomain: "Email Sending Domain"
|
|
213
219
|
};
|
|
214
220
|
function w(e, t) {
|
|
215
|
-
return t !== "admin-portal" && e in
|
|
221
|
+
return t !== "admin-portal" && e in a ? a[e] : e in r ? r[e] : l(e);
|
|
216
222
|
}
|
|
217
223
|
function b(e) {
|
|
218
224
|
const t = e.expiresAt && new Date(e.expiresAt) < /* @__PURE__ */ new Date();
|
|
@@ -251,13 +257,21 @@ function c(e) {
|
|
|
251
257
|
].filter(Boolean).join(" ").trim();
|
|
252
258
|
}
|
|
253
259
|
function R(e, t) {
|
|
254
|
-
const
|
|
260
|
+
const n = t.toString().split(".");
|
|
255
261
|
let o = e;
|
|
256
|
-
for (const s of
|
|
262
|
+
for (const s of n)
|
|
257
263
|
o = o == null ? void 0 : o[s];
|
|
258
264
|
return o;
|
|
259
265
|
}
|
|
266
|
+
const S = {
|
|
267
|
+
windows: "Windows",
|
|
268
|
+
macos: "macOS",
|
|
269
|
+
linux: "Linux",
|
|
270
|
+
ios: "iOS",
|
|
271
|
+
android: "Android"
|
|
272
|
+
};
|
|
260
273
|
export {
|
|
274
|
+
S as ALL_OS,
|
|
261
275
|
f as COMPARISON_OPERATOR_LABELS,
|
|
262
276
|
p as DEFAULT_FILTERABLE_FIELDS,
|
|
263
277
|
m as FILTERABLE_PROPERTY_TYPES,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.es.js","sources":["../../../../lib/components/data-table/table-utils/constants.ts"],"sourcesContent":["import { intervalToDuration } from 'date-fns';\nimport { convertCamelCaseToTitleCase } from './string';\n\nexport const FILTERABLE_PROPERTY_TYPES = [\n 'objectString',\n 'string',\n 'number',\n 'objectNumber',\n 'boolean',\n 'objectDate',\n 'licenseType',\n 'product',\n 'product-version',\n 'user',\n 'webhook',\n 'automated-email',\n 'organization',\n 'country',\n 'tag',\n 'resource',\n 'resourceId',\n 'reseller',\n 'role',\n] as const;\nexport type FilterablePropertyType = (typeof FILTERABLE_PROPERTY_TYPES)[number];\nexport type FilterableProperties = {\n [filterProperty: string]: FilterablePropertyType;\n};\n\nexport const DEFAULT_FILTERABLE_FIELDS: FilterableProperties = {\n createdAt: 'objectDate',\n updatedAt: 'objectDate',\n};\nexport const FILTER_COMPARISON_OPERATORS = [\n 'eq',\n 'ne',\n 'cn',\n 'nc',\n 'sw',\n 'ew',\n 'in',\n 'nin',\n 'gt',\n 'gte',\n 'lt',\n 'lte',\n] as const;\nexport type FilterComparisonOperator = (typeof FILTER_COMPARISON_OPERATORS)[number];\nexport type OperatorsForFilterType = Record<FilterablePropertyType, FilterComparisonOperator[]>;\nexport const COMPARISON_OPERATOR_LABELS: Record<FilterComparisonOperator, string> = {\n eq: 'equal to',\n ne: 'not equal to',\n cn: 'contains',\n nc: 'does not contain',\n sw: 'starts with',\n ew: 'ends with',\n in: 'includes',\n nin: 'does not include',\n gt: 'greater than',\n gte: 'greater than or equal to',\n lt: 'less than',\n lte: 'less than or equal to',\n};\n\nexport const OPERATORS_FOR_FILTER_TYPE: OperatorsForFilterType = {\n 'objectString': ['eq', 'ne', 'cn', 'nc', 'sw', 'ew', 'in', 'nin'],\n 'objectDate': ['gt', 'lt', 'eq'],\n 'objectNumber': ['eq', 'ne', 'gt', 'gte', 'lt', 'lte'],\n 'tag': ['in', 'nin'],\n 'string': ['eq'],\n 'number': ['eq'],\n 'boolean': ['eq'],\n 'licenseType': ['in', 'nin'],\n 'product': ['in', 'nin'],\n 'product-version': ['in', 'nin'],\n 'user': ['eq'],\n 'reseller': ['eq'],\n 'webhook': ['in', 'nin'],\n 'automated-email': ['in', 'nin'],\n 'organization': ['eq'],\n 'country': ['in', 'nin'],\n 'resource': ['in', 'nin'],\n 'resourceId': ['eq', 'ne', 'in', 'nin'],\n 'role': ['in', 'nin'],\n};\n\n/** Application Names */\nexport type CtxProjectName =\n | 'admin-portal'\n | 'customer-portal'\n | 'internal-portal'\n | 'reseller-portal';\n// Display names specific to customer and reseller portal\nconst OTHER_PORTALS_DISPLAY_NAME: Record<string, string> = {\n 'product.displayName': 'Product',\n};\n\n/** Resource Name should ALWAYS be in singular form */\nexport const RESOURCE_NAMES = [\n 'access-token',\n 'account',\n 'activation',\n 'activation-log',\n 'admin-role',\n 'audit-log',\n 'automated-email',\n 'automated-email-event-log',\n 'card',\n 'feature-flag',\n 'invoice',\n 'license',\n 'license-template',\n 'maintenance-policy',\n 'organization',\n 'plan',\n 'product',\n 'product-version',\n 'profile',\n 'release',\n 'release-channel',\n 'release-file',\n 'release-platform',\n 'report',\n 'role',\n 'role-claim',\n 'saml-configuration',\n 'segment',\n 'sending-domain',\n 'setting',\n 'tag',\n 'team-member',\n 'trial',\n 'trial-policy',\n 'user',\n 'user-group',\n 'webhook',\n 'webhook-event-log',\n 'webhook-trigger',\n 'reseller',\n 'oidc-configuration',\n 'organization-claim',\n 'reseller-claim',\n] as const;\nexport type ResourceName = (typeof RESOURCE_NAMES)[number];\nexport const RESOURCE_DEFINITIONS: Record<ResourceName, string> = {\n 'account': 'Your organization account.',\n 'product': 'Products are the software products you want to license',\n 'license':\n 'Licenses represent a purchase of your software. These can be linked to customers, and the license key is required to use the product.',\n 'access-token': 'Access Tokens are used to authenticate your API requests.',\n 'activation':\n 'Activations, also known as devices/machines/seats are the devices consuming licenses.',\n 'activation-log':\n 'Activation Log is a log entry of activation/deactivation of a particular license.',\n 'trial': 'Trial/Trial Activation is a device that has activated a trial of your product.',\n 'audit-log': 'Audit logs contain all the changes made to your account.',\n 'automated-email':\n 'Automated Email allow you to send marketing emails based on events on the linked product.',\n 'automated-email-event-log':\n 'Automated email event log is the log of all the automated email events for your product.',\n 'card': 'The payment card for your account.',\n 'feature-flag': 'Feature flags define features that make up tiers for your products.',\n 'invoice': '',\n 'license-template':\n 'License templates are a blueprint for the licenses you create for your customers and prevent repetition when creating licenses.',\n 'maintenance-policy':\n 'Maintenance policies represent support contracts and can be linked to licenses.',\n 'plan': '',\n 'product-version':\n 'Product Versions are sets of Feature Flags that define the tiers of your products.',\n 'release-channel': 'Release channel is the release channel for your product.',\n 'release-file': 'Release files are files within your created releases.',\n 'release-platform':\n 'Release Platforms differentiate the target platform for your release. Common platforms include \"Windows\", \"macOS\", and \"Linux\".',\n 'release':\n 'Releases help you to manage different versions of your app, and secure distribute it to licensed users.',\n 'report': 'Analytics data for your account',\n 'role-claim': '',\n 'role': 'Roles define permissions for your team.',\n 'saml-configuration': '',\n 'segment': 'Sets of filters that can be saved to filter resources.',\n 'trial-policy': 'Trial policies are templates for creating trials for your products.',\n 'webhook-event-log': 'Webhook Event Logs are logs of events that have occured on webhooks.',\n 'webhook-trigger': '',\n 'webhook': 'Webhooks are HTTP callbacks which are triggered by specific events.',\n 'organization': '',\n 'profile': '',\n 'setting': '',\n 'tag': 'Tags allow you to manage your licenses and customers on the dashboard.',\n 'team-member': 'Team members can access the account based on their roles.',\n 'user': 'A user refers to your customer whom you want to license your product.',\n 'sending-domain': 'Allows Cryptlex to send emails on your behalf using your From Email address',\n 'admin-role': 'Roles that have type admin',\n 'user-group': 'Groups of users that you can assign licenses to.',\n 'reseller': 'Resellers allow you to delegate user management to third parties or partners',\n 'oidc-configuration': '',\n 'organization-claim': '',\n 'reseller-claim': '',\n};\n\nconst RESOURCE_DISPLAY_NAMES: Record<string, string> = {\n 'id': 'ID',\n 'createdAt': 'Creation Date',\n 'scopes': 'Permissions',\n 'updatedAt': 'Last Updated',\n 'expiresAt': 'Expiration Date',\n 'lastSeenAt': 'Last Seen',\n 'os': 'OS',\n 'osVersion': 'OS Version',\n 'key': 'License Key',\n 'vmName': 'VM Name',\n 'container': 'Container',\n 'allowedIpRange': 'Allowed IP Range',\n 'allowedIpRanges': 'Allowed IP Ranges',\n 'allowedIpAddresses': 'Allowed IP Addresses',\n 'disallowedIpAddresses': 'Disallowed IP Addresses',\n 'allowVmActivation': 'Allow VM Activation',\n 'disableGeoLocation': 'Disable Geolocation',\n 'user.id': 'User ID',\n 'userId': 'User',\n 'productId': 'Product',\n 'downloads': 'Total Downloads',\n 'claims': 'Permissions',\n 'googleSsoEnabled': 'Google Login Enabled',\n 'lastAttemptedAt': 'Last Attempt Date',\n 'url': 'URL',\n 'trialPolicy.name': 'Trial Policy Name',\n 'licensePolicy.name': 'License Template Name',\n 'licensePolicy': 'License Template',\n 'eventLog': 'Audit Log',\n 'cc': 'CC Recepients',\n 'bcc': 'BCC Recepients',\n 'ipAddress': 'IP Address',\n 'resellerId': 'Reseller',\n 'productVersionId': 'Product Version',\n 'releaseId': 'Release',\n 'maintenancePolicyId': 'Maintenance Policy',\n 'webhookId': 'Webhook',\n 'automatedEmailId': 'Automated Email',\n 'location.countryName': 'Country',\n 'location.ipAddress': 'IP Address',\n 'location.countryCode': 'Country',\n 'organizationId': 'Organization',\n 'address.country': 'Country',\n 'address.addressLine1': 'Address Line 1',\n 'address.addressLine2': 'Address Line 2',\n 'responseStatusCode': 'HTTP Status Code',\n 'resourceId': 'Resource ID',\n 'Sso': 'SAML SSO 2.0',\n 'reseller.name': 'Reseller',\n 'sendingDomain': 'Email Sending Domain',\n};\nexport function getResourceDisplayName(resourceName: string, portal: CtxProjectName) {\n if (portal !== 'admin-portal' && resourceName in OTHER_PORTALS_DISPLAY_NAME) {\n return OTHER_PORTALS_DISPLAY_NAME[resourceName];\n } else if (resourceName in RESOURCE_DISPLAY_NAMES) {\n return RESOURCE_DISPLAY_NAMES[resourceName];\n } else {\n return convertCamelCaseToTitleCase(resourceName);\n }\n}\n\n/**\n * Format multiple license parameters (expired, suspended, revoked) into a single status\n */\nexport function getLicenseStatus(license: any): string {\n const licenseExpired = license.expiresAt && new Date(license.expiresAt) < new Date();\n // Status Column\n switch (true) {\n case license.revoked && license.suspended && licenseExpired:\n return 'Revoked, Suspended, Expired';\n case license.revoked && license.suspended:\n return 'Revoked, Suspended';\n case license.revoked && licenseExpired:\n return 'Revoked, Expired';\n case license.suspended && licenseExpired:\n return 'Suspended, Expired';\n case license.suspended:\n return 'Suspended';\n case license.revoked:\n return 'Revoked';\n case licenseExpired:\n return 'Expired';\n default:\n return 'Active';\n }\n}\n\nexport function getValidityDisplay(validity: number | undefined) {\n if (validity === 0 || !validity) {\n return 'Lifetime';\n } else {\n return secondsToDuration(validity);\n }\n}\nexport function secondsToDuration(seconds: number): string {\n const duration = intervalToDuration({\n start: 0,\n end: seconds * 1000,\n });\n\n const parts = [\n duration.years && `${duration.years}y`,\n duration.months && `${duration.months}m`,\n duration.days && `${duration.days}d`,\n duration.hours && `${duration.hours}h`,\n ];\n\n // Filter out undefined values and join\n return parts.filter(Boolean).join(' ').trim();\n}\n\nexport function getValueFromData(data: any, accessor: string | number | symbol) {\n const accessors = accessor.toString().split('.');\n let value = data;\n for (const acc of accessors) {\n value = value?.[acc];\n }\n return value;\n}\n"],"names":["FILTERABLE_PROPERTY_TYPES","DEFAULT_FILTERABLE_FIELDS","FILTER_COMPARISON_OPERATORS","COMPARISON_OPERATOR_LABELS","OPERATORS_FOR_FILTER_TYPE","OTHER_PORTALS_DISPLAY_NAME","RESOURCE_NAMES","RESOURCE_DEFINITIONS","RESOURCE_DISPLAY_NAMES","getResourceDisplayName","resourceName","portal","convertCamelCaseToTitleCase","getLicenseStatus","license","licenseExpired","getValidityDisplay","validity","secondsToDuration","seconds","duration","intervalToDuration","getValueFromData","data","accessor","accessors","value","acc"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.es.js","sources":["../../../../lib/components/data-table/table-utils/constants.ts"],"sourcesContent":["import { intervalToDuration } from 'date-fns';\nimport { convertCamelCaseToTitleCase } from './string';\n\nexport const FILTERABLE_PROPERTY_TYPES = [\n 'objectString',\n 'string',\n 'number',\n 'objectNumber',\n 'boolean',\n 'objectDate',\n 'licenseType',\n 'product',\n 'product-version',\n 'user',\n 'webhook',\n 'automated-email',\n 'organization',\n 'country',\n 'tag',\n 'resource',\n 'resourceId',\n 'reseller',\n 'role',\n 'note',\n 'os',\n 'action',\n] as const;\nexport type FilterablePropertyType = (typeof FILTERABLE_PROPERTY_TYPES)[number];\nexport type FilterableProperties<T> = {\n [K in keyof T]?: FilterablePropertyType;\n};\n\nexport const DEFAULT_FILTERABLE_FIELDS: FilterableProperties<any> = {\n createdAt: 'objectDate',\n updatedAt: 'objectDate',\n};\nexport const FILTER_COMPARISON_OPERATORS = [\n 'eq',\n 'ne',\n 'cn',\n 'nc',\n 'sw',\n 'ew',\n 'in',\n 'nin',\n 'gt',\n 'gte',\n 'lt',\n 'lte',\n] as const;\nexport type FilterComparisonOperator = (typeof FILTER_COMPARISON_OPERATORS)[number];\nexport type OperatorsForFilterType = Record<FilterablePropertyType, FilterComparisonOperator[]>;\nexport const COMPARISON_OPERATOR_LABELS: Record<FilterComparisonOperator, string> = {\n eq: 'equal to',\n ne: 'not equal to',\n cn: 'contains',\n nc: 'does not contain',\n sw: 'starts with',\n ew: 'ends with',\n in: 'includes',\n nin: 'does not include',\n gt: 'greater than',\n gte: 'greater than or equal to',\n lt: 'less than',\n lte: 'less than or equal to',\n};\n\nexport const OPERATORS_FOR_FILTER_TYPE: OperatorsForFilterType = {\n 'objectString': ['eq', 'ne', 'cn', 'nc', 'sw', 'ew', 'in', 'nin'],\n 'objectDate': ['gt', 'lt', 'eq'],\n 'objectNumber': ['eq', 'ne', 'gt', 'gte', 'lt', 'lte'],\n 'tag': ['in', 'nin'],\n 'string': ['eq'],\n 'number': ['eq'],\n 'boolean': ['eq'],\n 'licenseType': ['in', 'nin'],\n 'product': ['in', 'nin'],\n 'product-version': ['in', 'nin'],\n 'user': ['eq'],\n 'reseller': ['eq'],\n 'webhook': ['in', 'nin'],\n 'automated-email': ['in', 'nin'],\n 'organization': ['eq'],\n 'country': ['in', 'nin'],\n 'resource': ['in', 'nin'],\n 'resourceId': ['eq', 'ne', 'in', 'nin'],\n 'role': ['in', 'nin'],\n 'note': ['eq', 'ne', 'cn', 'nc', 'sw', 'ew'],\n 'os': ['in', 'nin'],\n 'action': ['in', 'nin'],\n};\n\n/** Application Names */\nexport type CtxProjectName =\n | 'admin-portal'\n | 'customer-portal'\n | 'internal-portal'\n | 'reseller-portal';\n// Display names specific to customer and reseller portal\nconst OTHER_PORTALS_DISPLAY_NAME: Record<string, string> = {\n 'product.displayName': 'Product',\n};\n\n/** Resource Name should ALWAYS be in singular form */\nexport const RESOURCE_NAMES = [\n 'access-token',\n 'account',\n 'activation',\n 'activation-log',\n 'admin-role',\n 'audit-log',\n 'automated-email',\n 'automated-email-event-log',\n 'card',\n 'feature-flag',\n 'invoice',\n 'license',\n 'license-template',\n 'maintenance-policy',\n 'organization',\n 'plan',\n 'product',\n 'product-version',\n 'profile',\n 'release',\n 'release-channel',\n 'release-file',\n 'release-platform',\n 'report',\n 'role',\n 'role-claim',\n 'saml-configuration',\n 'segment',\n 'sending-domain',\n 'setting',\n 'tag',\n 'team-member',\n 'trial',\n 'trial-policy',\n 'user',\n 'user-group',\n 'webhook',\n 'webhook-event-log',\n 'webhook-trigger',\n 'reseller',\n 'oidc-configuration',\n 'organization-claim',\n 'reseller-claim',\n] as const;\nexport type ResourceName = (typeof RESOURCE_NAMES)[number];\nexport const RESOURCE_DEFINITIONS: Record<ResourceName, string> = {\n 'account': 'Your organization account.',\n 'product': 'Products are the software products you want to license',\n 'license':\n 'Licenses represent a purchase of your software. These can be linked to customers, and the license key is required to use the product.',\n 'access-token': 'Access Tokens are used to authenticate your API requests.',\n 'activation':\n 'Activations, also known as devices/machines/seats are the devices consuming licenses.',\n 'activation-log':\n 'Activation Log is a log entry of activation/deactivation of a particular license.',\n 'trial': 'Trial/Trial Activation is a device that has activated a trial of your product.',\n 'audit-log': 'Audit logs contain all the changes made to your account.',\n 'automated-email':\n 'Automated Email allow you to send marketing emails based on events on the linked product.',\n 'automated-email-event-log':\n 'Automated email event log is the log of all the automated email events for your product.',\n 'card': 'The payment card for your account.',\n 'feature-flag': 'Feature flags define features that make up tiers for your products.',\n 'invoice': '',\n 'license-template':\n 'License templates are a blueprint for the licenses you create for your customers and prevent repetition when creating licenses.',\n 'maintenance-policy':\n 'Maintenance policies represent support contracts and can be linked to licenses.',\n 'plan': '',\n 'product-version':\n 'Product Versions are sets of Feature Flags that define the tiers of your products.',\n 'release-channel': 'Release channel is the release channel for your product.',\n 'release-file': 'Release files are files within your created releases.',\n 'release-platform':\n 'Release Platforms differentiate the target platform for your release. Common platforms include \"Windows\", \"macOS\", and \"Linux\".',\n 'release':\n 'Releases help you to manage different versions of your app, and secure distribute it to licensed users.',\n 'report': 'Analytics data for your account',\n 'role-claim': '',\n 'role': 'Roles define permissions for your team.',\n 'saml-configuration': '',\n 'segment': 'Sets of filters that can be saved to filter resources.',\n 'trial-policy': 'Trial policies are templates for creating trials for your products.',\n 'webhook-event-log': 'Webhook Event Logs are logs of events that have occured on webhooks.',\n 'webhook-trigger': '',\n 'webhook': 'Webhooks are HTTP callbacks which are triggered by specific events.',\n 'organization': '',\n 'profile': '',\n 'setting': '',\n 'tag': 'Tags allow you to manage your licenses and customers on the dashboard.',\n 'team-member': 'Team members can access the account based on their roles.',\n 'user': 'A user refers to your customer whom you want to license your product.',\n 'sending-domain': 'Allows Cryptlex to send emails on your behalf using your From Email address',\n 'admin-role': 'Roles that have type admin',\n 'user-group': 'Groups of users that you can assign licenses to.',\n 'reseller': 'Resellers allow you to delegate user management to third parties or partners',\n 'oidc-configuration': '',\n 'organization-claim': '',\n 'reseller-claim': '',\n};\n\nconst RESOURCE_DISPLAY_NAMES: Record<string, string> = {\n 'id': 'ID',\n 'createdAt': 'Creation Date',\n 'scopes': 'Permissions',\n 'updatedAt': 'Last Updated',\n 'expiresAt': 'Expiration Date',\n 'lastSeenAt': 'Last Seen',\n 'os': 'OS',\n 'osVersion': 'OS Version',\n 'key': 'License Key',\n 'vmName': 'VM Name',\n 'container': 'Container',\n 'allowedIpRange': 'Allowed IP Range',\n 'allowedIpRanges': 'Allowed IP Ranges',\n 'allowedIpAddresses': 'Allowed IP Addresses',\n 'disallowedIpAddresses': 'Disallowed IP Addresses',\n 'allowVmActivation': 'Allow VM Activation',\n 'disableGeoLocation': 'Disable Geolocation',\n 'user.id': 'User ID',\n 'userId': 'User',\n 'productId': 'Product',\n 'downloads': 'Total Downloads',\n 'claims': 'Permissions',\n 'googleSsoEnabled': 'Google Login Enabled',\n 'lastAttemptedAt': 'Last Attempt Date',\n 'url': 'URL',\n 'trialPolicy.name': 'Trial Policy Name',\n 'licensePolicy.name': 'License Template Name',\n 'licensePolicy': 'License Template',\n 'eventLog': 'Audit Log',\n 'cc': 'CC Recepients',\n 'bcc': 'BCC Recepients',\n 'ipAddress': 'IP Address',\n 'resellerId': 'Reseller',\n 'productVersionId': 'Product Version',\n 'releaseId': 'Release',\n 'maintenancePolicyId': 'Maintenance Policy',\n 'webhookId': 'Webhook',\n 'automatedEmailId': 'Automated Email',\n 'location.countryName': 'Country',\n 'location.ipAddress': 'IP Address',\n 'location.countryCode': 'Country',\n 'organizationId': 'Organization',\n 'address.country': 'Country',\n 'address.addressLine1': 'Address Line 1',\n 'address.addressLine2': 'Address Line 2',\n 'responseStatusCode': 'HTTP Status Code',\n 'resourceId': 'Resource ID',\n 'Sso': 'SAML SSO 2.0',\n 'reseller.name': 'Reseller',\n 'sendingDomain': 'Email Sending Domain',\n};\nexport function getResourceDisplayName(resourceName: string, portal: CtxProjectName) {\n if (portal !== 'admin-portal' && resourceName in OTHER_PORTALS_DISPLAY_NAME) {\n return OTHER_PORTALS_DISPLAY_NAME[resourceName];\n } else if (resourceName in RESOURCE_DISPLAY_NAMES) {\n return RESOURCE_DISPLAY_NAMES[resourceName];\n } else {\n return convertCamelCaseToTitleCase(resourceName);\n }\n}\n\n/**\n * Format multiple license parameters (expired, suspended, revoked) into a single status\n */\nexport function getLicenseStatus(license: any): string {\n const licenseExpired = license.expiresAt && new Date(license.expiresAt) < new Date();\n // Status Column\n switch (true) {\n case license.revoked && license.suspended && licenseExpired:\n return 'Revoked, Suspended, Expired';\n case license.revoked && license.suspended:\n return 'Revoked, Suspended';\n case license.revoked && licenseExpired:\n return 'Revoked, Expired';\n case license.suspended && licenseExpired:\n return 'Suspended, Expired';\n case license.suspended:\n return 'Suspended';\n case license.revoked:\n return 'Revoked';\n case licenseExpired:\n return 'Expired';\n default:\n return 'Active';\n }\n}\n\nexport function getValidityDisplay(validity: number | undefined) {\n if (validity === 0 || !validity) {\n return 'Lifetime';\n } else {\n return secondsToDuration(validity);\n }\n}\nexport function secondsToDuration(seconds: number): string {\n const duration = intervalToDuration({\n start: 0,\n end: seconds * 1000,\n });\n\n const parts = [\n duration.years && `${duration.years}y`,\n duration.months && `${duration.months}m`,\n duration.days && `${duration.days}d`,\n duration.hours && `${duration.hours}h`,\n ];\n\n // Filter out undefined values and join\n return parts.filter(Boolean).join(' ').trim();\n}\n\nexport function getValueFromData(data: any, accessor: string | number | symbol) {\n const accessors = accessor.toString().split('.');\n let value = data;\n for (const acc of accessors) {\n value = value?.[acc];\n }\n return value;\n}\nexport const ALL_OS: { [key: string]: string } = {\n windows: 'Windows',\n macos: 'macOS',\n linux: 'Linux',\n ios: 'iOS',\n android: 'Android',\n};\n"],"names":["FILTERABLE_PROPERTY_TYPES","DEFAULT_FILTERABLE_FIELDS","FILTER_COMPARISON_OPERATORS","COMPARISON_OPERATOR_LABELS","OPERATORS_FOR_FILTER_TYPE","OTHER_PORTALS_DISPLAY_NAME","RESOURCE_NAMES","RESOURCE_DEFINITIONS","RESOURCE_DISPLAY_NAMES","getResourceDisplayName","resourceName","portal","convertCamelCaseToTitleCase","getLicenseStatus","license","licenseExpired","getValidityDisplay","validity","secondsToDuration","seconds","duration","intervalToDuration","getValueFromData","data","accessor","accessors","value","acc","ALL_OS"],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { jsx as o } from "react/jsx-runtime";
|
|
2
2
|
import { Link as i } from "@tanstack/react-router";
|
|
3
|
-
function a(t,
|
|
3
|
+
function a(t, e, r) {
|
|
4
4
|
const n = {
|
|
5
|
-
key: "",
|
|
6
|
-
stateData:
|
|
5
|
+
key: "key",
|
|
6
|
+
stateData: r
|
|
7
7
|
};
|
|
8
8
|
return /* @__PURE__ */ o(
|
|
9
9
|
i,
|
|
10
10
|
{
|
|
11
|
-
to: `/${
|
|
11
|
+
to: `/${e}`,
|
|
12
12
|
state: n,
|
|
13
13
|
className: "text-primary underline font-bold",
|
|
14
14
|
children: t
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-display.es.js","sources":["../../../../lib/components/data-table/table-utils/link-display.tsx"],"sourcesContent":["import { Link } from '@tanstack/react-router';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n/**\n * This helps in passing the state data from one page to another, showing different text for a link\n * @param display String that needs to be displayed\n * @param url actual url for the a tag\n * @param stateData data to be passed to the next page\n * @returns\n */\nexport function getLinkDisplay(display: string, url: string, stateData?: any) {\n // including key, because the state overwrites the key in the state.\n const state = {\n key: '',\n stateData,\n };\n\n return (\n <Link\n to={`/${url}`}\n state={state} // Spread the row object to preserve its key\n className=\"text-primary underline font-bold\"\n >\n {display}\n </Link>\n );\n}\n"],"names":["getLinkDisplay","display","url","stateData","state","jsx","Link"],"mappings":";;AAUgB,SAAAA,EAAeC,GAAiBC,GAAaC,GAAiB;AAE5E,QAAMC,IAAQ;AAAA,IACZ,KAAK;AAAA,IACL,WAAAD;AAAA,EACF;AAGE,SAAA,gBAAAE;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,IAAI,IAAIJ,CAAG;AAAA,
|
|
1
|
+
{"version":3,"file":"link-display.es.js","sources":["../../../../lib/components/data-table/table-utils/link-display.tsx"],"sourcesContent":["import { Link } from '@tanstack/react-router';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n/**\n * This helps in passing the state data from one page to another, showing different text for a link\n * @param display String that needs to be displayed\n * @param url actual url for the a tag\n * @param stateData data to be passed to the next page\n * @returns\n */\nexport function getLinkDisplay(display: string, url: string, stateData?: any) {\n // including key, because the state overwrites the key in the state.\n const state = {\n key: 'key',\n stateData,\n };\n\n return (\n <Link\n to={`/${url}`}\n // TODO:\n state={state as any} // Spread the row object to preserve its key\n className=\"text-primary underline font-bold\"\n >\n {display}\n </Link>\n );\n}\n"],"names":["getLinkDisplay","display","url","stateData","state","jsx","Link"],"mappings":";;AAUgB,SAAAA,EAAeC,GAAiBC,GAAaC,GAAiB;AAE5E,QAAMC,IAAQ;AAAA,IACZ,KAAK;AAAA,IACL,WAAAD;AAAA,EACF;AAGE,SAAA,gBAAAE;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,IAAI,IAAIJ,CAAG;AAAA,MAEX,OAAAE;AAAA,MACA,WAAU;AAAA,MAET,UAAAH;AAAA,IAAA;AAAA,EACH;AAEJ;"}
|