feat: Добавить компонент AccordionCard в менеджеры ASNs, Domains и IPRanges для улучшения интерфейса ввода данных и поддержки функции перетаскивания файлов для импорта
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m43s
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m43s
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
import { useState } from 'react';
|
||||
import { IconChevronDown } from '@tabler/icons-react';
|
||||
|
||||
function AccordionCard({ title, defaultOpen = false, children }) {
|
||||
const [open, setOpen] = useState(Boolean(defaultOpen));
|
||||
return (
|
||||
<div className="card card-md">
|
||||
<div className="card-header d-flex align-items-center justify-content-between" role="button" onClick={() => setOpen(v => !v)} aria-expanded={open}>
|
||||
<h3 className="card-title m-0">{title}</h3>
|
||||
<IconChevronDown className={`icon ms-2 transition ${open ? 'rotate-180' : ''}`} />
|
||||
</div>
|
||||
{open && (
|
||||
<div className="card-body">
|
||||
{children}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default AccordionCard;
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ function PageHeader({ title, pretitle, actions, meta }) {
|
||||
</div>
|
||||
{/* Отдельная строка под заголовком: действия страницы */}
|
||||
{actions && (
|
||||
<div className="mt-3 d-print-none">
|
||||
<div className="mt-4 d-print-none">
|
||||
{actions}
|
||||
</div>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user