MM-64417 Change permissions table to use a grid for animation (#32573)

* MM-64417 Change permissions table to use a grid for animation

* Don't change padding on permissions table when animating

* Update snapshots

* Combine CSS for AdminPanel and AdminPanelTogglable

* Removed leftover reference to old CSS file

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
Harrison Healey
2025-07-08 11:55:24 -04:00
коммит произвёл GitHub
родитель 780c893b4f
Коммит 4bb35c5043
4 изменённых файлов: 43 добавлений и 13 удалений

Просмотреть файл

@@ -68,3 +68,21 @@
} }
} }
} }
.AdminPanelTogglable {
.AdminPanelTogglableContent {
display: grid;
grid-template-rows: 1fr;
transition: all 0.4s ease-in-out 0s;
}
&.closed {
.AdminPanelTogglableContent {
grid-template-rows: 0fr;
}
}
.AdminPanelTogglableContent .AdminPanelTogglableContentInner {
overflow: hidden;
}
}

Просмотреть файл

@@ -44,7 +44,15 @@ describe('components/widgets/admin_console/AdminPanelTogglable', () => {
} }
} }
> >
Test <div
className="AdminPanelTogglableContent"
>
<div
className="AdminPanelTogglableContentInner"
>
Test
</div>
</div>
</AdminPanel> </AdminPanel>
`); `);
}); });
@@ -77,7 +85,15 @@ describe('components/widgets/admin_console/AdminPanelTogglable', () => {
} }
} }
> >
Test <div
className="AdminPanelTogglableContent"
>
<div
className="AdminPanelTogglableContentInner"
>
Test
</div>
</div>
</AdminPanel> </AdminPanel>
`); `);
}); });

Просмотреть файл

@@ -27,6 +27,8 @@ const AdminPanelTogglable = ({
id, id,
onToggle, onToggle,
}: Props) => { }: Props) => {
// The content is rendered in two divs: an outer one that uses CSS grid to trick the browser into animating height
// and an inner one to prevent the content from overflowing the grid.
return ( return (
<AdminPanel <AdminPanel
className={'AdminPanelTogglable ' + className + (open ? '' : ' closed')} className={'AdminPanelTogglable ' + className + (open ? '' : ' closed')}
@@ -36,7 +38,11 @@ const AdminPanelTogglable = ({
onHeaderClick={onToggle} onHeaderClick={onToggle}
button={<AccordionToggleIcon/>} button={<AccordionToggleIcon/>}
> >
{children} <div className='AdminPanelTogglableContent'>
<div className='AdminPanelTogglableContentInner'>
{children}
</div>
</div>
</AdminPanel> </AdminPanel>
); );
}; };

Просмотреть файл

@@ -29,14 +29,6 @@
text-decoration: none; text-decoration: none;
} }
&.closed {
.permissions-tree {
max-height: 0;
padding: 0 1.5rem;
overflow-y: hidden;
}
}
.no-team-schemes { .no-team-schemes {
padding: 20px; padding: 20px;
margin: 20px; margin: 20px;
@@ -80,9 +72,7 @@
} }
.permissions-tree { .permissions-tree {
max-height: 2000px;
padding: 0.8em 1.5rem; padding: 0.8em 1.5rem;
transition: all 0.4s ease-in-out 0s;
&.guest { &.guest {
.permission-row { .permission-row {