Boarding, ticketing, class fare edit updates

This commit is contained in:
Stephanos A
2026-07-02 16:20:15 +03:00
parent b511da2821
commit 9494d57343
15 changed files with 370 additions and 325 deletions

View File

@@ -149,7 +149,7 @@ export default function DataTable<T extends Record<string, any>>({
<tbody className="bg-white dark:bg-gray-900 divide-y divide-gray-200 dark:divide-gray-700">
{sortedData.map((item, index) => (
<tr
key={item.id || index}
key={item.id ?? index}
onClick={() => onRowClick?.(item)}
className={cn(
'transition-colors',
@@ -186,15 +186,16 @@ export default function DataTable<T extends Record<string, any>>({
return (
<button
ref={(el) => { buttonRefs.current[item.id] = el; }}
ref={(el) => { buttonRefs.current[item.id ?? index] = el; }}
onClick={(e) => {
e.stopPropagation();
const rect = e.currentTarget.getBoundingClientRect();
setDropdownPosition({
top: rect.bottom + window.scrollY,
left: rect.right + window.scrollX - 192, // 192px = w-48
left: rect.right + window.scrollX - 192,
});
setExpandedActions(expandedActions === item.id ? null : item.id);
const key = item.id ?? String(index);
setExpandedActions(expandedActions === key ? null : key);
}}
className="p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors"
>
@@ -229,9 +230,9 @@ export default function DataTable<T extends Record<string, any>>({
>
<div className="py-1">
{actions
?.filter(action => !action.show || action.show(sortedData.find(item => item.id === expandedActions)!))
?.filter(action => !action.show || action.show(sortedData.find((item, i) => (item.id ?? String(i)) === expandedActions)!))
.map((action, actionIndex) => {
const item = sortedData.find(item => item.id === expandedActions);
const item = sortedData.find((item, i) => (item.id ?? String(i)) === expandedActions);
if (!item) return null;
return (
<button