@lax-wp/design-system 0.13.33-beta.7 → 0.13.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/data-display/infinite-table/body/cell/ActionCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/ActionCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/ActionCell.es.js +11 -11
- package/dist/components/data-display/infinite-table/body/cell/ActionCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.es.js +10 -10
- package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js +23 -23
- package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/LoaderCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/LoaderCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/LoaderCell.es.js +6 -6
- package/dist/components/data-display/infinite-table/body/cell/LoaderCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/PendingEditCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/PendingEditCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/PendingEditCell.es.js +4 -4
- package/dist/components/data-display/infinite-table/body/cell/PendingEditCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/RowActionCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/RowActionCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/RowActionCell.es.js +3 -3
- package/dist/components/data-display/infinite-table/body/cell/RowActionCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/RowOptionsCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/RowOptionsCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/RowOptionsCell.es.js +24 -24
- package/dist/components/data-display/infinite-table/body/cell/RowOptionsCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/SpinnerCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/SpinnerCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/SpinnerCell.es.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/SpinnerCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/rows/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/rows/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/rows/index.es.js +104 -101
- package/dist/components/data-display/infinite-table/body/rows/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/rows/row.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/rows/row.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/rows/row.es.js +2 -2
- package/dist/components/data-display/infinite-table/body/rows/row.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/constants.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/constants.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/constants.d.ts +6 -0
- package/dist/components/data-display/infinite-table/constants.es.js +17 -16
- package/dist/components/data-display/infinite-table/constants.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/CheckAll.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/head/CheckAll.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/CheckAll.es.js +1 -1
- package/dist/components/data-display/infinite-table/head/CheckAll.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/cell/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/head/cell/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/cell/index.es.js +2 -2
- package/dist/components/data-display/infinite-table/head/cell/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/head/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/index.es.js +20 -20
- package/dist/components/data-display/infinite-table/head/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/index.es.js +188 -187
- package/dist/components/data-display/infinite-table/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/useRowHeight.cjs.js +2 -0
- package/dist/components/data-display/infinite-table/useRowHeight.cjs.js.map +1 -0
- package/dist/components/data-display/infinite-table/useRowHeight.d.ts +15 -0
- package/dist/components/data-display/infinite-table/useRowHeight.es.js +24 -0
- package/dist/components/data-display/infinite-table/useRowHeight.es.js.map +1 -0
- package/package.json +1 -1
|
@@ -19,8 +19,8 @@ const le = (e) => {
|
|
|
19
19
|
if (Number.isNaN(o) || e === null || e === void 0)
|
|
20
20
|
return "0ms";
|
|
21
21
|
if (o >= 864e5) {
|
|
22
|
-
const p = Math.floor(o / 864e5), d = Math.floor(o % 864e5 / 36e5), u = Math.floor(o % 36e5 / 6e4),
|
|
23
|
-
return `${p}d ${d}h ${u}m ${
|
|
22
|
+
const p = Math.floor(o / 864e5), d = Math.floor(o % 864e5 / 36e5), u = Math.floor(o % 36e5 / 6e4), h = Math.floor(o % 6e4 / 1e3);
|
|
23
|
+
return `${p}d ${d}h ${u}m ${h}s`;
|
|
24
24
|
}
|
|
25
25
|
if (o >= 36e5) {
|
|
26
26
|
const p = Math.floor(o / 36e5), d = Math.floor(o % 36e5 / 6e4), u = Math.floor(o % 6e4 / 1e3);
|
|
@@ -37,7 +37,7 @@ const le = (e) => {
|
|
|
37
37
|
nextWidthSum: p,
|
|
38
38
|
isLastCell: d,
|
|
39
39
|
rowHovering: u,
|
|
40
|
-
index:
|
|
40
|
+
index: h,
|
|
41
41
|
isFirstStickyCell: ce,
|
|
42
42
|
handleCellClick: me,
|
|
43
43
|
currentData: v,
|
|
@@ -51,8 +51,8 @@ const le = (e) => {
|
|
|
51
51
|
inlineEditing: k,
|
|
52
52
|
isInlineEditing: l,
|
|
53
53
|
setRowHovering: V,
|
|
54
|
-
handleCellValueChange:
|
|
55
|
-
cellRef:
|
|
54
|
+
handleCellValueChange: we,
|
|
55
|
+
cellRef: he,
|
|
56
56
|
handleUpdateCellData: ye,
|
|
57
57
|
registerValidation: be,
|
|
58
58
|
loadingExpand: ve,
|
|
@@ -80,7 +80,7 @@ const le = (e) => {
|
|
|
80
80
|
selectedRowId: K
|
|
81
81
|
} = He(qe), Me = K != null && String(K) === String(o), Se = Ye(), j = (e?.column?.key ? e?.row?.original?.__cellMetadata?.[e.column.key] : void 0)?.is_locked ?? e?.column?.is_locked, W = (e?.column?.key ? $e?.[o]?.[e.column.key]?.validationError : null) || xe || null, oe = k === e.column.key && e?.column?.canEdit && !j && !e?.column?.is_disabled, De = Le === `${o}-${e?.column?.id}`, { theme: Oe } = We(), Ve = Oe === "dark", Re = S(() => V(o), [V, o]), Ie = S(() => V(null), [V]), _ = Se?.formatDuration, [n, f] = D(
|
|
82
82
|
e?.column?.dataType === "duration" && e?.value ? _ ? _(e.value) : le(e.value) : e.value
|
|
83
|
-
), [
|
|
83
|
+
), [w, te] = D(null), [U, ze] = D(!1), [Ae, re] = D(!1), [Fe, ae] = D(!1), N = X(null), L = X(), $ = X(), { selectedColumnIds: ne = [] } = Ne || {}, se = !Object.prototype.hasOwnProperty.call(e?.column?.meta ?? {}, "shouldHighlight") || e?.column?.meta?.shouldHighlight, ue = S(() => {
|
|
84
84
|
N.current && ze(N.current.scrollWidth > N.current.clientWidth);
|
|
85
85
|
}, []), Y = S((r) => {
|
|
86
86
|
L.current && clearTimeout(L.current), r ? re(!0) : L.current = setTimeout(() => re(!1), 200);
|
|
@@ -147,7 +147,7 @@ const le = (e) => {
|
|
|
147
147
|
...e.getCellProps(),
|
|
148
148
|
onClick: z?.isEnabled ? void 0 : Ke,
|
|
149
149
|
className: x(
|
|
150
|
-
"h-
|
|
150
|
+
"h-row",
|
|
151
151
|
{
|
|
152
152
|
"sticky left-0": e?.column?.sticky,
|
|
153
153
|
relative: !e?.column?.sticky,
|
|
@@ -160,42 +160,42 @@ const le = (e) => {
|
|
|
160
160
|
W && !oe ? "outline outline-2 outline-error-500 -outline-offset-2 z-[5]" : "",
|
|
161
161
|
`${T || "bg-white dark:bg-black-800"}`
|
|
162
162
|
),
|
|
163
|
-
style: { minWidth: `${e.column.width}px`, maxWidth: `${e.column.width}px`, right: e?.column?.sticky ? `${p}px` : Qe, paddingLeft: y > 0 &&
|
|
163
|
+
style: { minWidth: `${e.column.width}px`, maxWidth: `${e.column.width}px`, right: e?.column?.sticky ? `${p}px` : Qe, paddingLeft: y > 0 && h === 0 ? `${y * q}px` : void 0 },
|
|
164
164
|
onMouseEnter: Re,
|
|
165
165
|
onMouseLeave: Ie,
|
|
166
166
|
children: [
|
|
167
|
-
/* @__PURE__ */ t(to, { withLink: z?.isEnabled, linkTo: z?.linkTo || void 0, rowData: e?.row?.original, disableRowClick: e?.column?.disableRowClick, children: (Array.isArray(A) ? A.includes(`${o}-${e?.column?.id}`) : A === `${o}-${e?.column?.id}`) ? /* @__PURE__ */ M("div", { className: "h-
|
|
167
|
+
/* @__PURE__ */ t(to, { withLink: z?.isEnabled, linkTo: z?.linkTo || void 0, rowData: e?.row?.original, disableRowClick: e?.column?.disableRowClick, children: (Array.isArray(A) ? A.includes(`${o}-${e?.column?.id}`) : A === `${o}-${e?.column?.id}`) ? /* @__PURE__ */ M("div", { className: "h-row top-0 font-medium font-inter w-full absolute flex items-center px-4", children: [
|
|
168
168
|
/* @__PURE__ */ t("span", { className: "text-neutral-400 dark:text-black-400 truncate", children: (() => {
|
|
169
169
|
const r = `${o}-${e?.column?.id}`, s = typeof F == "object" ? F?.[r] : F, m = e?.column?.type?.toLowerCase();
|
|
170
170
|
return m === "boolean" ? s === !0 || s === "true" || s === "True" ? "Yes" : "No" : (m === "date" || m === "datetime") && s ? G(s, { withTime: m === "datetime", skipTimezone: !0 }) || String(s) : s != null ? String(s) : n;
|
|
171
171
|
})() }),
|
|
172
172
|
/* @__PURE__ */ t("div", { className: "ml-2 flex items-center gap-1.5", children: /* @__PURE__ */ t(J, { className: "spinner text-neutral-600 dark:text-white", size: 12 }) })
|
|
173
|
-
] }) : k === e.column.key && e?.column?.canEdit && !j && !e?.column?.is_disabled ? /* @__PURE__ */ t("div", { className: "h-
|
|
174
|
-
y > 0 &&
|
|
173
|
+
] }) : k === e.column.key && e?.column?.canEdit && !j && !e?.column?.is_disabled ? /* @__PURE__ */ t("div", { className: "h-row w-full absolute top-0 left-0 flex items-center", style: { marginLeft: y > 0 && h === 0 ? `-${y * q}px` : void 0, width: y > 0 && h === 0 ? `calc(100% + ${y * q}px)` : "100%" }, children: /* @__PURE__ */ t(Je, { cell: e, id: o, inlineEditing: k, cellRef: he, handleCellValueChange: we, handleUpdateCellData: ye, registerValidation: be }) }) : /* @__PURE__ */ M(je, { children: [
|
|
174
|
+
y > 0 && h === 0 && /* @__PURE__ */ t("div", { className: "h-row border-l border-neutral-300 dark:border-black-600 ml-2" }),
|
|
175
175
|
/* @__PURE__ */ t("div", { className: "min-h-6", children: /* @__PURE__ */ t(
|
|
176
176
|
H,
|
|
177
177
|
{
|
|
178
|
-
title:
|
|
179
|
-
hideTooltip: !
|
|
178
|
+
title: w && e?.column?.type?.toLowerCase() !== "url" ? w : void 0,
|
|
179
|
+
hideTooltip: !w || e?.column?.type?.toLowerCase() === "url",
|
|
180
180
|
delayShow: !0,
|
|
181
181
|
placement: "top",
|
|
182
182
|
children: /* @__PURE__ */ M(
|
|
183
183
|
"div",
|
|
184
184
|
{
|
|
185
|
-
className: x(`h-
|
|
185
|
+
className: x(`h-row top-0 font-medium font-inter overflow-index-auto whitespace-nowrap text-ellipsis dark:text-black-200 w-full absolute flex items-center ${T || "bg-white dark:bg-black-800"}`, c ? "overflow-x-hidden overflow-y-visible" : "overflow-x-hidden", { "border border-b-0 border-t-0 border-primary-600 dark:border-blue-800": ne?.includes(e.column.id) }),
|
|
186
186
|
style: e?.column?.sticky && ce ? { boxShadow: Ve ? Ze : Pe } : {},
|
|
187
187
|
children: [
|
|
188
|
-
E?.isCascading && !Te &&
|
|
188
|
+
E?.isCascading && !Te && h === 0 && /* @__PURE__ */ t("div", { className: x("w-[22px] h-row flex items-center px-4", `${T || "bg-white dark:bg-black-800"}`), id: "cascading", children: Ce > y && (e?.row?.original?.__has_children || E?.showAllDropdown) && /* @__PURE__ */ t("div", { children: ve ? /* @__PURE__ */ t(J, { className: "text-neutral-600 dark:text-white", size: 8 }) : /* @__PURE__ */ t("div", { children: _e?.[o]?.isOpen ? /* @__PURE__ */ t(Ee, { size: 20, className: "text-neutral-400 dark:text-neutral-400", onClick: (r) => {
|
|
189
189
|
Z(), r.stopPropagation();
|
|
190
190
|
} }) : /* @__PURE__ */ t(eo, { size: 20, className: "text-neutral-400 dark:text-neutral-400", onClick: (r) => {
|
|
191
191
|
Z(), r.stopPropagation();
|
|
192
192
|
} }) }) }) }),
|
|
193
|
-
e?.column?.type?.toLowerCase() === "url" &&
|
|
193
|
+
e?.column?.type?.toLowerCase() === "url" && w ? /* @__PURE__ */ t(
|
|
194
194
|
H,
|
|
195
195
|
{
|
|
196
|
-
title: /* @__PURE__ */ t("div", { onMouseEnter: () => Y(!0), onMouseLeave: () => Y(!1), children: /* @__PURE__ */ t("a", { href:
|
|
196
|
+
title: /* @__PURE__ */ t("div", { onMouseEnter: () => Y(!0), onMouseLeave: () => Y(!1), children: /* @__PURE__ */ t("a", { href: w, target: "_blank", rel: "noopener noreferrer", onClick: (r) => r.stopPropagation(), children: /* @__PURE__ */ M("div", { className: "flex gap-1 items-center w-full", children: [
|
|
197
197
|
/* @__PURE__ */ t("div", { className: "w-4 h-4", children: /* @__PURE__ */ t(oo, { height: 16, width: 16 }) }),
|
|
198
|
-
/* @__PURE__ */ t(Be, { variant: "medium", size: "small", className: "truncate", appearance: "custom", children:
|
|
198
|
+
/* @__PURE__ */ t(Be, { variant: "medium", size: "small", className: "truncate", appearance: "custom", children: w }),
|
|
199
199
|
/* @__PURE__ */ t(Ge, { sx: { height: "16px", width: "16px", color: "#016DCF" } })
|
|
200
200
|
] }) }) }),
|
|
201
201
|
placement: "top",
|
|
@@ -218,9 +218,9 @@ const le = (e) => {
|
|
|
218
218
|
) : void 0,
|
|
219
219
|
placement: "top",
|
|
220
220
|
delayShow: !0,
|
|
221
|
-
hideTooltip: !!
|
|
222
|
-
open: U && !
|
|
223
|
-
onOpenChange: U && !
|
|
221
|
+
hideTooltip: !!w,
|
|
222
|
+
open: U && !w && !c ? Fe : void 0,
|
|
223
|
+
onOpenChange: U && !w && !c ? B : void 0,
|
|
224
224
|
className: x("block w-full min-w-0", c ? "overflow-x-hidden overflow-y-visible" : "overflow-hidden"),
|
|
225
225
|
children: /* @__PURE__ */ t("div", { className: x("w-full h-full flex items-center px-4 min-w-0", c ? "overflow-x-hidden overflow-y-visible" : "overflow-hidden"), children: /* @__PURE__ */ t(
|
|
226
226
|
"span",
|
|
@@ -242,11 +242,11 @@ const le = (e) => {
|
|
|
242
242
|
}
|
|
243
243
|
) })
|
|
244
244
|
] }) }),
|
|
245
|
-
W && !oe && /* @__PURE__ */ t("div", { className: "absolute bottom-0 left-0 right-0 h-
|
|
245
|
+
W && !oe && /* @__PURE__ */ t("div", { className: "absolute bottom-0 left-0 right-0 h-row flex items-end pointer-events-none z-[5]", children: /* @__PURE__ */ t("div", { className: "w-full bg-error-50 dark:bg-error-975 px-1.5 py-0.5 truncate", children: /* @__PURE__ */ t("span", { className: "text-error-600 text-2xs font-medium leading-none", children: W }) }) }),
|
|
246
246
|
De && !(k === e.column.key && e?.column?.canEdit && !j && !e?.column?.is_disabled) && /* @__PURE__ */ t("div", { className: "absolute top-0 right-0 bg-white dark:bg-black-800 rounded-full w-5 h-5 flex items-center justify-center border border-primary-300 dark:border-primary-600 shadow-sm z-10", children: /* @__PURE__ */ t(J, { className: "text-primary-600 dark:text-white", size: 8 }) })
|
|
247
247
|
]
|
|
248
248
|
},
|
|
249
|
-
|
|
249
|
+
h
|
|
250
250
|
);
|
|
251
251
|
}, To = C.memo(ro);
|
|
252
252
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCell.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/DataCell.tsx"],"sourcesContent":["import { useTheme } from '../../../../../hooks/useTheme';\nimport { formatCurrency } from '../../../../../utils/formatters';\nimport { formatDate } from '../../../../../utils/formatters';\nimport { getTableRowBgClassNamesByStatus } from '../../../../../constants/table';\nimport type { ICell, IPendingEdit, ValidateAndSaveResult } from '../../types';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport Tooltip from '../../../../tooltip/Tooltip';\nimport { Typography } from '../../../../data-display/typography/Typography';\nimport { KeyboardArrowDownIcon, KeyboardArrowRightFilledIcon, LinkIcon, LoadingSpinnerIcon } from '../../../../icon';\nimport { OpenInNewRounded } from '@mui/icons-material';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { TableContext } from '../../context';\nimport { InlineEditField } from './InlineEditField';\nimport { CELL_DEFAULT_RIGHT_OFFSET, CELL_INDENT_PER_LEVEL_PX, CELL_STICKY_SHADOW_DARK, CELL_STICKY_SHADOW_LIGHT } from '../../constants';\n\ntype CellProps = {\n cell: ICell;\n id: string | number;\n nextWidthSum: number;\n isLastCell: boolean;\n rowHovering: string | number | null;\n index: number;\n isFirstStickyCell: boolean;\n handleCellClick: (e?: React.MouseEvent) => void | null;\n currentData: { is_row_modified?: boolean; is_deleted?: boolean; is_added?: boolean };\n highlightSubstring?: (value: string) => JSX.Element;\n is_read: boolean;\n is_modified: boolean;\n is_row_modified: boolean;\n is_deleted: boolean;\n is_added: boolean;\n level: number;\n inlineEditing: string | null;\n isInlineEditing?: boolean;\n setRowHovering: (id: string | number | null) => void;\n handleCellValueChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n cellRef: React.RefObject<HTMLDivElement>;\n handleUpdateCellData: (directValue?: string | boolean | null, meta?: { currency_code?: string | null; reference?: unknown | null;[key: string]: unknown | null } | null) => void;\n registerValidation?: (validateFn: () => ValidateAndSaveResult) => void;\n loadingExpand: boolean;\n toggleRowExpand: () => void;\n isDraggingOver?: boolean;\n isLoading?: boolean;\n is_incomplete?: boolean;\n pendingEdit?: IPendingEdit;\n hasPendingEdit?: boolean;\n pendingValidationError?: string | null;\n};\n\nlet interval: ReturnType<typeof setInterval> | undefined;\n\nconst formatDurationFallback = (duration: unknown): string => {\n const durationInMs = Number(duration);\n\n if (Number.isNaN(durationInMs) || duration === null || duration === undefined) {\n return '0ms';\n }\n\n if (durationInMs >= 86400000) {\n const days = Math.floor(durationInMs / 86400000);\n const hours = Math.floor((durationInMs % 86400000) / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${days}d ${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 3600000) {\n const hours = Math.floor(durationInMs / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 60000) {\n const minutes = Math.floor(durationInMs / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 1000) {\n return `${(durationInMs / 1000).toFixed(2)}s`;\n }\n\n return `${durationInMs}ms`;\n};\n\nconst CellWrapper = ({ children, withLink, linkTo, rowData, disableRowClick }: { children: React.ReactNode; withLink?: boolean; linkTo?: (id: string, _rowData?: Record<string, unknown>) => string; rowData?: Record<string, unknown>; disableRowClick?: boolean }) => {\n return withLink && !disableRowClick ? <Link to={linkTo?.(rowData?.id as string, rowData) || ''}>{children}</Link> : children;\n};\n\nconst DataCellInner: React.FC<CellProps> = ({\n cell, id, nextWidthSum, isLastCell, rowHovering, index, isFirstStickyCell, handleCellClick, currentData, highlightSubstring,\n is_read, is_modified, is_row_modified, is_deleted, is_added, level, inlineEditing, isInlineEditing, setRowHovering,\n handleCellValueChange, cellRef, handleUpdateCellData, registerValidation, loadingExpand, toggleRowExpand,\n isDraggingOver, isLoading, is_incomplete, pendingEdit, hasPendingEdit, pendingValidationError,\n}) => {\n const {\n cascadingTableConfig, originalsOnly, maxLevel, showNewItem, expandedRows, rowLinkConfig, multiSelectConfig,\n cellEditing, cellEditingValue, allowInlineEdit, fieldOperationLoading, pendingEdits: contextPendingEdits,\n selectedRowId,\n } = useContext(TableContext);\n\n const isSelectedRow =\n selectedRowId !== null && selectedRowId !== undefined && String(selectedRowId) === String(id);\n\n const tableConfig = useTableConfig();\n\n const rowCellMeta = cell?.column?.key ? (cell?.row?.original?.__cellMetadata as Record<string, Record<string, unknown>> | undefined)?.[cell.column.key] : undefined;\n const isLocked = rowCellMeta?.is_locked ?? cell?.column?.is_locked;\n const cellValidationError = (cell?.column?.key ? contextPendingEdits?.[id]?.[cell.column.key]?.validationError : null) || pendingValidationError || null;\n const isActuallyInlineEditing = inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled;\n const isFieldOperationLoading = fieldOperationLoading === `${id}-${cell?.column?.id}`;\n const { theme } = useTheme();\n const isDark = theme === 'dark';\n const onMouseEnter = useCallback(() => setRowHovering(id), [setRowHovering, id]);\n const onMouseLeave = useCallback(() => setRowHovering(null), [setRowHovering]);\n\n const getNodeExecutionDuration = tableConfig?.formatDuration;\n const [cellValue, setCellValue] = useState(\n cell?.column?.dataType === 'duration' && cell?.value\n ? getNodeExecutionDuration\n ? getNodeExecutionDuration(cell.value)\n : formatDurationFallback(cell.value)\n : cell.value,\n );\n const [tooltipText, setTooltipText] = useState<string | null>(null);\n const [isTruncated, setIsTruncated] = useState(false);\n const [urlTooltipOpen, setUrlTooltipOpen] = useState(false);\n const [truncateTooltipOpen, setTruncateTooltipOpen] = useState(false);\n const textRef = useRef<HTMLSpanElement>(null);\n const urlTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const truncateTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const { selectedColumnIds = [] } = multiSelectConfig || {};\n const shouldHighlight = !Object.prototype.hasOwnProperty.call(cell?.column?.meta ?? {}, 'shouldHighlight') || cell?.column?.meta?.shouldHighlight;\n\n const checkTruncation = useCallback(() => {\n if (textRef.current) {\n setIsTruncated(textRef.current.scrollWidth > textRef.current.clientWidth);\n }\n }, []);\n\n const handleUrlTooltipChange = useCallback((open: boolean) => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n\n if (open) {\n setUrlTooltipOpen(true);\n } else {\n urlTooltipTimer.current = setTimeout(() => setUrlTooltipOpen(false), 200);\n }\n }, []);\n\n const handleTruncateTooltipChange = useCallback((open: boolean) => {\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n\n if (open) {\n setTruncateTooltipOpen(true);\n } else {\n truncateTooltipTimer.current = setTimeout(() => setTruncateTooltipOpen(false), 200);\n }\n }, []);\n\n const bgColor = cn({\n 'bg-amber-100 dark:bg-amber-900/30': hasPendingEdit,\n 'bg-neutral-100 dark:bg-black-600': rowHovering === id && !isInlineEditing && !hasPendingEdit && !(is_deleted || currentData?.is_deleted) && !(is_added || currentData?.is_added),\n 'bg-error-200 dark:bg-error-900': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_deleted || currentData?.is_deleted),\n 'bg-success-100 dark:bg-success-800': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_added || currentData?.is_added),\n 'bg-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-warning-50 dark:bg-black-500': (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-error-100 dark:bg-error-975': (is_deleted || currentData?.is_deleted) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-success-50 dark:bg-success-900': (is_added || currentData?.is_added) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-900': (isDraggingOver || isInlineEditing) && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-800': selectedColumnIds?.includes(cell.column.id) && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-100 dark:bg-primary-950': isSelectedRow && rowHovering !== id && !isInlineEditing && !hasPendingEdit && !isLoading,\n [getTableRowBgClassNamesByStatus[cell?.row?.original?.__rowBgStatus as string]]: cell?.row?.original?.__rowBgStatus && !isInlineEditing && !hasPendingEdit,\n });\n\n const onClick = (e: React.MouseEvent) => { if (cell.column?.disableRowClick) return; handleCellClick(e); };\n\n useEffect(() => {\n const isRunning = cell?.row?.original?.status === 'running';\n if (isRunning && cell.column?.dataType === 'duration') {\n interval = setInterval(() => {\n const startedTime = new Date(formatDate((cell?.row?.original?.created_at || cell?.row?.original?.executed_on) as string | undefined, { withTime: true, format: 'yyyy-MM-dd HH:mm:ss' }) as unknown as Date);\n const timeDiff = Math.abs(new Date().getTime() - new Date(startedTime).getTime());\n setCellValue(getNodeExecutionDuration ? getNodeExecutionDuration(timeDiff) : formatDurationFallback(timeDiff));\n }, 500);\n }\n return () => { if (interval) clearInterval(interval); };\n }, [cellValue, cell.value, cell?.row?.original?.created_at, cell?.row?.original?.executed_on, cell?.row?.original?.status, cell.column?.dataType, getNodeExecutionDuration]);\n\n useEffect(() => {\n if (cell?.column?.tooltipCellKey || cell?.column?.type?.toLowerCase() === 'url') {\n if (cell?.column?.type?.toLowerCase() === 'url') setTooltipText(cell?.value as string | null);\n else setTooltipText(cell?.row?.original?.[String(cell?.column?.tooltipCellKey)] as string | null);\n }\n }, [cell?.column?.tooltipCellKey, cell?.row?.original, cell?.column?.type, cell?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'currency') {\n if (pendingEdit?.value !== undefined) {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n const currencyCode = pendingEdit?.meta?.currency_code || rawData?.[headerKey]?.currency_code || 'USD';\n setCellValue(formatCurrency(pendingEdit.value, currencyCode as string));\n } else {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n setCellValue(formatCurrency(cell?.value, (rawData?.[headerKey]?.currency_code as string) || 'USD'));\n }\n }\n }, [cell?.value, cell?.column?.type, cell?.column?.Header, cell?.row?.original?.__rawData, pendingEdit?.value, pendingEdit?.meta?.currency_code]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'percentage') {\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value?.toString() + '%' || '');\n else setCellValue(cell?.value?.toString() + '%' || '');\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['date', 'datetime'].includes(columnType)) {\n if (pendingEdit?.value !== undefined) {\n const hasTime = columnType === 'datetime';\n const formattedValue = formatDate(pendingEdit.value as string, { withTime: hasTime, skipTimezone: true });\n setCellValue(formattedValue || pendingEdit.value);\n } else setCellValue(cell.value);\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['currency', 'percentage', 'duration', 'boolean', 'date', 'datetime'].includes(columnType)) return;\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value);\n else if (cell?.column?.dataType !== 'duration') setCellValue(cell.value);\n }, [cell?.value, cell?.column?.type, cell?.column?.dataType, pendingEdit?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'boolean' && allowInlineEdit) {\n const rawValue = pendingEdit?.value !== undefined ? pendingEdit.value : cell?.value;\n const booleanValue = rawValue === true || rawValue === 'true' || rawValue === 'True' || rawValue === 'Yes' || rawValue === 1;\n setCellValue(booleanValue ? 'Yes' : 'No');\n }\n }, [cell?.value, cell?.column?.type, allowInlineEdit, pendingEdit?.value]);\n\n useEffect(() => {\n return () => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n };\n }, []);\n\n const isUiElementCell = React.isValidElement(cellValue);\n\n return (\n <td\n key={index} id={cell.value as string | undefined} data-column-key={cell?.column?.key} {...cell.getCellProps()}\n onClick={rowLinkConfig?.isEnabled ? undefined : onClick}\n className={cn('h-10', {\n 'sticky left-0': cell?.column?.sticky,\n relative: !cell?.column?.sticky,\n 'w-full': isLastCell,\n 'overflow-visible': inlineEditing === cell.column.key,\n /** Chips/badges: avoid vertical clip from overflow-x-hidden + truncate (see isUiElementCell branch below) */\n 'overflow-x-hidden overflow-y-visible': inlineEditing !== cell.column.key && isUiElementCell,\n 'overflow-hidden': inlineEditing !== cell.column.key && !isUiElementCell,\n },\n cellValidationError && !isActuallyInlineEditing ? 'outline outline-2 outline-error-500 -outline-offset-2 z-[5]' : '',\n `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`,\n )}\n style={{ minWidth: `${cell.column.width}px`, maxWidth: `${cell.column.width}px`, right: cell?.column?.sticky ? `${nextWidthSum}px` : CELL_DEFAULT_RIGHT_OFFSET, paddingLeft: level > 0 && index === 0 ? `${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined }}\n onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}\n >\n <CellWrapper withLink={rowLinkConfig?.isEnabled} linkTo={rowLinkConfig?.linkTo || undefined} rowData={cell?.row?.original} disableRowClick={cell?.column?.disableRowClick}>\n {(Array.isArray(cellEditing) ? cellEditing.includes(`${id}-${cell?.column?.id}`) : cellEditing === `${id}-${cell?.column?.id}`) ? (\n <div className='h-10 top-0 font-medium font-inter w-full absolute flex items-center px-4'>\n <span className='text-neutral-400 dark:text-black-400 truncate'>\n {(() => {\n const currentCellId = `${id}-${cell?.column?.id}`;\n const editValue = typeof cellEditingValue === 'object' ? cellEditingValue?.[currentCellId] : cellEditingValue;\n const columnType = cell?.column?.type?.toLowerCase();\n\n if (columnType === 'boolean') {\n return (editValue as unknown) === true || editValue === 'true' || editValue === 'True' ? 'Yes' : 'No';\n }\n\n if ((columnType === 'date' || columnType === 'datetime') && editValue) {\n const hasTime = columnType === 'datetime';\n return formatDate(editValue as string, { withTime: hasTime, skipTimezone: true }) || String(editValue);\n }\n\n return editValue !== undefined && editValue !== null ? String(editValue) : (cellValue as React.ReactNode);\n })()}\n </span>\n <div className='ml-2 flex items-center gap-1.5'><LoadingSpinnerIcon className='spinner text-neutral-600 dark:text-white' size={12} /></div>\n </div>\n ) : inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled ? (\n <div className='h-10 w-full absolute top-0 left-0 flex items-center' style={{ marginLeft: level > 0 && index === 0 ? `-${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined, width: level > 0 && index === 0 ? `calc(100% + ${level * CELL_INDENT_PER_LEVEL_PX}px)` : '100%' }}>\n <InlineEditField cell={cell} id={id} inlineEditing={inlineEditing} cellRef={cellRef} handleCellValueChange={handleCellValueChange} handleUpdateCellData={handleUpdateCellData} registerValidation={registerValidation} />\n </div>\n ) : (\n <>\n {level > 0 && index === 0 && <div className='h-10 border-l border-neutral-300 dark:border-black-600 ml-2' />}\n <div className='min-h-6'>\n <Tooltip\n title={tooltipText && cell?.column?.type?.toLowerCase() !== 'url' ? tooltipText : undefined}\n hideTooltip={!tooltipText || cell?.column?.type?.toLowerCase() === 'url'}\n delayShow\n placement='top'\n >\n <div className={cn(`h-10 top-0 font-medium font-inter overflow-index-auto whitespace-nowrap text-ellipsis dark:text-black-200 w-full absolute flex items-center ${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`, isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-x-hidden', { 'border border-b-0 border-t-0 border-primary-600 dark:border-blue-800': selectedColumnIds?.includes(cell.column.id) })}\n style={cell?.column?.sticky && isFirstStickyCell ? { boxShadow: isDark ? CELL_STICKY_SHADOW_DARK : CELL_STICKY_SHADOW_LIGHT } : {}}>\n {cascadingTableConfig?.isCascading && !originalsOnly && index === 0 && (\n <div className={cn('w-[22px] h-10 flex items-center px-4', `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`)} id='cascading'>\n {maxLevel! > level && (cell?.row?.original?.__has_children || cascadingTableConfig?.showAllDropdown) && (\n <div>{loadingExpand ? <LoadingSpinnerIcon className='text-neutral-600 dark:text-white' size={8} /> : <div>{expandedRows?.[id]?.isOpen ? <KeyboardArrowDownIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} /> : <KeyboardArrowRightFilledIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} />}</div>}</div>\n )}\n </div>\n )}\n\n {cell?.column?.type?.toLowerCase() === 'url' && tooltipText ? (\n <Tooltip\n title={(\n <div onMouseEnter={() => handleUrlTooltipChange(true)} onMouseLeave={() => handleUrlTooltipChange(false)}>\n <a href={tooltipText} target='_blank' rel='noopener noreferrer' onClick={(e) => e.stopPropagation()}>\n <div className='flex gap-1 items-center w-full'>\n <div className='w-4 h-4'>\n <LinkIcon height={16} width={16} />\n </div>\n <Typography variant='medium' size='small' className='truncate' appearance='custom'>{tooltipText}</Typography>\n <OpenInNewRounded sx={{ height: '16px', width: '16px', color: '#016DCF' }} />\n </div>\n </a>\n </div>\n )}\n placement='top'\n open={urlTooltipOpen}\n onOpenChange={handleUrlTooltipChange}\n className='block w-full min-w-0 overflow-hidden'\n >\n <div className='w-full h-full flex items-center px-4 min-w-0 overflow-hidden text-primary-400'>\n <span ref={textRef} onMouseEnter={checkTruncation} className='truncate w-full'>\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n ) : (\n <Tooltip\n title={\n isTruncated && cellValue && !isUiElementCell ? (\n <div\n onMouseEnter={() => handleTruncateTooltipChange(true)}\n onMouseLeave={() => handleTruncateTooltipChange(false)}\n className='max-h-96 overflow-y-auto whitespace-pre-wrap break-words no-scroll'\n >\n {String(cellValue)}\n </div>\n ) : undefined\n }\n placement='top'\n delayShow\n hideTooltip={!!tooltipText}\n open={isTruncated && !tooltipText && !isUiElementCell ? truncateTooltipOpen : undefined}\n onOpenChange={isTruncated && !tooltipText && !isUiElementCell ? handleTruncateTooltipChange : undefined}\n className={cn('block w-full min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}\n >\n <div className={cn('w-full h-full flex items-center px-4 min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}>\n <span\n ref={isUiElementCell ? undefined : textRef}\n onMouseEnter={isUiElementCell ? undefined : checkTruncation}\n className={cn(isUiElementCell ? 'flex min-w-0 max-w-full items-center justify-start gap-1' : 'truncate w-full')}\n >\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : React.isValidElement(cellValue)\n ? (typeof (cellValue as React.ReactElement<Record<string, unknown>>).type === 'string'\n ? cellValue\n : React.cloneElement(cellValue as React.ReactElement<Record<string, unknown>>, {\n ...((cellValue as React.ReactElement<Record<string, unknown>>).props as Record<string, unknown>),\n containerWidth: cell.column.width,\n }))\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n )}\n </div>\n </Tooltip>\n </div>\n </>\n )}\n </CellWrapper>\n {cellValidationError && !isActuallyInlineEditing && (\n <div className='absolute bottom-0 left-0 right-0 h-10 flex items-end pointer-events-none z-[5]'>\n <div className='w-full bg-error-50 dark:bg-error-975 px-1.5 py-0.5 truncate'><span className='text-error-600 text-2xs font-medium leading-none'>{cellValidationError}</span></div>\n </div>\n )}\n {isFieldOperationLoading && !(inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled) && (\n <div className='absolute top-0 right-0 bg-white dark:bg-black-800 rounded-full w-5 h-5 flex items-center justify-center border border-primary-300 dark:border-primary-600 shadow-sm z-10'>\n <LoadingSpinnerIcon className='text-primary-600 dark:text-white' size={8} />\n </div>\n )}\n </td>\n );\n};\n\nexport const DataCell = React.memo(DataCellInner);\n"],"names":["interval","formatDurationFallback","duration","durationInMs","days","hours","minutes","seconds","CellWrapper","children","withLink","linkTo","rowData","disableRowClick","jsx","Link","DataCellInner","cell","id","nextWidthSum","isLastCell","rowHovering","index","isFirstStickyCell","handleCellClick","currentData","highlightSubstring","is_read","is_modified","is_row_modified","is_deleted","is_added","level","inlineEditing","isInlineEditing","setRowHovering","handleCellValueChange","cellRef","handleUpdateCellData","registerValidation","loadingExpand","toggleRowExpand","isDraggingOver","isLoading","is_incomplete","pendingEdit","hasPendingEdit","pendingValidationError","cascadingTableConfig","originalsOnly","maxLevel","showNewItem","expandedRows","rowLinkConfig","multiSelectConfig","cellEditing","cellEditingValue","allowInlineEdit","fieldOperationLoading","contextPendingEdits","selectedRowId","useContext","TableContext","isSelectedRow","tableConfig","useTableConfig","isLocked","cellValidationError","isActuallyInlineEditing","isFieldOperationLoading","theme","useTheme","isDark","onMouseEnter","useCallback","onMouseLeave","getNodeExecutionDuration","cellValue","setCellValue","useState","tooltipText","setTooltipText","isTruncated","setIsTruncated","urlTooltipOpen","setUrlTooltipOpen","truncateTooltipOpen","setTruncateTooltipOpen","textRef","useRef","urlTooltipTimer","truncateTooltipTimer","selectedColumnIds","shouldHighlight","checkTruncation","handleUrlTooltipChange","open","handleTruncateTooltipChange","bgColor","cn","getTableRowBgClassNamesByStatus","onClick","e","useEffect","startedTime","formatDate","timeDiff","rawData","headerKey","currencyCode","formatCurrency","columnType","hasTime","formattedValue","rawValue","isUiElementCell","React","jsxs","CELL_DEFAULT_RIGHT_OFFSET","CELL_INDENT_PER_LEVEL_PX","currentCellId","editValue","LoadingSpinnerIcon","InlineEditField","Fragment","Tooltip","CELL_STICKY_SHADOW_DARK","CELL_STICKY_SHADOW_LIGHT","KeyboardArrowDownIcon","KeyboardArrowRightFilledIcon","LinkIcon","Typography","OpenInNewRounded","DataCell"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataCell.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/DataCell.tsx"],"sourcesContent":["import { useTheme } from '../../../../../hooks/useTheme';\nimport { formatCurrency } from '../../../../../utils/formatters';\nimport { formatDate } from '../../../../../utils/formatters';\nimport { getTableRowBgClassNamesByStatus } from '../../../../../constants/table';\nimport type { ICell, IPendingEdit, ValidateAndSaveResult } from '../../types';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport Tooltip from '../../../../tooltip/Tooltip';\nimport { Typography } from '../../../../data-display/typography/Typography';\nimport { KeyboardArrowDownIcon, KeyboardArrowRightFilledIcon, LinkIcon, LoadingSpinnerIcon } from '../../../../icon';\nimport { OpenInNewRounded } from '@mui/icons-material';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { TableContext } from '../../context';\nimport { InlineEditField } from './InlineEditField';\nimport { CELL_DEFAULT_RIGHT_OFFSET, CELL_INDENT_PER_LEVEL_PX, CELL_STICKY_SHADOW_DARK, CELL_STICKY_SHADOW_LIGHT } from '../../constants';\n\ntype CellProps = {\n cell: ICell;\n id: string | number;\n nextWidthSum: number;\n isLastCell: boolean;\n rowHovering: string | number | null;\n index: number;\n isFirstStickyCell: boolean;\n handleCellClick: (e?: React.MouseEvent) => void | null;\n currentData: { is_row_modified?: boolean; is_deleted?: boolean; is_added?: boolean };\n highlightSubstring?: (value: string) => JSX.Element;\n is_read: boolean;\n is_modified: boolean;\n is_row_modified: boolean;\n is_deleted: boolean;\n is_added: boolean;\n level: number;\n inlineEditing: string | null;\n isInlineEditing?: boolean;\n setRowHovering: (id: string | number | null) => void;\n handleCellValueChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n cellRef: React.RefObject<HTMLDivElement>;\n handleUpdateCellData: (directValue?: string | boolean | null, meta?: { currency_code?: string | null; reference?: unknown | null;[key: string]: unknown | null } | null) => void;\n registerValidation?: (validateFn: () => ValidateAndSaveResult) => void;\n loadingExpand: boolean;\n toggleRowExpand: () => void;\n isDraggingOver?: boolean;\n isLoading?: boolean;\n is_incomplete?: boolean;\n pendingEdit?: IPendingEdit;\n hasPendingEdit?: boolean;\n pendingValidationError?: string | null;\n};\n\nlet interval: ReturnType<typeof setInterval> | undefined;\n\nconst formatDurationFallback = (duration: unknown): string => {\n const durationInMs = Number(duration);\n\n if (Number.isNaN(durationInMs) || duration === null || duration === undefined) {\n return '0ms';\n }\n\n if (durationInMs >= 86400000) {\n const days = Math.floor(durationInMs / 86400000);\n const hours = Math.floor((durationInMs % 86400000) / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${days}d ${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 3600000) {\n const hours = Math.floor(durationInMs / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 60000) {\n const minutes = Math.floor(durationInMs / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 1000) {\n return `${(durationInMs / 1000).toFixed(2)}s`;\n }\n\n return `${durationInMs}ms`;\n};\n\nconst CellWrapper = ({ children, withLink, linkTo, rowData, disableRowClick }: { children: React.ReactNode; withLink?: boolean; linkTo?: (id: string, _rowData?: Record<string, unknown>) => string; rowData?: Record<string, unknown>; disableRowClick?: boolean }) => {\n return withLink && !disableRowClick ? <Link to={linkTo?.(rowData?.id as string, rowData) || ''}>{children}</Link> : children;\n};\n\nconst DataCellInner: React.FC<CellProps> = ({\n cell, id, nextWidthSum, isLastCell, rowHovering, index, isFirstStickyCell, handleCellClick, currentData, highlightSubstring,\n is_read, is_modified, is_row_modified, is_deleted, is_added, level, inlineEditing, isInlineEditing, setRowHovering,\n handleCellValueChange, cellRef, handleUpdateCellData, registerValidation, loadingExpand, toggleRowExpand,\n isDraggingOver, isLoading, is_incomplete, pendingEdit, hasPendingEdit, pendingValidationError,\n}) => {\n const {\n cascadingTableConfig, originalsOnly, maxLevel, showNewItem, expandedRows, rowLinkConfig, multiSelectConfig,\n cellEditing, cellEditingValue, allowInlineEdit, fieldOperationLoading, pendingEdits: contextPendingEdits,\n selectedRowId,\n } = useContext(TableContext);\n\n const isSelectedRow =\n selectedRowId !== null && selectedRowId !== undefined && String(selectedRowId) === String(id);\n\n const tableConfig = useTableConfig();\n\n const rowCellMeta = cell?.column?.key ? (cell?.row?.original?.__cellMetadata as Record<string, Record<string, unknown>> | undefined)?.[cell.column.key] : undefined;\n const isLocked = rowCellMeta?.is_locked ?? cell?.column?.is_locked;\n const cellValidationError = (cell?.column?.key ? contextPendingEdits?.[id]?.[cell.column.key]?.validationError : null) || pendingValidationError || null;\n const isActuallyInlineEditing = inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled;\n const isFieldOperationLoading = fieldOperationLoading === `${id}-${cell?.column?.id}`;\n const { theme } = useTheme();\n const isDark = theme === 'dark';\n const onMouseEnter = useCallback(() => setRowHovering(id), [setRowHovering, id]);\n const onMouseLeave = useCallback(() => setRowHovering(null), [setRowHovering]);\n\n const getNodeExecutionDuration = tableConfig?.formatDuration;\n const [cellValue, setCellValue] = useState(\n cell?.column?.dataType === 'duration' && cell?.value\n ? getNodeExecutionDuration\n ? getNodeExecutionDuration(cell.value)\n : formatDurationFallback(cell.value)\n : cell.value,\n );\n const [tooltipText, setTooltipText] = useState<string | null>(null);\n const [isTruncated, setIsTruncated] = useState(false);\n const [urlTooltipOpen, setUrlTooltipOpen] = useState(false);\n const [truncateTooltipOpen, setTruncateTooltipOpen] = useState(false);\n const textRef = useRef<HTMLSpanElement>(null);\n const urlTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const truncateTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const { selectedColumnIds = [] } = multiSelectConfig || {};\n const shouldHighlight = !Object.prototype.hasOwnProperty.call(cell?.column?.meta ?? {}, 'shouldHighlight') || cell?.column?.meta?.shouldHighlight;\n\n const checkTruncation = useCallback(() => {\n if (textRef.current) {\n setIsTruncated(textRef.current.scrollWidth > textRef.current.clientWidth);\n }\n }, []);\n\n const handleUrlTooltipChange = useCallback((open: boolean) => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n\n if (open) {\n setUrlTooltipOpen(true);\n } else {\n urlTooltipTimer.current = setTimeout(() => setUrlTooltipOpen(false), 200);\n }\n }, []);\n\n const handleTruncateTooltipChange = useCallback((open: boolean) => {\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n\n if (open) {\n setTruncateTooltipOpen(true);\n } else {\n truncateTooltipTimer.current = setTimeout(() => setTruncateTooltipOpen(false), 200);\n }\n }, []);\n\n const bgColor = cn({\n 'bg-amber-100 dark:bg-amber-900/30': hasPendingEdit,\n 'bg-neutral-100 dark:bg-black-600': rowHovering === id && !isInlineEditing && !hasPendingEdit && !(is_deleted || currentData?.is_deleted) && !(is_added || currentData?.is_added),\n 'bg-error-200 dark:bg-error-900': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_deleted || currentData?.is_deleted),\n 'bg-success-100 dark:bg-success-800': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_added || currentData?.is_added),\n 'bg-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-warning-50 dark:bg-black-500': (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-error-100 dark:bg-error-975': (is_deleted || currentData?.is_deleted) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-success-50 dark:bg-success-900': (is_added || currentData?.is_added) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-900': (isDraggingOver || isInlineEditing) && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-800': selectedColumnIds?.includes(cell.column.id) && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-100 dark:bg-primary-950': isSelectedRow && rowHovering !== id && !isInlineEditing && !hasPendingEdit && !isLoading,\n [getTableRowBgClassNamesByStatus[cell?.row?.original?.__rowBgStatus as string]]: cell?.row?.original?.__rowBgStatus && !isInlineEditing && !hasPendingEdit,\n });\n\n const onClick = (e: React.MouseEvent) => { if (cell.column?.disableRowClick) return; handleCellClick(e); };\n\n useEffect(() => {\n const isRunning = cell?.row?.original?.status === 'running';\n if (isRunning && cell.column?.dataType === 'duration') {\n interval = setInterval(() => {\n const startedTime = new Date(formatDate((cell?.row?.original?.created_at || cell?.row?.original?.executed_on) as string | undefined, { withTime: true, format: 'yyyy-MM-dd HH:mm:ss' }) as unknown as Date);\n const timeDiff = Math.abs(new Date().getTime() - new Date(startedTime).getTime());\n setCellValue(getNodeExecutionDuration ? getNodeExecutionDuration(timeDiff) : formatDurationFallback(timeDiff));\n }, 500);\n }\n return () => { if (interval) clearInterval(interval); };\n }, [cellValue, cell.value, cell?.row?.original?.created_at, cell?.row?.original?.executed_on, cell?.row?.original?.status, cell.column?.dataType, getNodeExecutionDuration]);\n\n useEffect(() => {\n if (cell?.column?.tooltipCellKey || cell?.column?.type?.toLowerCase() === 'url') {\n if (cell?.column?.type?.toLowerCase() === 'url') setTooltipText(cell?.value as string | null);\n else setTooltipText(cell?.row?.original?.[String(cell?.column?.tooltipCellKey)] as string | null);\n }\n }, [cell?.column?.tooltipCellKey, cell?.row?.original, cell?.column?.type, cell?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'currency') {\n if (pendingEdit?.value !== undefined) {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n const currencyCode = pendingEdit?.meta?.currency_code || rawData?.[headerKey]?.currency_code || 'USD';\n setCellValue(formatCurrency(pendingEdit.value, currencyCode as string));\n } else {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n setCellValue(formatCurrency(cell?.value, (rawData?.[headerKey]?.currency_code as string) || 'USD'));\n }\n }\n }, [cell?.value, cell?.column?.type, cell?.column?.Header, cell?.row?.original?.__rawData, pendingEdit?.value, pendingEdit?.meta?.currency_code]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'percentage') {\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value?.toString() + '%' || '');\n else setCellValue(cell?.value?.toString() + '%' || '');\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['date', 'datetime'].includes(columnType)) {\n if (pendingEdit?.value !== undefined) {\n const hasTime = columnType === 'datetime';\n const formattedValue = formatDate(pendingEdit.value as string, { withTime: hasTime, skipTimezone: true });\n setCellValue(formattedValue || pendingEdit.value);\n } else setCellValue(cell.value);\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['currency', 'percentage', 'duration', 'boolean', 'date', 'datetime'].includes(columnType)) return;\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value);\n else if (cell?.column?.dataType !== 'duration') setCellValue(cell.value);\n }, [cell?.value, cell?.column?.type, cell?.column?.dataType, pendingEdit?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'boolean' && allowInlineEdit) {\n const rawValue = pendingEdit?.value !== undefined ? pendingEdit.value : cell?.value;\n const booleanValue = rawValue === true || rawValue === 'true' || rawValue === 'True' || rawValue === 'Yes' || rawValue === 1;\n setCellValue(booleanValue ? 'Yes' : 'No');\n }\n }, [cell?.value, cell?.column?.type, allowInlineEdit, pendingEdit?.value]);\n\n useEffect(() => {\n return () => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n };\n }, []);\n\n const isUiElementCell = React.isValidElement(cellValue);\n\n return (\n <td\n key={index} id={cell.value as string | undefined} data-column-key={cell?.column?.key} {...cell.getCellProps()}\n onClick={rowLinkConfig?.isEnabled ? undefined : onClick}\n className={cn('h-row', {\n 'sticky left-0': cell?.column?.sticky,\n relative: !cell?.column?.sticky,\n 'w-full': isLastCell,\n 'overflow-visible': inlineEditing === cell.column.key,\n /** Chips/badges: avoid vertical clip from overflow-x-hidden + truncate (see isUiElementCell branch below) */\n 'overflow-x-hidden overflow-y-visible': inlineEditing !== cell.column.key && isUiElementCell,\n 'overflow-hidden': inlineEditing !== cell.column.key && !isUiElementCell,\n },\n cellValidationError && !isActuallyInlineEditing ? 'outline outline-2 outline-error-500 -outline-offset-2 z-[5]' : '',\n `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`,\n )}\n style={{ minWidth: `${cell.column.width}px`, maxWidth: `${cell.column.width}px`, right: cell?.column?.sticky ? `${nextWidthSum}px` : CELL_DEFAULT_RIGHT_OFFSET, paddingLeft: level > 0 && index === 0 ? `${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined }}\n onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}\n >\n <CellWrapper withLink={rowLinkConfig?.isEnabled} linkTo={rowLinkConfig?.linkTo || undefined} rowData={cell?.row?.original} disableRowClick={cell?.column?.disableRowClick}>\n {(Array.isArray(cellEditing) ? cellEditing.includes(`${id}-${cell?.column?.id}`) : cellEditing === `${id}-${cell?.column?.id}`) ? (\n <div className='h-row top-0 font-medium font-inter w-full absolute flex items-center px-4'>\n <span className='text-neutral-400 dark:text-black-400 truncate'>\n {(() => {\n const currentCellId = `${id}-${cell?.column?.id}`;\n const editValue = typeof cellEditingValue === 'object' ? cellEditingValue?.[currentCellId] : cellEditingValue;\n const columnType = cell?.column?.type?.toLowerCase();\n\n if (columnType === 'boolean') {\n return (editValue as unknown) === true || editValue === 'true' || editValue === 'True' ? 'Yes' : 'No';\n }\n\n if ((columnType === 'date' || columnType === 'datetime') && editValue) {\n const hasTime = columnType === 'datetime';\n return formatDate(editValue as string, { withTime: hasTime, skipTimezone: true }) || String(editValue);\n }\n\n return editValue !== undefined && editValue !== null ? String(editValue) : (cellValue as React.ReactNode);\n })()}\n </span>\n <div className='ml-2 flex items-center gap-1.5'><LoadingSpinnerIcon className='spinner text-neutral-600 dark:text-white' size={12} /></div>\n </div>\n ) : inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled ? (\n <div className='h-row w-full absolute top-0 left-0 flex items-center' style={{ marginLeft: level > 0 && index === 0 ? `-${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined, width: level > 0 && index === 0 ? `calc(100% + ${level * CELL_INDENT_PER_LEVEL_PX}px)` : '100%' }}>\n <InlineEditField cell={cell} id={id} inlineEditing={inlineEditing} cellRef={cellRef} handleCellValueChange={handleCellValueChange} handleUpdateCellData={handleUpdateCellData} registerValidation={registerValidation} />\n </div>\n ) : (\n <>\n {level > 0 && index === 0 && <div className='h-row border-l border-neutral-300 dark:border-black-600 ml-2' />}\n <div className='min-h-6'>\n <Tooltip\n title={tooltipText && cell?.column?.type?.toLowerCase() !== 'url' ? tooltipText : undefined}\n hideTooltip={!tooltipText || cell?.column?.type?.toLowerCase() === 'url'}\n delayShow\n placement='top'\n >\n <div className={cn(`h-row top-0 font-medium font-inter overflow-index-auto whitespace-nowrap text-ellipsis dark:text-black-200 w-full absolute flex items-center ${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`, isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-x-hidden', { 'border border-b-0 border-t-0 border-primary-600 dark:border-blue-800': selectedColumnIds?.includes(cell.column.id) })}\n style={cell?.column?.sticky && isFirstStickyCell ? { boxShadow: isDark ? CELL_STICKY_SHADOW_DARK : CELL_STICKY_SHADOW_LIGHT } : {}}>\n {cascadingTableConfig?.isCascading && !originalsOnly && index === 0 && (\n <div className={cn('w-[22px] h-row flex items-center px-4', `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`)} id='cascading'>\n {maxLevel! > level && (cell?.row?.original?.__has_children || cascadingTableConfig?.showAllDropdown) && (\n <div>{loadingExpand ? <LoadingSpinnerIcon className='text-neutral-600 dark:text-white' size={8} /> : <div>{expandedRows?.[id]?.isOpen ? <KeyboardArrowDownIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} /> : <KeyboardArrowRightFilledIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} />}</div>}</div>\n )}\n </div>\n )}\n\n {cell?.column?.type?.toLowerCase() === 'url' && tooltipText ? (\n <Tooltip\n title={(\n <div onMouseEnter={() => handleUrlTooltipChange(true)} onMouseLeave={() => handleUrlTooltipChange(false)}>\n <a href={tooltipText} target='_blank' rel='noopener noreferrer' onClick={(e) => e.stopPropagation()}>\n <div className='flex gap-1 items-center w-full'>\n <div className='w-4 h-4'>\n <LinkIcon height={16} width={16} />\n </div>\n <Typography variant='medium' size='small' className='truncate' appearance='custom'>{tooltipText}</Typography>\n <OpenInNewRounded sx={{ height: '16px', width: '16px', color: '#016DCF' }} />\n </div>\n </a>\n </div>\n )}\n placement='top'\n open={urlTooltipOpen}\n onOpenChange={handleUrlTooltipChange}\n className='block w-full min-w-0 overflow-hidden'\n >\n <div className='w-full h-full flex items-center px-4 min-w-0 overflow-hidden text-primary-400'>\n <span ref={textRef} onMouseEnter={checkTruncation} className='truncate w-full'>\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n ) : (\n <Tooltip\n title={\n isTruncated && cellValue && !isUiElementCell ? (\n <div\n onMouseEnter={() => handleTruncateTooltipChange(true)}\n onMouseLeave={() => handleTruncateTooltipChange(false)}\n className='max-h-96 overflow-y-auto whitespace-pre-wrap break-words no-scroll'\n >\n {String(cellValue)}\n </div>\n ) : undefined\n }\n placement='top'\n delayShow\n hideTooltip={!!tooltipText}\n open={isTruncated && !tooltipText && !isUiElementCell ? truncateTooltipOpen : undefined}\n onOpenChange={isTruncated && !tooltipText && !isUiElementCell ? handleTruncateTooltipChange : undefined}\n className={cn('block w-full min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}\n >\n <div className={cn('w-full h-full flex items-center px-4 min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}>\n <span\n ref={isUiElementCell ? undefined : textRef}\n onMouseEnter={isUiElementCell ? undefined : checkTruncation}\n className={cn(isUiElementCell ? 'flex min-w-0 max-w-full items-center justify-start gap-1' : 'truncate w-full')}\n >\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : React.isValidElement(cellValue)\n ? (typeof (cellValue as React.ReactElement<Record<string, unknown>>).type === 'string'\n ? cellValue\n : React.cloneElement(cellValue as React.ReactElement<Record<string, unknown>>, {\n ...((cellValue as React.ReactElement<Record<string, unknown>>).props as Record<string, unknown>),\n containerWidth: cell.column.width,\n }))\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n )}\n </div>\n </Tooltip>\n </div>\n </>\n )}\n </CellWrapper>\n {cellValidationError && !isActuallyInlineEditing && (\n <div className='absolute bottom-0 left-0 right-0 h-row flex items-end pointer-events-none z-[5]'>\n <div className='w-full bg-error-50 dark:bg-error-975 px-1.5 py-0.5 truncate'><span className='text-error-600 text-2xs font-medium leading-none'>{cellValidationError}</span></div>\n </div>\n )}\n {isFieldOperationLoading && !(inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled) && (\n <div className='absolute top-0 right-0 bg-white dark:bg-black-800 rounded-full w-5 h-5 flex items-center justify-center border border-primary-300 dark:border-primary-600 shadow-sm z-10'>\n <LoadingSpinnerIcon className='text-primary-600 dark:text-white' size={8} />\n </div>\n )}\n </td>\n );\n};\n\nexport const DataCell = React.memo(DataCellInner);\n"],"names":["interval","formatDurationFallback","duration","durationInMs","days","hours","minutes","seconds","CellWrapper","children","withLink","linkTo","rowData","disableRowClick","jsx","Link","DataCellInner","cell","id","nextWidthSum","isLastCell","rowHovering","index","isFirstStickyCell","handleCellClick","currentData","highlightSubstring","is_read","is_modified","is_row_modified","is_deleted","is_added","level","inlineEditing","isInlineEditing","setRowHovering","handleCellValueChange","cellRef","handleUpdateCellData","registerValidation","loadingExpand","toggleRowExpand","isDraggingOver","isLoading","is_incomplete","pendingEdit","hasPendingEdit","pendingValidationError","cascadingTableConfig","originalsOnly","maxLevel","showNewItem","expandedRows","rowLinkConfig","multiSelectConfig","cellEditing","cellEditingValue","allowInlineEdit","fieldOperationLoading","contextPendingEdits","selectedRowId","useContext","TableContext","isSelectedRow","tableConfig","useTableConfig","isLocked","cellValidationError","isActuallyInlineEditing","isFieldOperationLoading","theme","useTheme","isDark","onMouseEnter","useCallback","onMouseLeave","getNodeExecutionDuration","cellValue","setCellValue","useState","tooltipText","setTooltipText","isTruncated","setIsTruncated","urlTooltipOpen","setUrlTooltipOpen","truncateTooltipOpen","setTruncateTooltipOpen","textRef","useRef","urlTooltipTimer","truncateTooltipTimer","selectedColumnIds","shouldHighlight","checkTruncation","handleUrlTooltipChange","open","handleTruncateTooltipChange","bgColor","cn","getTableRowBgClassNamesByStatus","onClick","e","useEffect","startedTime","formatDate","timeDiff","rawData","headerKey","currencyCode","formatCurrency","columnType","hasTime","formattedValue","rawValue","isUiElementCell","React","jsxs","CELL_DEFAULT_RIGHT_OFFSET","CELL_INDENT_PER_LEVEL_PX","currentCellId","editValue","LoadingSpinnerIcon","InlineEditField","Fragment","Tooltip","CELL_STICKY_SHADOW_DARK","CELL_STICKY_SHADOW_LIGHT","KeyboardArrowDownIcon","KeyboardArrowRightFilledIcon","LinkIcon","Typography","OpenInNewRounded","DataCell"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),o=require("../../../../../_virtual/index.cjs.js"),m=require("react"),h=require("../../constants.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),o=require("../../../../../_virtual/index.cjs.js"),m=require("react"),h=require("../../constants.cjs.js"),w=({cell:t,id:r,nextWidthSum:s,isLastCell:n,rowHovering:a,index:i,isFirstStickyCell:c})=>{const e=t?.column?.sticky,d=o("relative h-row",{"bg-neutral-100 dark:bg-black-600":a===r,"sticky left-0 bg-white dark:bg-black-600":e,"w-full":n}),b=o("h-row top-0 font-medium font-inter overflow-x-hidden overflow-y-auto whitespace-nowrap text-ellipsis px-4 w-full absolute flex items-center",{"bg-white dark:bg-black-800 border-b border-neutral-200 dark:border-black-700":e}),u=e&&c?{boxShadow:"-8px 0px 8px rgba(0, 0, 0, 0.02)"}:{},x={minWidth:`${t.column.width}px`,maxWidth:`${t.column.width}px`,right:e?`${s}px`:h.CELL_DEFAULT_RIGHT_OFFSET};return l.jsx("td",{className:d,role:"cell",style:x,children:l.jsx("div",{className:b,style:u,children:l.jsx("div",{className:"skeleton bg-neutral-200 dark:bg-black-600 animate-pulse h-4 min-w-[100px] w-full rounded"})})},i)},k=m.memo(w);exports.LoaderCell=k;
|
|
2
2
|
//# sourceMappingURL=LoaderCell.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoaderCell.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/LoaderCell.tsx"],"sourcesContent":["import cn from 'classnames';\nimport React from 'react';\n\nimport { CELL_DEFAULT_RIGHT_OFFSET } from '../../constants';\n\ntype TProps = {\n cell: {\n column: {\n width: number;\n sticky?: boolean;\n sequence?: number;\n };\n };\n id: string | number;\n nextWidthSum: number;\n isLastCell: boolean;\n rowHovering: string | number | null;\n index: number;\n isFirstStickyCell: boolean;\n};\n\nconst _LoaderCell: React.FC<TProps> = ({ cell, id, nextWidthSum, isLastCell, rowHovering, index, isFirstStickyCell }) => {\n const isSticky = cell?.column?.sticky;\n\n const cellClasses = cn('relative h-
|
|
1
|
+
{"version":3,"file":"LoaderCell.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/LoaderCell.tsx"],"sourcesContent":["import cn from 'classnames';\nimport React from 'react';\n\nimport { CELL_DEFAULT_RIGHT_OFFSET } from '../../constants';\n\ntype TProps = {\n cell: {\n column: {\n width: number;\n sticky?: boolean;\n sequence?: number;\n };\n };\n id: string | number;\n nextWidthSum: number;\n isLastCell: boolean;\n rowHovering: string | number | null;\n index: number;\n isFirstStickyCell: boolean;\n};\n\nconst _LoaderCell: React.FC<TProps> = ({ cell, id, nextWidthSum, isLastCell, rowHovering, index, isFirstStickyCell }) => {\n const isSticky = cell?.column?.sticky;\n\n const cellClasses = cn('relative h-row', {\n 'bg-neutral-100 dark:bg-black-600': rowHovering === id,\n 'sticky left-0 bg-white dark:bg-black-600': isSticky,\n 'w-full': isLastCell,\n });\n\n const contentClasses = cn(\n 'h-row top-0 font-medium font-inter overflow-x-hidden overflow-y-auto whitespace-nowrap text-ellipsis px-4 w-full absolute flex items-center',\n {\n 'bg-white dark:bg-black-800 border-b border-neutral-200 dark:border-black-700': isSticky,\n },\n );\n\n const boxShadowStyle =\n isSticky && isFirstStickyCell\n ? { boxShadow: '-8px 0px 8px rgba(0, 0, 0, 0.02)' }\n : {};\n\n const cellStyle = {\n minWidth: `${cell.column.width}px`,\n maxWidth: `${cell.column.width}px`,\n right: isSticky ? `${nextWidthSum}px` : CELL_DEFAULT_RIGHT_OFFSET,\n };\n\n return (\n <td key={index} className={cellClasses} role='cell' style={cellStyle}>\n <div className={contentClasses} style={boxShadowStyle}>\n <div className='skeleton bg-neutral-200 dark:bg-black-600 animate-pulse h-4 min-w-[100px] w-full rounded' />\n </div>\n </td>\n );\n};\n\nexport const LoaderCell = React.memo(_LoaderCell);\n"],"names":["_LoaderCell","cell","id","nextWidthSum","isLastCell","rowHovering","index","isFirstStickyCell","isSticky","cellClasses","cn","contentClasses","boxShadowStyle","cellStyle","CELL_DEFAULT_RIGHT_OFFSET","jsx","LoaderCell","React"],"mappings":"8NAqBMA,EAAgC,CAAC,CAAE,KAAAC,EAAM,GAAAC,EAAI,aAAAC,EAAc,WAAAC,EAAY,YAAAC,EAAA,MAAaC,EAAO,kBAAAC,KAAwB,CACvH,MAAMC,EAAWP,GAAM,QAAQ,OAEzBQ,EAAcC,EAAG,iBAAkB,CACvC,mCAAoCL,IAAgBH,EACpD,2CAA4CM,EAC5C,SAAUJ,CAAA,CACX,EAEKO,EAAiBD,EACrB,8IACA,CACE,+EAAgFF,CAAA,CAClF,EAGII,EACJJ,GAAYD,EACR,CAAE,UAAW,kCAAA,EACb,CAAA,EAEAM,EAAY,CAChB,SAAU,GAAGZ,EAAK,OAAO,KAAK,KAC9B,SAAU,GAAGA,EAAK,OAAO,KAAK,KAC9B,MAAOO,EAAW,GAAGL,CAAY,KAAOW,EAAAA,yBAAA,EAG1C,OACEC,MAAC,MAAe,UAAWN,EAAa,KAAK,OAAO,MAAOI,EACzD,SAAAE,EAAAA,IAAC,MAAA,CAAI,UAAWJ,EAAgB,MAAOC,EACrC,SAAAG,EAAAA,IAAC,MAAA,CAAI,UAAU,0FAAA,CAA2F,EAC5G,GAHOT,CAIT,CAEJ,EAEaU,EAAaC,EAAM,KAAKjB,CAAW"}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import { jsx as l } from "react/jsx-runtime";
|
|
2
2
|
import o from "../../../../../_virtual/index.es.js";
|
|
3
3
|
import h from "react";
|
|
4
|
-
import { CELL_DEFAULT_RIGHT_OFFSET as
|
|
5
|
-
const
|
|
6
|
-
const e = t?.column?.sticky, d = o("relative h-
|
|
4
|
+
import { CELL_DEFAULT_RIGHT_OFFSET as w } from "../../constants.es.js";
|
|
5
|
+
const x = ({ cell: t, id: r, nextWidthSum: a, isLastCell: s, rowHovering: i, index: n, isFirstStickyCell: c }) => {
|
|
6
|
+
const e = t?.column?.sticky, d = o("relative h-row", {
|
|
7
7
|
"bg-neutral-100 dark:bg-black-600": i === r,
|
|
8
8
|
"sticky left-0 bg-white dark:bg-black-600": e,
|
|
9
9
|
"w-full": s
|
|
10
10
|
}), m = o(
|
|
11
|
-
"h-
|
|
11
|
+
"h-row top-0 font-medium font-inter overflow-x-hidden overflow-y-auto whitespace-nowrap text-ellipsis px-4 w-full absolute flex items-center",
|
|
12
12
|
{
|
|
13
13
|
"bg-white dark:bg-black-800 border-b border-neutral-200 dark:border-black-700": e
|
|
14
14
|
}
|
|
15
15
|
), b = e && c ? { boxShadow: "-8px 0px 8px rgba(0, 0, 0, 0.02)" } : {}, p = {
|
|
16
16
|
minWidth: `${t.column.width}px`,
|
|
17
17
|
maxWidth: `${t.column.width}px`,
|
|
18
|
-
right: e ? `${a}px` :
|
|
18
|
+
right: e ? `${a}px` : w
|
|
19
19
|
};
|
|
20
20
|
return /* @__PURE__ */ l("td", { className: d, role: "cell", style: p, children: /* @__PURE__ */ l("div", { className: m, style: b, children: /* @__PURE__ */ l("div", { className: "skeleton bg-neutral-200 dark:bg-black-600 animate-pulse h-4 min-w-[100px] w-full rounded" }) }) }, n);
|
|
21
|
-
}, y = h.memo(
|
|
21
|
+
}, y = h.memo(x);
|
|
22
22
|
export {
|
|
23
23
|
y as LoaderCell
|
|
24
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoaderCell.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/LoaderCell.tsx"],"sourcesContent":["import cn from 'classnames';\nimport React from 'react';\n\nimport { CELL_DEFAULT_RIGHT_OFFSET } from '../../constants';\n\ntype TProps = {\n cell: {\n column: {\n width: number;\n sticky?: boolean;\n sequence?: number;\n };\n };\n id: string | number;\n nextWidthSum: number;\n isLastCell: boolean;\n rowHovering: string | number | null;\n index: number;\n isFirstStickyCell: boolean;\n};\n\nconst _LoaderCell: React.FC<TProps> = ({ cell, id, nextWidthSum, isLastCell, rowHovering, index, isFirstStickyCell }) => {\n const isSticky = cell?.column?.sticky;\n\n const cellClasses = cn('relative h-
|
|
1
|
+
{"version":3,"file":"LoaderCell.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/LoaderCell.tsx"],"sourcesContent":["import cn from 'classnames';\nimport React from 'react';\n\nimport { CELL_DEFAULT_RIGHT_OFFSET } from '../../constants';\n\ntype TProps = {\n cell: {\n column: {\n width: number;\n sticky?: boolean;\n sequence?: number;\n };\n };\n id: string | number;\n nextWidthSum: number;\n isLastCell: boolean;\n rowHovering: string | number | null;\n index: number;\n isFirstStickyCell: boolean;\n};\n\nconst _LoaderCell: React.FC<TProps> = ({ cell, id, nextWidthSum, isLastCell, rowHovering, index, isFirstStickyCell }) => {\n const isSticky = cell?.column?.sticky;\n\n const cellClasses = cn('relative h-row', {\n 'bg-neutral-100 dark:bg-black-600': rowHovering === id,\n 'sticky left-0 bg-white dark:bg-black-600': isSticky,\n 'w-full': isLastCell,\n });\n\n const contentClasses = cn(\n 'h-row top-0 font-medium font-inter overflow-x-hidden overflow-y-auto whitespace-nowrap text-ellipsis px-4 w-full absolute flex items-center',\n {\n 'bg-white dark:bg-black-800 border-b border-neutral-200 dark:border-black-700': isSticky,\n },\n );\n\n const boxShadowStyle =\n isSticky && isFirstStickyCell\n ? { boxShadow: '-8px 0px 8px rgba(0, 0, 0, 0.02)' }\n : {};\n\n const cellStyle = {\n minWidth: `${cell.column.width}px`,\n maxWidth: `${cell.column.width}px`,\n right: isSticky ? `${nextWidthSum}px` : CELL_DEFAULT_RIGHT_OFFSET,\n };\n\n return (\n <td key={index} className={cellClasses} role='cell' style={cellStyle}>\n <div className={contentClasses} style={boxShadowStyle}>\n <div className='skeleton bg-neutral-200 dark:bg-black-600 animate-pulse h-4 min-w-[100px] w-full rounded' />\n </div>\n </td>\n );\n};\n\nexport const LoaderCell = React.memo(_LoaderCell);\n"],"names":["_LoaderCell","cell","id","nextWidthSum","isLastCell","rowHovering","index","isFirstStickyCell","isSticky","cellClasses","cn","contentClasses","boxShadowStyle","cellStyle","CELL_DEFAULT_RIGHT_OFFSET","jsx","LoaderCell","React"],"mappings":";;;;AAqBA,MAAMA,IAAgC,CAAC,EAAE,MAAAC,GAAM,IAAAC,GAAI,cAAAC,GAAc,YAAAC,GAAY,aAAAC,GAAa,OAAAC,GAAO,mBAAAC,QAAwB;AACvH,QAAMC,IAAWP,GAAM,QAAQ,QAEzBQ,IAAcC,EAAG,kBAAkB;AAAA,IACvC,oCAAoCL,MAAgBH;AAAA,IACpD,4CAA4CM;AAAA,IAC5C,UAAUJ;AAAA,EAAA,CACX,GAEKO,IAAiBD;AAAA,IACrB;AAAA,IACA;AAAA,MACE,gFAAgFF;AAAA,IAAA;AAAA,EAClF,GAGII,IACJJ,KAAYD,IACR,EAAE,WAAW,mCAAA,IACb,CAAA,GAEAM,IAAY;AAAA,IAChB,UAAU,GAAGZ,EAAK,OAAO,KAAK;AAAA,IAC9B,UAAU,GAAGA,EAAK,OAAO,KAAK;AAAA,IAC9B,OAAOO,IAAW,GAAGL,CAAY,OAAOW;AAAA,EAAA;AAG1C,SACE,gBAAAC,EAAC,QAAe,WAAWN,GAAa,MAAK,QAAO,OAAOI,GACzD,UAAA,gBAAAE,EAAC,OAAA,EAAI,WAAWJ,GAAgB,OAAOC,GACrC,UAAA,gBAAAG,EAAC,OAAA,EAAI,WAAU,2FAAA,CAA2F,GAC5G,KAHOT,CAIT;AAEJ,GAEaU,IAAaC,EAAM,KAAKjB,CAAW;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),L=require("../../../../../utils/formatters.cjs.js"),$=require("@mui/icons-material"),B=require("../../../../../_virtual/index.cjs.js"),u=require("react"),D=require("react-dom"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),L=require("../../../../../utils/formatters.cjs.js"),$=require("@mui/icons-material"),B=require("../../../../../_virtual/index.cjs.js"),u=require("react"),D=require("react-dom"),T=(e,i)=>{if(typeof e=="boolean")return e?"Yes":"No";if(e==null||e==="")return"-";const s=String(e);if(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2})?)?/.test(s)){const n=s.includes("T"),r=L.formatDate(s,{withTime:n,skipTimezone:!0});if(r)return r.length>20?r.substring(0,20)+"...":r}const o=s.length>20?s.substring(0,20)+"...":s;return i?`${o} ${i}`:o},F=({rowId:e,rowIndex:i,pendingEdits:s,tableHeaders:d,rowHasPendingEdits:o,rowHovering:n,isInlineEditing:r,is_read:M,is_modified:R,is_row_modified:v,is_deleted:m,is_added:x,is_incomplete:p,showNewItem:P,onScrollToCell:S})=>{const[q,b]=u.useState(!1),[k,C]=u.useState({top:0,left:0}),l=u.useRef(null),g=u.useRef(null),f=s?.[e],h=u.useMemo(()=>f?Object.entries(f).map(([t,c])=>{const w=d?.find(O=>O.key===t),z=w?.Header||w?.display_name||t;return{columnKey:t,fieldName:z,value:c.value,originalValue:c.originalValue,meta:c.meta,originalMeta:c.originalMeta}}):[],[f,d]),V=t=>{b(!1),l.current&&(clearTimeout(l.current),l.current=null),S?.(e,t,i)},y=()=>{if(o){if(l.current&&(clearTimeout(l.current),l.current=null),g.current){const t=g.current.getBoundingClientRect();C({top:t.top+t.height/2,left:t.right+8})}b(!0)}},j=()=>{l.current=setTimeout(()=>{b(!1)},300)},N=B({"bg-primary-50 dark:bg-primary-900":r,"bg-neutral-100 dark:bg-black-600":n===e&&!r&&!m&&!x,"bg-error-200 dark:bg-error-900":n===e&&!r&&m,"bg-success-100 dark:bg-success-800":n===e&&!r&&x,"bg-primary-50 dark:bg-black-700":!p&&!M&&P&&n!==e&&!r,"bg-warning-50 dark:bg-black-500":(p||R||v)&&n!==e&&!r,"bg-error-100 dark:bg-error-975":m&&n!==e&&!r,"bg-success-50 dark:bg-success-900":x&&n!==e&&!r});return a.jsxs("td",{className:`min-w-[28px] w-[28px] sticky left-0 z-30 ${N||"bg-white dark:bg-black-800"} h-row`,children:[a.jsx("div",{ref:g,className:"w-full h-row flex items-center justify-center cursor-pointer",onMouseEnter:y,onMouseLeave:j,children:o&&a.jsx("div",{className:"w-5 h-5 rounded-full bg-warning-100 dark:bg-warning-900 flex items-center justify-center shadow-sm border border-warning-200 dark:border-warning-700",children:a.jsx($.EditNoteOutlined,{sx:{fontSize:14},className:"text-warning-600 dark:text-warning-400"})})}),q&&h.length>0&&D.createPortal(a.jsxs("div",{className:"fixed bg-white dark:bg-black-700 rounded-lg shadow-xl border border-neutral-200 dark:border-black-600 py-2 min-w-[200px] max-w-[280px]",style:{top:k.top,left:k.left,transform:"translateY(-50%)",zIndex:99999},onMouseEnter:y,onMouseLeave:j,children:[a.jsxs("div",{className:"px-3 py-1.5 text-xs font-semibold text-neutral-500 dark:text-neutral-400 uppercase tracking-wider border-b border-neutral-100 dark:border-black-600",children:["Pending Changes (",h.length,")"]}),a.jsx("div",{className:"max-h-48 overflow-y-auto",children:h.map((t,c)=>a.jsxs("button",{onClick:()=>V(t.columnKey),className:"w-full px-3 py-2 text-left hover:bg-neutral-50 dark:hover:bg-black-600 transition-colors cursor-pointer",children:[a.jsx("div",{className:"text-xs font-medium text-neutral-700 dark:text-neutral-300 mb-1",children:t.fieldName}),a.jsxs("div",{className:"flex items-center gap-1.5 text-xs",children:[a.jsx("span",{className:"text-neutral-400 dark:text-neutral-500 line-through truncate max-w-[80px]",children:T(t.originalValue,t.originalMeta?.currency_code)}),a.jsx("span",{className:"text-neutral-400 dark:text-neutral-500 flex-shrink-0",children:"→"}),a.jsx("span",{className:"text-primary-600 dark:text-primary-400 font-medium truncate max-w-[80px]",children:T(t.value,t.meta?.currency_code)})]})]},c))})]}),document.getElementById("full-screen-container")||document.body)]})};exports.PendingEditCell=F;
|
|
2
2
|
//# sourceMappingURL=PendingEditCell.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PendingEditCell.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/PendingEditCell.tsx"],"sourcesContent":["import { formatDate } from '../../../../../utils/formatters';\nimport { EditNoteOutlined } from '@mui/icons-material';\nimport cn from 'classnames';\nimport React, { useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\ntype TPendingEditCellProps = {\n rowId: string;\n rowIndex: number;\n pendingEdits:\n | Record<string, Record<string, { value: unknown; originalValue?: unknown; meta?: { currency_code?: string | null; [key: string]: unknown | null } | null; originalMeta?: { currency_code?: string | null; [key: string]: unknown | null } | null }>>\n | undefined;\n tableHeaders: Array<{ key?: string; Header?: string; display_name?: string }> | undefined;\n rowHasPendingEdits: boolean;\n rowHovering?: string;\n isInlineEditing?: boolean;\n is_read?: boolean;\n is_modified?: boolean;\n is_row_modified?: boolean;\n is_deleted?: boolean;\n is_added?: boolean;\n is_incomplete?: boolean;\n showNewItem?: boolean;\n onScrollToCell?: (targetRowId: string, columnKey: string, targetRowIndex: number) => void;\n};\n\nconst formatValue = (val: unknown, currencyCode?: string | null): string => {\n if (typeof val === 'boolean') return val ? 'Yes' : 'No';\n if (val === null || val === undefined || val === '') return '-';\n\n const strVal = String(val);\n const dateRegex = /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?)?/;\n if (dateRegex.test(strVal)) {\n const hasTime = strVal.includes('T');\n const formatted = formatDate(strVal, { withTime: hasTime, skipTimezone: true });\n if (formatted) {\n return formatted.length > 20 ? formatted.substring(0, 20) + '...' : formatted;\n }\n }\n\n const display = strVal.length > 20 ? strVal.substring(0, 20) + '...' : strVal;\n if (currencyCode) return `${display} ${currencyCode}`;\n return display;\n};\n\nexport const PendingEditCell: React.FC<TPendingEditCellProps> = ({\n rowId,\n rowIndex,\n pendingEdits,\n tableHeaders,\n rowHasPendingEdits,\n rowHovering,\n isInlineEditing,\n is_read,\n is_modified,\n is_row_modified,\n is_deleted,\n is_added,\n is_incomplete,\n showNewItem,\n onScrollToCell,\n}) => {\n const [showTooltip, setShowTooltip] = useState(false);\n const [tooltipPosition, setTooltipPosition] = useState({ top: 0, left: 0 });\n const hideTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const iconRef = useRef<HTMLDivElement>(null);\n\n const rowPendingEdits = pendingEdits?.[rowId];\n\n const editedFields = useMemo(\n () =>\n rowPendingEdits\n ? Object.entries(rowPendingEdits).map(([columnKey, edit]) => {\n const column = tableHeaders?.find((col) => col.key === columnKey);\n const fieldName = column?.Header || column?.display_name || columnKey;\n return { columnKey, fieldName, value: edit.value, originalValue: edit.originalValue, meta: edit.meta, originalMeta: edit.originalMeta };\n })\n : [],\n [rowPendingEdits, tableHeaders],\n );\n\n const handleFieldClick = (columnKey: string) => {\n setShowTooltip(false);\n if (hideTimeoutRef.current) { clearTimeout(hideTimeoutRef.current); hideTimeoutRef.current = null; }\n onScrollToCell?.(rowId, columnKey, rowIndex);\n };\n\n const handleMouseEnter = () => {\n if (!rowHasPendingEdits) return;\n if (hideTimeoutRef.current) { clearTimeout(hideTimeoutRef.current); hideTimeoutRef.current = null; }\n if (iconRef.current) {\n const rect = iconRef.current.getBoundingClientRect();\n setTooltipPosition({ top: rect.top + rect.height / 2, left: rect.right + 8 });\n }\n setShowTooltip(true);\n };\n\n const handleMouseLeave = () => {\n hideTimeoutRef.current = setTimeout(() => { setShowTooltip(false); }, 300);\n };\n\n const bgColor = cn({\n 'bg-primary-50 dark:bg-primary-900': isInlineEditing,\n 'bg-neutral-100 dark:bg-black-600': rowHovering === rowId && !isInlineEditing && !is_deleted && !is_added,\n 'bg-error-200 dark:bg-error-900': rowHovering === rowId && !isInlineEditing && is_deleted,\n 'bg-success-100 dark:bg-success-800': rowHovering === rowId && !isInlineEditing && is_added,\n 'bg-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && rowHovering !== rowId && !isInlineEditing,\n 'bg-warning-50 dark:bg-black-500': (is_incomplete || is_modified || is_row_modified) && rowHovering !== rowId && !isInlineEditing,\n 'bg-error-100 dark:bg-error-975': is_deleted && rowHovering !== rowId && !isInlineEditing,\n 'bg-success-50 dark:bg-success-900': is_added && rowHovering !== rowId && !isInlineEditing,\n });\n\n return (\n <td className={`min-w-[28px] w-[28px] sticky left-0 z-30 ${bgColor ? bgColor : 'bg-white dark:bg-black-800'} h-10`}>\n <div ref={iconRef} className='w-full h-10 flex items-center justify-center cursor-pointer' onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n {rowHasPendingEdits && (\n <div className='w-5 h-5 rounded-full bg-warning-100 dark:bg-warning-900 flex items-center justify-center shadow-sm border border-warning-200 dark:border-warning-700'>\n <EditNoteOutlined sx={{ fontSize: 14 }} className='text-warning-600 dark:text-warning-400' />\n </div>\n )}\n </div>\n {showTooltip && editedFields.length > 0 &&\n createPortal(\n <div\n className='fixed bg-white dark:bg-black-700 rounded-lg shadow-xl border border-neutral-200 dark:border-black-600 py-2 min-w-[200px] max-w-[280px]'\n style={{ top: tooltipPosition.top, left: tooltipPosition.left, transform: 'translateY(-50%)', zIndex: 99999 }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <div className='px-3 py-1.5 text-xs font-semibold text-neutral-500 dark:text-neutral-400 uppercase tracking-wider border-b border-neutral-100 dark:border-black-600'>\n Pending Changes ({editedFields.length})\n </div>\n <div className='max-h-48 overflow-y-auto'>\n {editedFields.map((field, idx) => (\n <button key={idx} onClick={() => handleFieldClick(field.columnKey)} className='w-full px-3 py-2 text-left hover:bg-neutral-50 dark:hover:bg-black-600 transition-colors cursor-pointer'>\n <div className='text-xs font-medium text-neutral-700 dark:text-neutral-300 mb-1'>{field.fieldName}</div>\n <div className='flex items-center gap-1.5 text-xs'>\n <span className='text-neutral-400 dark:text-neutral-500 line-through truncate max-w-[80px]'>{formatValue(field.originalValue, field.originalMeta?.currency_code)}</span>\n <span className='text-neutral-400 dark:text-neutral-500 flex-shrink-0'>→</span>\n <span className='text-primary-600 dark:text-primary-400 font-medium truncate max-w-[80px]'>{formatValue(field.value, field.meta?.currency_code)}</span>\n </div>\n </button>\n ))}\n </div>\n </div>,\n document.getElementById('full-screen-container') || document.body,\n )}\n </td>\n );\n};\n"],"names":["formatValue","val","currencyCode","strVal","hasTime","formatted","formatDate","display","PendingEditCell","rowId","rowIndex","pendingEdits","tableHeaders","rowHasPendingEdits","rowHovering","isInlineEditing","is_read","is_modified","is_row_modified","is_deleted","is_added","is_incomplete","showNewItem","onScrollToCell","showTooltip","setShowTooltip","useState","tooltipPosition","setTooltipPosition","hideTimeoutRef","useRef","iconRef","rowPendingEdits","editedFields","useMemo","columnKey","edit","column","col","fieldName","handleFieldClick","handleMouseEnter","rect","handleMouseLeave","bgColor","cn","jsx","EditNoteOutlined","createPortal","jsxs","field","idx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PendingEditCell.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/PendingEditCell.tsx"],"sourcesContent":["import { formatDate } from '../../../../../utils/formatters';\nimport { EditNoteOutlined } from '@mui/icons-material';\nimport cn from 'classnames';\nimport React, { useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\ntype TPendingEditCellProps = {\n rowId: string;\n rowIndex: number;\n pendingEdits:\n | Record<string, Record<string, { value: unknown; originalValue?: unknown; meta?: { currency_code?: string | null; [key: string]: unknown | null } | null; originalMeta?: { currency_code?: string | null; [key: string]: unknown | null } | null }>>\n | undefined;\n tableHeaders: Array<{ key?: string; Header?: string; display_name?: string }> | undefined;\n rowHasPendingEdits: boolean;\n rowHovering?: string;\n isInlineEditing?: boolean;\n is_read?: boolean;\n is_modified?: boolean;\n is_row_modified?: boolean;\n is_deleted?: boolean;\n is_added?: boolean;\n is_incomplete?: boolean;\n showNewItem?: boolean;\n onScrollToCell?: (targetRowId: string, columnKey: string, targetRowIndex: number) => void;\n};\n\nconst formatValue = (val: unknown, currencyCode?: string | null): string => {\n if (typeof val === 'boolean') return val ? 'Yes' : 'No';\n if (val === null || val === undefined || val === '') return '-';\n\n const strVal = String(val);\n const dateRegex = /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?)?/;\n if (dateRegex.test(strVal)) {\n const hasTime = strVal.includes('T');\n const formatted = formatDate(strVal, { withTime: hasTime, skipTimezone: true });\n if (formatted) {\n return formatted.length > 20 ? formatted.substring(0, 20) + '...' : formatted;\n }\n }\n\n const display = strVal.length > 20 ? strVal.substring(0, 20) + '...' : strVal;\n if (currencyCode) return `${display} ${currencyCode}`;\n return display;\n};\n\nexport const PendingEditCell: React.FC<TPendingEditCellProps> = ({\n rowId,\n rowIndex,\n pendingEdits,\n tableHeaders,\n rowHasPendingEdits,\n rowHovering,\n isInlineEditing,\n is_read,\n is_modified,\n is_row_modified,\n is_deleted,\n is_added,\n is_incomplete,\n showNewItem,\n onScrollToCell,\n}) => {\n const [showTooltip, setShowTooltip] = useState(false);\n const [tooltipPosition, setTooltipPosition] = useState({ top: 0, left: 0 });\n const hideTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const iconRef = useRef<HTMLDivElement>(null);\n\n const rowPendingEdits = pendingEdits?.[rowId];\n\n const editedFields = useMemo(\n () =>\n rowPendingEdits\n ? Object.entries(rowPendingEdits).map(([columnKey, edit]) => {\n const column = tableHeaders?.find((col) => col.key === columnKey);\n const fieldName = column?.Header || column?.display_name || columnKey;\n return { columnKey, fieldName, value: edit.value, originalValue: edit.originalValue, meta: edit.meta, originalMeta: edit.originalMeta };\n })\n : [],\n [rowPendingEdits, tableHeaders],\n );\n\n const handleFieldClick = (columnKey: string) => {\n setShowTooltip(false);\n if (hideTimeoutRef.current) { clearTimeout(hideTimeoutRef.current); hideTimeoutRef.current = null; }\n onScrollToCell?.(rowId, columnKey, rowIndex);\n };\n\n const handleMouseEnter = () => {\n if (!rowHasPendingEdits) return;\n if (hideTimeoutRef.current) { clearTimeout(hideTimeoutRef.current); hideTimeoutRef.current = null; }\n if (iconRef.current) {\n const rect = iconRef.current.getBoundingClientRect();\n setTooltipPosition({ top: rect.top + rect.height / 2, left: rect.right + 8 });\n }\n setShowTooltip(true);\n };\n\n const handleMouseLeave = () => {\n hideTimeoutRef.current = setTimeout(() => { setShowTooltip(false); }, 300);\n };\n\n const bgColor = cn({\n 'bg-primary-50 dark:bg-primary-900': isInlineEditing,\n 'bg-neutral-100 dark:bg-black-600': rowHovering === rowId && !isInlineEditing && !is_deleted && !is_added,\n 'bg-error-200 dark:bg-error-900': rowHovering === rowId && !isInlineEditing && is_deleted,\n 'bg-success-100 dark:bg-success-800': rowHovering === rowId && !isInlineEditing && is_added,\n 'bg-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && rowHovering !== rowId && !isInlineEditing,\n 'bg-warning-50 dark:bg-black-500': (is_incomplete || is_modified || is_row_modified) && rowHovering !== rowId && !isInlineEditing,\n 'bg-error-100 dark:bg-error-975': is_deleted && rowHovering !== rowId && !isInlineEditing,\n 'bg-success-50 dark:bg-success-900': is_added && rowHovering !== rowId && !isInlineEditing,\n });\n\n return (\n <td className={`min-w-[28px] w-[28px] sticky left-0 z-30 ${bgColor ? bgColor : 'bg-white dark:bg-black-800'} h-row`}>\n <div ref={iconRef} className='w-full h-row flex items-center justify-center cursor-pointer' onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n {rowHasPendingEdits && (\n <div className='w-5 h-5 rounded-full bg-warning-100 dark:bg-warning-900 flex items-center justify-center shadow-sm border border-warning-200 dark:border-warning-700'>\n <EditNoteOutlined sx={{ fontSize: 14 }} className='text-warning-600 dark:text-warning-400' />\n </div>\n )}\n </div>\n {showTooltip && editedFields.length > 0 &&\n createPortal(\n <div\n className='fixed bg-white dark:bg-black-700 rounded-lg shadow-xl border border-neutral-200 dark:border-black-600 py-2 min-w-[200px] max-w-[280px]'\n style={{ top: tooltipPosition.top, left: tooltipPosition.left, transform: 'translateY(-50%)', zIndex: 99999 }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <div className='px-3 py-1.5 text-xs font-semibold text-neutral-500 dark:text-neutral-400 uppercase tracking-wider border-b border-neutral-100 dark:border-black-600'>\n Pending Changes ({editedFields.length})\n </div>\n <div className='max-h-48 overflow-y-auto'>\n {editedFields.map((field, idx) => (\n <button key={idx} onClick={() => handleFieldClick(field.columnKey)} className='w-full px-3 py-2 text-left hover:bg-neutral-50 dark:hover:bg-black-600 transition-colors cursor-pointer'>\n <div className='text-xs font-medium text-neutral-700 dark:text-neutral-300 mb-1'>{field.fieldName}</div>\n <div className='flex items-center gap-1.5 text-xs'>\n <span className='text-neutral-400 dark:text-neutral-500 line-through truncate max-w-[80px]'>{formatValue(field.originalValue, field.originalMeta?.currency_code)}</span>\n <span className='text-neutral-400 dark:text-neutral-500 flex-shrink-0'>→</span>\n <span className='text-primary-600 dark:text-primary-400 font-medium truncate max-w-[80px]'>{formatValue(field.value, field.meta?.currency_code)}</span>\n </div>\n </button>\n ))}\n </div>\n </div>,\n document.getElementById('full-screen-container') || document.body,\n )}\n </td>\n );\n};\n"],"names":["formatValue","val","currencyCode","strVal","hasTime","formatted","formatDate","display","PendingEditCell","rowId","rowIndex","pendingEdits","tableHeaders","rowHasPendingEdits","rowHovering","isInlineEditing","is_read","is_modified","is_row_modified","is_deleted","is_added","is_incomplete","showNewItem","onScrollToCell","showTooltip","setShowTooltip","useState","tooltipPosition","setTooltipPosition","hideTimeoutRef","useRef","iconRef","rowPendingEdits","editedFields","useMemo","columnKey","edit","column","col","fieldName","handleFieldClick","handleMouseEnter","rect","handleMouseLeave","bgColor","cn","jsx","EditNoteOutlined","createPortal","jsxs","field","idx"],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ const R = (e, i) => {
|
|
|
34
34
|
}) => {
|
|
35
35
|
const [S, f] = M(!1), [k, L] = M({ top: 0, left: 0 }), l = v(null), g = v(null), p = n?.[e], x = q(
|
|
36
36
|
() => p ? Object.entries(p).map(([t, s]) => {
|
|
37
|
-
const
|
|
37
|
+
const T = m?.find((F) => F.key === t), B = T?.Header || T?.display_name || t;
|
|
38
38
|
return { columnKey: t, fieldName: B, value: s.value, originalValue: s.originalValue, meta: s.meta, originalMeta: s.originalMeta };
|
|
39
39
|
}) : [],
|
|
40
40
|
[p, m]
|
|
@@ -52,7 +52,7 @@ const R = (e, i) => {
|
|
|
52
52
|
l.current = setTimeout(() => {
|
|
53
53
|
f(!1);
|
|
54
54
|
}, 300);
|
|
55
|
-
},
|
|
55
|
+
}, w = D({
|
|
56
56
|
"bg-primary-50 dark:bg-primary-900": r,
|
|
57
57
|
"bg-neutral-100 dark:bg-black-600": a === e && !r && !d && !b,
|
|
58
58
|
"bg-error-200 dark:bg-error-900": a === e && !r && d,
|
|
@@ -62,8 +62,8 @@ const R = (e, i) => {
|
|
|
62
62
|
"bg-error-100 dark:bg-error-975": d && a !== e && !r,
|
|
63
63
|
"bg-success-50 dark:bg-success-900": b && a !== e && !r
|
|
64
64
|
});
|
|
65
|
-
return /* @__PURE__ */ u("td", { className: `min-w-[28px] w-[28px] sticky left-0 z-30 ${
|
|
66
|
-
/* @__PURE__ */ o("div", { ref: g, className: "w-full h-
|
|
65
|
+
return /* @__PURE__ */ u("td", { className: `min-w-[28px] w-[28px] sticky left-0 z-30 ${w || "bg-white dark:bg-black-800"} h-row`, children: [
|
|
66
|
+
/* @__PURE__ */ o("div", { ref: g, className: "w-full h-row flex items-center justify-center cursor-pointer", onMouseEnter: y, onMouseLeave: N, children: c && /* @__PURE__ */ o("div", { className: "w-5 h-5 rounded-full bg-warning-100 dark:bg-warning-900 flex items-center justify-center shadow-sm border border-warning-200 dark:border-warning-700", children: /* @__PURE__ */ o(Y, { sx: { fontSize: 14 }, className: "text-warning-600 dark:text-warning-400" }) }) }),
|
|
67
67
|
S && x.length > 0 && A(
|
|
68
68
|
/* @__PURE__ */ u(
|
|
69
69
|
"div",
|