mirror of
https://github.com/christianvidalwolf-prog/Craze-Data-check.git
synced 2026-08-03 12:45:24 +02:00
fix: include dynamic columns in sticky position/z-index calculation
- Include pricingEditableCols and containerCols in column order for pinned calculation - Fix z-index stacking so all pinned columns stay visible while scrolling
This commit is contained in:
@@ -599,12 +599,15 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit,
|
||||
});
|
||||
};
|
||||
|
||||
// Column order for sticky positioning
|
||||
const columnOrder = ['articleNo', 'articleName', 'line', 'classification', 'productType', 'itemToLogistic', 'unitsOuter', 'outerW', 'outerL', 'outerH'];
|
||||
|
||||
// Calculate sticky left position for each pinned column
|
||||
const getStickyLeft = useMemo(() => {
|
||||
const pinnedOrder = columnOrder.filter(k => pinnedColumns.has(k));
|
||||
const baseOrder = ['articleNo', 'articleName', 'line', 'classification', 'productType', 'itemToLogistic', 'unitsOuter', 'outerW', 'outerL', 'outerH'];
|
||||
const dynamicOrder: string[] = [];
|
||||
pricingEditableCols.forEach(col => dynamicOrder.push(`prc_${col.index}`));
|
||||
containerCols.forEach(col => dynamicOrder.push(`con_${col.index}`));
|
||||
const fullOrder = [...baseOrder, ...dynamicOrder];
|
||||
|
||||
const pinnedOrder = fullOrder.filter(k => pinnedColumns.has(k));
|
||||
return (key: string): number | null => {
|
||||
if (!pinnedColumns.has(key)) return null;
|
||||
const idx = pinnedOrder.indexOf(key);
|
||||
@@ -612,23 +615,31 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit,
|
||||
let left = 0;
|
||||
for (let i = 0; i < idx; i++) {
|
||||
const k = pinnedOrder[i];
|
||||
left += columnWidths[k] || 100;
|
||||
const width = k.startsWith('prc_') || k.startsWith('con_')
|
||||
? (columnWidths[k] ?? 100)
|
||||
: (columnWidths[k] || 100);
|
||||
left += width;
|
||||
}
|
||||
return left;
|
||||
};
|
||||
}, [pinnedColumns, columnOrder, columnWidths]);
|
||||
}, [pinnedColumns, pricingEditableCols, containerCols, columnWidths]);
|
||||
|
||||
// Calculate z-index for sticky columns (so they stack correctly)
|
||||
const getStickyRank = useMemo(() => {
|
||||
const pinnedOrder = columnOrder.filter(k => pinnedColumns.has(k));
|
||||
const baseOrder = ['articleNo', 'articleName', 'line', 'classification', 'productType', 'itemToLogistic', 'unitsOuter', 'outerW', 'outerL', 'outerH'];
|
||||
const dynamicOrder: string[] = [];
|
||||
pricingEditableCols.forEach(col => dynamicOrder.push(`prc_${col.index}`));
|
||||
containerCols.forEach(col => dynamicOrder.push(`con_${col.index}`));
|
||||
const fullOrder = [...baseOrder, ...dynamicOrder];
|
||||
|
||||
const pinnedOrder = fullOrder.filter(k => pinnedColumns.has(k));
|
||||
return (key: string): number | null => {
|
||||
if (!pinnedColumns.has(key)) return null;
|
||||
const idx = pinnedOrder.indexOf(key);
|
||||
if (idx === -1) return null;
|
||||
// Higher rank = on top
|
||||
return pinnedOrder.length - idx + 10;
|
||||
};
|
||||
}, [pinnedColumns, columnOrder]);
|
||||
}, [pinnedColumns, pricingEditableCols, containerCols]);
|
||||
|
||||
const isPinned = (key: string) => pinnedColumns.has(key);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user