@peak-ai/canvas 1.6.1 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -7,10 +7,10 @@ if(value===null||value===undefined){return""}var str=String(value);return str.tr
|
|
|
7
7
|
* Generates a stable hash based on unique value sets per column.
|
|
8
8
|
* This hash is order-independent - it only changes when the set of unique values changes,
|
|
9
9
|
* not when rows are reordered (e.g., during sorting).
|
|
10
|
-
*/function getUniqueValuesHash(data,columnWithChipClass){if(!Array.isArray(data)||data.length===0){return""}var availableKeys=Object.keys(data[0]||{});var hashParts={};Object.keys(columnWithChipClass).forEach(function(columnKey){if(!availableKeys.includes(columnKey)){return}var chipMode=getChipMode(columnWithChipClass,columnKey);if(chipMode==="useRandom"){var uniqueNormalizedValues=new Set;data.forEach(function(row){var value=row[columnKey];var normalizedKey=normalizeValue(value);if(normalizedKey){uniqueNormalizedValues.add(normalizedKey)}});var sortedUniqueValues=Array.from(uniqueNormalizedValues).sort();hashParts[columnKey]=sortedUniqueValues}});return JSON.stringify(hashParts)}export function DataTable(_ref){var _ref2,_pagination$values$pa,_pagination$values,_ref3,_pagination$values$pa2,_pagination$values2;var _ref$data=_ref.data,data=_ref$data===void 0?[]:_ref$data,_ref$headerMapper=_ref.headerMapper,headerMapper=_ref$headerMapper===void 0?{}:_ref$headerMapper,_ref$className=_ref.className,className=_ref$className===void 0?"":_ref$className,_ref$actions=_ref.actions,actions=_ref$actions===void 0?[]:_ref$actions,_ref$isEditable=_ref.isEditable,isEditable=_ref$isEditable===void 0?false:_ref$isEditable,pagination=_ref.pagination,_ref$isLoading=_ref.isLoading,isLoading=_ref$isLoading===void 0?false:_ref$isLoading,onRowAction=_ref.onRowAction,onPageChange=_ref.onPageChange,onSort=_ref.onSort,sortConfig=_ref.sortConfig,_ref$otherProps=_ref.otherProps,otherProps=_ref$otherProps===void 0?{}:_ref$otherProps,height=_ref.height,_ref$decimalPrecision=_ref.decimalPrecision,decimalPrecision=_ref$decimalPrecision===void 0?2:_ref$decimalPrecision,_ref$columnWithChipCl=_ref.columnWithChipClass,columnWithChipClass=_ref$columnWithChipCl===void 0?{}:_ref$columnWithChipCl,_ref$chipStylesMappin=_ref.chipStylesMapping,chipStylesMapping=_ref$chipStylesMappin===void 0?{}:_ref$chipStylesMappin,navigateToPage=_ref.navigateToPage,_ref$isBulkSelectionE=_ref.isBulkSelectionEnabled,isBulkSelectionEnabled=_ref$isBulkSelectionE===void 0?false:_ref$isBulkSelectionE,_ref$selectedIndices=_ref.selectedIndices,selectedIndices=_ref$selectedIndices===void 0?[]:_ref$selectedIndices,setSelectedIndices=_ref.setSelectedIndices,title=_ref.title,onDownload=_ref.onDownload;if(!data||data.length===0){return/*#__PURE__*/_jsx(Fragment,{children:/*#__PURE__*/_jsx("div",{className:"flex flex-col overflow-hidden",children:/*#__PURE__*/_jsx("div",{"data-slot":"table-container",className:"aspect-auto w-full",style:{height:"auto",minHeight:"180px"},children:isLoading?/*#__PURE__*/_jsx(TableLoader,{}):renderNoDataFallback()})})})}var _useState=useState(null),activeSortColumn=_useState[0],setActiveSortColumn=_useState[1];var _useState2=useState({}),sortDirections=_useState2[0],setSortDirections=_useState2[1];var _useState3=useState(null),activeRowIndex=_useState3[0],setActiveRowIndex=_useState3[1];var _useState4=useState(null),activeAction=_useState4[0],setActiveAction=_useState4[1];var _useState5=useState(false),isFormSubmitting=_useState5[0],setIsFormSubmitting=_useState5[1];var _useState6=useState(null),loadingActionKey=_useState6[0],setLoadingActionKey=_useState6[1];var _useState7=useState(Number((_ref2=(_pagination$values$pa=pagination==null||(_pagination$values=pagination.values)==null?void 0:_pagination$values.pageNumber)!=null?_pagination$values$pa:pagination==null?void 0:pagination.initialPage)!=null?_ref2:1)),pageNumber=_useState7[0],setPageNumber=_useState7[1];var _useState8=useState(Number((_ref3=(_pagination$values$pa2=pagination==null||(_pagination$values2=pagination.values)==null?void 0:_pagination$values2.pageSize)!=null?_pagination$values$pa2:pagination==null?void 0:pagination.initialPageSize)!=null?_ref3:10)),pageSize=_useState8[0],setPageSize=_useState8[1];var _useState9=useState(Math.ceil(((pagination==null?void 0:pagination.totalCount)||0)/pageSize)||1),totalPages=_useState9[0],setTotalPages=_useState9[1];var _useState10=useState({}),chipColorMap=_useState10[0],setChipColorMap=_useState10[1];var _useState11=useState(null),openDropdownIndex=_useState11[0],setOpenDropdownIndex=_useState11[1];var prevDataHashRef=useRef("");useEffect(function(){var _ref4,_pagination$values$pa3,_pagination$values3,_ref5,_pagination$values$pa4,_pagination$values4;setPageNumber(Number((_ref4=(_pagination$values$pa3=pagination==null||(_pagination$values3=pagination.values)==null?void 0:_pagination$values3.pageNumber)!=null?_pagination$values$pa3:pagination==null?void 0:pagination.initialPage)!=null?_ref4:1));setPageSize(Number((_ref5=(_pagination$values$pa4=pagination==null||(_pagination$values4=pagination.values)==null?void 0:_pagination$values4.pageSize)!=null?_pagination$values$pa4:pagination==null?void 0:pagination.initialPageSize)!=null?_ref5:25))},[pagination]);useEffect(function(){setTotalPages(Math.ceil(((pagination==null?void 0:pagination.totalCount)||0)/pageSize)||1)},[pagination==null?void 0:pagination.totalCount,pageSize]);useEffect(function(){if(sortConfig){setSortDirections(sortConfig);var first=Object.keys(sortConfig)[0];if(first){setActiveSortColumn(first)}}},[sortConfig]);useEffect(function(){if(sortConfig!=null&&sortConfig.sortColumn||sortConfig!=null&&sortConfig.sortDirection){sortConfig.sortColumn=null;sortConfig.sortDirection=null}setActiveSortColumn(null);setSortDirections({})},[]);var computedColorMap=useMemo(function(){if(!Array.isArray(data)||data.length===0){return{}}// Get available column keys from first row
|
|
10
|
+
*/function getUniqueValuesHash(data,columnWithChipClass){if(!Array.isArray(data)||data.length===0){return""}var availableKeys=Object.keys(data[0]||{});var hashParts={};Object.keys(columnWithChipClass).forEach(function(columnKey){if(!availableKeys.includes(columnKey)){return}var chipMode=getChipMode(columnWithChipClass,columnKey);if(chipMode==="useRandom"){var uniqueNormalizedValues=new Set;data.forEach(function(row){var value=row[columnKey];var normalizedKey=normalizeValue(value);if(normalizedKey){uniqueNormalizedValues.add(normalizedKey)}});var sortedUniqueValues=Array.from(uniqueNormalizedValues).sort();hashParts[columnKey]=sortedUniqueValues}});return JSON.stringify(hashParts)}export function DataTable(_ref){var _ref2,_pagination$values$pa,_pagination$values,_ref3,_pagination$values$pa2,_pagination$values2,_pagination$totalCoun,_pagination$totalCoun2;var _ref$data=_ref.data,data=_ref$data===void 0?[]:_ref$data,_ref$headerMapper=_ref.headerMapper,headerMapper=_ref$headerMapper===void 0?{}:_ref$headerMapper,_ref$className=_ref.className,className=_ref$className===void 0?"":_ref$className,_ref$actions=_ref.actions,actions=_ref$actions===void 0?[]:_ref$actions,_ref$isEditable=_ref.isEditable,isEditable=_ref$isEditable===void 0?false:_ref$isEditable,pagination=_ref.pagination,_ref$isLoading=_ref.isLoading,isLoading=_ref$isLoading===void 0?false:_ref$isLoading,onRowAction=_ref.onRowAction,onPageChange=_ref.onPageChange,onSort=_ref.onSort,sortConfig=_ref.sortConfig,_ref$otherProps=_ref.otherProps,otherProps=_ref$otherProps===void 0?{}:_ref$otherProps,height=_ref.height,_ref$decimalPrecision=_ref.decimalPrecision,decimalPrecision=_ref$decimalPrecision===void 0?2:_ref$decimalPrecision,_ref$columnWithChipCl=_ref.columnWithChipClass,columnWithChipClass=_ref$columnWithChipCl===void 0?{}:_ref$columnWithChipCl,_ref$chipStylesMappin=_ref.chipStylesMapping,chipStylesMapping=_ref$chipStylesMappin===void 0?{}:_ref$chipStylesMappin,navigateToPage=_ref.navigateToPage,_ref$isBulkSelectionE=_ref.isBulkSelectionEnabled,isBulkSelectionEnabled=_ref$isBulkSelectionE===void 0?false:_ref$isBulkSelectionE,_ref$selectedIndices=_ref.selectedIndices,selectedIndices=_ref$selectedIndices===void 0?[]:_ref$selectedIndices,setSelectedIndices=_ref.setSelectedIndices,title=_ref.title,onDownload=_ref.onDownload;if(!data||data.length===0){return/*#__PURE__*/_jsx(Fragment,{children:/*#__PURE__*/_jsx("div",{className:"flex flex-col overflow-hidden",children:/*#__PURE__*/_jsx("div",{"data-slot":"table-container",className:"aspect-auto w-full",style:{height:"auto",minHeight:"180px"},children:isLoading?/*#__PURE__*/_jsx(TableLoader,{}):renderNoDataFallback()})})})}var _useState=useState(null),activeSortColumn=_useState[0],setActiveSortColumn=_useState[1];var _useState2=useState({}),sortDirections=_useState2[0],setSortDirections=_useState2[1];var _useState3=useState(null),activeRowIndex=_useState3[0],setActiveRowIndex=_useState3[1];var _useState4=useState(null),activeAction=_useState4[0],setActiveAction=_useState4[1];var _useState5=useState(false),isFormSubmitting=_useState5[0],setIsFormSubmitting=_useState5[1];var _useState6=useState(null),loadingActionKey=_useState6[0],setLoadingActionKey=_useState6[1];var _useState7=useState(Number((_ref2=(_pagination$values$pa=pagination==null||(_pagination$values=pagination.values)==null?void 0:_pagination$values.pageNumber)!=null?_pagination$values$pa:pagination==null?void 0:pagination.initialPage)!=null?_ref2:1)),pageNumber=_useState7[0],setPageNumber=_useState7[1];var _useState8=useState(Number((_ref3=(_pagination$values$pa2=pagination==null||(_pagination$values2=pagination.values)==null?void 0:_pagination$values2.pageSize)!=null?_pagination$values$pa2:pagination==null?void 0:pagination.initialPageSize)!=null?_ref3:10)),pageSize=_useState8[0],setPageSize=_useState8[1];var _useState9=useState(Math.ceil(((pagination==null?void 0:pagination.totalCount)||0)/pageSize)||1),totalPages=_useState9[0],setTotalPages=_useState9[1];var _useState10=useState({}),chipColorMap=_useState10[0],setChipColorMap=_useState10[1];var _useState11=useState(null),openDropdownIndex=_useState11[0],setOpenDropdownIndex=_useState11[1];var prevDataHashRef=useRef("");useEffect(function(){var _ref4,_pagination$values$pa3,_pagination$values3,_ref5,_pagination$values$pa4,_pagination$values4;setPageNumber(Number((_ref4=(_pagination$values$pa3=pagination==null||(_pagination$values3=pagination.values)==null?void 0:_pagination$values3.pageNumber)!=null?_pagination$values$pa3:pagination==null?void 0:pagination.initialPage)!=null?_ref4:1));setPageSize(Number((_ref5=(_pagination$values$pa4=pagination==null||(_pagination$values4=pagination.values)==null?void 0:_pagination$values4.pageSize)!=null?_pagination$values$pa4:pagination==null?void 0:pagination.initialPageSize)!=null?_ref5:25))},[pagination]);useEffect(function(){setTotalPages(Math.ceil(((pagination==null?void 0:pagination.totalCount)||0)/pageSize)||1)},[pagination==null?void 0:pagination.totalCount,pageSize]);useEffect(function(){if(sortConfig){setSortDirections(sortConfig);var first=Object.keys(sortConfig)[0];if(first){setActiveSortColumn(first)}}},[sortConfig]);useEffect(function(){if(sortConfig!=null&&sortConfig.sortColumn||sortConfig!=null&&sortConfig.sortDirection){sortConfig.sortColumn=null;sortConfig.sortDirection=null}setActiveSortColumn(null);setSortDirections({})},[]);var computedColorMap=useMemo(function(){if(!Array.isArray(data)||data.length===0){return{}}// Get available column keys from first row
|
|
11
11
|
var availableKeys=Object.keys(data[0]||{});var newColorMap={};// Process each column that uses random chips
|
|
12
12
|
Object.keys(columnWithChipClass).forEach(function(columnKey){// Validate column key exists in data
|
|
13
13
|
if(!availableKeys.includes(columnKey)){return}var chipMode=getChipMode(columnWithChipClass,columnKey);if(chipMode==="useRandom"){if(!newColorMap[columnKey]){newColorMap[columnKey]={}}var uniqueNormalizedValues=new Set;data.forEach(function(row){var value=row[columnKey];var normalizedKey=normalizeValue(value);if(normalizedKey){uniqueNormalizedValues.add(normalizedKey)}});var sortedUniqueValues=Array.from(uniqueNormalizedValues).sort();sortedUniqueValues.forEach(function(normalizedKey,index){if(!newColorMap[columnKey][normalizedKey]){var colorIndex=index%RANDOM_CHIP_COLOR_PALETTE.length;newColorMap[columnKey][normalizedKey]=RANDOM_CHIP_COLOR_PALETTE[colorIndex]}})}});return newColorMap},[data,columnWithChipClass]);useEffect(function(){var uniqueValuesHash=getUniqueValuesHash(data,columnWithChipClass);// Only update if the set of unique values actually changed
|
|
14
14
|
if(uniqueValuesHash!==prevDataHashRef.current){prevDataHashRef.current=uniqueValuesHash;setChipColorMap(function(prevMap){var merged=_extends({},prevMap);Object.keys(computedColorMap).forEach(function(columnKey){merged[columnKey]=_extends({},computedColorMap[columnKey],merged[columnKey])});return merged})}},[computedColorMap,data,columnWithChipClass]);useEffect(function(){setChipColorMap(function(prevMap){var cleaned=_extends({},prevMap);var hasChanges=false;Object.keys(cleaned).forEach(function(columnKey){var chipMode=getChipMode(columnWithChipClass,columnKey);if(!chipMode){delete cleaned[columnKey];hasChanges=true}});return hasChanges?cleaned:prevMap})},[columnWithChipClass]);var _useButtonForm=useButtonForm({formMapper:activeAction==null?void 0:activeAction.action.formMapper,formTitle:activeAction==null?void 0:activeAction.action.formTitle,formDescription:activeAction==null?void 0:activeAction.action.formDescription,formButtonText:activeAction==null?void 0:activeAction.action.formButtonText,isSubmitting:isFormSubmitting||isLoading,onClose:function onClose(){setActiveRowIndex(null);setActiveAction(null)},onSubmit:function(){var _onSubmit=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(formData){return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(activeRowIndex!==null&&activeAction)){_context.next=10;break}setIsFormSubmitting(true);_context.prev=2;_context.next=5;return onRowAction==null?void 0:onRowAction(activeRowIndex,activeAction.id,formData);case 5:_context.prev=5;setIsFormSubmitting(false);return _context.finish(5);case 8:setActiveAction(null);setActiveRowIndex(null);case 10:case"end":return _context.stop()}},_callee,null,[[2,,5,8]])}));function onSubmit(_x){return _onSubmit.apply(this,arguments)}return onSubmit}()}),FormDialog=_useButtonForm.FormDialog,openForm=_useButtonForm.openForm;function handleButtonClick(rowIndex,action){if(action.action.action==="navigateToPage"&&action.action.targetPageId){navigateToPage==null||navigateToPage(action.action.targetPageId);return}if(action.action.type==="navigation"){var onClick=action.action.onClick;if((onClick==null?void 0:onClick.action)==="navigateToPage"&&onClick.targetPageId){navigateToPage==null||navigateToPage(onClick.targetPageId);return}}if(action.action.formMapper&&Object.keys(action.action.formMapper).length>0){setActiveRowIndex(rowIndex);setActiveAction(action)}else{onRowAction==null||onRowAction(rowIndex,action.id)}}useEffect(function(){if(activeAction!=null&&activeAction.action.formMapper&&Object.keys(activeAction.action.formMapper).length>0){openForm()}},[activeAction]);var originalKeys=Object.keys(data[0]||{}).filter(function(key){return key in headerMapper});var headers=originalKeys.map(function(key){return headerMapper[key]});if(actions.length>0){headers.push("")}var rows=data.map(function(datum){return originalKeys.map(function(key){return datum[key]})});function handlePageChange(_x2,_x3){return _handlePageChange.apply(this,arguments)}function _handlePageChange(){_handlePageChange=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(newPage,newSize){return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:if(newPage===void 0){newPage=pageNumber}if(newSize===void 0){newSize=pageSize}setPageNumber(newPage);setPageSize(newSize);onPageChange==null||onPageChange(newPage,newSize);case 5:case"end":return _context3.stop()}},_callee3)}));return _handlePageChange.apply(this,arguments)}function handleSortClick(column,direction){setActiveSortColumn(direction?column:null);setSortDirections(function(prev){var _extends2;return _extends({},prev,(_extends2={},_extends2[column]=direction,_extends2))});onSort==null||onSort(column,direction)}function handleCheckboxClick(rowIndex){if(setSelectedIndices){if(selectedIndices.includes(rowIndex)){setSelectedIndices(selectedIndices.filter(function(idx){return idx!==rowIndex}))}else{setSelectedIndices([].concat(selectedIndices,[rowIndex]))}}}function ActionsDropdown(_ref6){var rowIndex=_ref6.rowIndex,rowActions=_ref6.rowActions;var isOpen=openDropdownIndex===rowIndex;var totalRows=rows.length;var isNearBottom=rowIndex>=totalRows-3;function handleActionClick(_x4){return _handleActionClick.apply(this,arguments)}function _handleActionClick(){_handleActionClick=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(action){var onClick,actionKey;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:if(!(action.action.action==="navigateToPage"&&action.action.targetPageId)){_context2.next=4;break}navigateToPage==null||navigateToPage(action.action.targetPageId);setOpenDropdownIndex(null);return _context2.abrupt("return");case 4:if(!(action.action.type==="navigation")){_context2.next=10;break}onClick=action.action.onClick;if(!((onClick==null?void 0:onClick.action)==="navigateToPage"&&onClick.targetPageId)){_context2.next=10;break}navigateToPage==null||navigateToPage(onClick.targetPageId);setOpenDropdownIndex(null);return _context2.abrupt("return");case 10:// Handle form-based and API actions
|
|
15
|
-
actionKey=rowIndex+"-"+action.id;if(!(action.action.formMapper&&Object.keys(action.action.formMapper).length>0)){_context2.next=17;break}setActiveRowIndex(rowIndex);setActiveAction(action);setOpenDropdownIndex(null);_context2.next=25;break;case 17:_context2.prev=17;setLoadingActionKey(actionKey);_context2.next=21;return onRowAction==null?void 0:onRowAction(rowIndex,action.id);case 21:_context2.prev=21;setLoadingActionKey(null);setOpenDropdownIndex(null);return _context2.finish(21);case 25:case"end":return _context2.stop()}},_callee2,null,[[17,,21,25]])}));return _handleActionClick.apply(this,arguments)}function toggleDropdown(){setOpenDropdownIndex(isOpen?null:rowIndex)}function handleBackdropClick(){if(!loadingActionKey){setOpenDropdownIndex(null)}}return/*#__PURE__*/_jsxs(_Fragment,{children:[isOpen&&/*#__PURE__*/_jsx("div",{className:"fixed inset-0 z-40",onClick:handleBackdropClick,style:{background:"transparent",cursor:"default"}}),/*#__PURE__*/_jsxs("div",{className:"relative",children:[/*#__PURE__*/_jsx(Button,{variant:"ghost",size:"icon",onClick:function onClick(e){e.stopPropagation();toggleDropdown()},disabled:isLoading,className:"h-8 w-8 relative z-50","data-dropdown-button":"true",children:/*#__PURE__*/_jsx(MoreVertical,{className:"h-4 w-4"})}),isOpen&&/*#__PURE__*/_jsx("div",{className:cn("absolute right-full mr-2 w-48 rounded-md shadow-lg bg-white ring-gray-400 ring-opacity-5 z-50",isNearBottom?"bottom-0":"top-0"),children:/*#__PURE__*/_jsx("div",{className:"py-1",role:"menu",children:rowActions.map(function(action){var actionKey=rowIndex+"-"+action.id;var isActionLoading=loadingActionKey===actionKey;return/*#__PURE__*/_jsxs("button",{onClick:function onClick(){return handleActionClick(action)},className:"block w-full text-left px-4 py-2 text-sm hover:bg-accent transition-colors font-semibold disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-2 focus:outline-none focus:bg-accent",disabled:isLoading||isActionLoading,role:"menuitem",children:[isActionLoading&&/*#__PURE__*/_jsx(Loader2,{className:"h-3 w-3 animate-spin"}),action.text]},action.id)})})})]})]})}function renderActions(rowIndex,rowActions){if(!actions.length){return null}return/*#__PURE__*/_jsx(TableCell,{className:"sticky right-0 bg-white overflow-visible",children:/*#__PURE__*/_jsx(ActionsDropdown,{rowIndex:rowIndex,rowActions:rowActions})})}var defaultClasses="aspect-auto w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;function getRandomColorForValue(columnKey,value){var _chipColorMap$columnK;var normalizedKey=normalizeValue(value);if((_chipColorMap$columnK=chipColorMap[columnKey])!=null&&_chipColorMap$columnK[normalizedKey]){return chipColorMap[columnKey][normalizedKey]}return"bg-gray-50 text-gray-900 shadow-sm"}function renderChip(columnKey,value){var chipMode=getChipMode(columnWithChipClass,columnKey);var formattedValue=formatValue(value,decimalPrecision);if(!chipMode){return/*#__PURE__*/_jsx(_Fragment,{children:formattedValue})}var chipClassName="";if(chipMode==="useMap"){var _chipStylesMapping$co;var valueStr=String(value);chipClassName=(_chipStylesMapping$co=chipStylesMapping[columnKey])==null?void 0:_chipStylesMapping$co[valueStr];if(!chipClassName){var valueLower=valueStr.toLowerCase().trim();chipClassName=SEMANTIC_CHIP_STYLES_MAP[valueLower]}if(!chipClassName){chipClassName="bg-gray-50 text-gray-900 shadow-sm"}}else if(chipMode==="useRandom"){chipClassName=getRandomColorForValue(columnKey,value)}return/*#__PURE__*/_jsx("span",{className:cn("inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ring-gray-500/10",chipClassName),children:formattedValue})}function renderTableComponent(){if(isLoading||!data||data.length===0){return/*#__PURE__*/_jsx(TableLoader,{})}return/*#__PURE__*/_jsxs(Table,_extends({},otherProps,{className:"caption-bottom text-sm relative "+mergedClasses,"data-slot":"table",children:[/*#__PURE__*/_jsx(TableHeader,{"data-slot":"table-header",className:"sticky top-0 z-2",children:/*#__PURE__*/_jsxs(TableRow,{children:[isBulkSelectionEnabled&&/*#__PURE__*/_jsx(TableCell,{className:"p-2 w-10",children:/*#__PURE__*/_jsx(Checkbox,{checked:(selectedIndices==null?void 0:selectedIndices.length)===data.length,onCheckedChange:function onCheckedChange(){if(setSelectedIndices){if((selectedIndices==null?void 0:selectedIndices.length)===data.length){setSelectedIndices([])}else{setSelectedIndices(data.map(function(_,idx){return idx}))}}}})}),headers.map(function(head,idx){var isActionColumn=actions.length>0&&idx===headers.length-1;var originalKey=originalKeys[idx];if(isActionColumn){return/*#__PURE__*/_jsx(TableHead,{"data-slot":"table-header-"+idx,contentEditable:isEditable,className:"sticky right-0 bg-slate-100",children:head},idx)}return/*#__PURE__*/_jsx(TableHeadSortable,{"data-slot":"table-header-"+idx,sortDirection:sortDirections[originalKey]||"asc",isActive:activeSortColumn===originalKey,onSort:function onSort(direction){return handleSortClick(originalKey,direction)},sortable:!isLoading,isEditable:isEditable,children:head},idx)})]})}),/*#__PURE__*/_jsx(TableBody,{"data-slot":"table-body",children:rows.map(function(row,rIdx){return/*#__PURE__*/_jsxs(TableRow,{"data-slot":"row-"+rIdx,className:"hover:bg-muted/50 border-b transition-colors",children:[isBulkSelectionEnabled&&/*#__PURE__*/_jsx(TableCell,{className:"p-2 align-middle",children:/*#__PURE__*/_jsx(Checkbox,{checked:selectedIndices==null?void 0:selectedIndices.includes(rIdx),onCheckedChange:function onCheckedChange(){return handleCheckboxClick(rIdx)}})}),row.map(function(cell,cIdx){var columnKey=originalKeys[cIdx];var chipMode=columnKey?getChipMode(columnWithChipClass,columnKey):undefined;var shouldRenderChip=!!chipMode;return/*#__PURE__*/_jsx(TableCell,{"data-slot":"cell-"+rIdx+"-"+cIdx,className:"p-2 align-middle whitespace-nowrap",contentEditable:false,children:shouldRenderChip?renderChip(columnKey,cell):formatValue(cell,decimalPrecision)},cIdx)}),renderActions(rIdx,actions)]},rIdx)})})]}))}return/*#__PURE__*/_jsxs(Fragment,{children:[/*#__PURE__*/_jsx("div",{className:"flex flex-col h-full overflow-hidden",children:/*#__PURE__*/_jsxs(ScrollArea,_extends({"data-slot":"table-container",className:mergedClasses},height!==undefined&&{style:{height:height}},{children:[renderTableComponent(),/*#__PURE__*/_jsx(ScrollBar,{orientation:"horizontal"})]}))}),pagination
|
|
15
|
+
actionKey=rowIndex+"-"+action.id;if(!(action.action.formMapper&&Object.keys(action.action.formMapper).length>0)){_context2.next=17;break}setActiveRowIndex(rowIndex);setActiveAction(action);setOpenDropdownIndex(null);_context2.next=25;break;case 17:_context2.prev=17;setLoadingActionKey(actionKey);_context2.next=21;return onRowAction==null?void 0:onRowAction(rowIndex,action.id);case 21:_context2.prev=21;setLoadingActionKey(null);setOpenDropdownIndex(null);return _context2.finish(21);case 25:case"end":return _context2.stop()}},_callee2,null,[[17,,21,25]])}));return _handleActionClick.apply(this,arguments)}function toggleDropdown(){setOpenDropdownIndex(isOpen?null:rowIndex)}function handleBackdropClick(){if(!loadingActionKey){setOpenDropdownIndex(null)}}return/*#__PURE__*/_jsxs(_Fragment,{children:[isOpen&&/*#__PURE__*/_jsx("div",{className:"fixed inset-0 z-40",onClick:handleBackdropClick,style:{background:"transparent",cursor:"default"}}),/*#__PURE__*/_jsxs("div",{className:"relative",children:[/*#__PURE__*/_jsx(Button,{variant:"ghost",size:"icon",onClick:function onClick(e){e.stopPropagation();toggleDropdown()},disabled:isLoading,className:"h-8 w-8 relative z-50","data-dropdown-button":"true",children:/*#__PURE__*/_jsx(MoreVertical,{className:"h-4 w-4"})}),isOpen&&/*#__PURE__*/_jsx("div",{className:cn("absolute right-full mr-2 w-48 rounded-md shadow-lg bg-white ring-gray-400 ring-opacity-5 z-50",isNearBottom?"bottom-0":"top-0"),children:/*#__PURE__*/_jsx("div",{className:"py-1",role:"menu",children:rowActions.map(function(action){var actionKey=rowIndex+"-"+action.id;var isActionLoading=loadingActionKey===actionKey;return/*#__PURE__*/_jsxs("button",{onClick:function onClick(){return handleActionClick(action)},className:"block w-full text-left px-4 py-2 text-sm hover:bg-accent transition-colors font-semibold disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-2 focus:outline-none focus:bg-accent",disabled:isLoading||isActionLoading,role:"menuitem",children:[isActionLoading&&/*#__PURE__*/_jsx(Loader2,{className:"h-3 w-3 animate-spin"}),action.text]},action.id)})})})]})]})}function renderActions(rowIndex,rowActions){if(!actions.length){return null}return/*#__PURE__*/_jsx(TableCell,{className:"sticky right-0 bg-white overflow-visible",children:/*#__PURE__*/_jsx(ActionsDropdown,{rowIndex:rowIndex,rowActions:rowActions})})}var defaultClasses="aspect-auto w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;function getRandomColorForValue(columnKey,value){var _chipColorMap$columnK;var normalizedKey=normalizeValue(value);if((_chipColorMap$columnK=chipColorMap[columnKey])!=null&&_chipColorMap$columnK[normalizedKey]){return chipColorMap[columnKey][normalizedKey]}return"bg-gray-50 text-gray-900 shadow-sm"}function renderChip(columnKey,value){var chipMode=getChipMode(columnWithChipClass,columnKey);var formattedValue=formatValue(value,decimalPrecision);if(!chipMode){return/*#__PURE__*/_jsx(_Fragment,{children:formattedValue})}var chipClassName="";if(chipMode==="useMap"){var _chipStylesMapping$co;var valueStr=String(value);chipClassName=(_chipStylesMapping$co=chipStylesMapping[columnKey])==null?void 0:_chipStylesMapping$co[valueStr];if(!chipClassName){var valueLower=valueStr.toLowerCase().trim();chipClassName=SEMANTIC_CHIP_STYLES_MAP[valueLower]}if(!chipClassName){chipClassName="bg-gray-50 text-gray-900 shadow-sm"}}else if(chipMode==="useRandom"){chipClassName=getRandomColorForValue(columnKey,value)}return/*#__PURE__*/_jsx("span",{className:cn("inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ring-gray-500/10",chipClassName),children:formattedValue})}function renderTableComponent(){if(isLoading||!data||data.length===0){return/*#__PURE__*/_jsx(TableLoader,{})}return/*#__PURE__*/_jsxs(Table,_extends({},otherProps,{className:"caption-bottom text-sm relative "+mergedClasses,"data-slot":"table",children:[/*#__PURE__*/_jsx(TableHeader,{"data-slot":"table-header",className:"sticky top-0 z-2",children:/*#__PURE__*/_jsxs(TableRow,{children:[isBulkSelectionEnabled&&/*#__PURE__*/_jsx(TableCell,{className:"p-2 w-10",children:/*#__PURE__*/_jsx(Checkbox,{checked:(selectedIndices==null?void 0:selectedIndices.length)===data.length,onCheckedChange:function onCheckedChange(){if(setSelectedIndices){if((selectedIndices==null?void 0:selectedIndices.length)===data.length){setSelectedIndices([])}else{setSelectedIndices(data.map(function(_,idx){return idx}))}}}})}),headers.map(function(head,idx){var isActionColumn=actions.length>0&&idx===headers.length-1;var originalKey=originalKeys[idx];if(isActionColumn){return/*#__PURE__*/_jsx(TableHead,{"data-slot":"table-header-"+idx,contentEditable:isEditable,className:"sticky right-0 bg-slate-100",children:head},idx)}return/*#__PURE__*/_jsx(TableHeadSortable,{"data-slot":"table-header-"+idx,sortDirection:sortDirections[originalKey]||"asc",isActive:activeSortColumn===originalKey,onSort:function onSort(direction){return handleSortClick(originalKey,direction)},sortable:!isLoading,isEditable:isEditable,children:head},idx)})]})}),/*#__PURE__*/_jsx(TableBody,{"data-slot":"table-body",children:rows.map(function(row,rIdx){return/*#__PURE__*/_jsxs(TableRow,{"data-slot":"row-"+rIdx,className:"hover:bg-muted/50 border-b transition-colors",children:[isBulkSelectionEnabled&&/*#__PURE__*/_jsx(TableCell,{className:"p-2 align-middle",children:/*#__PURE__*/_jsx(Checkbox,{checked:selectedIndices==null?void 0:selectedIndices.includes(rIdx),onCheckedChange:function onCheckedChange(){return handleCheckboxClick(rIdx)}})}),row.map(function(cell,cIdx){var columnKey=originalKeys[cIdx];var chipMode=columnKey?getChipMode(columnWithChipClass,columnKey):undefined;var shouldRenderChip=!!chipMode;return/*#__PURE__*/_jsx(TableCell,{"data-slot":"cell-"+rIdx+"-"+cIdx,className:"p-2 align-middle whitespace-nowrap",contentEditable:false,children:shouldRenderChip?renderChip(columnKey,cell):formatValue(cell,decimalPrecision)},cIdx)}),renderActions(rIdx,actions)]},rIdx)})})]}))}return/*#__PURE__*/_jsxs(Fragment,{children:[/*#__PURE__*/_jsx("div",{className:"flex flex-col h-full overflow-hidden",children:/*#__PURE__*/_jsxs(ScrollArea,_extends({"data-slot":"table-container",className:mergedClasses},height!==undefined&&{style:{height:height}},{children:[renderTableComponent(),/*#__PURE__*/_jsx(ScrollBar,{orientation:"horizontal"})]}))}),(((_pagination$totalCoun=pagination==null?void 0:pagination.totalCount)!=null?_pagination$totalCoun:0)>0||title&&!isEditable&&onDownload)&&/*#__PURE__*/_jsxs("div",{className:"flex-shrink-0 flex items-center justify-between mt-2 w-full overflow-x-auto border-t pt-2",children:[/*#__PURE__*/_jsx("div",{className:"flex items-center gap-2 flex-shrink-0",children:pagination&&pagination.totalCount>0&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx("label",{htmlFor:"page-size-select",className:"text-sm whitespace-nowrap",children:"Rows per page:"}),/*#__PURE__*/_jsx("select",{id:"page-size-select",value:pageSize,onChange:function onChange(e){return handlePageChange(1,Number(e.target.value))},className:"border rounded px-2 py-1 text-sm cursor-pointer",disabled:isLoading,children:(pagination.pageSizeOptions||[10,20,50,100]).map(function(size){return/*#__PURE__*/_jsx("option",{value:size,children:size},size)})})]})}),/*#__PURE__*/_jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[title&&!isEditable&&onDownload&&/*#__PURE__*/_jsx(DownloadButton,{component:"table",title:title,onDownload:onDownload,dataCount:(_pagination$totalCoun2=pagination==null?void 0:pagination.totalCount)!=null?_pagination$totalCoun2:data.length}),pagination&&pagination.totalCount>0&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs("span",{className:"text-xs text-muted-foreground whitespace-nowrap ml-1.5",children:[(pageNumber-1)*pageSize+1,"\u2013",Math.min(pageNumber*pageSize,pagination.totalCount)," of ",pagination.totalCount]}),/*#__PURE__*/_jsx(Pagination,{children:/*#__PURE__*/_jsx(PaginationContent,{className:"gap-0.2 flex-shrink-0",children:renderPaginationArrows(pageNumber,totalPages,isLoading,handlePageChange)})})]})]})]}),FormDialog]})}
|
|
16
16
|
//# sourceMappingURL=data-table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.js","names":["useEffect","useState","Fragment","useMemo","useRef","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","TableHeadSortable","TableLoader","ScrollArea","ScrollBar","Pagination","PaginationContent","renderPaginationArrows","Button","cn","renderNoDataFallback","formatValue","SEMANTIC_CHIP_STYLES_MAP","RANDOM_CHIP_COLOR_PALETTE","Checkbox","MoreVertical","Loader2","useButtonForm","DownloadButton","jsx","_jsx","jsxs","_jsxs","_Fragment","normalizeValue","value","undefined","str","String","trim","toLowerCase","getChipMode","columnWithChipClass","columnKey","mode","getUniqueValuesHash","data","Array","isArray","length","availableKeys","Object","keys","hashParts","forEach","includes","chipMode","uniqueNormalizedValues","Set","row","normalizedKey","add","sortedUniqueValues","from","sort","JSON","stringify","DataTable","_ref","_ref2","_pagination$values$pa","_pagination$values","_ref3","_pagination$values$pa2","_pagination$values2","_ref$data","_ref$headerMapper","headerMapper","_ref$className","className","_ref$actions","actions","_ref$isEditable","isEditable","pagination","_ref$isLoading","isLoading","onRowAction","onPageChange","onSort","sortConfig","_ref$otherProps","otherProps","height","_ref$decimalPrecision","decimalPrecision","_ref$columnWithChipCl","_ref$chipStylesMappin","chipStylesMapping","navigateToPage","_ref$isBulkSelectionE","isBulkSelectionEnabled","_ref$selectedIndices","selectedIndices","setSelectedIndices","title","onDownload","children","style","minHeight","_useState","activeSortColumn","setActiveSortColumn","_useState2","sortDirections","setSortDirections","_useState3","activeRowIndex","setActiveRowIndex","_useState4","activeAction","setActiveAction","_useState5","isFormSubmitting","setIsFormSubmitting","_useState6","loadingActionKey","setLoadingActionKey","_useState7","Number","values","pageNumber","initialPage","setPageNumber","_useState8","pageSize","initialPageSize","setPageSize","_useState9","Math","ceil","totalCount","totalPages","setTotalPages","_useState10","chipColorMap","setChipColorMap","_useState11","openDropdownIndex","setOpenDropdownIndex","prevDataHashRef","_ref4","_pagination$values$pa3","_pagination$values3","_ref5","_pagination$values$pa4","_pagination$values4","first","sortColumn","sortDirection","computedColorMap","newColorMap","index","colorIndex","uniqueValuesHash","current","prevMap","merged","_extends","cleaned","hasChanges","_useButtonForm","formMapper","action","formTitle","formDescription","formButtonText","isSubmitting","onClose","onSubmit","_onSubmit","_asyncToGenerator","_regeneratorRuntime","mark","_callee","formData","wrap","_callee$","_context","prev","next","id","finish","stop","_x","apply","arguments","FormDialog","openForm","handleButtonClick","rowIndex","targetPageId","type","onClick","originalKeys","filter","key","headers","map","push","rows","datum","handlePageChange","_x2","_x3","_handlePageChange","_callee3","newPage","newSize","_callee3$","_context3","handleSortClick","column","direction","_extends2","handleCheckboxClick","idx","concat","ActionsDropdown","_ref6","rowActions","isOpen","totalRows","isNearBottom","handleActionClick","_x4","_handleActionClick","_callee2","actionKey","_callee2$","_context2","abrupt","toggleDropdown","handleBackdropClick","background","cursor","variant","size","e","stopPropagation","disabled","role","isActionLoading","text","renderActions","defaultClasses","mergedClasses","getRandomColorForValue","_chipColorMap$columnK","renderChip","formattedValue","chipClassName","_chipStylesMapping$co","valueStr","valueLower","renderTableComponent","checked","onCheckedChange","_","head","isActionColumn","originalKey","contentEditable","isActive","sortable","rIdx","cell","cIdx","shouldRenderChip","orientation","htmlFor","onChange","target","pageSizeOptions","component","dataCount","min"],"sources":["../../../src/plugins/helpers/data-table.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useState, Fragment, useMemo, useRef } from 'react';\nimport {\n Table,\n TableHeader,\n TableRow,\n TableHead,\n TableBody,\n TableCell,\n TableHeadSortable,\n SortDirection,\n} from '../../shadcn/components/ui/table';\nimport { TableLoader } from '../../shadcn/components/ui/skeleton';\nimport { ScrollArea, ScrollBar } from '../../shadcn/components/ui/scroll-area';\nimport {\n Pagination,\n PaginationContent,\n renderPaginationArrows,\n} from '../../shadcn/components/ui/pagination';\nimport { Button } from '../../shadcn/components/ui/button';\nimport { cn } from '../../shadcn/utils';\nimport { renderNoDataFallback } from './extra';\nimport { formatValue } from '../../helpers';\nimport { SEMANTIC_CHIP_STYLES_MAP, RANDOM_CHIP_COLOR_PALETTE } from '../../constants';\nimport { Checkbox } from '../../shadcn/components/ui/checkbox';\nimport { MoreVertical, Loader2 } from 'lucide-react';\nimport { useButtonForm } from './button-form';\nimport { DownloadButton } from './download-data-button';\n\ntype RowAction = {\n id: string;\n text: string;\n variant?: string;\n tooltipContent?: string;\n className?: string;\n action: any;\n};\n\nexport type DataTableProps = {\n data: Record<string, any>[];\n headerMapper?: Record<string, string>;\n className?: string;\n isEditable?: boolean;\n actions?: RowAction[];\n pagination?: {\n values?: {\n pageNumber: number;\n pageSize: number;\n };\n initialPage?: number;\n initialPageSize?: number;\n totalCount: number;\n pageSizeOptions: number[];\n };\n isLoading?: boolean;\n onRowAction?: (rowIndex: number, actionId: string, formData?: Record<string, any>) => void;\n onPageChange?: (pageNumber: number, pageSize: number) => void;\n onSort?: (column: string, direction: SortDirection) => void;\n sortConfig?: Record<string, SortDirection>;\n otherProps?: Record<string, any>;\n height?: string | number;\n decimalPrecision?: number;\n columnWithChipClass?: Record<string, 'useMap' | 'useRandom'>;\n chipStylesMapping?: Record<string, Record<string, string>>;\n navigateToPage?: (pageId: string) => void;\n isBulkSelectionEnabled?: boolean;\n selectedIndices?: number[];\n setSelectedIndices?: (indices: number[]) => void;\n title?: string;\n onDownload?: (limit: number) => Promise<void>;\n};\n\n/**\n * Normalizes a value to a consistent string key for color mapping.\n * Handles all value types: null/undefined, numbers, booleans, objects, arrays, dates.\n * Ensures consistent color assignment for all variations of the same logical value.\n */\nfunction normalizeValue(value: any): string {\n // Handle null/undefined\n if (value === null || value === undefined) {\n return '';\n }\n\n const str = String(value);\n\n return str.trim().toLowerCase();\n}\n\nfunction getChipMode(\n columnWithChipClass: Record<string, 'useMap' | 'useRandom'>,\n columnKey: string,\n): 'useMap' | 'useRandom' | undefined {\n if (!(columnKey in columnWithChipClass)) {\n return undefined;\n }\n\n const mode = columnWithChipClass[columnKey];\n\n if (mode !== 'useMap' && mode !== 'useRandom') {\n return 'useRandom';\n }\n\n return mode;\n}\n\n/**\n * Generates a stable hash based on unique value sets per column.\n * This hash is order-independent - it only changes when the set of unique values changes,\n * not when rows are reordered (e.g., during sorting).\n */\nfunction getUniqueValuesHash(\n data: Record<string, any>[],\n columnWithChipClass: Record<string, 'useMap' | 'useRandom'>,\n): string {\n if (!Array.isArray(data) || data.length === 0) {\n return '';\n }\n\n const availableKeys = Object.keys(data[0] || {});\n const hashParts: Record<string, string[]> = {};\n\n Object.keys(columnWithChipClass).forEach((columnKey) => {\n if (!availableKeys.includes(columnKey)) {\n return;\n }\n\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n\n if (chipMode === 'useRandom') {\n const uniqueNormalizedValues = new Set<string>();\n data.forEach((row) => {\n const value = row[columnKey];\n const normalizedKey = normalizeValue(value);\n\n if (normalizedKey) {\n uniqueNormalizedValues.add(normalizedKey);\n }\n });\n const sortedUniqueValues = Array.from(uniqueNormalizedValues).sort();\n hashParts[columnKey] = sortedUniqueValues;\n }\n });\n\n return JSON.stringify(hashParts);\n}\n\nexport function DataTable({\n data = [],\n headerMapper = {},\n className = '',\n actions = [],\n isEditable = false,\n pagination,\n isLoading = false,\n onRowAction,\n onPageChange,\n onSort,\n sortConfig,\n otherProps = {},\n height,\n decimalPrecision = 2,\n columnWithChipClass = {},\n chipStylesMapping = {},\n navigateToPage,\n isBulkSelectionEnabled = false,\n selectedIndices = [],\n setSelectedIndices,\n title,\n onDownload,\n}: DataTableProps) {\n if (!data || data.length === 0) {\n return (\n <Fragment>\n <div className=\"flex flex-col overflow-hidden\">\n <div\n data-slot=\"table-container\"\n className=\"aspect-auto w-full\"\n style={{ height: 'auto', minHeight: '180px' }}\n >\n {isLoading ? <TableLoader /> : renderNoDataFallback()}\n </div>\n </div>\n </Fragment>\n );\n }\n\n const [activeSortColumn, setActiveSortColumn] = useState<string | null>(null);\n const [sortDirections, setSortDirections] = useState<Record<string, SortDirection>>({});\n const [activeRowIndex, setActiveRowIndex] = useState<number | null>(null);\n const [activeAction, setActiveAction] = useState<RowAction | null>(null);\n const [isFormSubmitting, setIsFormSubmitting] = useState(false);\n const [loadingActionKey, setLoadingActionKey] = useState<string | null>(null);\n\n const [pageNumber, setPageNumber] = useState(\n Number(pagination?.values?.pageNumber ?? pagination?.initialPage ?? 1),\n );\n const [pageSize, setPageSize] = useState(\n Number(pagination?.values?.pageSize ?? pagination?.initialPageSize ?? 10),\n );\n const [totalPages, setTotalPages] = useState(\n Math.ceil((pagination?.totalCount || 0) / pageSize) || 1,\n );\n\n const [chipColorMap, setChipColorMap] = useState<Record<string, Record<string, string>>>({});\n\n const [openDropdownIndex, setOpenDropdownIndex] = useState<number | null>(null);\n\n const prevDataHashRef = useRef<string>('');\n\n useEffect(() => {\n setPageNumber(Number(pagination?.values?.pageNumber ?? pagination?.initialPage ?? 1));\n setPageSize(Number(pagination?.values?.pageSize ?? pagination?.initialPageSize ?? 25));\n }, [pagination]);\n\n useEffect(() => {\n setTotalPages(Math.ceil((pagination?.totalCount || 0) / pageSize) || 1);\n }, [pagination?.totalCount, pageSize]);\n\n useEffect(() => {\n if (sortConfig) {\n setSortDirections(sortConfig);\n const first = Object.keys(sortConfig)[0];\n\n if (first) {\n setActiveSortColumn(first);\n }\n }\n }, [sortConfig]);\n\n useEffect(() => {\n if (sortConfig?.sortColumn || sortConfig?.sortDirection) {\n sortConfig.sortColumn = null;\n sortConfig.sortDirection = null;\n }\n\n setActiveSortColumn(null);\n setSortDirections({});\n }, []);\n\n const computedColorMap = useMemo(() => {\n if (!Array.isArray(data) || data.length === 0) {\n return {};\n }\n\n // Get available column keys from first row\n const availableKeys = Object.keys(data[0] || {});\n\n const newColorMap: Record<string, Record<string, string>> = {};\n\n // Process each column that uses random chips\n Object.keys(columnWithChipClass).forEach((columnKey) => {\n // Validate column key exists in data\n if (!availableKeys.includes(columnKey)) {\n return;\n }\n\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n\n if (chipMode === 'useRandom') {\n if (!newColorMap[columnKey]) {\n newColorMap[columnKey] = {};\n }\n\n const uniqueNormalizedValues = new Set<string>();\n data.forEach((row) => {\n const value = row[columnKey];\n const normalizedKey = normalizeValue(value);\n\n if (normalizedKey) {\n uniqueNormalizedValues.add(normalizedKey);\n }\n });\n\n const sortedUniqueValues = Array.from(uniqueNormalizedValues).sort();\n\n sortedUniqueValues.forEach((normalizedKey, index) => {\n if (!newColorMap[columnKey][normalizedKey]) {\n const colorIndex = index % RANDOM_CHIP_COLOR_PALETTE.length;\n newColorMap[columnKey][normalizedKey] = RANDOM_CHIP_COLOR_PALETTE[colorIndex];\n }\n });\n }\n });\n\n return newColorMap;\n }, [data, columnWithChipClass]);\n\n useEffect(() => {\n const uniqueValuesHash = getUniqueValuesHash(data, columnWithChipClass);\n\n // Only update if the set of unique values actually changed\n if (uniqueValuesHash !== prevDataHashRef.current) {\n prevDataHashRef.current = uniqueValuesHash;\n\n setChipColorMap((prevMap) => {\n const merged = { ...prevMap };\n Object.keys(computedColorMap).forEach((columnKey) => {\n merged[columnKey] = { ...computedColorMap[columnKey], ...merged[columnKey] };\n });\n\n return merged;\n });\n }\n }, [computedColorMap, data, columnWithChipClass]);\n\n useEffect(() => {\n setChipColorMap((prevMap) => {\n const cleaned = { ...prevMap };\n let hasChanges = false;\n\n Object.keys(cleaned).forEach((columnKey) => {\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n\n if (!chipMode) {\n delete cleaned[columnKey];\n hasChanges = true;\n }\n });\n\n return hasChanges ? cleaned : prevMap;\n });\n }, [columnWithChipClass]);\n\n const { FormDialog, openForm } = useButtonForm({\n formMapper: activeAction?.action.formMapper,\n formTitle: activeAction?.action.formTitle,\n formDescription: activeAction?.action.formDescription,\n formButtonText: activeAction?.action.formButtonText,\n isSubmitting: isFormSubmitting || isLoading,\n onClose: () => {\n setActiveRowIndex(null);\n setActiveAction(null);\n },\n onSubmit: async (formData) => {\n if (activeRowIndex !== null && activeAction) {\n setIsFormSubmitting(true);\n\n try {\n await onRowAction?.(activeRowIndex, activeAction.id, formData);\n } finally {\n setIsFormSubmitting(false);\n }\n\n setActiveAction(null);\n setActiveRowIndex(null);\n }\n },\n });\n\n function handleButtonClick(rowIndex: number, action: RowAction) {\n if (action.action.action === 'navigateToPage' && action.action.targetPageId) {\n navigateToPage?.(action.action.targetPageId);\n\n return;\n }\n\n if (action.action.type === 'navigation') {\n const onClick = action.action.onClick;\n\n if (onClick?.action === 'navigateToPage' && onClick.targetPageId) {\n navigateToPage?.(onClick.targetPageId);\n\n return;\n }\n }\n\n if (action.action.formMapper && Object.keys(action.action.formMapper).length > 0) {\n setActiveRowIndex(rowIndex);\n setActiveAction(action);\n } else {\n onRowAction?.(rowIndex, action.id);\n }\n }\n\n useEffect(() => {\n if (activeAction?.action.formMapper && Object.keys(activeAction.action.formMapper).length > 0) {\n openForm();\n }\n }, [activeAction]);\n\n const originalKeys = Object.keys(data[0] || {}).filter((key) => key in headerMapper);\n const headers = originalKeys.map((key) => headerMapper[key]);\n\n if (actions.length > 0) {\n headers.push('');\n }\n\n const rows = data.map((datum: any) => originalKeys.map((key) => datum[key]));\n\n async function handlePageChange(newPage = pageNumber, newSize = pageSize) {\n setPageNumber(newPage);\n setPageSize(newSize);\n onPageChange?.(newPage, newSize);\n }\n\n function handleSortClick(column: string, direction: SortDirection) {\n setActiveSortColumn(direction ? column : null);\n setSortDirections((prev) => ({\n ...prev,\n [column]: direction,\n }));\n onSort?.(column, direction);\n }\n\n function handleCheckboxClick(rowIndex: number) {\n if (setSelectedIndices) {\n if (selectedIndices.includes(rowIndex)) {\n setSelectedIndices(selectedIndices.filter((idx) => idx !== rowIndex));\n } else {\n setSelectedIndices([...selectedIndices, rowIndex]);\n }\n }\n }\n\n function ActionsDropdown({\n rowIndex,\n rowActions,\n }: {\n rowIndex: number;\n rowActions: RowAction[];\n }) {\n const isOpen = openDropdownIndex === rowIndex;\n\n const totalRows = rows.length;\n const isNearBottom = rowIndex >= totalRows - 3;\n\n async function handleActionClick(action: RowAction) {\n if (action.action.action === 'navigateToPage' && action.action.targetPageId) {\n navigateToPage?.(action.action.targetPageId);\n setOpenDropdownIndex(null);\n\n return;\n }\n\n if (action.action.type === 'navigation') {\n const onClick = action.action.onClick;\n\n if (onClick?.action === 'navigateToPage' && onClick.targetPageId) {\n navigateToPage?.(onClick.targetPageId);\n setOpenDropdownIndex(null);\n\n return;\n }\n }\n\n // Handle form-based and API actions\n const actionKey = `${rowIndex}-${action.id}`;\n\n if (action.action.formMapper && Object.keys(action.action.formMapper).length > 0) {\n setActiveRowIndex(rowIndex);\n setActiveAction(action);\n setOpenDropdownIndex(null);\n } else {\n try {\n setLoadingActionKey(actionKey);\n await onRowAction?.(rowIndex, action.id);\n } finally {\n setLoadingActionKey(null);\n setOpenDropdownIndex(null);\n }\n }\n }\n\n function toggleDropdown() {\n setOpenDropdownIndex(isOpen ? null : rowIndex);\n }\n\n function handleBackdropClick() {\n if (!loadingActionKey) {\n setOpenDropdownIndex(null);\n }\n }\n\n return (\n <>\n {isOpen && (\n <div\n className=\"fixed inset-0 z-40\"\n onClick={handleBackdropClick}\n style={{ background: 'transparent', cursor: 'default' }}\n />\n )}\n <div className=\"relative\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={(e) => {\n e.stopPropagation();\n toggleDropdown();\n }}\n disabled={isLoading}\n className=\"h-8 w-8 relative z-50\"\n data-dropdown-button=\"true\"\n >\n <MoreVertical className=\"h-4 w-4\" />\n </Button>\n {isOpen && (\n <div\n className={cn(\n 'absolute right-full mr-2 w-48 rounded-md shadow-lg bg-white ring-gray-400 ring-opacity-5 z-50',\n isNearBottom ? 'bottom-0' : 'top-0',\n )}\n >\n <div className=\"py-1\" role=\"menu\">\n {rowActions.map((action) => {\n const actionKey = `${rowIndex}-${action.id}`;\n const isActionLoading = loadingActionKey === actionKey;\n\n return (\n <button\n key={action.id}\n onClick={() => handleActionClick(action)}\n className=\"block w-full text-left px-4 py-2 text-sm hover:bg-accent transition-colors font-semibold disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-2 focus:outline-none focus:bg-accent\"\n disabled={isLoading || isActionLoading}\n role=\"menuitem\"\n >\n {isActionLoading && <Loader2 className=\"h-3 w-3 animate-spin\" />}\n {action.text}\n </button>\n );\n })}\n </div>\n </div>\n )}\n </div>\n </>\n );\n }\n\n function renderActions(rowIndex: number, rowActions: RowAction[]) {\n if (!actions.length) {\n return null;\n }\n\n return (\n <TableCell className=\"sticky right-0 bg-white overflow-visible\">\n <ActionsDropdown rowIndex={rowIndex} rowActions={rowActions} />\n </TableCell>\n );\n }\n\n const defaultClasses = `aspect-auto w-full`;\n const mergedClasses = className ? cn(defaultClasses, className) : defaultClasses;\n\n function getRandomColorForValue(columnKey: string, value: any): string {\n const normalizedKey = normalizeValue(value);\n\n if (chipColorMap[columnKey]?.[normalizedKey]) {\n return chipColorMap[columnKey][normalizedKey];\n }\n\n return 'bg-gray-50 text-gray-900 shadow-sm';\n }\n\n function renderChip(columnKey: string, value: any) {\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n const formattedValue = formatValue(value, decimalPrecision);\n\n if (!chipMode) {\n return <>{formattedValue}</>;\n }\n\n let chipClassName = '';\n\n if (chipMode === 'useMap') {\n const valueStr = String(value);\n chipClassName = chipStylesMapping[columnKey]?.[valueStr];\n\n if (!chipClassName) {\n const valueLower = valueStr.toLowerCase().trim();\n chipClassName = SEMANTIC_CHIP_STYLES_MAP[valueLower];\n }\n\n if (!chipClassName) {\n chipClassName = 'bg-gray-50 text-gray-900 shadow-sm';\n }\n } else if (chipMode === 'useRandom') {\n chipClassName = getRandomColorForValue(columnKey, value);\n }\n\n return (\n <span\n className={cn(\n 'inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ring-gray-500/10',\n chipClassName,\n )}\n >\n {formattedValue}\n </span>\n );\n }\n\n function renderTableComponent() {\n if (isLoading || !data || data.length === 0) {\n return <TableLoader />;\n }\n\n return (\n <Table\n {...otherProps}\n className={`caption-bottom text-sm relative ${mergedClasses}`}\n data-slot=\"table\"\n >\n <TableHeader data-slot=\"table-header\" className=\"sticky top-0 z-2\">\n <TableRow>\n {isBulkSelectionEnabled && (\n <TableCell className=\"p-2 w-10\">\n <Checkbox\n checked={selectedIndices?.length === data.length}\n onCheckedChange={() => {\n if (setSelectedIndices) {\n if (selectedIndices?.length === data.length) {\n setSelectedIndices([]);\n } else {\n setSelectedIndices(data.map((_, idx) => idx));\n }\n }\n }}\n />\n </TableCell>\n )}\n {headers.map((head: string, idx: number) => {\n const isActionColumn = actions.length > 0 && idx === headers.length - 1;\n const originalKey = originalKeys[idx];\n\n if (isActionColumn) {\n return (\n <TableHead\n key={idx}\n data-slot={`table-header-${idx}`}\n contentEditable={isEditable}\n className=\"sticky right-0 bg-slate-100\"\n >\n {head}\n </TableHead>\n );\n }\n\n return (\n <TableHeadSortable\n key={idx}\n data-slot={`table-header-${idx}`}\n sortDirection={sortDirections[originalKey] || 'asc'}\n isActive={activeSortColumn === originalKey}\n onSort={(direction) => handleSortClick(originalKey, direction)}\n sortable={!isLoading}\n isEditable={isEditable}\n >\n {head}\n </TableHeadSortable>\n );\n })}\n </TableRow>\n </TableHeader>\n <TableBody data-slot=\"table-body\">\n {rows.map((row: any[], rIdx: number) => (\n <TableRow\n key={rIdx}\n data-slot={`row-${rIdx}`}\n className=\"hover:bg-muted/50 border-b transition-colors\"\n >\n {isBulkSelectionEnabled && (\n <TableCell className=\"p-2 align-middle\">\n <Checkbox\n checked={selectedIndices?.includes(rIdx)}\n onCheckedChange={() => handleCheckboxClick(rIdx)}\n />\n </TableCell>\n )}\n {row.map((cell: string, cIdx: number) => {\n const columnKey = originalKeys[cIdx];\n const chipMode = columnKey\n ? getChipMode(columnWithChipClass, columnKey)\n : undefined;\n const shouldRenderChip = !!chipMode;\n\n return (\n <TableCell\n key={cIdx}\n data-slot={`cell-${rIdx}-${cIdx}`}\n className=\"p-2 align-middle whitespace-nowrap\"\n contentEditable={false}\n >\n {shouldRenderChip\n ? renderChip(columnKey, cell)\n : formatValue(cell, decimalPrecision)}\n </TableCell>\n );\n })}\n {renderActions(rIdx, actions)}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n }\n\n return (\n <Fragment>\n <div className=\"flex flex-col h-full overflow-hidden\">\n <ScrollArea\n data-slot=\"table-container\"\n className={mergedClasses}\n {...(height !== undefined && { style: { height } })}\n >\n {renderTableComponent()}\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n </div>\n {pagination && pagination.totalCount > 0 && (\n <div className=\"flex-shrink-0 flex items-center justify-between mt-2 w-full overflow-x-auto border-t pt-2\">\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n <label htmlFor=\"page-size-select\" className=\"text-sm whitespace-nowrap\">\n Rows per page:\n </label>\n <select\n id=\"page-size-select\"\n value={pageSize}\n onChange={(e) => handlePageChange(1, Number(e.target.value))}\n className=\"border rounded px-2 py-1 text-sm cursor-pointer\"\n disabled={isLoading}\n >\n {(pagination.pageSizeOptions || [10, 20, 50, 100]).map((size: number) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n {title && !isEditable && onDownload && (\n <DownloadButton\n component=\"table\"\n title={title}\n onDownload={onDownload}\n dataCount={pagination?.totalCount}\n />\n )}\n <span className=\"text-xs text-muted-foreground whitespace-nowrap ml-1.5\">\n {(pageNumber - 1) * pageSize + 1}–\n {Math.min(pageNumber * pageSize, pagination.totalCount)} of {pagination.totalCount}\n </span>\n <Pagination>\n <PaginationContent className=\"gap-0.2 flex-shrink-0\">\n {renderPaginationArrows(pageNumber, totalPages, isLoading, handlePageChange)}\n </PaginationContent>\n </Pagination>\n </div>\n </div>\n )}\n {FormDialog}\n </Fragment>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"data-table.js","names":["useEffect","useState","Fragment","useMemo","useRef","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","TableHeadSortable","TableLoader","ScrollArea","ScrollBar","Pagination","PaginationContent","renderPaginationArrows","Button","cn","renderNoDataFallback","formatValue","SEMANTIC_CHIP_STYLES_MAP","RANDOM_CHIP_COLOR_PALETTE","Checkbox","MoreVertical","Loader2","useButtonForm","DownloadButton","jsx","_jsx","jsxs","_jsxs","_Fragment","normalizeValue","value","undefined","str","String","trim","toLowerCase","getChipMode","columnWithChipClass","columnKey","mode","getUniqueValuesHash","data","Array","isArray","length","availableKeys","Object","keys","hashParts","forEach","includes","chipMode","uniqueNormalizedValues","Set","row","normalizedKey","add","sortedUniqueValues","from","sort","JSON","stringify","DataTable","_ref","_ref2","_pagination$values$pa","_pagination$values","_ref3","_pagination$values$pa2","_pagination$values2","_pagination$totalCoun","_pagination$totalCoun2","_ref$data","_ref$headerMapper","headerMapper","_ref$className","className","_ref$actions","actions","_ref$isEditable","isEditable","pagination","_ref$isLoading","isLoading","onRowAction","onPageChange","onSort","sortConfig","_ref$otherProps","otherProps","height","_ref$decimalPrecision","decimalPrecision","_ref$columnWithChipCl","_ref$chipStylesMappin","chipStylesMapping","navigateToPage","_ref$isBulkSelectionE","isBulkSelectionEnabled","_ref$selectedIndices","selectedIndices","setSelectedIndices","title","onDownload","children","style","minHeight","_useState","activeSortColumn","setActiveSortColumn","_useState2","sortDirections","setSortDirections","_useState3","activeRowIndex","setActiveRowIndex","_useState4","activeAction","setActiveAction","_useState5","isFormSubmitting","setIsFormSubmitting","_useState6","loadingActionKey","setLoadingActionKey","_useState7","Number","values","pageNumber","initialPage","setPageNumber","_useState8","pageSize","initialPageSize","setPageSize","_useState9","Math","ceil","totalCount","totalPages","setTotalPages","_useState10","chipColorMap","setChipColorMap","_useState11","openDropdownIndex","setOpenDropdownIndex","prevDataHashRef","_ref4","_pagination$values$pa3","_pagination$values3","_ref5","_pagination$values$pa4","_pagination$values4","first","sortColumn","sortDirection","computedColorMap","newColorMap","index","colorIndex","uniqueValuesHash","current","prevMap","merged","_extends","cleaned","hasChanges","_useButtonForm","formMapper","action","formTitle","formDescription","formButtonText","isSubmitting","onClose","onSubmit","_onSubmit","_asyncToGenerator","_regeneratorRuntime","mark","_callee","formData","wrap","_callee$","_context","prev","next","id","finish","stop","_x","apply","arguments","FormDialog","openForm","handleButtonClick","rowIndex","targetPageId","type","onClick","originalKeys","filter","key","headers","map","push","rows","datum","handlePageChange","_x2","_x3","_handlePageChange","_callee3","newPage","newSize","_callee3$","_context3","handleSortClick","column","direction","_extends2","handleCheckboxClick","idx","concat","ActionsDropdown","_ref6","rowActions","isOpen","totalRows","isNearBottom","handleActionClick","_x4","_handleActionClick","_callee2","actionKey","_callee2$","_context2","abrupt","toggleDropdown","handleBackdropClick","background","cursor","variant","size","e","stopPropagation","disabled","role","isActionLoading","text","renderActions","defaultClasses","mergedClasses","getRandomColorForValue","_chipColorMap$columnK","renderChip","formattedValue","chipClassName","_chipStylesMapping$co","valueStr","valueLower","renderTableComponent","checked","onCheckedChange","_","head","isActionColumn","originalKey","contentEditable","isActive","sortable","rIdx","cell","cIdx","shouldRenderChip","orientation","htmlFor","onChange","target","pageSizeOptions","component","dataCount","min"],"sources":["../../../src/plugins/helpers/data-table.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useState, Fragment, useMemo, useRef } from 'react';\nimport {\n Table,\n TableHeader,\n TableRow,\n TableHead,\n TableBody,\n TableCell,\n TableHeadSortable,\n SortDirection,\n} from '../../shadcn/components/ui/table';\nimport { TableLoader } from '../../shadcn/components/ui/skeleton';\nimport { ScrollArea, ScrollBar } from '../../shadcn/components/ui/scroll-area';\nimport {\n Pagination,\n PaginationContent,\n renderPaginationArrows,\n} from '../../shadcn/components/ui/pagination';\nimport { Button } from '../../shadcn/components/ui/button';\nimport { cn } from '../../shadcn/utils';\nimport { renderNoDataFallback } from './extra';\nimport { formatValue } from '../../helpers';\nimport { SEMANTIC_CHIP_STYLES_MAP, RANDOM_CHIP_COLOR_PALETTE } from '../../constants';\nimport { Checkbox } from '../../shadcn/components/ui/checkbox';\nimport { MoreVertical, Loader2 } from 'lucide-react';\nimport { useButtonForm } from './button-form';\nimport { DownloadButton } from './download-data-button';\n\ntype RowAction = {\n id: string;\n text: string;\n variant?: string;\n tooltipContent?: string;\n className?: string;\n action: any;\n};\n\nexport type DataTableProps = {\n data: Record<string, any>[];\n headerMapper?: Record<string, string>;\n className?: string;\n isEditable?: boolean;\n actions?: RowAction[];\n pagination?: {\n values?: {\n pageNumber: number;\n pageSize: number;\n };\n initialPage?: number;\n initialPageSize?: number;\n totalCount: number;\n pageSizeOptions: number[];\n };\n isLoading?: boolean;\n onRowAction?: (rowIndex: number, actionId: string, formData?: Record<string, any>) => void;\n onPageChange?: (pageNumber: number, pageSize: number) => void;\n onSort?: (column: string, direction: SortDirection) => void;\n sortConfig?: Record<string, SortDirection>;\n otherProps?: Record<string, any>;\n height?: string | number;\n decimalPrecision?: number;\n columnWithChipClass?: Record<string, 'useMap' | 'useRandom'>;\n chipStylesMapping?: Record<string, Record<string, string>>;\n navigateToPage?: (pageId: string) => void;\n isBulkSelectionEnabled?: boolean;\n selectedIndices?: number[];\n setSelectedIndices?: (indices: number[]) => void;\n title?: string;\n onDownload?: (limit: number) => Promise<void>;\n};\n\n/**\n * Normalizes a value to a consistent string key for color mapping.\n * Handles all value types: null/undefined, numbers, booleans, objects, arrays, dates.\n * Ensures consistent color assignment for all variations of the same logical value.\n */\nfunction normalizeValue(value: any): string {\n // Handle null/undefined\n if (value === null || value === undefined) {\n return '';\n }\n\n const str = String(value);\n\n return str.trim().toLowerCase();\n}\n\nfunction getChipMode(\n columnWithChipClass: Record<string, 'useMap' | 'useRandom'>,\n columnKey: string,\n): 'useMap' | 'useRandom' | undefined {\n if (!(columnKey in columnWithChipClass)) {\n return undefined;\n }\n\n const mode = columnWithChipClass[columnKey];\n\n if (mode !== 'useMap' && mode !== 'useRandom') {\n return 'useRandom';\n }\n\n return mode;\n}\n\n/**\n * Generates a stable hash based on unique value sets per column.\n * This hash is order-independent - it only changes when the set of unique values changes,\n * not when rows are reordered (e.g., during sorting).\n */\nfunction getUniqueValuesHash(\n data: Record<string, any>[],\n columnWithChipClass: Record<string, 'useMap' | 'useRandom'>,\n): string {\n if (!Array.isArray(data) || data.length === 0) {\n return '';\n }\n\n const availableKeys = Object.keys(data[0] || {});\n const hashParts: Record<string, string[]> = {};\n\n Object.keys(columnWithChipClass).forEach((columnKey) => {\n if (!availableKeys.includes(columnKey)) {\n return;\n }\n\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n\n if (chipMode === 'useRandom') {\n const uniqueNormalizedValues = new Set<string>();\n data.forEach((row) => {\n const value = row[columnKey];\n const normalizedKey = normalizeValue(value);\n\n if (normalizedKey) {\n uniqueNormalizedValues.add(normalizedKey);\n }\n });\n const sortedUniqueValues = Array.from(uniqueNormalizedValues).sort();\n hashParts[columnKey] = sortedUniqueValues;\n }\n });\n\n return JSON.stringify(hashParts);\n}\n\nexport function DataTable({\n data = [],\n headerMapper = {},\n className = '',\n actions = [],\n isEditable = false,\n pagination,\n isLoading = false,\n onRowAction,\n onPageChange,\n onSort,\n sortConfig,\n otherProps = {},\n height,\n decimalPrecision = 2,\n columnWithChipClass = {},\n chipStylesMapping = {},\n navigateToPage,\n isBulkSelectionEnabled = false,\n selectedIndices = [],\n setSelectedIndices,\n title,\n onDownload,\n}: DataTableProps) {\n if (!data || data.length === 0) {\n return (\n <Fragment>\n <div className=\"flex flex-col overflow-hidden\">\n <div\n data-slot=\"table-container\"\n className=\"aspect-auto w-full\"\n style={{ height: 'auto', minHeight: '180px' }}\n >\n {isLoading ? <TableLoader /> : renderNoDataFallback()}\n </div>\n </div>\n </Fragment>\n );\n }\n\n const [activeSortColumn, setActiveSortColumn] = useState<string | null>(null);\n const [sortDirections, setSortDirections] = useState<Record<string, SortDirection>>({});\n const [activeRowIndex, setActiveRowIndex] = useState<number | null>(null);\n const [activeAction, setActiveAction] = useState<RowAction | null>(null);\n const [isFormSubmitting, setIsFormSubmitting] = useState(false);\n const [loadingActionKey, setLoadingActionKey] = useState<string | null>(null);\n\n const [pageNumber, setPageNumber] = useState(\n Number(pagination?.values?.pageNumber ?? pagination?.initialPage ?? 1),\n );\n const [pageSize, setPageSize] = useState(\n Number(pagination?.values?.pageSize ?? pagination?.initialPageSize ?? 10),\n );\n const [totalPages, setTotalPages] = useState(\n Math.ceil((pagination?.totalCount || 0) / pageSize) || 1,\n );\n\n const [chipColorMap, setChipColorMap] = useState<Record<string, Record<string, string>>>({});\n\n const [openDropdownIndex, setOpenDropdownIndex] = useState<number | null>(null);\n\n const prevDataHashRef = useRef<string>('');\n\n useEffect(() => {\n setPageNumber(Number(pagination?.values?.pageNumber ?? pagination?.initialPage ?? 1));\n setPageSize(Number(pagination?.values?.pageSize ?? pagination?.initialPageSize ?? 25));\n }, [pagination]);\n\n useEffect(() => {\n setTotalPages(Math.ceil((pagination?.totalCount || 0) / pageSize) || 1);\n }, [pagination?.totalCount, pageSize]);\n\n useEffect(() => {\n if (sortConfig) {\n setSortDirections(sortConfig);\n const first = Object.keys(sortConfig)[0];\n\n if (first) {\n setActiveSortColumn(first);\n }\n }\n }, [sortConfig]);\n\n useEffect(() => {\n if (sortConfig?.sortColumn || sortConfig?.sortDirection) {\n sortConfig.sortColumn = null;\n sortConfig.sortDirection = null;\n }\n\n setActiveSortColumn(null);\n setSortDirections({});\n }, []);\n\n const computedColorMap = useMemo(() => {\n if (!Array.isArray(data) || data.length === 0) {\n return {};\n }\n\n // Get available column keys from first row\n const availableKeys = Object.keys(data[0] || {});\n\n const newColorMap: Record<string, Record<string, string>> = {};\n\n // Process each column that uses random chips\n Object.keys(columnWithChipClass).forEach((columnKey) => {\n // Validate column key exists in data\n if (!availableKeys.includes(columnKey)) {\n return;\n }\n\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n\n if (chipMode === 'useRandom') {\n if (!newColorMap[columnKey]) {\n newColorMap[columnKey] = {};\n }\n\n const uniqueNormalizedValues = new Set<string>();\n data.forEach((row) => {\n const value = row[columnKey];\n const normalizedKey = normalizeValue(value);\n\n if (normalizedKey) {\n uniqueNormalizedValues.add(normalizedKey);\n }\n });\n\n const sortedUniqueValues = Array.from(uniqueNormalizedValues).sort();\n\n sortedUniqueValues.forEach((normalizedKey, index) => {\n if (!newColorMap[columnKey][normalizedKey]) {\n const colorIndex = index % RANDOM_CHIP_COLOR_PALETTE.length;\n newColorMap[columnKey][normalizedKey] = RANDOM_CHIP_COLOR_PALETTE[colorIndex];\n }\n });\n }\n });\n\n return newColorMap;\n }, [data, columnWithChipClass]);\n\n useEffect(() => {\n const uniqueValuesHash = getUniqueValuesHash(data, columnWithChipClass);\n\n // Only update if the set of unique values actually changed\n if (uniqueValuesHash !== prevDataHashRef.current) {\n prevDataHashRef.current = uniqueValuesHash;\n\n setChipColorMap((prevMap) => {\n const merged = { ...prevMap };\n Object.keys(computedColorMap).forEach((columnKey) => {\n merged[columnKey] = { ...computedColorMap[columnKey], ...merged[columnKey] };\n });\n\n return merged;\n });\n }\n }, [computedColorMap, data, columnWithChipClass]);\n\n useEffect(() => {\n setChipColorMap((prevMap) => {\n const cleaned = { ...prevMap };\n let hasChanges = false;\n\n Object.keys(cleaned).forEach((columnKey) => {\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n\n if (!chipMode) {\n delete cleaned[columnKey];\n hasChanges = true;\n }\n });\n\n return hasChanges ? cleaned : prevMap;\n });\n }, [columnWithChipClass]);\n\n const { FormDialog, openForm } = useButtonForm({\n formMapper: activeAction?.action.formMapper,\n formTitle: activeAction?.action.formTitle,\n formDescription: activeAction?.action.formDescription,\n formButtonText: activeAction?.action.formButtonText,\n isSubmitting: isFormSubmitting || isLoading,\n onClose: () => {\n setActiveRowIndex(null);\n setActiveAction(null);\n },\n onSubmit: async (formData) => {\n if (activeRowIndex !== null && activeAction) {\n setIsFormSubmitting(true);\n\n try {\n await onRowAction?.(activeRowIndex, activeAction.id, formData);\n } finally {\n setIsFormSubmitting(false);\n }\n\n setActiveAction(null);\n setActiveRowIndex(null);\n }\n },\n });\n\n function handleButtonClick(rowIndex: number, action: RowAction) {\n if (action.action.action === 'navigateToPage' && action.action.targetPageId) {\n navigateToPage?.(action.action.targetPageId);\n\n return;\n }\n\n if (action.action.type === 'navigation') {\n const onClick = action.action.onClick;\n\n if (onClick?.action === 'navigateToPage' && onClick.targetPageId) {\n navigateToPage?.(onClick.targetPageId);\n\n return;\n }\n }\n\n if (action.action.formMapper && Object.keys(action.action.formMapper).length > 0) {\n setActiveRowIndex(rowIndex);\n setActiveAction(action);\n } else {\n onRowAction?.(rowIndex, action.id);\n }\n }\n\n useEffect(() => {\n if (activeAction?.action.formMapper && Object.keys(activeAction.action.formMapper).length > 0) {\n openForm();\n }\n }, [activeAction]);\n\n const originalKeys = Object.keys(data[0] || {}).filter((key) => key in headerMapper);\n const headers = originalKeys.map((key) => headerMapper[key]);\n\n if (actions.length > 0) {\n headers.push('');\n }\n\n const rows = data.map((datum: any) => originalKeys.map((key) => datum[key]));\n\n async function handlePageChange(newPage = pageNumber, newSize = pageSize) {\n setPageNumber(newPage);\n setPageSize(newSize);\n onPageChange?.(newPage, newSize);\n }\n\n function handleSortClick(column: string, direction: SortDirection) {\n setActiveSortColumn(direction ? column : null);\n setSortDirections((prev) => ({\n ...prev,\n [column]: direction,\n }));\n onSort?.(column, direction);\n }\n\n function handleCheckboxClick(rowIndex: number) {\n if (setSelectedIndices) {\n if (selectedIndices.includes(rowIndex)) {\n setSelectedIndices(selectedIndices.filter((idx) => idx !== rowIndex));\n } else {\n setSelectedIndices([...selectedIndices, rowIndex]);\n }\n }\n }\n\n function ActionsDropdown({\n rowIndex,\n rowActions,\n }: {\n rowIndex: number;\n rowActions: RowAction[];\n }) {\n const isOpen = openDropdownIndex === rowIndex;\n\n const totalRows = rows.length;\n const isNearBottom = rowIndex >= totalRows - 3;\n\n async function handleActionClick(action: RowAction) {\n if (action.action.action === 'navigateToPage' && action.action.targetPageId) {\n navigateToPage?.(action.action.targetPageId);\n setOpenDropdownIndex(null);\n\n return;\n }\n\n if (action.action.type === 'navigation') {\n const onClick = action.action.onClick;\n\n if (onClick?.action === 'navigateToPage' && onClick.targetPageId) {\n navigateToPage?.(onClick.targetPageId);\n setOpenDropdownIndex(null);\n\n return;\n }\n }\n\n // Handle form-based and API actions\n const actionKey = `${rowIndex}-${action.id}`;\n\n if (action.action.formMapper && Object.keys(action.action.formMapper).length > 0) {\n setActiveRowIndex(rowIndex);\n setActiveAction(action);\n setOpenDropdownIndex(null);\n } else {\n try {\n setLoadingActionKey(actionKey);\n await onRowAction?.(rowIndex, action.id);\n } finally {\n setLoadingActionKey(null);\n setOpenDropdownIndex(null);\n }\n }\n }\n\n function toggleDropdown() {\n setOpenDropdownIndex(isOpen ? null : rowIndex);\n }\n\n function handleBackdropClick() {\n if (!loadingActionKey) {\n setOpenDropdownIndex(null);\n }\n }\n\n return (\n <>\n {isOpen && (\n <div\n className=\"fixed inset-0 z-40\"\n onClick={handleBackdropClick}\n style={{ background: 'transparent', cursor: 'default' }}\n />\n )}\n <div className=\"relative\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={(e) => {\n e.stopPropagation();\n toggleDropdown();\n }}\n disabled={isLoading}\n className=\"h-8 w-8 relative z-50\"\n data-dropdown-button=\"true\"\n >\n <MoreVertical className=\"h-4 w-4\" />\n </Button>\n {isOpen && (\n <div\n className={cn(\n 'absolute right-full mr-2 w-48 rounded-md shadow-lg bg-white ring-gray-400 ring-opacity-5 z-50',\n isNearBottom ? 'bottom-0' : 'top-0',\n )}\n >\n <div className=\"py-1\" role=\"menu\">\n {rowActions.map((action) => {\n const actionKey = `${rowIndex}-${action.id}`;\n const isActionLoading = loadingActionKey === actionKey;\n\n return (\n <button\n key={action.id}\n onClick={() => handleActionClick(action)}\n className=\"block w-full text-left px-4 py-2 text-sm hover:bg-accent transition-colors font-semibold disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-2 focus:outline-none focus:bg-accent\"\n disabled={isLoading || isActionLoading}\n role=\"menuitem\"\n >\n {isActionLoading && <Loader2 className=\"h-3 w-3 animate-spin\" />}\n {action.text}\n </button>\n );\n })}\n </div>\n </div>\n )}\n </div>\n </>\n );\n }\n\n function renderActions(rowIndex: number, rowActions: RowAction[]) {\n if (!actions.length) {\n return null;\n }\n\n return (\n <TableCell className=\"sticky right-0 bg-white overflow-visible\">\n <ActionsDropdown rowIndex={rowIndex} rowActions={rowActions} />\n </TableCell>\n );\n }\n\n const defaultClasses = `aspect-auto w-full`;\n const mergedClasses = className ? cn(defaultClasses, className) : defaultClasses;\n\n function getRandomColorForValue(columnKey: string, value: any): string {\n const normalizedKey = normalizeValue(value);\n\n if (chipColorMap[columnKey]?.[normalizedKey]) {\n return chipColorMap[columnKey][normalizedKey];\n }\n\n return 'bg-gray-50 text-gray-900 shadow-sm';\n }\n\n function renderChip(columnKey: string, value: any) {\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n const formattedValue = formatValue(value, decimalPrecision);\n\n if (!chipMode) {\n return <>{formattedValue}</>;\n }\n\n let chipClassName = '';\n\n if (chipMode === 'useMap') {\n const valueStr = String(value);\n chipClassName = chipStylesMapping[columnKey]?.[valueStr];\n\n if (!chipClassName) {\n const valueLower = valueStr.toLowerCase().trim();\n chipClassName = SEMANTIC_CHIP_STYLES_MAP[valueLower];\n }\n\n if (!chipClassName) {\n chipClassName = 'bg-gray-50 text-gray-900 shadow-sm';\n }\n } else if (chipMode === 'useRandom') {\n chipClassName = getRandomColorForValue(columnKey, value);\n }\n\n return (\n <span\n className={cn(\n 'inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ring-gray-500/10',\n chipClassName,\n )}\n >\n {formattedValue}\n </span>\n );\n }\n\n function renderTableComponent() {\n if (isLoading || !data || data.length === 0) {\n return <TableLoader />;\n }\n\n return (\n <Table\n {...otherProps}\n className={`caption-bottom text-sm relative ${mergedClasses}`}\n data-slot=\"table\"\n >\n <TableHeader data-slot=\"table-header\" className=\"sticky top-0 z-2\">\n <TableRow>\n {isBulkSelectionEnabled && (\n <TableCell className=\"p-2 w-10\">\n <Checkbox\n checked={selectedIndices?.length === data.length}\n onCheckedChange={() => {\n if (setSelectedIndices) {\n if (selectedIndices?.length === data.length) {\n setSelectedIndices([]);\n } else {\n setSelectedIndices(data.map((_, idx) => idx));\n }\n }\n }}\n />\n </TableCell>\n )}\n {headers.map((head: string, idx: number) => {\n const isActionColumn = actions.length > 0 && idx === headers.length - 1;\n const originalKey = originalKeys[idx];\n\n if (isActionColumn) {\n return (\n <TableHead\n key={idx}\n data-slot={`table-header-${idx}`}\n contentEditable={isEditable}\n className=\"sticky right-0 bg-slate-100\"\n >\n {head}\n </TableHead>\n );\n }\n\n return (\n <TableHeadSortable\n key={idx}\n data-slot={`table-header-${idx}`}\n sortDirection={sortDirections[originalKey] || 'asc'}\n isActive={activeSortColumn === originalKey}\n onSort={(direction) => handleSortClick(originalKey, direction)}\n sortable={!isLoading}\n isEditable={isEditable}\n >\n {head}\n </TableHeadSortable>\n );\n })}\n </TableRow>\n </TableHeader>\n <TableBody data-slot=\"table-body\">\n {rows.map((row: any[], rIdx: number) => (\n <TableRow\n key={rIdx}\n data-slot={`row-${rIdx}`}\n className=\"hover:bg-muted/50 border-b transition-colors\"\n >\n {isBulkSelectionEnabled && (\n <TableCell className=\"p-2 align-middle\">\n <Checkbox\n checked={selectedIndices?.includes(rIdx)}\n onCheckedChange={() => handleCheckboxClick(rIdx)}\n />\n </TableCell>\n )}\n {row.map((cell: string, cIdx: number) => {\n const columnKey = originalKeys[cIdx];\n const chipMode = columnKey\n ? getChipMode(columnWithChipClass, columnKey)\n : undefined;\n const shouldRenderChip = !!chipMode;\n\n return (\n <TableCell\n key={cIdx}\n data-slot={`cell-${rIdx}-${cIdx}`}\n className=\"p-2 align-middle whitespace-nowrap\"\n contentEditable={false}\n >\n {shouldRenderChip\n ? renderChip(columnKey, cell)\n : formatValue(cell, decimalPrecision)}\n </TableCell>\n );\n })}\n {renderActions(rIdx, actions)}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n }\n\n return (\n <Fragment>\n <div className=\"flex flex-col h-full overflow-hidden\">\n <ScrollArea\n data-slot=\"table-container\"\n className={mergedClasses}\n {...(height !== undefined && { style: { height } })}\n >\n {renderTableComponent()}\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n </div>\n {((pagination?.totalCount ?? 0) > 0 || (title && !isEditable && onDownload)) && (\n <div className=\"flex-shrink-0 flex items-center justify-between mt-2 w-full overflow-x-auto border-t pt-2\">\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n {pagination && pagination.totalCount > 0 && (\n <>\n <label htmlFor=\"page-size-select\" className=\"text-sm whitespace-nowrap\">\n Rows per page:\n </label>\n <select\n id=\"page-size-select\"\n value={pageSize}\n onChange={(e) => handlePageChange(1, Number(e.target.value))}\n className=\"border rounded px-2 py-1 text-sm cursor-pointer\"\n disabled={isLoading}\n >\n {(pagination.pageSizeOptions || [10, 20, 50, 100]).map((size: number) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </>\n )}\n </div>\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n {title && !isEditable && onDownload && (\n <DownloadButton\n component=\"table\"\n title={title}\n onDownload={onDownload}\n dataCount={pagination?.totalCount ?? data.length}\n />\n )}\n {pagination && pagination.totalCount > 0 && (\n <>\n <span className=\"text-xs text-muted-foreground whitespace-nowrap ml-1.5\">\n {(pageNumber - 1) * pageSize + 1}–\n {Math.min(pageNumber * pageSize, pagination.totalCount)} of {pagination.totalCount}\n </span>\n <Pagination>\n <PaginationContent className=\"gap-0.2 flex-shrink-0\">\n {renderPaginationArrows(pageNumber, totalPages, isLoading, handlePageChange)}\n </PaginationContent>\n </Pagination>\n </>\n )}\n </div>\n </div>\n )}\n {FormDialog}\n </Fragment>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|