@lax-wp/design-system 0.13.33-beta.6 → 0.13.33-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/components/data-display/infinite-table/PendingEditsFloatingBar.cjs.js +1 -1
  2. package/dist/components/data-display/infinite-table/PendingEditsFloatingBar.cjs.js.map +1 -1
  3. package/dist/components/data-display/infinite-table/PendingEditsFloatingBar.es.js +57 -56
  4. package/dist/components/data-display/infinite-table/PendingEditsFloatingBar.es.js.map +1 -1
  5. package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.cjs.js +1 -1
  6. package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.cjs.js.map +1 -1
  7. package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.es.js +43 -42
  8. package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.es.js.map +1 -1
  9. package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js +1 -1
  10. package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js.map +1 -1
  11. package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js +141 -138
  12. package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js.map +1 -1
  13. package/dist/components/data-display/infinite-table/body/cell/LoaderCell.cjs.js +1 -1
  14. package/dist/components/data-display/infinite-table/body/cell/LoaderCell.cjs.js.map +1 -1
  15. package/dist/components/data-display/infinite-table/body/cell/LoaderCell.es.js +10 -9
  16. package/dist/components/data-display/infinite-table/body/cell/LoaderCell.es.js.map +1 -1
  17. package/dist/components/data-display/infinite-table/body/cell/PendingEditCell.cjs.js +1 -1
  18. package/dist/components/data-display/infinite-table/body/cell/PendingEditCell.cjs.js.map +1 -1
  19. package/dist/components/data-display/infinite-table/body/cell/PendingEditCell.es.js +7 -7
  20. package/dist/components/data-display/infinite-table/body/cell/PendingEditCell.es.js.map +1 -1
  21. package/dist/components/data-display/infinite-table/body/cell/RowActionCell.cjs.js +1 -1
  22. package/dist/components/data-display/infinite-table/body/cell/RowActionCell.cjs.js.map +1 -1
  23. package/dist/components/data-display/infinite-table/body/cell/RowActionCell.es.js +1 -1
  24. package/dist/components/data-display/infinite-table/body/cell/RowActionCell.es.js.map +1 -1
  25. package/dist/components/data-display/infinite-table/body/cell/RowOptionsCell.cjs.js +1 -1
  26. package/dist/components/data-display/infinite-table/body/cell/RowOptionsCell.cjs.js.map +1 -1
  27. package/dist/components/data-display/infinite-table/body/cell/RowOptionsCell.es.js +1 -1
  28. package/dist/components/data-display/infinite-table/body/cell/RowOptionsCell.es.js.map +1 -1
  29. package/dist/components/data-display/infinite-table/body/rows/row.cjs.js +1 -1
  30. package/dist/components/data-display/infinite-table/body/rows/row.cjs.js.map +1 -1
  31. package/dist/components/data-display/infinite-table/body/rows/row.es.js +286 -281
  32. package/dist/components/data-display/infinite-table/body/rows/row.es.js.map +1 -1
  33. package/dist/components/data-display/infinite-table/constants.cjs.js +2 -0
  34. package/dist/components/data-display/infinite-table/constants.cjs.js.map +1 -0
  35. package/dist/components/data-display/infinite-table/constants.d.ts +41 -0
  36. package/dist/components/data-display/infinite-table/constants.es.js +27 -0
  37. package/dist/components/data-display/infinite-table/constants.es.js.map +1 -0
  38. package/dist/components/data-display/infinite-table/context.cjs.js.map +1 -1
  39. package/dist/components/data-display/infinite-table/context.d.ts +1 -0
  40. package/dist/components/data-display/infinite-table/context.es.js.map +1 -1
  41. package/dist/components/data-display/infinite-table/head/cell/index.cjs.js +1 -1
  42. package/dist/components/data-display/infinite-table/head/cell/index.cjs.js.map +1 -1
  43. package/dist/components/data-display/infinite-table/head/cell/index.es.js +36 -35
  44. package/dist/components/data-display/infinite-table/head/cell/index.es.js.map +1 -1
  45. package/dist/components/data-display/infinite-table/index.cjs.js +1 -1
  46. package/dist/components/data-display/infinite-table/index.cjs.js.map +1 -1
  47. package/dist/components/data-display/infinite-table/index.d.ts +1 -1
  48. package/dist/components/data-display/infinite-table/index.es.js +410 -406
  49. package/dist/components/data-display/infinite-table/index.es.js.map +1 -1
  50. package/dist/components/data-display/infinite-table/types.d.ts +22 -0
  51. package/dist/index.d.ts +1 -1
  52. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PendingEditsFloatingBar.es.js","sources":["../../../../src/components/data-display/infinite-table/PendingEditsFloatingBar.tsx"],"sourcesContent":["import { formatDate } from '../../../utils/formatters';\nimport { CloseRounded, DragIndicator, KeyboardArrowDownRounded, RemoveOutlined, SearchRounded } from '@mui/icons-material';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\ninterface PendingEdit {\n rowId: string;\n columnKey: string;\n fieldName: string;\n value: unknown;\n originalValue: unknown;\n meta?: { currency_code?: string | null; [key: string]: unknown | null } | null;\n originalMeta?: { currency_code?: string | null; [key: string]: unknown | null } | null;\n rowIndex: number;\n}\n\ninterface RowWithPendingEdits {\n rowId: string;\n rowIndex: number;\n editCount: number;\n}\n\ninterface PendingEditsFloatingBarProps {\n pendingEditsCount: number;\n pendingEditsList: PendingEdit[];\n rowsWithPendingEdits: RowWithPendingEdits[];\n fieldOperationLoading: string | null;\n onClearAll: () => void;\n onSaveAll: () => void;\n onScrollToCell: (rowId: string, columnKey: string, rowIndex: number) => void;\n}\n\nconst rowFilterDropdownVariants = {\n hidden: { opacity: 0, y: -8, scale: 0.95 },\n visible: { opacity: 1, y: 0, scale: 1, transition: { type: 'spring' as const, stiffness: 400, damping: 25 } },\n exit: { opacity: 0, y: -8, scale: 0.95, transition: { duration: 0.1 } },\n};\n\nconst listContainerVariants = {\n hidden: { opacity: 0 },\n visible: { opacity: 1, transition: { staggerChildren: 0.03, delayChildren: 0.05 } },\n};\n\nconst listItemVariants = {\n hidden: { opacity: 0, y: -8 },\n visible: { opacity: 1, y: 0, transition: { type: 'spring' as const, stiffness: 400, damping: 25 } },\n};\n\nexport const PendingEditsFloatingBar: React.FC<PendingEditsFloatingBarProps> = ({\n pendingEditsCount, pendingEditsList, rowsWithPendingEdits, fieldOperationLoading, onClearAll, onSaveAll, onScrollToCell,\n}) => {\n const [showDropdown, setShowDropdown] = useState(false);\n const [isMinimized, setIsMinimized] = useState(false);\n const [rowFilter, setRowFilter] = useState<string | null>(null);\n const [position, setPosition] = useState<{ x: number; y: number } | null>(null);\n const [isDragging, setIsDragging] = useState(false);\n const [rowFilterSearch, setRowFilterSearch] = useState('');\n const [showRowFilterDropdown, setShowRowFilterDropdown] = useState(false);\n const [rowFilterButtonRect, setRowFilterButtonRect] = useState<DOMRect | null>(null);\n\n const dropdownTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const dragStartRef = useRef<{ x: number; y: number; barX: number; barY: number; barWidth: number; barHeight: number } | null>(null);\n const floatingBarRef = useRef<HTMLDivElement>(null);\n const rowFilterRef = useRef<HTMLDivElement>(null);\n const rowFilterButtonRef = useRef<HTMLButtonElement>(null);\n const rowFilterDropdownRef = useRef<HTMLDivElement>(null);\n\n const filteredPendingEditsList = useMemo(() => {\n if (!rowFilter) return pendingEditsList;\n return pendingEditsList.filter((edit) => edit.rowId === rowFilter);\n }, [pendingEditsList, rowFilter]);\n\n const filteredRowOptions = useMemo(() => {\n if (!rowFilterSearch) return rowsWithPendingEdits;\n const searchLower = rowFilterSearch.toLowerCase();\n return rowsWithPendingEdits.filter((row) => `row ${row.rowIndex + 1}`.toLowerCase().includes(searchLower));\n }, [rowsWithPendingEdits, rowFilterSearch]);\n\n const selectedRowLabel = useMemo(() => {\n if (!rowFilter) return `All Rows (${pendingEditsList.length})`;\n const row = rowsWithPendingEdits.find((r) => r.rowId === rowFilter);\n if (!row) return `All Rows (${pendingEditsList.length})`;\n return `Row ${row.rowIndex + 1} (${row.editCount})`;\n }, [rowFilter, rowsWithPendingEdits, pendingEditsList.length]);\n\n useEffect(() => {\n if (rowFilter && !rowsWithPendingEdits.find((row) => row.rowId === rowFilter)) setRowFilter(null);\n }, [rowsWithPendingEdits, rowFilter]);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n if (!rowFilterRef.current?.contains(target) && !rowFilterDropdownRef.current?.contains(target)) {\n setShowRowFilterDropdown(false);\n setRowFilterSearch('');\n }\n };\n if (showRowFilterDropdown) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [showRowFilterDropdown]);\n\n const handleMouseEnter = useCallback(() => {\n if (dropdownTimeoutRef.current) { clearTimeout(dropdownTimeoutRef.current); dropdownTimeoutRef.current = null; }\n setShowDropdown(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n dropdownTimeoutRef.current = setTimeout(() => setShowDropdown(false), 300);\n }, []);\n\n const clampPositionToViewport = useCallback((nextX: number, nextY: number, barWidth: number, barHeight: number) => {\n const maxX = Math.max(0, window.innerWidth - barWidth);\n const maxY = Math.max(0, window.innerHeight - barHeight);\n\n return {\n x: Math.min(Math.max(nextX, 0), maxX),\n y: Math.min(Math.max(nextY, 0), maxY),\n };\n }, []);\n\n const handleMouseDown = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n const barElement = e.currentTarget.closest('.pending-edits-floating-bar') as HTMLElement;\n if (!barElement) return;\n const rect = barElement.getBoundingClientRect();\n dragStartRef.current = {\n x: e.clientX,\n y: e.clientY,\n barX: position?.x ?? rect.left,\n barY: position?.y ?? rect.top,\n barWidth: rect.width,\n barHeight: rect.height,\n };\n setIsDragging(true);\n }, [position]);\n\n useEffect(() => {\n if (!isDragging) return;\n const handleMouseMove = (e: MouseEvent) => {\n if (!dragStartRef.current) return;\n const nextX = dragStartRef.current.barX + e.clientX - dragStartRef.current.x;\n const nextY = dragStartRef.current.barY + e.clientY - dragStartRef.current.y;\n setPosition(clampPositionToViewport(nextX, nextY, dragStartRef.current.barWidth, dragStartRef.current.barHeight));\n };\n const handleMouseUp = () => { setIsDragging(false); dragStartRef.current = null; };\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n return () => { document.removeEventListener('mousemove', handleMouseMove); document.removeEventListener('mouseup', handleMouseUp); };\n }, [isDragging, clampPositionToViewport]);\n\n useEffect(() => {\n if (!position || !floatingBarRef.current) return;\n\n const keepBarInViewport = () => {\n if (!floatingBarRef.current) return;\n const rect = floatingBarRef.current.getBoundingClientRect();\n const clampedPosition = clampPositionToViewport(position.x, position.y, rect.width, rect.height);\n if (clampedPosition.x !== position.x || clampedPosition.y !== position.y) {\n setPosition(clampedPosition);\n }\n };\n\n keepBarInViewport();\n window.addEventListener('resize', keepBarInViewport);\n return () => window.removeEventListener('resize', keepBarInViewport);\n }, [position, clampPositionToViewport]);\n\n const 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 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 return formatDate(strVal, { withTime: hasTime, skipTimezone: true }) || strVal;\n }\n if (currencyCode) return `${strVal} ${currencyCode}`;\n return strVal;\n };\n\n const handleCellClick = (edit: PendingEdit) => { setShowDropdown(false); onScrollToCell(edit.rowId, edit.columnKey, edit.rowIndex); };\n const handleRowFilterSelect = (rowId: string | null) => { setRowFilter(rowId); setShowRowFilterDropdown(false); setRowFilterSearch(''); };\n\n if (pendingEditsCount === 0) return null;\n\n const floatingBar = (\n <motion.div\n ref={floatingBarRef}\n className='pending-edits-floating-bar fixed z-[9999]'\n style={{\n zIndex: 2147483646,\n ...(position ? { left: position.x, top: position.y } : { bottom: 24, left: '50%', transform: 'translateX(-50%)' }),\n }}\n initial={{ opacity: 0, scale: 0.9 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ type: 'spring', stiffness: 300, damping: 25 }}\n >\n <AnimatePresence>\n {showDropdown && !isMinimized && (\n <motion.div\n className='absolute w-80'\n style={{ bottom: '100%', left: '50%', marginLeft: '-160px', marginBottom: '4px' }}\n initial={{ opacity: 0, y: 10, scale: 0.95 }}\n animate={{ opacity: 1, y: 0, scale: 1 }}\n exit={{ opacity: 0, y: 10, scale: 0.95 }}\n transition={{ type: 'spring', stiffness: 300, damping: 24 }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <div className='bg-white dark:bg-black-700 rounded-lg shadow-xl border border-neutral-200 dark:border-black-600 py-2 overflow-hidden'>\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'>Pending Changes</div>\n {rowsWithPendingEdits.length > 1 && (\n <div className='px-3 py-2 border-b border-neutral-100 dark:border-black-600' ref={rowFilterRef}>\n <div className='relative'>\n <button\n ref={rowFilterButtonRef}\n onClick={() => { if (rowFilterButtonRef.current) setRowFilterButtonRect(rowFilterButtonRef.current.getBoundingClientRect()); setShowRowFilterDropdown(!showRowFilterDropdown); }}\n className='w-full text-xs px-2 py-1.5 rounded border border-neutral-200 dark:border-black-500 bg-neutral-50 dark:bg-black-600 text-neutral-700 dark:text-neutral-200 focus:outline-none focus:ring-1 focus:ring-primary-500 flex items-center justify-between gap-2'\n >\n <span className='truncate'>{selectedRowLabel}</span>\n <motion.div animate={{ rotate: showRowFilterDropdown ? 180 : 0 }} transition={{ duration: 0.2 }}>\n <KeyboardArrowDownRounded sx={{ fontSize: 16 }} className='text-neutral-400' />\n </motion.div>\n </button>\n {showRowFilterDropdown && rowFilterButtonRect && createPortal(\n <AnimatePresence>\n <motion.div\n ref={rowFilterDropdownRef}\n className='fixed bg-white dark:bg-black-700 rounded-lg shadow-xl border border-neutral-200 dark:border-black-600 overflow-hidden'\n style={{ zIndex: 2147483647, top: rowFilterButtonRect.bottom + 4, left: rowFilterButtonRect.left, width: rowFilterButtonRect.width }}\n variants={rowFilterDropdownVariants}\n initial='hidden' animate='visible' exit='exit'\n >\n <div className='p-2 border-b border-neutral-100 dark:border-black-600'>\n <div className='relative flex items-center'>\n <SearchRounded sx={{ fontSize: 14 }} className='absolute left-2 text-neutral-400 dark:text-neutral-500 z-10 pointer-events-none' />\n <input type='text' value={rowFilterSearch} onChange={(e) => setRowFilterSearch(e.target.value)} placeholder='Search rows...' className='w-full text-xs pl-7 pr-7 py-1.5 rounded border border-neutral-200 dark:border-black-500 bg-white dark:bg-black-600 text-neutral-700 dark:text-neutral-200 focus:outline-none focus:ring-1 focus:ring-primary-500 placeholder:text-neutral-400' autoFocus />\n {rowFilterSearch && <button onClick={() => setRowFilterSearch('')} className='absolute right-2 z-10 text-neutral-400 hover:text-neutral-600 dark:hover:text-neutral-300'><CloseRounded sx={{ fontSize: 14 }} /></button>}\n </div>\n </div>\n <motion.div className='max-h-40 overflow-y-auto' variants={listContainerVariants} initial='hidden' animate='visible'>\n {(!rowFilterSearch || 'all rows'.includes(rowFilterSearch.toLowerCase())) && (\n <motion.button variants={listItemVariants} onClick={() => handleRowFilterSelect(null)} className={`w-full text-left px-3 py-2 text-xs transition-colors ${!rowFilter ? 'bg-primary-50 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300' : 'text-neutral-700 dark:text-neutral-200 hover:bg-neutral-50 dark:hover:bg-black-600'}`}>\n All Rows ({pendingEditsList.length} changes)\n </motion.button>\n )}\n {filteredRowOptions.map((row) => (\n <motion.button key={row.rowId} variants={listItemVariants} onClick={() => handleRowFilterSelect(row.rowId)} className={`w-full text-left px-3 py-2 text-xs transition-colors ${rowFilter === row.rowId ? 'bg-primary-50 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300' : 'text-neutral-700 dark:text-neutral-200 hover:bg-neutral-50 dark:hover:bg-black-600'}`}>\n Row {row.rowIndex + 1} ({row.editCount} {row.editCount === 1 ? 'change' : 'changes'})\n </motion.button>\n ))}\n {filteredRowOptions.length === 0 && rowFilterSearch && !'all rows'.includes(rowFilterSearch.toLowerCase()) && (\n <motion.div variants={listItemVariants} className='px-3 py-2 text-xs text-neutral-500 dark:text-neutral-400'>No rows found</motion.div>\n )}\n </motion.div>\n </motion.div>\n </AnimatePresence>,\n document.body,\n )}\n </div>\n </div>\n )}\n <motion.div className='max-h-52 overflow-y-auto' variants={listContainerVariants} initial='hidden' animate='visible'>\n {filteredPendingEditsList?.map((edit, idx) => (\n <motion.button key={`${edit.rowId}-${edit.columnKey}-${idx}`} variants={listItemVariants} onClick={() => handleCellClick(edit)} className='w-full px-3 py-2 text-left hover:bg-neutral-50 dark:hover:bg-black-600 transition-colors' whileHover={{ backgroundColor: 'rgba(0,0,0,0.03)' }} whileTap={{ scale: 0.98 }}>\n <div className='text-xs font-bold text-neutral-700 dark:text-neutral-300 mb-1'>\n {edit.fieldName} {!rowFilter && <span className='font-normal text-neutral-500 dark:text-neutral-400'>(Row {edit.rowIndex + 1})</span>}\n </div>\n <div className='flex items-center gap-1.5 text-sm'>\n <span className='text-neutral-400 dark:text-neutral-500 line-through truncate max-w-[100px]'>{formatValue(edit.originalValue, edit.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-[100px]'>{formatValue(edit.value, edit.meta?.currency_code)}</span>\n </div>\n </motion.button>\n ))}\n </motion.div>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n <motion.div\n className='flex items-center bg-white dark:bg-black-700 shadow-lg border border-neutral-200 dark:border-black-600 overflow-hidden'\n animate={{ padding: isMinimized ? '8px' : '12px 16px', gap: isMinimized ? '0px' : '12px', borderRadius: isMinimized ? '9999px' : '8px' }}\n transition={{ type: 'spring', stiffness: 300, damping: 25 }}\n >\n <AnimatePresence mode='wait'>\n {isMinimized ? (\n <motion.div key='minimized' initial={{ opacity: 0, scale: 0.8 }} animate={{ opacity: 1, scale: 1 }} exit={{ opacity: 0, scale: 0.8 }}\n onMouseDown={handleMouseDown} onClick={() => setIsMinimized(false)}\n className='flex items-center justify-center cursor-grab active:cursor-grabbing flex-shrink-0'\n style={{ width: '32px', height: '32px', borderRadius: '9999px', backgroundColor: 'var(--color-primary-600)', color: 'white' }}\n title='Drag to move / Click to expand' whileHover={{ backgroundColor: 'var(--color-primary-700)', scale: 1.05 }} whileTap={{ scale: 0.95 }}\n >\n <span className='text-xs font-bold'>{pendingEditsCount}</span>\n </motion.div>\n ) : (\n <motion.button key='minimize-btn' initial={{ opacity: 0, scale: 0.8 }} animate={{ opacity: 1, scale: 1 }} exit={{ opacity: 0, scale: 0.8 }}\n onClick={() => setIsMinimized(true)} className='flex items-center justify-center flex-shrink-0'\n style={{ width: '24px', height: '24px', borderRadius: '4px', backgroundColor: 'transparent', color: 'var(--color-neutral-400)' }}\n title='Minimize' whileHover={{ backgroundColor: 'var(--color-neutral-100)', color: 'var(--color-neutral-600)' }} whileTap={{ scale: 0.9 }}\n >\n <RemoveOutlined sx={{ fontSize: 16 }} />\n </motion.button>\n )}\n </AnimatePresence>\n\n <motion.div className='flex items-center gap-3' animate={{ width: isMinimized ? 0 : 'auto', opacity: isMinimized ? 0 : 1 }}\n transition={{ type: 'spring', stiffness: 300, damping: 25 }} style={{ overflow: 'hidden', pointerEvents: isMinimized ? 'none' : 'auto' }}\n >\n <div onMouseDown={handleMouseDown} className='cursor-grab active:cursor-grabbing text-neutral-400 dark:text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-300 flex items-center' title='Drag to move'>\n <DragIndicator sx={{ fontSize: 18 }} />\n </div>\n <div className='relative' onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <span className='text-sm font-medium text-neutral-700 dark:text-neutral-200 cursor-pointer hover:text-primary-600 dark:hover:text-primary-400 whitespace-nowrap'>\n {pendingEditsCount} unsaved {pendingEditsCount === 1 ? 'change' : 'changes'}\n </span>\n </div>\n <div className='h-4 w-px bg-neutral-200 dark:bg-black-600 flex-shrink-0' />\n <motion.button onClick={onClearAll} disabled={!!fieldOperationLoading}\n className={`px-3 py-1.5 text-sm font-medium rounded-md whitespace-nowrap flex-shrink-0 ${fieldOperationLoading ? 'text-neutral-400 dark:text-neutral-500 cursor-not-allowed' : 'text-neutral-600 dark:text-neutral-300 hover:bg-neutral-100 dark:hover:bg-black-600'}`}\n whileHover={!fieldOperationLoading ? { scale: 1.02 } : undefined} whileTap={!fieldOperationLoading ? { scale: 0.98 } : undefined}\n >\n Cancel\n </motion.button>\n <motion.button onClick={onSaveAll} disabled={!!fieldOperationLoading}\n className={`px-3 py-1.5 text-sm font-medium rounded-md whitespace-nowrap flex-shrink-0 ${fieldOperationLoading ? 'text-white bg-primary-400 cursor-not-allowed' : 'text-white bg-primary-600 hover:bg-primary-700'}`}\n whileHover={!fieldOperationLoading ? { scale: 1.02 } : undefined} whileTap={!fieldOperationLoading ? { scale: 0.98 } : undefined}\n >\n Save All\n </motion.button>\n </motion.div>\n </motion.div>\n </motion.div>\n );\n\n return createPortal(floatingBar, document.body);\n};\n"],"names":["rowFilterDropdownVariants","listContainerVariants","listItemVariants","PendingEditsFloatingBar","pendingEditsCount","pendingEditsList","rowsWithPendingEdits","fieldOperationLoading","onClearAll","onSaveAll","onScrollToCell","showDropdown","setShowDropdown","useState","isMinimized","setIsMinimized","rowFilter","setRowFilter","position","setPosition","isDragging","setIsDragging","rowFilterSearch","setRowFilterSearch","showRowFilterDropdown","setShowRowFilterDropdown","rowFilterButtonRect","setRowFilterButtonRect","dropdownTimeoutRef","useRef","dragStartRef","floatingBarRef","rowFilterRef","rowFilterButtonRef","rowFilterDropdownRef","filteredPendingEditsList","useMemo","edit","filteredRowOptions","searchLower","row","selectedRowLabel","r","useEffect","handleClickOutside","e","target","handleMouseEnter","useCallback","handleMouseLeave","clampPositionToViewport","nextX","nextY","barWidth","barHeight","maxX","maxY","handleMouseDown","barElement","rect","handleMouseMove","handleMouseUp","keepBarInViewport","clampedPosition","formatValue","val","currencyCode","strVal","hasTime","formatDate","handleCellClick","handleRowFilterSelect","rowId","floatingBar","jsxs","motion","jsx","AnimatePresence","KeyboardArrowDownRounded","createPortal","SearchRounded","CloseRounded","idx","RemoveOutlined","DragIndicator"],"mappings":"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"}
1
+ {"version":3,"file":"PendingEditsFloatingBar.es.js","sources":["../../../../src/components/data-display/infinite-table/PendingEditsFloatingBar.tsx"],"sourcesContent":["import { formatDate } from '../../../utils/formatters';\nimport { CloseRounded, DragIndicator, KeyboardArrowDownRounded, RemoveOutlined, SearchRounded } from '@mui/icons-material';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM, FLOATING_BAR_TOOLTIP_MARGIN_LEFT } from './constants';\n\ninterface PendingEdit {\n rowId: string;\n columnKey: string;\n fieldName: string;\n value: unknown;\n originalValue: unknown;\n meta?: { currency_code?: string | null; [key: string]: unknown | null } | null;\n originalMeta?: { currency_code?: string | null; [key: string]: unknown | null } | null;\n rowIndex: number;\n}\n\ninterface RowWithPendingEdits {\n rowId: string;\n rowIndex: number;\n editCount: number;\n}\n\ninterface PendingEditsFloatingBarProps {\n pendingEditsCount: number;\n pendingEditsList: PendingEdit[];\n rowsWithPendingEdits: RowWithPendingEdits[];\n fieldOperationLoading: string | null;\n onClearAll: () => void;\n onSaveAll: () => void;\n onScrollToCell: (rowId: string, columnKey: string, rowIndex: number) => void;\n}\n\nconst rowFilterDropdownVariants = {\n hidden: { opacity: 0, y: -8, scale: 0.95 },\n visible: { opacity: 1, y: 0, scale: 1, transition: { type: 'spring' as const, stiffness: 400, damping: 25 } },\n exit: { opacity: 0, y: -8, scale: 0.95, transition: { duration: 0.1 } },\n};\n\nconst listContainerVariants = {\n hidden: { opacity: 0 },\n visible: { opacity: 1, transition: { staggerChildren: 0.03, delayChildren: 0.05 } },\n};\n\nconst listItemVariants = {\n hidden: { opacity: 0, y: -8 },\n visible: { opacity: 1, y: 0, transition: { type: 'spring' as const, stiffness: 400, damping: 25 } },\n};\n\nexport const PendingEditsFloatingBar: React.FC<PendingEditsFloatingBarProps> = ({\n pendingEditsCount, pendingEditsList, rowsWithPendingEdits, fieldOperationLoading, onClearAll, onSaveAll, onScrollToCell,\n}) => {\n const [showDropdown, setShowDropdown] = useState(false);\n const [isMinimized, setIsMinimized] = useState(false);\n const [rowFilter, setRowFilter] = useState<string | null>(null);\n const [position, setPosition] = useState<{ x: number; y: number } | null>(null);\n const [isDragging, setIsDragging] = useState(false);\n const [rowFilterSearch, setRowFilterSearch] = useState('');\n const [showRowFilterDropdown, setShowRowFilterDropdown] = useState(false);\n const [rowFilterButtonRect, setRowFilterButtonRect] = useState<DOMRect | null>(null);\n\n const dropdownTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const dragStartRef = useRef<{ x: number; y: number; barX: number; barY: number; barWidth: number; barHeight: number } | null>(null);\n const floatingBarRef = useRef<HTMLDivElement>(null);\n const rowFilterRef = useRef<HTMLDivElement>(null);\n const rowFilterButtonRef = useRef<HTMLButtonElement>(null);\n const rowFilterDropdownRef = useRef<HTMLDivElement>(null);\n\n const filteredPendingEditsList = useMemo(() => {\n if (!rowFilter) return pendingEditsList;\n return pendingEditsList.filter((edit) => edit.rowId === rowFilter);\n }, [pendingEditsList, rowFilter]);\n\n const filteredRowOptions = useMemo(() => {\n if (!rowFilterSearch) return rowsWithPendingEdits;\n const searchLower = rowFilterSearch.toLowerCase();\n return rowsWithPendingEdits.filter((row) => `row ${row.rowIndex + 1}`.toLowerCase().includes(searchLower));\n }, [rowsWithPendingEdits, rowFilterSearch]);\n\n const selectedRowLabel = useMemo(() => {\n if (!rowFilter) return `All Rows (${pendingEditsList.length})`;\n const row = rowsWithPendingEdits.find((r) => r.rowId === rowFilter);\n if (!row) return `All Rows (${pendingEditsList.length})`;\n return `Row ${row.rowIndex + 1} (${row.editCount})`;\n }, [rowFilter, rowsWithPendingEdits, pendingEditsList.length]);\n\n useEffect(() => {\n if (rowFilter && !rowsWithPendingEdits.find((row) => row.rowId === rowFilter)) setRowFilter(null);\n }, [rowsWithPendingEdits, rowFilter]);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n if (!rowFilterRef.current?.contains(target) && !rowFilterDropdownRef.current?.contains(target)) {\n setShowRowFilterDropdown(false);\n setRowFilterSearch('');\n }\n };\n if (showRowFilterDropdown) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [showRowFilterDropdown]);\n\n const handleMouseEnter = useCallback(() => {\n if (dropdownTimeoutRef.current) { clearTimeout(dropdownTimeoutRef.current); dropdownTimeoutRef.current = null; }\n setShowDropdown(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n dropdownTimeoutRef.current = setTimeout(() => setShowDropdown(false), 300);\n }, []);\n\n const clampPositionToViewport = useCallback((nextX: number, nextY: number, barWidth: number, barHeight: number) => {\n const maxX = Math.max(0, window.innerWidth - barWidth);\n const maxY = Math.max(0, window.innerHeight - barHeight);\n\n return {\n x: Math.min(Math.max(nextX, 0), maxX),\n y: Math.min(Math.max(nextY, 0), maxY),\n };\n }, []);\n\n const handleMouseDown = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n const barElement = e.currentTarget.closest('.pending-edits-floating-bar') as HTMLElement;\n if (!barElement) return;\n const rect = barElement.getBoundingClientRect();\n dragStartRef.current = {\n x: e.clientX,\n y: e.clientY,\n barX: position?.x ?? rect.left,\n barY: position?.y ?? rect.top,\n barWidth: rect.width,\n barHeight: rect.height,\n };\n setIsDragging(true);\n }, [position]);\n\n useEffect(() => {\n if (!isDragging) return;\n const handleMouseMove = (e: MouseEvent) => {\n if (!dragStartRef.current) return;\n const nextX = dragStartRef.current.barX + e.clientX - dragStartRef.current.x;\n const nextY = dragStartRef.current.barY + e.clientY - dragStartRef.current.y;\n setPosition(clampPositionToViewport(nextX, nextY, dragStartRef.current.barWidth, dragStartRef.current.barHeight));\n };\n const handleMouseUp = () => { setIsDragging(false); dragStartRef.current = null; };\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n return () => { document.removeEventListener('mousemove', handleMouseMove); document.removeEventListener('mouseup', handleMouseUp); };\n }, [isDragging, clampPositionToViewport]);\n\n useEffect(() => {\n if (!position || !floatingBarRef.current) return;\n\n const keepBarInViewport = () => {\n if (!floatingBarRef.current) return;\n const rect = floatingBarRef.current.getBoundingClientRect();\n const clampedPosition = clampPositionToViewport(position.x, position.y, rect.width, rect.height);\n if (clampedPosition.x !== position.x || clampedPosition.y !== position.y) {\n setPosition(clampedPosition);\n }\n };\n\n keepBarInViewport();\n window.addEventListener('resize', keepBarInViewport);\n return () => window.removeEventListener('resize', keepBarInViewport);\n }, [position, clampPositionToViewport]);\n\n const 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 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 return formatDate(strVal, { withTime: hasTime, skipTimezone: true }) || strVal;\n }\n if (currencyCode) return `${strVal} ${currencyCode}`;\n return strVal;\n };\n\n const handleCellClick = (edit: PendingEdit) => { setShowDropdown(false); onScrollToCell(edit.rowId, edit.columnKey, edit.rowIndex); };\n const handleRowFilterSelect = (rowId: string | null) => { setRowFilter(rowId); setShowRowFilterDropdown(false); setRowFilterSearch(''); };\n\n if (pendingEditsCount === 0) return null;\n\n const floatingBar = (\n <motion.div\n ref={floatingBarRef}\n className='pending-edits-floating-bar fixed z-[9999]'\n style={{\n zIndex: 2147483646,\n ...(position ? { left: position.x, top: position.y } : { bottom: 24, left: '50%', transform: 'translateX(-50%)' }),\n }}\n initial={{ opacity: 0, scale: 0.9 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ type: 'spring', stiffness: 300, damping: 25 }}\n >\n <AnimatePresence>\n {showDropdown && !isMinimized && (\n <motion.div\n className='absolute w-80'\n style={{ bottom: '100%', left: '50%', marginLeft: FLOATING_BAR_TOOLTIP_MARGIN_LEFT, marginBottom: FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM }}\n initial={{ opacity: 0, y: 10, scale: 0.95 }}\n animate={{ opacity: 1, y: 0, scale: 1 }}\n exit={{ opacity: 0, y: 10, scale: 0.95 }}\n transition={{ type: 'spring', stiffness: 300, damping: 24 }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <div className='bg-white dark:bg-black-700 rounded-lg shadow-xl border border-neutral-200 dark:border-black-600 py-2 overflow-hidden'>\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'>Pending Changes</div>\n {rowsWithPendingEdits.length > 1 && (\n <div className='px-3 py-2 border-b border-neutral-100 dark:border-black-600' ref={rowFilterRef}>\n <div className='relative'>\n <button\n ref={rowFilterButtonRef}\n onClick={() => { if (rowFilterButtonRef.current) setRowFilterButtonRect(rowFilterButtonRef.current.getBoundingClientRect()); setShowRowFilterDropdown(!showRowFilterDropdown); }}\n className='w-full text-xs px-2 py-1.5 rounded border border-neutral-200 dark:border-black-500 bg-neutral-50 dark:bg-black-600 text-neutral-700 dark:text-neutral-200 focus:outline-none focus:ring-1 focus:ring-primary-500 flex items-center justify-between gap-2'\n >\n <span className='truncate'>{selectedRowLabel}</span>\n <motion.div animate={{ rotate: showRowFilterDropdown ? 180 : 0 }} transition={{ duration: 0.2 }}>\n <KeyboardArrowDownRounded sx={{ fontSize: 16 }} className='text-neutral-400' />\n </motion.div>\n </button>\n {showRowFilterDropdown && rowFilterButtonRect && createPortal(\n <AnimatePresence>\n <motion.div\n ref={rowFilterDropdownRef}\n className='fixed bg-white dark:bg-black-700 rounded-lg shadow-xl border border-neutral-200 dark:border-black-600 overflow-hidden'\n style={{ zIndex: 2147483647, top: rowFilterButtonRect.bottom + 4, left: rowFilterButtonRect.left, width: rowFilterButtonRect.width }}\n variants={rowFilterDropdownVariants}\n initial='hidden' animate='visible' exit='exit'\n >\n <div className='p-2 border-b border-neutral-100 dark:border-black-600'>\n <div className='relative flex items-center'>\n <SearchRounded sx={{ fontSize: 14 }} className='absolute left-2 text-neutral-400 dark:text-neutral-500 z-10 pointer-events-none' />\n <input type='text' value={rowFilterSearch} onChange={(e) => setRowFilterSearch(e.target.value)} placeholder='Search rows...' className='w-full text-xs pl-7 pr-7 py-1.5 rounded border border-neutral-200 dark:border-black-500 bg-white dark:bg-black-600 text-neutral-700 dark:text-neutral-200 focus:outline-none focus:ring-1 focus:ring-primary-500 placeholder:text-neutral-400' autoFocus />\n {rowFilterSearch && <button onClick={() => setRowFilterSearch('')} className='absolute right-2 z-10 text-neutral-400 hover:text-neutral-600 dark:hover:text-neutral-300'><CloseRounded sx={{ fontSize: 14 }} /></button>}\n </div>\n </div>\n <motion.div className='max-h-40 overflow-y-auto' variants={listContainerVariants} initial='hidden' animate='visible'>\n {(!rowFilterSearch || 'all rows'.includes(rowFilterSearch.toLowerCase())) && (\n <motion.button variants={listItemVariants} onClick={() => handleRowFilterSelect(null)} className={`w-full text-left px-3 py-2 text-xs transition-colors ${!rowFilter ? 'bg-primary-50 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300' : 'text-neutral-700 dark:text-neutral-200 hover:bg-neutral-50 dark:hover:bg-black-600'}`}>\n All Rows ({pendingEditsList.length} changes)\n </motion.button>\n )}\n {filteredRowOptions.map((row) => (\n <motion.button key={row.rowId} variants={listItemVariants} onClick={() => handleRowFilterSelect(row.rowId)} className={`w-full text-left px-3 py-2 text-xs transition-colors ${rowFilter === row.rowId ? 'bg-primary-50 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300' : 'text-neutral-700 dark:text-neutral-200 hover:bg-neutral-50 dark:hover:bg-black-600'}`}>\n Row {row.rowIndex + 1} ({row.editCount} {row.editCount === 1 ? 'change' : 'changes'})\n </motion.button>\n ))}\n {filteredRowOptions.length === 0 && rowFilterSearch && !'all rows'.includes(rowFilterSearch.toLowerCase()) && (\n <motion.div variants={listItemVariants} className='px-3 py-2 text-xs text-neutral-500 dark:text-neutral-400'>No rows found</motion.div>\n )}\n </motion.div>\n </motion.div>\n </AnimatePresence>,\n document.body,\n )}\n </div>\n </div>\n )}\n <motion.div className='max-h-52 overflow-y-auto' variants={listContainerVariants} initial='hidden' animate='visible'>\n {filteredPendingEditsList?.map((edit, idx) => (\n <motion.button key={`${edit.rowId}-${edit.columnKey}-${idx}`} variants={listItemVariants} onClick={() => handleCellClick(edit)} className='w-full px-3 py-2 text-left hover:bg-neutral-50 dark:hover:bg-black-600 transition-colors' whileHover={{ backgroundColor: 'rgba(0,0,0,0.03)' }} whileTap={{ scale: 0.98 }}>\n <div className='text-xs font-bold text-neutral-700 dark:text-neutral-300 mb-1'>\n {edit.fieldName} {!rowFilter && <span className='font-normal text-neutral-500 dark:text-neutral-400'>(Row {edit.rowIndex + 1})</span>}\n </div>\n <div className='flex items-center gap-1.5 text-sm'>\n <span className='text-neutral-400 dark:text-neutral-500 line-through truncate max-w-[100px]'>{formatValue(edit.originalValue, edit.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-[100px]'>{formatValue(edit.value, edit.meta?.currency_code)}</span>\n </div>\n </motion.button>\n ))}\n </motion.div>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n <motion.div\n className='flex items-center bg-white dark:bg-black-700 shadow-lg border border-neutral-200 dark:border-black-600 overflow-hidden'\n animate={{ padding: isMinimized ? '8px' : '12px 16px', gap: isMinimized ? '0px' : '12px', borderRadius: isMinimized ? '9999px' : '8px' }}\n transition={{ type: 'spring', stiffness: 300, damping: 25 }}\n >\n <AnimatePresence mode='wait'>\n {isMinimized ? (\n <motion.div key='minimized' initial={{ opacity: 0, scale: 0.8 }} animate={{ opacity: 1, scale: 1 }} exit={{ opacity: 0, scale: 0.8 }}\n onMouseDown={handleMouseDown} onClick={() => setIsMinimized(false)}\n className='flex items-center justify-center cursor-grab active:cursor-grabbing flex-shrink-0'\n style={{ width: '32px', height: '32px', borderRadius: '9999px', backgroundColor: 'var(--color-primary-600)', color: 'white' }}\n title='Drag to move / Click to expand' whileHover={{ backgroundColor: 'var(--color-primary-700)', scale: 1.05 }} whileTap={{ scale: 0.95 }}\n >\n <span className='text-xs font-bold'>{pendingEditsCount}</span>\n </motion.div>\n ) : (\n <motion.button key='minimize-btn' initial={{ opacity: 0, scale: 0.8 }} animate={{ opacity: 1, scale: 1 }} exit={{ opacity: 0, scale: 0.8 }}\n onClick={() => setIsMinimized(true)} className='flex items-center justify-center flex-shrink-0'\n style={{ width: '24px', height: '24px', borderRadius: '4px', backgroundColor: 'transparent', color: 'var(--color-neutral-400)' }}\n title='Minimize' whileHover={{ backgroundColor: 'var(--color-neutral-100)', color: 'var(--color-neutral-600)' }} whileTap={{ scale: 0.9 }}\n >\n <RemoveOutlined sx={{ fontSize: 16 }} />\n </motion.button>\n )}\n </AnimatePresence>\n\n <motion.div className='flex items-center gap-3' animate={{ width: isMinimized ? 0 : 'auto', opacity: isMinimized ? 0 : 1 }}\n transition={{ type: 'spring', stiffness: 300, damping: 25 }} style={{ overflow: 'hidden', pointerEvents: isMinimized ? 'none' : 'auto' }}\n >\n <div onMouseDown={handleMouseDown} className='cursor-grab active:cursor-grabbing text-neutral-400 dark:text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-300 flex items-center' title='Drag to move'>\n <DragIndicator sx={{ fontSize: 18 }} />\n </div>\n <div className='relative' onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <span className='text-sm font-medium text-neutral-700 dark:text-neutral-200 cursor-pointer hover:text-primary-600 dark:hover:text-primary-400 whitespace-nowrap'>\n {pendingEditsCount} unsaved {pendingEditsCount === 1 ? 'change' : 'changes'}\n </span>\n </div>\n <div className='h-4 w-px bg-neutral-200 dark:bg-black-600 flex-shrink-0' />\n <motion.button onClick={onClearAll} disabled={!!fieldOperationLoading}\n className={`px-3 py-1.5 text-sm font-medium rounded-md whitespace-nowrap flex-shrink-0 ${fieldOperationLoading ? 'text-neutral-400 dark:text-neutral-500 cursor-not-allowed' : 'text-neutral-600 dark:text-neutral-300 hover:bg-neutral-100 dark:hover:bg-black-600'}`}\n whileHover={!fieldOperationLoading ? { scale: 1.02 } : undefined} whileTap={!fieldOperationLoading ? { scale: 0.98 } : undefined}\n >\n Cancel\n </motion.button>\n <motion.button onClick={onSaveAll} disabled={!!fieldOperationLoading}\n className={`px-3 py-1.5 text-sm font-medium rounded-md whitespace-nowrap flex-shrink-0 ${fieldOperationLoading ? 'text-white bg-primary-400 cursor-not-allowed' : 'text-white bg-primary-600 hover:bg-primary-700'}`}\n whileHover={!fieldOperationLoading ? { scale: 1.02 } : undefined} whileTap={!fieldOperationLoading ? { scale: 0.98 } : undefined}\n >\n Save All\n </motion.button>\n </motion.div>\n </motion.div>\n </motion.div>\n );\n\n return createPortal(floatingBar, document.body);\n};\n"],"names":["rowFilterDropdownVariants","listContainerVariants","listItemVariants","PendingEditsFloatingBar","pendingEditsCount","pendingEditsList","rowsWithPendingEdits","fieldOperationLoading","onClearAll","onSaveAll","onScrollToCell","showDropdown","setShowDropdown","useState","isMinimized","setIsMinimized","rowFilter","setRowFilter","position","setPosition","isDragging","setIsDragging","rowFilterSearch","setRowFilterSearch","showRowFilterDropdown","setShowRowFilterDropdown","rowFilterButtonRect","setRowFilterButtonRect","dropdownTimeoutRef","useRef","dragStartRef","floatingBarRef","rowFilterRef","rowFilterButtonRef","rowFilterDropdownRef","filteredPendingEditsList","useMemo","edit","filteredRowOptions","searchLower","row","selectedRowLabel","r","useEffect","handleClickOutside","e","target","handleMouseEnter","useCallback","handleMouseLeave","clampPositionToViewport","nextX","nextY","barWidth","barHeight","maxX","maxY","handleMouseDown","barElement","rect","handleMouseMove","handleMouseUp","keepBarInViewport","clampedPosition","formatValue","val","currencyCode","strVal","hasTime","formatDate","handleCellClick","handleRowFilterSelect","rowId","floatingBar","jsxs","motion","jsx","AnimatePresence","FLOATING_BAR_TOOLTIP_MARGIN_LEFT","FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM","KeyboardArrowDownRounded","createPortal","SearchRounded","CloseRounded","idx","RemoveOutlined","DragIndicator"],"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"),w=require("antd"),B=require("../../../../../providers/design-system-provider/hooks.cjs.js"),F=require("../../../../../_virtual/index.cjs.js"),p=require("react");let b=null;const O=({checkboxConfig:t,id:e,rowHovering:r,isDisabled:j,is_read:M,is_modified:C,is_row_modified:S,is_deleted:u,is_added:n,isDraggingOver:i,showNewItem:q,currentData:a,bgColor:x,is_incomplete:m,isInlineEditing:c,hasPendingEditsColumn:T,rowHasPendingEdits:y})=>{const N=B.useTableConfig()?.t?.("Save or cancel pending changes first")??"Save or cancel pending changes first",o=p.useRef(null),R=s=>{if(s.key!=="Enter")return;s.preventDefault();const k=s.currentTarget.form;if(!k)return;const $=new Event("submit",{bubbles:!0,cancelable:!0});k.dispatchEvent($);const g=k.querySelector('button[type="submit"]');g&&g.click()},f=typeof t?.checkboxMetadata=="object"&&t?.checkboxMetadata!==null&&t?.checkboxMetadata.checkedIds?.includes(e)||t?.checkedIds?.includes(e),d=j||y||t?.checkboxMetadata?.checkedIds?.includes(e);p.useLayoutEffect(()=>{b!==e||d||o.current&&document.activeElement!==o.current&&o.current.focus({preventScroll:!0})},[e,d,f]);const h=F({"bg-primary-50 dark:bg-primary-900":c,"bg-neutral-100 dark:bg-black-600":r===e&&!c&&!(u||a?.is_deleted)&&!(n||a?.is_added),"bg-error-200 dark:bg-error-900":r===e&&!c&&(u||a?.is_deleted),"bg-success-100 dark:bg-success-800":r===e&&!c&&(n||a?.is_added),"bg-primary-50 dark:bg-black-700":!m&&!M&&q&&r!==e&&!c,"bg-warning-50 dark:bg-black-500":(m||C||S||a?.is_row_modified)&&r!==e&&!c,"bg-error-100 dark:bg-error-975":(u||a?.is_deleted)&&r!==e&&!c,"bg-success-50 dark:bg-success-900":(n||a?.is_added)&&r!==e&&!c,"bg-primary-50":i&&!c,...x&&!c&&{[x]:!0}});return l.jsx("td",{className:`min-w-[40px] sticky right-0 z-30 ${h||"bg-white dark:bg-black-800"} h-[39px]`,style:{left:T?"28px":"0"},children:l.jsxs("div",{className:"absolute w-full px-2.5 h-[39px] z-30 flex items-center justify-center",style:{boxShadow:"8px 0px 8px 0px rgba(0, 0, 0, 0.02)"},children:[l.jsx(w.Tooltip,{title:y?N:t?.checkboxMetadata?.tooltip&&t?.checkboxMetadata?.checkedIds?.includes(e)?t?.checkboxMetadata?.tooltip:"",children:l.jsx("input",{ref:o,id:`checkbox-table-search-${e}`,type:"checkbox",className:`w-4 h-4 text-primary-600 appearance-none border border-gray-400 dark:border-neutral-400 rounded-[4px] checked:appearance-auto focus:ring-primary-500 dark:focus:ring-primary-600 focus:ring-2 cursor-pointer ${h}`,onChange:s=>t?.onItemCheck(s,e),onKeyDown:R,onFocus:()=>{b=e},onBlur:()=>{b===e&&(b=null)},checked:f,disabled:d},`checkbox-table-search-${e}`)}),l.jsx("label",{htmlFor:"checkbox-table-search-1",className:"sr-only dark:text-neutral-200",children:"checkbox"})]})})},_=p.memo(O);exports.CheckboxCell=_;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),O=require("antd"),B=require("../../../../../providers/design-system-provider/hooks.cjs.js"),R=require("../../../../../_virtual/index.cjs.js"),p=require("react"),$=require("../../constants.cjs.js");let b=null;const w=({checkboxConfig:t,id:e,rowHovering:r,isDisabled:j,is_read:C,is_modified:S,is_row_modified:M,is_deleted:u,is_added:n,isDraggingOver:T,showNewItem:q,currentData:a,bgColor:m,is_incomplete:x,isInlineEditing:c,hasPendingEditsColumn:_,rowHasPendingEdits:y})=>{const i=B.useTableConfig()?.t?.("Save or cancel pending changes first")??"Save or cancel pending changes first",o=p.useRef(null),F=s=>{if(s.key!=="Enter")return;s.preventDefault();const k=s.currentTarget.form;if(!k)return;const N=new Event("submit",{bubbles:!0,cancelable:!0});k.dispatchEvent(N);const g=k.querySelector('button[type="submit"]');g&&g.click()},f=typeof t?.checkboxMetadata=="object"&&t?.checkboxMetadata!==null&&t?.checkboxMetadata.checkedIds?.includes(e)||t?.checkedIds?.includes(e),d=j||y||t?.checkboxMetadata?.checkedIds?.includes(e);p.useLayoutEffect(()=>{b!==e||d||o.current&&document.activeElement!==o.current&&o.current.focus({preventScroll:!0})},[e,d,f]);const h=R({"bg-primary-50 dark:bg-primary-900":c,"bg-neutral-100 dark:bg-black-600":r===e&&!c&&!(u||a?.is_deleted)&&!(n||a?.is_added),"bg-error-200 dark:bg-error-900":r===e&&!c&&(u||a?.is_deleted),"bg-success-100 dark:bg-success-800":r===e&&!c&&(n||a?.is_added),"bg-primary-50 dark:bg-black-700":!x&&!C&&q&&r!==e&&!c,"bg-warning-50 dark:bg-black-500":(x||S||M||a?.is_row_modified)&&r!==e&&!c,"bg-error-100 dark:bg-error-975":(u||a?.is_deleted)&&r!==e&&!c,"bg-success-50 dark:bg-success-900":(n||a?.is_added)&&r!==e&&!c,"bg-primary-50":T&&!c,...m&&!c&&{[m]:!0}});return l.jsx("td",{className:`min-w-[40px] sticky right-0 z-30 ${h||"bg-white dark:bg-black-800"} h-10`,style:{left:_?$.CHECKBOX_PENDING_EDITS_LEFT_OFFSET:"0"},children:l.jsxs("div",{className:"absolute w-full px-2.5 h-10 z-30 flex items-center",style:{boxShadow:"8px 0px 8px 0px rgba(0, 0, 0, 0.02)"},children:[l.jsx(O.Tooltip,{title:y?i:t?.checkboxMetadata?.tooltip&&t?.checkboxMetadata?.checkedIds?.includes(e)?t?.checkboxMetadata?.tooltip:"",children:l.jsx("input",{ref:o,id:`checkbox-table-search-${e}`,type:"checkbox",className:`w-4 h-4 text-primary-600 appearance-none border border-gray-400 dark:border-neutral-400 rounded-[4px] checked:appearance-auto focus:ring-primary-500 dark:focus:ring-primary-600 focus:ring-2 cursor-pointer ${h}`,onChange:s=>t?.onItemCheck(s,e),onKeyDown:F,onFocus:()=>{b=e},onBlur:()=>{b===e&&(b=null)},checked:f,disabled:d},`checkbox-table-search-${e}`)}),l.jsx("label",{htmlFor:"checkbox-table-search-1",className:"sr-only dark:text-neutral-200",children:"checkbox"})]})})},E=p.memo(w);exports.CheckboxCell=E;
2
2
  //# sourceMappingURL=CheckboxCell.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxCell.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/CheckboxCell.tsx"],"sourcesContent":["import { Tooltip } from 'antd';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport cn from 'classnames';\nimport React from 'react';\n\ntype HighlightType = 'SUCCESS' | 'WARNING' | 'ERROR';\n\ntype CheckboxMetadata = {\n checkedIds: string[];\n tooltip: string;\n highlight: HighlightType;\n};\n\ntype TCheckboxCellProps = {\n checkboxConfig: {\n checkboxMetadata: CheckboxMetadata;\n checkedIds: string[];\n selectionDisabledRowIds: CheckboxMetadata;\n onItemCheck: (event: React.ChangeEvent<HTMLInputElement>, id: string) => void;\n };\n id: string;\n rowHovering?: string;\n isDisabled?: boolean;\n is_read?: boolean;\n is_modified?: boolean;\n is_row_modified?: boolean;\n is_deleted?: boolean;\n is_added?: boolean;\n isDraggingOver?: boolean;\n showNewItem?: boolean;\n currentData?: Record<string, unknown>;\n bgColor?: string;\n is_incomplete?: boolean;\n isInlineEditing?: boolean;\n hasPendingEditsColumn?: boolean;\n rowHasPendingEdits?: boolean;\n};\n\nlet lastFocusedCheckboxId: string | null = null;\n\nconst CheckboxCellBase = ({\n checkboxConfig,\n id,\n rowHovering,\n isDisabled,\n is_read,\n is_modified,\n is_row_modified,\n is_deleted,\n is_added,\n isDraggingOver,\n showNewItem,\n currentData,\n bgColor: bgColorProp,\n is_incomplete,\n isInlineEditing,\n hasPendingEditsColumn,\n rowHasPendingEdits,\n}: TCheckboxCellProps) => {\n const tableConfig = useTableConfig();\n const pendingEditsTooltip = tableConfig?.t?.('Save or cancel pending changes first') ?? 'Save or cancel pending changes first';\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key !== 'Enter') return;\n event.preventDefault();\n const formEl = event.currentTarget.form;\n if (!formEl) return;\n\n const submitEvent = new Event('submit', { bubbles: true, cancelable: true });\n formEl.dispatchEvent(submitEvent);\n\n const submitBtn = formEl.querySelector<HTMLButtonElement>('button[type=\"submit\"]');\n if (submitBtn) {\n submitBtn.click();\n }\n };\n\n const isCheckedObject = typeof checkboxConfig?.checkboxMetadata === 'object' && checkboxConfig?.checkboxMetadata !== null;\n const checkedValue = (isCheckedObject && checkboxConfig?.checkboxMetadata.checkedIds?.includes(id)) || checkboxConfig?.checkedIds?.includes(id);\n const isInputDisabled = isDisabled || rowHasPendingEdits || checkboxConfig?.checkboxMetadata?.checkedIds?.includes(id);\n\n React.useLayoutEffect(() => {\n if (lastFocusedCheckboxId !== id || isInputDisabled) return;\n if (inputRef.current && document.activeElement !== inputRef.current) {\n inputRef.current.focus({ preventScroll: true });\n }\n }, [id, isInputDisabled, checkedValue]);\n\n const bgColor = cn({\n 'bg-primary-50 dark:bg-primary-900': isInlineEditing,\n 'bg-neutral-100 dark:bg-black-600': rowHovering === id && !isInlineEditing && !(is_deleted || currentData?.is_deleted) && !(is_added || currentData?.is_added),\n 'bg-error-200 dark:bg-error-900': rowHovering === id && !isInlineEditing && (is_deleted || currentData?.is_deleted),\n 'bg-success-100 dark:bg-success-800': rowHovering === id && !isInlineEditing && (is_added || currentData?.is_added),\n 'bg-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && rowHovering !== id && !isInlineEditing,\n 'bg-warning-50 dark:bg-black-500':\n (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified) && rowHovering !== id && !isInlineEditing,\n 'bg-error-100 dark:bg-error-975': (is_deleted || currentData?.is_deleted) && rowHovering !== id && !isInlineEditing,\n 'bg-success-50 dark:bg-success-900': (is_added || currentData?.is_added) && rowHovering !== id && !isInlineEditing,\n 'bg-primary-50': isDraggingOver && !isInlineEditing,\n ...(bgColorProp && !isInlineEditing && { [bgColorProp]: true }),\n });\n\n return (\n <td\n className={`min-w-[40px] sticky right-0 z-30 ${bgColor ? bgColor : 'bg-white dark:bg-black-800'} h-[39px]`}\n style={{ left: hasPendingEditsColumn ? '28px' : '0' }}\n >\n <div\n className={`absolute w-full px-2.5 h-[39px] z-30 flex items-center justify-center`}\n style={{ boxShadow: '8px 0px 8px 0px rgba(0, 0, 0, 0.02)' }}\n >\n <Tooltip\n title={\n rowHasPendingEdits\n ? pendingEditsTooltip\n : checkboxConfig?.checkboxMetadata?.tooltip && checkboxConfig?.checkboxMetadata?.checkedIds?.includes(id)\n ? checkboxConfig?.checkboxMetadata?.tooltip\n : ''\n }\n >\n <input\n ref={inputRef}\n key={`checkbox-table-search-${id}`}\n id={`checkbox-table-search-${id}`}\n type='checkbox'\n className={`w-4 h-4 text-primary-600 appearance-none border border-gray-400 dark:border-neutral-400 rounded-[4px] checked:appearance-auto focus:ring-primary-500 dark:focus:ring-primary-600 focus:ring-2 cursor-pointer ${bgColor}`}\n onChange={(event) => checkboxConfig?.onItemCheck(event, id)}\n onKeyDown={handleKeyDown}\n onFocus={() => { lastFocusedCheckboxId = id; }}\n onBlur={() => { if (lastFocusedCheckboxId === id) lastFocusedCheckboxId = null; }}\n checked={checkedValue}\n disabled={isInputDisabled}\n />\n </Tooltip>\n <label htmlFor='checkbox-table-search-1' className='sr-only dark:text-neutral-200'>\n {'checkbox'}\n </label>\n </div>\n </td>\n );\n};\n\nexport const CheckboxCell = React.memo(CheckboxCellBase);\n"],"names":["lastFocusedCheckboxId","CheckboxCellBase","checkboxConfig","id","rowHovering","isDisabled","is_read","is_modified","is_row_modified","is_deleted","is_added","isDraggingOver","showNewItem","currentData","bgColorProp","is_incomplete","isInlineEditing","hasPendingEditsColumn","rowHasPendingEdits","pendingEditsTooltip","useTableConfig","inputRef","React","handleKeyDown","event","formEl","submitEvent","submitBtn","checkedValue","isInputDisabled","bgColor","cn","jsx","jsxs","Tooltip","CheckboxCell"],"mappings":"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"}
1
+ {"version":3,"file":"CheckboxCell.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/CheckboxCell.tsx"],"sourcesContent":["import { Tooltip } from 'antd';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport cn from 'classnames';\nimport React from 'react';\n\nimport { CHECKBOX_PENDING_EDITS_LEFT_OFFSET } from '../../constants';\n\ntype HighlightType = 'SUCCESS' | 'WARNING' | 'ERROR';\n\ntype CheckboxMetadata = {\n checkedIds: string[];\n tooltip: string;\n highlight: HighlightType;\n};\n\ntype TCheckboxCellProps = {\n checkboxConfig: {\n checkboxMetadata: CheckboxMetadata;\n checkedIds: string[];\n selectionDisabledRowIds: CheckboxMetadata;\n onItemCheck: (event: React.ChangeEvent<HTMLInputElement>, id: string) => void;\n };\n id: string;\n rowHovering?: string;\n isDisabled?: boolean;\n is_read?: boolean;\n is_modified?: boolean;\n is_row_modified?: boolean;\n is_deleted?: boolean;\n is_added?: boolean;\n isDraggingOver?: boolean;\n showNewItem?: boolean;\n currentData?: Record<string, unknown>;\n bgColor?: string;\n is_incomplete?: boolean;\n isInlineEditing?: boolean;\n hasPendingEditsColumn?: boolean;\n rowHasPendingEdits?: boolean;\n};\n\nlet lastFocusedCheckboxId: string | null = null;\n\nconst CheckboxCellBase = ({\n checkboxConfig,\n id,\n rowHovering,\n isDisabled,\n is_read,\n is_modified,\n is_row_modified,\n is_deleted,\n is_added,\n isDraggingOver,\n showNewItem,\n currentData,\n bgColor: bgColorProp,\n is_incomplete,\n isInlineEditing,\n hasPendingEditsColumn,\n rowHasPendingEdits,\n}: TCheckboxCellProps) => {\n const tableConfig = useTableConfig();\n const pendingEditsTooltip = tableConfig?.t?.('Save or cancel pending changes first') ?? 'Save or cancel pending changes first';\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key !== 'Enter') return;\n event.preventDefault();\n const formEl = event.currentTarget.form;\n if (!formEl) return;\n\n const submitEvent = new Event('submit', { bubbles: true, cancelable: true });\n formEl.dispatchEvent(submitEvent);\n\n const submitBtn = formEl.querySelector<HTMLButtonElement>('button[type=\"submit\"]');\n if (submitBtn) {\n submitBtn.click();\n }\n };\n\n const isCheckedObject = typeof checkboxConfig?.checkboxMetadata === 'object' && checkboxConfig?.checkboxMetadata !== null;\n const checkedValue = (isCheckedObject && checkboxConfig?.checkboxMetadata.checkedIds?.includes(id)) || checkboxConfig?.checkedIds?.includes(id);\n const isInputDisabled = isDisabled || rowHasPendingEdits || checkboxConfig?.checkboxMetadata?.checkedIds?.includes(id);\n\n React.useLayoutEffect(() => {\n if (lastFocusedCheckboxId !== id || isInputDisabled) return;\n if (inputRef.current && document.activeElement !== inputRef.current) {\n inputRef.current.focus({ preventScroll: true });\n }\n }, [id, isInputDisabled, checkedValue]);\n\n const bgColor = cn({\n 'bg-primary-50 dark:bg-primary-900': isInlineEditing,\n 'bg-neutral-100 dark:bg-black-600': rowHovering === id && !isInlineEditing && !(is_deleted || currentData?.is_deleted) && !(is_added || currentData?.is_added),\n 'bg-error-200 dark:bg-error-900': rowHovering === id && !isInlineEditing && (is_deleted || currentData?.is_deleted),\n 'bg-success-100 dark:bg-success-800': rowHovering === id && !isInlineEditing && (is_added || currentData?.is_added),\n 'bg-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && rowHovering !== id && !isInlineEditing,\n 'bg-warning-50 dark:bg-black-500':\n (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified) && rowHovering !== id && !isInlineEditing,\n 'bg-error-100 dark:bg-error-975': (is_deleted || currentData?.is_deleted) && rowHovering !== id && !isInlineEditing,\n 'bg-success-50 dark:bg-success-900': (is_added || currentData?.is_added) && rowHovering !== id && !isInlineEditing,\n 'bg-primary-50': isDraggingOver && !isInlineEditing,\n ...(bgColorProp && !isInlineEditing && { [bgColorProp]: true }),\n });\n\n return (\n <td\n className={`min-w-[40px] sticky right-0 z-30 ${bgColor ? bgColor : 'bg-white dark:bg-black-800'} h-10`}\n style={{ left: hasPendingEditsColumn ? CHECKBOX_PENDING_EDITS_LEFT_OFFSET : '0' }}\n >\n <div\n className={`absolute w-full px-2.5 h-10 z-30 flex items-center`}\n style={{ boxShadow: '8px 0px 8px 0px rgba(0, 0, 0, 0.02)' }}\n >\n <Tooltip\n title={\n rowHasPendingEdits\n ? pendingEditsTooltip\n : checkboxConfig?.checkboxMetadata?.tooltip && checkboxConfig?.checkboxMetadata?.checkedIds?.includes(id)\n ? checkboxConfig?.checkboxMetadata?.tooltip\n : ''\n }\n >\n <input\n ref={inputRef}\n key={`checkbox-table-search-${id}`}\n id={`checkbox-table-search-${id}`}\n type='checkbox'\n className={`w-4 h-4 text-primary-600 appearance-none border border-gray-400 dark:border-neutral-400 rounded-[4px] checked:appearance-auto focus:ring-primary-500 dark:focus:ring-primary-600 focus:ring-2 cursor-pointer ${bgColor}`}\n onChange={(event) => checkboxConfig?.onItemCheck(event, id)}\n onKeyDown={handleKeyDown}\n onFocus={() => { lastFocusedCheckboxId = id; }}\n onBlur={() => { if (lastFocusedCheckboxId === id) lastFocusedCheckboxId = null; }}\n checked={checkedValue}\n disabled={isInputDisabled}\n />\n </Tooltip>\n <label htmlFor='checkbox-table-search-1' className='sr-only dark:text-neutral-200'>\n {'checkbox'}\n </label>\n </div>\n </td>\n );\n};\n\nexport const CheckboxCell = React.memo(CheckboxCellBase);\n"],"names":["lastFocusedCheckboxId","CheckboxCellBase","checkboxConfig","id","rowHovering","isDisabled","is_read","is_modified","is_row_modified","is_deleted","is_added","isDraggingOver","showNewItem","currentData","bgColorProp","is_incomplete","isInlineEditing","hasPendingEditsColumn","rowHasPendingEdits","pendingEditsTooltip","useTableConfig","inputRef","React","handleKeyDown","event","formEl","submitEvent","submitBtn","checkedValue","isInputDisabled","bgColor","cn","jsx","CHECKBOX_PENDING_EDITS_LEFT_OFFSET","jsxs","Tooltip","CheckboxCell"],"mappings":"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"}
@@ -1,76 +1,77 @@
1
- import { jsx as l, jsxs as R } from "react/jsx-runtime";
2
- import { Tooltip as _ } from "antd";
3
- import { useTableConfig as z } from "../../../../../providers/design-system-provider/hooks.es.js";
1
+ import { jsx as l, jsxs as $ } from "react/jsx-runtime";
2
+ import { Tooltip as w } from "antd";
3
+ import { useTableConfig as E } from "../../../../../providers/design-system-provider/hooks.es.js";
4
4
  import K from "../../../../../_virtual/index.es.js";
5
5
  import k from "react";
6
+ import { CHECKBOX_PENDING_EDITS_LEFT_OFFSET as R } from "../../constants.es.js";
6
7
  let b = null;
7
- const O = ({
8
- checkboxConfig: t,
8
+ const z = ({
9
+ checkboxConfig: r,
9
10
  id: e,
10
- rowHovering: r,
11
- isDisabled: M,
12
- is_read: j,
13
- is_modified: C,
14
- is_row_modified: S,
11
+ rowHovering: t,
12
+ isDisabled: C,
13
+ is_read: M,
14
+ is_modified: S,
15
+ is_row_modified: T,
15
16
  is_deleted: u,
16
- is_added: p,
17
- isDraggingOver: N,
18
- showNewItem: T,
17
+ is_added: d,
18
+ isDraggingOver: _,
19
+ showNewItem: F,
19
20
  currentData: a,
20
- bgColor: m,
21
+ bgColor: n,
21
22
  is_incomplete: f,
22
23
  isInlineEditing: c,
23
- hasPendingEditsColumn: $,
24
+ hasPendingEditsColumn: N,
24
25
  rowHasPendingEdits: x
25
26
  }) => {
26
- const w = z()?.t?.("Save or cancel pending changes first") ?? "Save or cancel pending changes first", o = k.useRef(null), B = (s) => {
27
+ const j = E()?.t?.("Save or cancel pending changes first") ?? "Save or cancel pending changes first", o = k.useRef(null), B = (s) => {
27
28
  if (s.key !== "Enter") return;
28
29
  s.preventDefault();
29
30
  const h = s.currentTarget.form;
30
31
  if (!h) return;
31
- const F = new Event("submit", { bubbles: !0, cancelable: !0 });
32
- h.dispatchEvent(F);
32
+ const O = new Event("submit", { bubbles: !0, cancelable: !0 });
33
+ h.dispatchEvent(O);
33
34
  const g = h.querySelector('button[type="submit"]');
34
35
  g && g.click();
35
- }, y = typeof t?.checkboxMetadata == "object" && t?.checkboxMetadata !== null && t?.checkboxMetadata.checkedIds?.includes(e) || t?.checkedIds?.includes(e), d = M || x || t?.checkboxMetadata?.checkedIds?.includes(e);
36
+ }, y = typeof r?.checkboxMetadata == "object" && r?.checkboxMetadata !== null && r?.checkboxMetadata.checkedIds?.includes(e) || r?.checkedIds?.includes(e), p = C || x || r?.checkboxMetadata?.checkedIds?.includes(e);
36
37
  k.useLayoutEffect(() => {
37
- b !== e || d || o.current && document.activeElement !== o.current && o.current.focus({ preventScroll: !0 });
38
- }, [e, d, y]);
39
- const n = K({
38
+ b !== e || p || o.current && document.activeElement !== o.current && o.current.focus({ preventScroll: !0 });
39
+ }, [e, p, y]);
40
+ const m = K({
40
41
  "bg-primary-50 dark:bg-primary-900": c,
41
- "bg-neutral-100 dark:bg-black-600": r === e && !c && !(u || a?.is_deleted) && !(p || a?.is_added),
42
- "bg-error-200 dark:bg-error-900": r === e && !c && (u || a?.is_deleted),
43
- "bg-success-100 dark:bg-success-800": r === e && !c && (p || a?.is_added),
44
- "bg-primary-50 dark:bg-black-700": !f && !j && T && r !== e && !c,
45
- "bg-warning-50 dark:bg-black-500": (f || C || S || a?.is_row_modified) && r !== e && !c,
46
- "bg-error-100 dark:bg-error-975": (u || a?.is_deleted) && r !== e && !c,
47
- "bg-success-50 dark:bg-success-900": (p || a?.is_added) && r !== e && !c,
48
- "bg-primary-50": N && !c,
49
- ...m && !c && { [m]: !0 }
42
+ "bg-neutral-100 dark:bg-black-600": t === e && !c && !(u || a?.is_deleted) && !(d || a?.is_added),
43
+ "bg-error-200 dark:bg-error-900": t === e && !c && (u || a?.is_deleted),
44
+ "bg-success-100 dark:bg-success-800": t === e && !c && (d || a?.is_added),
45
+ "bg-primary-50 dark:bg-black-700": !f && !M && F && t !== e && !c,
46
+ "bg-warning-50 dark:bg-black-500": (f || S || T || a?.is_row_modified) && t !== e && !c,
47
+ "bg-error-100 dark:bg-error-975": (u || a?.is_deleted) && t !== e && !c,
48
+ "bg-success-50 dark:bg-success-900": (d || a?.is_added) && t !== e && !c,
49
+ "bg-primary-50": _ && !c,
50
+ ...n && !c && { [n]: !0 }
50
51
  });
51
52
  return /* @__PURE__ */ l(
52
53
  "td",
53
54
  {
54
- className: `min-w-[40px] sticky right-0 z-30 ${n || "bg-white dark:bg-black-800"} h-[39px]`,
55
- style: { left: $ ? "28px" : "0" },
56
- children: /* @__PURE__ */ R(
55
+ className: `min-w-[40px] sticky right-0 z-30 ${m || "bg-white dark:bg-black-800"} h-10`,
56
+ style: { left: N ? R : "0" },
57
+ children: /* @__PURE__ */ $(
57
58
  "div",
58
59
  {
59
- className: "absolute w-full px-2.5 h-[39px] z-30 flex items-center justify-center",
60
+ className: "absolute w-full px-2.5 h-10 z-30 flex items-center",
60
61
  style: { boxShadow: "8px 0px 8px 0px rgba(0, 0, 0, 0.02)" },
61
62
  children: [
62
63
  /* @__PURE__ */ l(
63
- _,
64
+ w,
64
65
  {
65
- title: x ? w : t?.checkboxMetadata?.tooltip && t?.checkboxMetadata?.checkedIds?.includes(e) ? t?.checkboxMetadata?.tooltip : "",
66
+ title: x ? j : r?.checkboxMetadata?.tooltip && r?.checkboxMetadata?.checkedIds?.includes(e) ? r?.checkboxMetadata?.tooltip : "",
66
67
  children: /* @__PURE__ */ l(
67
68
  "input",
68
69
  {
69
70
  ref: o,
70
71
  id: `checkbox-table-search-${e}`,
71
72
  type: "checkbox",
72
- className: `w-4 h-4 text-primary-600 appearance-none border border-gray-400 dark:border-neutral-400 rounded-[4px] checked:appearance-auto focus:ring-primary-500 dark:focus:ring-primary-600 focus:ring-2 cursor-pointer ${n}`,
73
- onChange: (s) => t?.onItemCheck(s, e),
73
+ className: `w-4 h-4 text-primary-600 appearance-none border border-gray-400 dark:border-neutral-400 rounded-[4px] checked:appearance-auto focus:ring-primary-500 dark:focus:ring-primary-600 focus:ring-2 cursor-pointer ${m}`,
74
+ onChange: (s) => r?.onItemCheck(s, e),
74
75
  onKeyDown: B,
75
76
  onFocus: () => {
76
77
  b = e;
@@ -79,7 +80,7 @@ const O = ({
79
80
  b === e && (b = null);
80
81
  },
81
82
  checked: y,
82
- disabled: d
83
+ disabled: p
83
84
  },
84
85
  `checkbox-table-search-${e}`
85
86
  )
@@ -91,8 +92,8 @@ const O = ({
91
92
  )
92
93
  }
93
94
  );
94
- }, J = k.memo(O);
95
+ }, D = k.memo(z);
95
96
  export {
96
- J as CheckboxCell
97
+ D as CheckboxCell
97
98
  };
98
99
  //# sourceMappingURL=CheckboxCell.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxCell.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/CheckboxCell.tsx"],"sourcesContent":["import { Tooltip } from 'antd';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport cn from 'classnames';\nimport React from 'react';\n\ntype HighlightType = 'SUCCESS' | 'WARNING' | 'ERROR';\n\ntype CheckboxMetadata = {\n checkedIds: string[];\n tooltip: string;\n highlight: HighlightType;\n};\n\ntype TCheckboxCellProps = {\n checkboxConfig: {\n checkboxMetadata: CheckboxMetadata;\n checkedIds: string[];\n selectionDisabledRowIds: CheckboxMetadata;\n onItemCheck: (event: React.ChangeEvent<HTMLInputElement>, id: string) => void;\n };\n id: string;\n rowHovering?: string;\n isDisabled?: boolean;\n is_read?: boolean;\n is_modified?: boolean;\n is_row_modified?: boolean;\n is_deleted?: boolean;\n is_added?: boolean;\n isDraggingOver?: boolean;\n showNewItem?: boolean;\n currentData?: Record<string, unknown>;\n bgColor?: string;\n is_incomplete?: boolean;\n isInlineEditing?: boolean;\n hasPendingEditsColumn?: boolean;\n rowHasPendingEdits?: boolean;\n};\n\nlet lastFocusedCheckboxId: string | null = null;\n\nconst CheckboxCellBase = ({\n checkboxConfig,\n id,\n rowHovering,\n isDisabled,\n is_read,\n is_modified,\n is_row_modified,\n is_deleted,\n is_added,\n isDraggingOver,\n showNewItem,\n currentData,\n bgColor: bgColorProp,\n is_incomplete,\n isInlineEditing,\n hasPendingEditsColumn,\n rowHasPendingEdits,\n}: TCheckboxCellProps) => {\n const tableConfig = useTableConfig();\n const pendingEditsTooltip = tableConfig?.t?.('Save or cancel pending changes first') ?? 'Save or cancel pending changes first';\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key !== 'Enter') return;\n event.preventDefault();\n const formEl = event.currentTarget.form;\n if (!formEl) return;\n\n const submitEvent = new Event('submit', { bubbles: true, cancelable: true });\n formEl.dispatchEvent(submitEvent);\n\n const submitBtn = formEl.querySelector<HTMLButtonElement>('button[type=\"submit\"]');\n if (submitBtn) {\n submitBtn.click();\n }\n };\n\n const isCheckedObject = typeof checkboxConfig?.checkboxMetadata === 'object' && checkboxConfig?.checkboxMetadata !== null;\n const checkedValue = (isCheckedObject && checkboxConfig?.checkboxMetadata.checkedIds?.includes(id)) || checkboxConfig?.checkedIds?.includes(id);\n const isInputDisabled = isDisabled || rowHasPendingEdits || checkboxConfig?.checkboxMetadata?.checkedIds?.includes(id);\n\n React.useLayoutEffect(() => {\n if (lastFocusedCheckboxId !== id || isInputDisabled) return;\n if (inputRef.current && document.activeElement !== inputRef.current) {\n inputRef.current.focus({ preventScroll: true });\n }\n }, [id, isInputDisabled, checkedValue]);\n\n const bgColor = cn({\n 'bg-primary-50 dark:bg-primary-900': isInlineEditing,\n 'bg-neutral-100 dark:bg-black-600': rowHovering === id && !isInlineEditing && !(is_deleted || currentData?.is_deleted) && !(is_added || currentData?.is_added),\n 'bg-error-200 dark:bg-error-900': rowHovering === id && !isInlineEditing && (is_deleted || currentData?.is_deleted),\n 'bg-success-100 dark:bg-success-800': rowHovering === id && !isInlineEditing && (is_added || currentData?.is_added),\n 'bg-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && rowHovering !== id && !isInlineEditing,\n 'bg-warning-50 dark:bg-black-500':\n (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified) && rowHovering !== id && !isInlineEditing,\n 'bg-error-100 dark:bg-error-975': (is_deleted || currentData?.is_deleted) && rowHovering !== id && !isInlineEditing,\n 'bg-success-50 dark:bg-success-900': (is_added || currentData?.is_added) && rowHovering !== id && !isInlineEditing,\n 'bg-primary-50': isDraggingOver && !isInlineEditing,\n ...(bgColorProp && !isInlineEditing && { [bgColorProp]: true }),\n });\n\n return (\n <td\n className={`min-w-[40px] sticky right-0 z-30 ${bgColor ? bgColor : 'bg-white dark:bg-black-800'} h-[39px]`}\n style={{ left: hasPendingEditsColumn ? '28px' : '0' }}\n >\n <div\n className={`absolute w-full px-2.5 h-[39px] z-30 flex items-center justify-center`}\n style={{ boxShadow: '8px 0px 8px 0px rgba(0, 0, 0, 0.02)' }}\n >\n <Tooltip\n title={\n rowHasPendingEdits\n ? pendingEditsTooltip\n : checkboxConfig?.checkboxMetadata?.tooltip && checkboxConfig?.checkboxMetadata?.checkedIds?.includes(id)\n ? checkboxConfig?.checkboxMetadata?.tooltip\n : ''\n }\n >\n <input\n ref={inputRef}\n key={`checkbox-table-search-${id}`}\n id={`checkbox-table-search-${id}`}\n type='checkbox'\n className={`w-4 h-4 text-primary-600 appearance-none border border-gray-400 dark:border-neutral-400 rounded-[4px] checked:appearance-auto focus:ring-primary-500 dark:focus:ring-primary-600 focus:ring-2 cursor-pointer ${bgColor}`}\n onChange={(event) => checkboxConfig?.onItemCheck(event, id)}\n onKeyDown={handleKeyDown}\n onFocus={() => { lastFocusedCheckboxId = id; }}\n onBlur={() => { if (lastFocusedCheckboxId === id) lastFocusedCheckboxId = null; }}\n checked={checkedValue}\n disabled={isInputDisabled}\n />\n </Tooltip>\n <label htmlFor='checkbox-table-search-1' className='sr-only dark:text-neutral-200'>\n {'checkbox'}\n </label>\n </div>\n </td>\n );\n};\n\nexport const CheckboxCell = React.memo(CheckboxCellBase);\n"],"names":["lastFocusedCheckboxId","CheckboxCellBase","checkboxConfig","id","rowHovering","isDisabled","is_read","is_modified","is_row_modified","is_deleted","is_added","isDraggingOver","showNewItem","currentData","bgColorProp","is_incomplete","isInlineEditing","hasPendingEditsColumn","rowHasPendingEdits","pendingEditsTooltip","useTableConfig","inputRef","React","handleKeyDown","event","formEl","submitEvent","submitBtn","checkedValue","isInputDisabled","bgColor","cn","jsx","jsxs","Tooltip","CheckboxCell"],"mappings":"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"}
1
+ {"version":3,"file":"CheckboxCell.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/CheckboxCell.tsx"],"sourcesContent":["import { Tooltip } from 'antd';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport cn from 'classnames';\nimport React from 'react';\n\nimport { CHECKBOX_PENDING_EDITS_LEFT_OFFSET } from '../../constants';\n\ntype HighlightType = 'SUCCESS' | 'WARNING' | 'ERROR';\n\ntype CheckboxMetadata = {\n checkedIds: string[];\n tooltip: string;\n highlight: HighlightType;\n};\n\ntype TCheckboxCellProps = {\n checkboxConfig: {\n checkboxMetadata: CheckboxMetadata;\n checkedIds: string[];\n selectionDisabledRowIds: CheckboxMetadata;\n onItemCheck: (event: React.ChangeEvent<HTMLInputElement>, id: string) => void;\n };\n id: string;\n rowHovering?: string;\n isDisabled?: boolean;\n is_read?: boolean;\n is_modified?: boolean;\n is_row_modified?: boolean;\n is_deleted?: boolean;\n is_added?: boolean;\n isDraggingOver?: boolean;\n showNewItem?: boolean;\n currentData?: Record<string, unknown>;\n bgColor?: string;\n is_incomplete?: boolean;\n isInlineEditing?: boolean;\n hasPendingEditsColumn?: boolean;\n rowHasPendingEdits?: boolean;\n};\n\nlet lastFocusedCheckboxId: string | null = null;\n\nconst CheckboxCellBase = ({\n checkboxConfig,\n id,\n rowHovering,\n isDisabled,\n is_read,\n is_modified,\n is_row_modified,\n is_deleted,\n is_added,\n isDraggingOver,\n showNewItem,\n currentData,\n bgColor: bgColorProp,\n is_incomplete,\n isInlineEditing,\n hasPendingEditsColumn,\n rowHasPendingEdits,\n}: TCheckboxCellProps) => {\n const tableConfig = useTableConfig();\n const pendingEditsTooltip = tableConfig?.t?.('Save or cancel pending changes first') ?? 'Save or cancel pending changes first';\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key !== 'Enter') return;\n event.preventDefault();\n const formEl = event.currentTarget.form;\n if (!formEl) return;\n\n const submitEvent = new Event('submit', { bubbles: true, cancelable: true });\n formEl.dispatchEvent(submitEvent);\n\n const submitBtn = formEl.querySelector<HTMLButtonElement>('button[type=\"submit\"]');\n if (submitBtn) {\n submitBtn.click();\n }\n };\n\n const isCheckedObject = typeof checkboxConfig?.checkboxMetadata === 'object' && checkboxConfig?.checkboxMetadata !== null;\n const checkedValue = (isCheckedObject && checkboxConfig?.checkboxMetadata.checkedIds?.includes(id)) || checkboxConfig?.checkedIds?.includes(id);\n const isInputDisabled = isDisabled || rowHasPendingEdits || checkboxConfig?.checkboxMetadata?.checkedIds?.includes(id);\n\n React.useLayoutEffect(() => {\n if (lastFocusedCheckboxId !== id || isInputDisabled) return;\n if (inputRef.current && document.activeElement !== inputRef.current) {\n inputRef.current.focus({ preventScroll: true });\n }\n }, [id, isInputDisabled, checkedValue]);\n\n const bgColor = cn({\n 'bg-primary-50 dark:bg-primary-900': isInlineEditing,\n 'bg-neutral-100 dark:bg-black-600': rowHovering === id && !isInlineEditing && !(is_deleted || currentData?.is_deleted) && !(is_added || currentData?.is_added),\n 'bg-error-200 dark:bg-error-900': rowHovering === id && !isInlineEditing && (is_deleted || currentData?.is_deleted),\n 'bg-success-100 dark:bg-success-800': rowHovering === id && !isInlineEditing && (is_added || currentData?.is_added),\n 'bg-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && rowHovering !== id && !isInlineEditing,\n 'bg-warning-50 dark:bg-black-500':\n (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified) && rowHovering !== id && !isInlineEditing,\n 'bg-error-100 dark:bg-error-975': (is_deleted || currentData?.is_deleted) && rowHovering !== id && !isInlineEditing,\n 'bg-success-50 dark:bg-success-900': (is_added || currentData?.is_added) && rowHovering !== id && !isInlineEditing,\n 'bg-primary-50': isDraggingOver && !isInlineEditing,\n ...(bgColorProp && !isInlineEditing && { [bgColorProp]: true }),\n });\n\n return (\n <td\n className={`min-w-[40px] sticky right-0 z-30 ${bgColor ? bgColor : 'bg-white dark:bg-black-800'} h-10`}\n style={{ left: hasPendingEditsColumn ? CHECKBOX_PENDING_EDITS_LEFT_OFFSET : '0' }}\n >\n <div\n className={`absolute w-full px-2.5 h-10 z-30 flex items-center`}\n style={{ boxShadow: '8px 0px 8px 0px rgba(0, 0, 0, 0.02)' }}\n >\n <Tooltip\n title={\n rowHasPendingEdits\n ? pendingEditsTooltip\n : checkboxConfig?.checkboxMetadata?.tooltip && checkboxConfig?.checkboxMetadata?.checkedIds?.includes(id)\n ? checkboxConfig?.checkboxMetadata?.tooltip\n : ''\n }\n >\n <input\n ref={inputRef}\n key={`checkbox-table-search-${id}`}\n id={`checkbox-table-search-${id}`}\n type='checkbox'\n className={`w-4 h-4 text-primary-600 appearance-none border border-gray-400 dark:border-neutral-400 rounded-[4px] checked:appearance-auto focus:ring-primary-500 dark:focus:ring-primary-600 focus:ring-2 cursor-pointer ${bgColor}`}\n onChange={(event) => checkboxConfig?.onItemCheck(event, id)}\n onKeyDown={handleKeyDown}\n onFocus={() => { lastFocusedCheckboxId = id; }}\n onBlur={() => { if (lastFocusedCheckboxId === id) lastFocusedCheckboxId = null; }}\n checked={checkedValue}\n disabled={isInputDisabled}\n />\n </Tooltip>\n <label htmlFor='checkbox-table-search-1' className='sr-only dark:text-neutral-200'>\n {'checkbox'}\n </label>\n </div>\n </td>\n );\n};\n\nexport const CheckboxCell = React.memo(CheckboxCellBase);\n"],"names":["lastFocusedCheckboxId","CheckboxCellBase","checkboxConfig","id","rowHovering","isDisabled","is_read","is_modified","is_row_modified","is_deleted","is_added","isDraggingOver","showNewItem","currentData","bgColorProp","is_incomplete","isInlineEditing","hasPendingEditsColumn","rowHasPendingEdits","pendingEditsTooltip","useTableConfig","inputRef","React","handleKeyDown","event","formEl","submitEvent","submitBtn","checkedValue","isInputDisabled","bgColor","cn","jsx","CHECKBOX_PENDING_EDITS_LEFT_OFFSET","jsxs","Tooltip","CheckboxCell"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),De=require("../../../../../hooks/useTheme.cjs.js"),M=require("../../../../../utils/formatters.cjs.js"),qe=require("../../../../../constants/table.cjs.js"),Oe=require("../../../../../providers/design-system-provider/hooks.cjs.js"),W=require("../../../../tooltip/Tooltip.cjs.js"),Ve=require("../../../typography/Typography.cjs.js"),Re=require("@mui/icons-material"),k=require("../../../../../_virtual/index.cjs.js"),a=require("react"),ze=require("react-router-dom"),Ie=require("../../context.cjs.js"),Fe=require("./InlineEditField.cjs.js"),g=require("../../../../icon/icons.generated.cjs.js");let U;const oe=e=>{const t=Number(e);if(Number.isNaN(t)||e===null||e===void 0)return"0ms";if(t>=864e5){const h=Math.floor(t/864e5),d=Math.floor(t%864e5/36e5),i=Math.floor(t%36e5/6e4),x=Math.floor(t%6e4/1e3);return`${h}d ${d}h ${i}m ${x}s`}if(t>=36e5){const h=Math.floor(t/36e5),d=Math.floor(t%36e5/6e4),i=Math.floor(t%6e4/1e3);return`${h}h ${d}m ${i}s`}if(t>=6e4){const h=Math.floor(t/6e4),d=Math.floor(t%6e4/1e3);return`${h}m ${d}s`}return t>=1e3?`${(t/1e3).toFixed(2)}s`:`${t}ms`},Ae=({children:e,withLink:t,linkTo:h,rowData:d,disableRowClick:i})=>t&&!i?o.jsx(ze.Link,{to:h?.(d?.id,d)||"",children:e}):e,Ke=({cell:e,id:t,nextWidthSum:h,isLastCell:d,rowHovering:i,index:x,isFirstStickyCell:te,handleCellClick:re,currentData:y,highlightSubstring:L,is_read:ae,is_modified:se,is_row_modified:ne,is_deleted:D,is_added:q,level:b,inlineEditing:v,isInlineEditing:f,setRowHovering:$,handleCellValueChange:ue,cellRef:ie,handleUpdateCellData:le,registerValidation:ce,loadingExpand:me,toggleRowExpand:B,isDraggingOver:de,isLoading:S,is_incomplete:Y,pendingEdit:s,hasPendingEdit:l,pendingValidationError:fe})=>{const{cascadingTableConfig:G,originalsOnly:pe,maxLevel:he,showNewItem:we,expandedRows:xe,rowLinkConfig:O,multiSelectConfig:be,cellEditing:V,cellEditingValue:R,allowInlineEdit:J,fieldOperationLoading:ye,pendingEdits:ve}=a.useContext(Ie.TableContext),ke=Oe.useTableConfig(),z=(e?.column?.key?e?.row?.original?.__cellMetadata?.[e.column.key]:void 0)?.is_locked??e?.column?.is_locked,I=(e?.column?.key?ve?.[t]?.[e.column.key]?.validationError:null)||fe||null,Q=v===e.column.key&&e?.column?.canEdit&&!z&&!e?.column?.is_disabled,Te=ye===`${t}-${e?.column?.id}`,{theme:ge}=De.useTheme(),Ce=ge==="dark",je=a.useCallback(()=>$(t),[$,t]),Ne=a.useCallback(()=>$(null),[$]),C=ke?.formatDuration,[n,p]=a.useState(e?.column?.dataType==="duration"&&e?.value?C?C(e.value):oe(e.value):e.value),[w,X]=a.useState(null),[F,_e]=a.useState(!1),[Me,Z]=a.useState(!1),[Le,H]=a.useState(!1),j=a.useRef(null),N=a.useRef(),_=a.useRef(),{selectedColumnIds:P=[]}=be||{},E=!Object.prototype.hasOwnProperty.call(e?.column?.meta??{},"shouldHighlight")||e?.column?.meta?.shouldHighlight,ee=a.useCallback(()=>{j.current&&_e(j.current.scrollWidth>j.current.clientWidth)},[]),A=a.useCallback(r=>{N.current&&clearTimeout(N.current),r?Z(!0):N.current=setTimeout(()=>Z(!1),200)},[]),K=a.useCallback(r=>{_.current&&clearTimeout(_.current),r?H(!0):_.current=setTimeout(()=>H(!1),200)},[]),T=k({"bg-amber-100 dark:bg-amber-900/30":l,"bg-neutral-100 dark:bg-black-600":i===t&&!f&&!l&&!(D||y?.is_deleted)&&!(q||y?.is_added),"bg-error-200 dark:bg-error-900":i===t&&!f&&!l&&(D||y?.is_deleted),"bg-success-100 dark:bg-success-800":i===t&&!f&&!l&&(q||y?.is_added),"bg-primary-50 dark:bg-black-700":!Y&&!ae&&we&&!S&&i!==t&&!f&&!l,"bg-warning-50 dark:bg-black-500":(Y||se||ne||y?.is_row_modified)&&!S&&i!==t&&!f&&!l,"bg-error-100 dark:bg-error-975":(D||y?.is_deleted)&&!S&&i!==t&&!f&&!l,"bg-success-50 dark:bg-success-900":(q||y?.is_added)&&!S&&i!==t&&!f&&!l,"bg-primary-50 dark:bg-primary-900":(de||f)&&!l,"bg-primary-50 dark:bg-primary-800":P?.includes(e.column.id)&&!f&&!l,[qe.getTableRowBgClassNamesByStatus[e?.row?.original?.__rowBgStatus]]:e?.row?.original?.__rowBgStatus&&!f&&!l}),$e=r=>{e.column?.disableRowClick||re(r)};a.useEffect(()=>(e?.row?.original?.status==="running"&&e.column?.dataType==="duration"&&(U=setInterval(()=>{const u=new Date(M.formatDate(e?.row?.original?.created_at||e?.row?.original?.executed_on,{withTime:!0,format:"yyyy-MM-dd HH:mm:ss"})),m=Math.abs(new Date().getTime()-new Date(u).getTime());p(C?C(m):oe(m))},500)),()=>{U&&clearInterval(U)}),[n,e.value,e?.row?.original?.created_at,e?.row?.original?.executed_on,e?.row?.original?.status,e.column?.dataType,C]),a.useEffect(()=>{(e?.column?.tooltipCellKey||e?.column?.type?.toLowerCase()==="url")&&(e?.column?.type?.toLowerCase()==="url"?X(e?.value):X(e?.row?.original?.[String(e?.column?.tooltipCellKey)]))},[e?.column?.tooltipCellKey,e?.row?.original,e?.column?.type,e?.value]),a.useEffect(()=>{if(e?.column?.type?.toLowerCase()==="currency")if(s?.value!==void 0){const r=e?.row?.original?.__rawData,u=e?.column?.Header,m=s?.meta?.currency_code||r?.[u]?.currency_code||"USD";p(M.formatCurrency(s.value,m))}else{const r=e?.row?.original?.__rawData,u=e?.column?.Header;p(M.formatCurrency(e?.value,r?.[u]?.currency_code||"USD"))}},[e?.value,e?.column?.type,e?.column?.Header,e?.row?.original?.__rawData,s?.value,s?.meta?.currency_code]),a.useEffect(()=>{e?.column?.type?.toLowerCase()==="percentage"&&(s?.value!==void 0?p(s.value?.toString()+"%"||""):p(e?.value?.toString()+"%"||""))},[e?.value,e?.column?.type,s?.value]),a.useEffect(()=>{const r=e?.column?.type?.toLowerCase()||"";if(["date","datetime"].includes(r))if(s?.value!==void 0){const u=r==="datetime",m=M.formatDate(s.value,{withTime:u,skipTimezone:!0});p(m||s.value)}else p(e.value)},[e?.value,e?.column?.type,s?.value]),a.useEffect(()=>{const r=e?.column?.type?.toLowerCase()||"";["currency","percentage","duration","boolean","date","datetime"].includes(r)||(s?.value!==void 0?p(s.value):e?.column?.dataType!=="duration"&&p(e.value))},[e?.value,e?.column?.type,e?.column?.dataType,s?.value]),a.useEffect(()=>{if(e?.column?.type?.toLowerCase()==="boolean"&&J){const r=s?.value!==void 0?s.value:e?.value;p(r===!0||r==="true"||r==="True"||r==="Yes"||r===1?"Yes":"No")}},[e?.value,e?.column?.type,J,s?.value]),a.useEffect(()=>()=>{N.current&&clearTimeout(N.current),_.current&&clearTimeout(_.current)},[]);const c=a.isValidElement(n);return o.jsxs("td",{id:e.value,"data-column-key":e?.column?.key,...e.getCellProps(),onClick:O?.isEnabled?void 0:$e,className:k("h-10",{"sticky left-0":e?.column?.sticky,relative:!e?.column?.sticky,"w-full":d,"overflow-visible":v===e.column.key,"overflow-x-hidden overflow-y-visible":v!==e.column.key&&c,"overflow-hidden":v!==e.column.key&&!c},I&&!Q?"outline outline-2 outline-error-500 -outline-offset-2 z-[5]":"",`${T||"bg-white dark:bg-black-800"}`),style:{minWidth:`${e.column.width}px`,maxWidth:`${e.column.width}px`,right:e?.column?.sticky?`${h}px`:"0px",paddingLeft:b>0&&x===0?`${b*16}px`:void 0},onMouseEnter:je,onMouseLeave:Ne,children:[o.jsx(Ae,{withLink:O?.isEnabled,linkTo:O?.linkTo||void 0,rowData:e?.row?.original,disableRowClick:e?.column?.disableRowClick,children:(Array.isArray(V)?V.includes(`${t}-${e?.column?.id}`):V===`${t}-${e?.column?.id}`)?o.jsxs("div",{className:"h-10 top-0 font-medium font-inter w-full absolute flex items-center px-4",children:[o.jsx("span",{className:"text-neutral-400 dark:text-black-400 truncate",children:(()=>{const r=`${t}-${e?.column?.id}`,u=typeof R=="object"?R?.[r]:R,m=e?.column?.type?.toLowerCase();if(m==="boolean")return u===!0||u==="true"||u==="True"?"Yes":"No";if((m==="date"||m==="datetime")&&u){const Se=m==="datetime";return M.formatDate(u,{withTime:Se,skipTimezone:!0})||String(u)}return u!=null?String(u):n})()}),o.jsx("div",{className:"ml-2 flex items-center gap-1.5",children:o.jsx(g.LoadingSpinnerIcon,{className:"spinner text-neutral-600 dark:text-white",size:12})})]}):v===e.column.key&&e?.column?.canEdit&&!z&&!e?.column?.is_disabled?o.jsx("div",{className:"h-10 w-full absolute top-0 left-0 flex items-center",style:{marginLeft:b>0&&x===0?`-${b*16}px`:void 0,width:b>0&&x===0?`calc(100% + ${b*16}px)`:"100%"},children:o.jsx(Fe.InlineEditField,{cell:e,id:t,inlineEditing:v,cellRef:ie,handleCellValueChange:ue,handleUpdateCellData:le,registerValidation:ce})}):o.jsxs(o.Fragment,{children:[b>0&&x===0&&o.jsx("div",{className:"h-10 border-l border-neutral-300 dark:border-black-600 ml-2"}),o.jsx("div",{className:"min-h-6",children:o.jsx(W,{title:w&&e?.column?.type?.toLowerCase()!=="url"?w:void 0,hideTooltip:!w||e?.column?.type?.toLowerCase()==="url",delayShow:!0,placement:"top",children:o.jsxs("div",{className:k(`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 ${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":P?.includes(e.column.id)}),style:e?.column?.sticky&&te?{boxShadow:`${Ce?"-8px 0px 8px 0px rgba(255, 255, 255, 0.01)":"-8px 0px 8px 0px rgba(0, 0, 0, 0.02)"}`}:{},children:[G?.isCascading&&!pe&&x===0&&o.jsx("div",{className:k("w-[22px] h-10 flex items-center px-4",`${T||"bg-white dark:bg-black-800"}`),id:"cascading",children:he>b&&(e?.row?.original?.__has_children||G?.showAllDropdown)&&o.jsx("div",{children:me?o.jsx(g.LoadingSpinnerIcon,{className:"text-neutral-600 dark:text-white",size:8}):o.jsx("div",{children:xe?.[t]?.isOpen?o.jsx(g.KeyboardArrowDownIcon,{size:20,className:"text-neutral-400 dark:text-neutral-400",onClick:r=>{B(),r.stopPropagation()}}):o.jsx(g.KeyboardArrowRightFilledIcon,{size:20,className:"text-neutral-400 dark:text-neutral-400",onClick:r=>{B(),r.stopPropagation()}})})})}),e?.column?.type?.toLowerCase()==="url"&&w?o.jsx(W,{title:o.jsx("div",{onMouseEnter:()=>A(!0),onMouseLeave:()=>A(!1),children:o.jsx("a",{href:w,target:"_blank",rel:"noopener noreferrer",onClick:r=>r.stopPropagation(),children:o.jsxs("div",{className:"flex gap-1 items-center w-full",children:[o.jsx("div",{className:"w-4 h-4",children:o.jsx(g.LinkIcon,{height:16,width:16})}),o.jsx(Ve.Typography,{variant:"medium",size:"small",className:"truncate",appearance:"custom",children:w}),o.jsx(Re.OpenInNewRounded,{sx:{height:"16px",width:"16px",color:"#016DCF"}})]})})}),placement:"top",open:Me,onOpenChange:A,className:"block w-full min-w-0 overflow-hidden",children:o.jsx("div",{className:"w-full h-full flex items-center px-4 min-w-0 overflow-hidden text-primary-400",children:o.jsx("span",{ref:j,onMouseEnter:ee,className:"truncate w-full",children:L&&E&&!a.isValidElement(n)&&typeof n!="object"?L(n):n})})}):o.jsx(W,{title:F&&n&&!c?o.jsx("div",{onMouseEnter:()=>K(!0),onMouseLeave:()=>K(!1),className:"max-h-96 overflow-y-auto whitespace-pre-wrap break-words no-scroll",children:String(n)}):void 0,placement:"top",delayShow:!0,hideTooltip:!!w,open:F&&!w&&!c?Le:void 0,onOpenChange:F&&!w&&!c?K:void 0,className:k("block w-full min-w-0",c?"overflow-x-hidden overflow-y-visible":"overflow-hidden"),children:o.jsx("div",{className:k("w-full h-full flex items-center px-4 min-w-0",c?"overflow-x-hidden overflow-y-visible":"overflow-hidden"),children:o.jsx("span",{ref:c?void 0:j,onMouseEnter:c?void 0:ee,className:k(c?"flex min-w-0 max-w-full items-center justify-start gap-1":"truncate w-full"),children:L&&E&&!a.isValidElement(n)&&typeof n!="object"?L(n):a.isValidElement(n)?typeof n.type=="string"?n:a.cloneElement(n,{...n.props,containerWidth:e.column.width}):n})})})]})})})]})}),I&&!Q&&o.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-10 flex items-end pointer-events-none z-[5]",children:o.jsx("div",{className:"w-full bg-error-50 dark:bg-error-975 px-1.5 py-0.5 truncate",children:o.jsx("span",{className:"text-error-600 text-2xs font-medium leading-none",children:I})})}),Te&&!(v===e.column.key&&e?.column?.canEdit&&!z&&!e?.column?.is_disabled)&&o.jsx("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:o.jsx(g.LoadingSpinnerIcon,{className:"text-primary-600 dark:text-white",size:8})})]},x)},We=a.memo(Ke);exports.DataCell=We;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),Oe=require("../../../../../hooks/useTheme.cjs.js"),D=require("../../../../../utils/formatters.cjs.js"),Ve=require("../../../../../constants/table.cjs.js"),qe=require("../../../../../providers/design-system-provider/hooks.cjs.js"),U=require("../../../../tooltip/Tooltip.cjs.js"),ze=require("../../../typography/Typography.cjs.js"),Ae=require("@mui/icons-material"),k=require("../../../../../_virtual/index.cjs.js"),a=require("react"),Fe=require("react-router-dom"),Ee=require("../../context.cjs.js"),Ke=require("./InlineEditField.cjs.js"),C=require("../../constants.cjs.js"),g=require("../../../../icon/icons.generated.cjs.js");let Y;const re=e=>{const t=Number(e);if(Number.isNaN(t)||e===null||e===void 0)return"0ms";if(t>=864e5){const h=Math.floor(t/864e5),f=Math.floor(t%864e5/36e5),i=Math.floor(t%36e5/6e4),b=Math.floor(t%6e4/1e3);return`${h}d ${f}h ${i}m ${b}s`}if(t>=36e5){const h=Math.floor(t/36e5),f=Math.floor(t%36e5/6e4),i=Math.floor(t%6e4/1e3);return`${h}h ${f}m ${i}s`}if(t>=6e4){const h=Math.floor(t/6e4),f=Math.floor(t%6e4/1e3);return`${h}m ${f}s`}return t>=1e3?`${(t/1e3).toFixed(2)}s`:`${t}ms`},We=({children:e,withLink:t,linkTo:h,rowData:f,disableRowClick:i})=>t&&!i?o.jsx(Fe.Link,{to:h?.(f?.id,f)||"",children:e}):e,Ue=({cell:e,id:t,nextWidthSum:h,isLastCell:f,rowHovering:i,index:b,isFirstStickyCell:ae,handleCellClick:se,currentData:x,highlightSubstring:M,is_read:ne,is_modified:ue,is_row_modified:ie,is_deleted:R,is_added:I,level:y,inlineEditing:v,isInlineEditing:c,setRowHovering:$,handleCellValueChange:le,cellRef:ce,handleUpdateCellData:me,registerValidation:de,loadingExpand:fe,toggleRowExpand:B,isDraggingOver:pe,isLoading:_,is_incomplete:X,pendingEdit:s,hasPendingEdit:l,pendingValidationError:he})=>{const{cascadingTableConfig:G,originalsOnly:we,maxLevel:be,showNewItem:ye,expandedRows:xe,rowLinkConfig:O,multiSelectConfig:ve,cellEditing:V,cellEditingValue:q,allowInlineEdit:H,fieldOperationLoading:ke,pendingEdits:Te,selectedRowId:z}=a.useContext(Ee.TableContext),Ce=z!=null&&String(z)===String(t),ge=qe.useTableConfig(),A=(e?.column?.key?e?.row?.original?.__cellMetadata?.[e.column.key]:void 0)?.is_locked??e?.column?.is_locked,F=(e?.column?.key?Te?.[t]?.[e.column.key]?.validationError:null)||he||null,P=v===e.column.key&&e?.column?.canEdit&&!A&&!e?.column?.is_disabled,_e=ke===`${t}-${e?.column?.id}`,{theme:je}=Oe.useTheme(),Ne=je==="dark",Le=a.useCallback(()=>$(t),[$,t]),Se=a.useCallback(()=>$(null),[$]),j=ge?.formatDuration,[n,p]=a.useState(e?.column?.dataType==="duration"&&e?.value?j?j(e.value):re(e.value):e.value),[w,J]=a.useState(null),[E,De]=a.useState(!1),[Me,Q]=a.useState(!1),[$e,Z]=a.useState(!1),N=a.useRef(null),L=a.useRef(),S=a.useRef(),{selectedColumnIds:ee=[]}=ve||{},oe=!Object.prototype.hasOwnProperty.call(e?.column?.meta??{},"shouldHighlight")||e?.column?.meta?.shouldHighlight,te=a.useCallback(()=>{N.current&&De(N.current.scrollWidth>N.current.clientWidth)},[]),K=a.useCallback(r=>{L.current&&clearTimeout(L.current),r?Q(!0):L.current=setTimeout(()=>Q(!1),200)},[]),W=a.useCallback(r=>{S.current&&clearTimeout(S.current),r?Z(!0):S.current=setTimeout(()=>Z(!1),200)},[]),T=k({"bg-amber-100 dark:bg-amber-900/30":l,"bg-neutral-100 dark:bg-black-600":i===t&&!c&&!l&&!(R||x?.is_deleted)&&!(I||x?.is_added),"bg-error-200 dark:bg-error-900":i===t&&!c&&!l&&(R||x?.is_deleted),"bg-success-100 dark:bg-success-800":i===t&&!c&&!l&&(I||x?.is_added),"bg-primary-50 dark:bg-black-700":!X&&!ne&&ye&&!_&&i!==t&&!c&&!l,"bg-warning-50 dark:bg-black-500":(X||ue||ie||x?.is_row_modified)&&!_&&i!==t&&!c&&!l,"bg-error-100 dark:bg-error-975":(R||x?.is_deleted)&&!_&&i!==t&&!c&&!l,"bg-success-50 dark:bg-success-900":(I||x?.is_added)&&!_&&i!==t&&!c&&!l,"bg-primary-50 dark:bg-primary-900":(pe||c)&&!l,"bg-primary-50 dark:bg-primary-800":ee?.includes(e.column.id)&&!c&&!l,"bg-primary-100 dark:bg-primary-950":Ce&&i!==t&&!c&&!l&&!_,[Ve.getTableRowBgClassNamesByStatus[e?.row?.original?.__rowBgStatus]]:e?.row?.original?.__rowBgStatus&&!c&&!l}),Re=r=>{e.column?.disableRowClick||se(r)};a.useEffect(()=>(e?.row?.original?.status==="running"&&e.column?.dataType==="duration"&&(Y=setInterval(()=>{const u=new Date(D.formatDate(e?.row?.original?.created_at||e?.row?.original?.executed_on,{withTime:!0,format:"yyyy-MM-dd HH:mm:ss"})),d=Math.abs(new Date().getTime()-new Date(u).getTime());p(j?j(d):re(d))},500)),()=>{Y&&clearInterval(Y)}),[n,e.value,e?.row?.original?.created_at,e?.row?.original?.executed_on,e?.row?.original?.status,e.column?.dataType,j]),a.useEffect(()=>{(e?.column?.tooltipCellKey||e?.column?.type?.toLowerCase()==="url")&&(e?.column?.type?.toLowerCase()==="url"?J(e?.value):J(e?.row?.original?.[String(e?.column?.tooltipCellKey)]))},[e?.column?.tooltipCellKey,e?.row?.original,e?.column?.type,e?.value]),a.useEffect(()=>{if(e?.column?.type?.toLowerCase()==="currency")if(s?.value!==void 0){const r=e?.row?.original?.__rawData,u=e?.column?.Header,d=s?.meta?.currency_code||r?.[u]?.currency_code||"USD";p(D.formatCurrency(s.value,d))}else{const r=e?.row?.original?.__rawData,u=e?.column?.Header;p(D.formatCurrency(e?.value,r?.[u]?.currency_code||"USD"))}},[e?.value,e?.column?.type,e?.column?.Header,e?.row?.original?.__rawData,s?.value,s?.meta?.currency_code]),a.useEffect(()=>{e?.column?.type?.toLowerCase()==="percentage"&&(s?.value!==void 0?p(s.value?.toString()+"%"||""):p(e?.value?.toString()+"%"||""))},[e?.value,e?.column?.type,s?.value]),a.useEffect(()=>{const r=e?.column?.type?.toLowerCase()||"";if(["date","datetime"].includes(r))if(s?.value!==void 0){const u=r==="datetime",d=D.formatDate(s.value,{withTime:u,skipTimezone:!0});p(d||s.value)}else p(e.value)},[e?.value,e?.column?.type,s?.value]),a.useEffect(()=>{const r=e?.column?.type?.toLowerCase()||"";["currency","percentage","duration","boolean","date","datetime"].includes(r)||(s?.value!==void 0?p(s.value):e?.column?.dataType!=="duration"&&p(e.value))},[e?.value,e?.column?.type,e?.column?.dataType,s?.value]),a.useEffect(()=>{if(e?.column?.type?.toLowerCase()==="boolean"&&H){const r=s?.value!==void 0?s.value:e?.value;p(r===!0||r==="true"||r==="True"||r==="Yes"||r===1?"Yes":"No")}},[e?.value,e?.column?.type,H,s?.value]),a.useEffect(()=>()=>{L.current&&clearTimeout(L.current),S.current&&clearTimeout(S.current)},[]);const m=a.isValidElement(n);return o.jsxs("td",{id:e.value,"data-column-key":e?.column?.key,...e.getCellProps(),onClick:O?.isEnabled?void 0:Re,className:k("h-10",{"sticky left-0":e?.column?.sticky,relative:!e?.column?.sticky,"w-full":f,"overflow-visible":v===e.column.key,"overflow-x-hidden overflow-y-visible":v!==e.column.key&&m,"overflow-hidden":v!==e.column.key&&!m},F&&!P?"outline outline-2 outline-error-500 -outline-offset-2 z-[5]":"",`${T||"bg-white dark:bg-black-800"}`),style:{minWidth:`${e.column.width}px`,maxWidth:`${e.column.width}px`,right:e?.column?.sticky?`${h}px`:C.CELL_DEFAULT_RIGHT_OFFSET,paddingLeft:y>0&&b===0?`${y*C.CELL_INDENT_PER_LEVEL_PX}px`:void 0},onMouseEnter:Le,onMouseLeave:Se,children:[o.jsx(We,{withLink:O?.isEnabled,linkTo:O?.linkTo||void 0,rowData:e?.row?.original,disableRowClick:e?.column?.disableRowClick,children:(Array.isArray(V)?V.includes(`${t}-${e?.column?.id}`):V===`${t}-${e?.column?.id}`)?o.jsxs("div",{className:"h-10 top-0 font-medium font-inter w-full absolute flex items-center px-4",children:[o.jsx("span",{className:"text-neutral-400 dark:text-black-400 truncate",children:(()=>{const r=`${t}-${e?.column?.id}`,u=typeof q=="object"?q?.[r]:q,d=e?.column?.type?.toLowerCase();if(d==="boolean")return u===!0||u==="true"||u==="True"?"Yes":"No";if((d==="date"||d==="datetime")&&u){const Ie=d==="datetime";return D.formatDate(u,{withTime:Ie,skipTimezone:!0})||String(u)}return u!=null?String(u):n})()}),o.jsx("div",{className:"ml-2 flex items-center gap-1.5",children:o.jsx(g.LoadingSpinnerIcon,{className:"spinner text-neutral-600 dark:text-white",size:12})})]}):v===e.column.key&&e?.column?.canEdit&&!A&&!e?.column?.is_disabled?o.jsx("div",{className:"h-10 w-full absolute top-0 left-0 flex items-center",style:{marginLeft:y>0&&b===0?`-${y*C.CELL_INDENT_PER_LEVEL_PX}px`:void 0,width:y>0&&b===0?`calc(100% + ${y*C.CELL_INDENT_PER_LEVEL_PX}px)`:"100%"},children:o.jsx(Ke.InlineEditField,{cell:e,id:t,inlineEditing:v,cellRef:ce,handleCellValueChange:le,handleUpdateCellData:me,registerValidation:de})}):o.jsxs(o.Fragment,{children:[y>0&&b===0&&o.jsx("div",{className:"h-10 border-l border-neutral-300 dark:border-black-600 ml-2"}),o.jsx("div",{className:"min-h-6",children:o.jsx(U,{title:w&&e?.column?.type?.toLowerCase()!=="url"?w:void 0,hideTooltip:!w||e?.column?.type?.toLowerCase()==="url",delayShow:!0,placement:"top",children:o.jsxs("div",{className:k(`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 ${T||"bg-white dark:bg-black-800"}`,m?"overflow-x-hidden overflow-y-visible":"overflow-x-hidden",{"border border-b-0 border-t-0 border-primary-600 dark:border-blue-800":ee?.includes(e.column.id)}),style:e?.column?.sticky&&ae?{boxShadow:Ne?C.CELL_STICKY_SHADOW_DARK:C.CELL_STICKY_SHADOW_LIGHT}:{},children:[G?.isCascading&&!we&&b===0&&o.jsx("div",{className:k("w-[22px] h-10 flex items-center px-4",`${T||"bg-white dark:bg-black-800"}`),id:"cascading",children:be>y&&(e?.row?.original?.__has_children||G?.showAllDropdown)&&o.jsx("div",{children:fe?o.jsx(g.LoadingSpinnerIcon,{className:"text-neutral-600 dark:text-white",size:8}):o.jsx("div",{children:xe?.[t]?.isOpen?o.jsx(g.KeyboardArrowDownIcon,{size:20,className:"text-neutral-400 dark:text-neutral-400",onClick:r=>{B(),r.stopPropagation()}}):o.jsx(g.KeyboardArrowRightFilledIcon,{size:20,className:"text-neutral-400 dark:text-neutral-400",onClick:r=>{B(),r.stopPropagation()}})})})}),e?.column?.type?.toLowerCase()==="url"&&w?o.jsx(U,{title:o.jsx("div",{onMouseEnter:()=>K(!0),onMouseLeave:()=>K(!1),children:o.jsx("a",{href:w,target:"_blank",rel:"noopener noreferrer",onClick:r=>r.stopPropagation(),children:o.jsxs("div",{className:"flex gap-1 items-center w-full",children:[o.jsx("div",{className:"w-4 h-4",children:o.jsx(g.LinkIcon,{height:16,width:16})}),o.jsx(ze.Typography,{variant:"medium",size:"small",className:"truncate",appearance:"custom",children:w}),o.jsx(Ae.OpenInNewRounded,{sx:{height:"16px",width:"16px",color:"#016DCF"}})]})})}),placement:"top",open:Me,onOpenChange:K,className:"block w-full min-w-0 overflow-hidden",children:o.jsx("div",{className:"w-full h-full flex items-center px-4 min-w-0 overflow-hidden text-primary-400",children:o.jsx("span",{ref:N,onMouseEnter:te,className:"truncate w-full",children:M&&oe&&!a.isValidElement(n)&&typeof n!="object"?M(n):n})})}):o.jsx(U,{title:E&&n&&!m?o.jsx("div",{onMouseEnter:()=>W(!0),onMouseLeave:()=>W(!1),className:"max-h-96 overflow-y-auto whitespace-pre-wrap break-words no-scroll",children:String(n)}):void 0,placement:"top",delayShow:!0,hideTooltip:!!w,open:E&&!w&&!m?$e:void 0,onOpenChange:E&&!w&&!m?W:void 0,className:k("block w-full min-w-0",m?"overflow-x-hidden overflow-y-visible":"overflow-hidden"),children:o.jsx("div",{className:k("w-full h-full flex items-center px-4 min-w-0",m?"overflow-x-hidden overflow-y-visible":"overflow-hidden"),children:o.jsx("span",{ref:m?void 0:N,onMouseEnter:m?void 0:te,className:k(m?"flex min-w-0 max-w-full items-center justify-start gap-1":"truncate w-full"),children:M&&oe&&!a.isValidElement(n)&&typeof n!="object"?M(n):a.isValidElement(n)?typeof n.type=="string"?n:a.cloneElement(n,{...n.props,containerWidth:e.column.width}):n})})})]})})})]})}),F&&!P&&o.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-10 flex items-end pointer-events-none z-[5]",children:o.jsx("div",{className:"w-full bg-error-50 dark:bg-error-975 px-1.5 py-0.5 truncate",children:o.jsx("span",{className:"text-error-600 text-2xs font-medium leading-none",children:F})})}),_e&&!(v===e.column.key&&e?.column?.canEdit&&!A&&!e?.column?.is_disabled)&&o.jsx("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:o.jsx(g.LoadingSpinnerIcon,{className:"text-primary-600 dark:text-white",size:8})})]},b)},Ye=a.memo(Ue);exports.DataCell=Ye;
2
2
  //# sourceMappingURL=DataCell.cjs.js.map