diff --git a/src/components/bootstrap/BootstrapWizard.tsx b/src/components/bootstrap/BootstrapWizard.tsx index 02724d2..9bd3260 100644 --- a/src/components/bootstrap/BootstrapWizard.tsx +++ b/src/components/bootstrap/BootstrapWizard.tsx @@ -408,9 +408,9 @@ function WizardShell({ children }: { children: React.ReactNode }) {
- -
-
{children}
+ +
+
{children}
diff --git a/src/components/forms/DynamicForm.tsx b/src/components/forms/DynamicForm.tsx index 2f8bc77..5d6431c 100644 --- a/src/components/forms/DynamicForm.tsx +++ b/src/components/forms/DynamicForm.tsx @@ -743,7 +743,7 @@ export function DynamicForm({ viewName, objectId }: DynamicFormProps) { const sectionsToRender = buildSections(combinedForm, currentFields, isCreate, edition); return ( -
+
)}
-
+
{isDirty && ( {t('form.unsavedChangesLabel', 'Unsaved changes')} )} diff --git a/src/components/lists/DynamicList.tsx b/src/components/lists/DynamicList.tsx index 6e868ea..37c11fd 100644 --- a/src/components/lists/DynamicList.tsx +++ b/src/components/lists/DynamicList.tsx @@ -1392,13 +1392,13 @@ export function DynamicList({ viewName }: DynamicListProps) { } return ( -
-
-
-

{list.title}

- {list.subtitle &&

{list.subtitle}

} +
+
+
+

{list.title}

+ {list.subtitle &&

{list.subtitle}

}
-
+
{hasMassActions && selectedIds.size > 0 && ( @@ -1559,16 +1559,18 @@ export function DynamicList({ viewName }: DynamicListProps) { )} -
+
{/* The scroll container must clip with the parent's inner radius (outer radius minus the 1px border), otherwise filled header rows - paint square corners behind the rounded border. */} -
- + paint square corners behind the rounded border. + `w-max min-w-full` keeps the table at least as wide as the card, + but lets wide column sets scroll horizontally inside this wrapper. */} +
+
{hasMassActions && ( - )} {displayColumns.map((col) => ( - ))} {hasItemActions && ( - )} @@ -1620,7 +1625,7 @@ export function DynamicList({ viewName }: DynamicListProps) { onClick={() => handleRowClick(item)} > {hasMassActions && ( - )} {displayColumns.map((col) => ( - ))} - {hasItemActions && } + {hasItemActions && ( + + )} ); }) @@ -1675,8 +1682,8 @@ export function DynamicList({ viewName }: DynamicListProps) { {items.length > 0 && ( -
-
+
+
{total !== null ? t('list.showing', 'Showing {{from}}-{{to}} of {{total}} {{name}}', { from: rangeStart, @@ -1688,7 +1695,7 @@ export function DynamicList({ viewName }: DynamicListProps) { count: items.length, })}
-
+
diff --git a/src/components/ui/scroll-area.tsx b/src/components/ui/scroll-area.tsx index c2012ca..dcf2a5c 100644 --- a/src/components/ui/scroll-area.tsx +++ b/src/components/ui/scroll-area.tsx @@ -18,8 +18,16 @@ const ScrollArea = React.forwardRef< viewportClassName?: string; } >(({ className, viewportClassName, children, ...props }, ref) => ( - - + + {/* + Radix wraps children in a `display: table` div with an intrinsic min-width. + That lets wide tables expand the whole shell and clip under overflow-x:hidden, + so horizontal scroll never reaches the table's own overflow-x-auto wrapper. + Force the inner wrapper to shrink to the viewport width instead. + */} + div]:!block [&>div]:!min-w-0', viewportClassName)} + > {children} diff --git a/src/components/views/DynamicView.tsx b/src/components/views/DynamicView.tsx index 27f3196..502a044 100644 --- a/src/components/views/DynamicView.tsx +++ b/src/components/views/DynamicView.tsx @@ -126,8 +126,8 @@ function ViewField({ label, field, value, schema }: { label: string; field: Fiel const isBlock = isBlockType(field.type, value); return ( -
-
+
+
{label} {field.description && ( @@ -144,7 +144,7 @@ function ViewField({ label, field, value, schema }: { label: string; field: Fiel )}
-
+
diff --git a/src/pages/AdminPanel.tsx b/src/pages/AdminPanel.tsx index 5692dea..7af865e 100644 --- a/src/pages/AdminPanel.tsx +++ b/src/pages/AdminPanel.tsx @@ -315,14 +315,14 @@ export default function AdminPanel() { return (
-
+
-
-
+
+
{/* Keyed on the active account: forces MainContent (and every view it renders) to fully remount on switch, so account-scoped views can't keep showing stale data fetched
+ 0 && selectedIds.size === items.length} onCheckedChange={toggleSelectAll} @@ -1577,7 +1579,10 @@ export function DynamicList({ viewName }: DynamicListProps) { +
{col.label} {renderSortIndicator(col.name)} @@ -1585,7 +1590,7 @@ export function DynamicList({ viewName }: DynamicListProps) {
+ {t('list.actions', 'Actions')} e.stopPropagation()}> + e.stopPropagation()}> toggleSelectItem(itemId)} @@ -1629,7 +1634,7 @@ export function DynamicList({ viewName }: DynamicListProps) { + {isWebApplications && col.name === 'enabled' && !fields[col.name] ? ( item.enabled === true ? ( @@ -1664,7 +1669,9 @@ export function DynamicList({ viewName }: DynamicListProps) { )} {renderItemActions(item)}{renderItemActions(item)}