one-click-accessibility/modules/settings/assets/js/layouts/position-settings-mobile.js

100 lines
2.8 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Box from '@elementor/ui/Box';
import FormControlLabel from '@elementor/ui/FormControlLabel';
import Switch from '@elementor/ui/Switch';
import Typography from '@elementor/ui/Typography';
import {
AlignmentMatrixControl,
PositionControl,
PositionSettingsWrapper,
} from '@ea11y/components';
import { useIconPosition } from '@ea11y/hooks';
import { eventNames, mixpanelService } from '@ea11y/services';
import { __ } from '@wordpress/i18n';
const PositionSettingsMobile = () => {
const { iconPosition, updateIconPosition } = useIconPosition();
const toggleVisibility = (device) => {
updateIconPosition(device, 'hidden', !iconPosition[device].hidden);
mixpanelService.sendEvent(eventNames.toggleClicked, {
state: iconPosition[device].hidden ? 'on' : 'off',
type: 'Hide on mobile',
device,
});
};
const toggleExactPosition = (device) => {
updateIconPosition(
device,
'enableExactPosition',
!iconPosition[device].enableExactPosition,
);
mixpanelService.sendEvent(eventNames.toggleClicked, {
state: iconPosition[device].enableExactPosition ? 'on' : 'off',
type: 'Exact position',
device,
});
};
const hideOnMobileLabel = (
<Typography variant="subtitle2" color="text.primary" marginRight={2}>
{__('Hide on mobile', 'pojo-accessibility')}
</Typography>
);
const exactPositionLabel = (
<Typography variant="subtitle2" color="text.primary" marginRight={2}>
{__('Exact position', 'pojo-accessibility')}
</Typography>
);
return (
<>
<FormControlLabel
label={hideOnMobileLabel}
labelPlacement="start"
control={<Switch color="info" size="small" />}
sx={{ marginLeft: 2, marginBottom: 3 }}
onChange={() => toggleVisibility('mobile')}
checked={iconPosition.mobile.hidden}
/>
{!iconPosition.mobile.hidden && (
<PositionSettingsWrapper>
<AlignmentMatrixControl mode="mobile" />
<Box>
<FormControlLabel
label={exactPositionLabel}
labelPlacement="start"
control={<Switch color="info" size="small" />}
sx={{ marginLeft: 0 }}
onChange={() => toggleExactPosition('mobile')}
checked={iconPosition.mobile?.enableExactPosition}
/>
<Typography
id="ea11y-mobile-position-settings"
variant="body2"
sx={{ marginTop: 2, marginBottom: 1 }}
>
{__(
'Exact positioning, 5 500 px are permitted values:',
'pojo-accessibility',
)}
</Typography>
<PositionControl
type="horizontal"
mode="mobile"
disabled={!iconPosition.mobile?.enableExactPosition}
/>
<PositionControl
type="vertical"
mode="mobile"
disabled={!iconPosition.mobile?.enableExactPosition}
/>
</Box>
</PositionSettingsWrapper>
)}
</>
);
};
export default PositionSettingsMobile;