one-click-accessibility/modules/scanner/assets/js/layouts/remediation-layout.js
VasylD 81c6e40db6
[APP-1512] add FE remediation management (#300)
* [APP-1512] add backend logic for remediation management

* [APP-1512] add backend logic for remediation management

* Update modules/remediation/database/remediation-entry.php

Co-authored-by: gitstream-cm[bot] <111687743+gitstream-cm[bot]@users.noreply.github.com>

* Update modules/remediation/rest/items.php

Co-authored-by: gitstream-cm[bot] <111687743+gitstream-cm[bot]@users.noreply.github.com>

* [APP-1512] add backend logic for remediation management

* [APP-1512] add FE remediation management

* [APP-1512] add FE remediation management

* [APP-1512] add FE remediation management

* [APP-1512] add FE remediation management

* [APP-1512] add FE remediation management

* [APP-1512] add FE remediation management

* [APP-1512] add FE remediation management

* [APP-1512] add FE remediation management

---------

Co-authored-by: gitstream-cm[bot] <111687743+gitstream-cm[bot]@users.noreply.github.com>
2025-06-23 16:31:51 +02:00

61 lines
1.8 KiB
JavaScript

import CircleCheckFilledIcon from '@elementor/icons/CircleCheckFilledIcon';
import Box from '@elementor/ui/Box';
import Radio from '@elementor/ui/Radio';
import Typography from '@elementor/ui/Typography';
import { RemediationForm } from '@ea11y-apps/scanner/components/remediation-form';
import { BLOCKS } from '@ea11y-apps/scanner/constants';
import { uxMessaging } from '@ea11y-apps/scanner/constants/ux-messaging';
import { useScannerWizardContext } from '@ea11y-apps/scanner/context/scanner-wizard-context';
import {
StyledAccordion,
StyledAccordionSummary,
} from '@ea11y-apps/scanner/styles/manual-fixes.styles';
import { useEffect } from '@wordpress/element';
export const RemediationLayout = () => {
const {
openIndex,
handleOpen,
openedBlock,
sortedRemediation,
setOpenedBlock,
} = useScannerWizardContext();
useEffect(() => {
if (sortedRemediation[openedBlock]?.length === 0) {
setOpenedBlock(BLOCKS.management);
}
}, [sortedRemediation[openedBlock]?.length]);
return (
<Box sx={{ pb: 8 }}>
{sortedRemediation[openedBlock].map((item, index) => (
<StyledAccordion
key={`${item.rule}-${index}`}
elevation={0}
square
disableGutters
expanded={openIndex === index}
onChange={handleOpen(index, item)}
>
<StyledAccordionSummary
aria-controls={`manual-panel-${index}`}
id={`manual-panel-${index}`}
>
<Radio
color="info"
checkedIcon={<CircleCheckFilledIcon />}
disabled
checked={Number(item.active)}
role="presentation"
/>
<Typography variant="body2" sx={{ mr: 0.5 }} noWrap>
{uxMessaging[item.rule]?.violationName ?? item.rule}
</Typography>
</StyledAccordionSummary>
<RemediationForm item={item} />
</StyledAccordion>
))}
</Box>
);
};