one-click-accessibility/modules/settings/assets/js/hooks/use-settings.js
Pavlo Kniazevych 82499ee78c
Fix: Fix the QA bugs [n/a] (#138)
* New: Finish the BE integration [n/a]

* Fix: Fix some bugs [n/a]
2025-01-19 13:11:09 +02:00

154 lines
3 KiB
JavaScript

import { useState, createContext, useContext } from '@wordpress/element';
/**
* Context Component.
*/
const SettingsContext = createContext(null);
export function useSettings() {
return useContext(SettingsContext);
}
export const SettingsProvider = ({ children }) => {
const [openSidebar, setOpenSidebar] = useState(true);
const [selectedMenu, setSelectedMenu] = useState({
parent: 'widget',
child: 'iconSettings',
});
const [widgetMenuSettings, setWidgetMenuSettings] = useState({
'bigger-text': {
enabled: true,
},
'bigger-line-height': {
enabled: true,
},
'text-align': {
enabled: true,
},
'readable-font': {
enabled: true,
},
grayscale: {
enabled: true,
},
contrast: {
enabled: true,
},
'page-structure': {
enabled: true,
},
'reading-mask': {
enabled: true,
},
'hide-images': {
enabled: true,
},
'pause-animations': {
enabled: true,
},
'highlight-links': {
enabled: true,
},
});
const [planData, setPlanData] = useState(null);
// Track settings changes to enable/disable Save Changes button
const [hasChanges, setHasChanges] = useState(false);
const [hideMinimumOptionAlert, setHideMinimumOptionAlert] = useState(false);
const [iconDesign, setIconDesign] = useState({
icon: 'person',
size: 'medium',
color: '#2563eb',
});
// Icon Position
const [iconPosition, setIconPosition] = useState({
desktop: {
hidden: false,
enableExactPosition: false,
exactPosition: {
horizontal: {
direction: 'left',
value: 10,
unit: 'px',
},
vertical: {
direction: 'top',
value: 10,
unit: 'px',
},
},
position: 'top-left',
},
mobile: {
hidden: false,
enableExactPosition: false,
exactPosition: {
horizontal: {
direction: 'right',
value: 10,
unit: 'px',
},
vertical: {
direction: 'bottom',
value: 10,
unit: 'px',
},
},
position: 'top-left',
},
});
const [companyData, setCompanyData] = useState({
company_name: 'Acme Inc.',
company_website: 'https://www.acme.com/',
company_email: 'contact@acme.com',
current_date: new Date().toLocaleDateString(),
});
const [accessibilityStatementData, setAccessibilityStatementData] = useState({
statement: null,
pageId: null,
createdOn: null,
link: null,
hideLink: false,
});
const [
showAccessibilityGeneratedInfotip,
setShowAccessibilityGeneratedInfotip,
] = useState(false);
return (
<SettingsContext.Provider
value={{
openSidebar,
setOpenSidebar,
selectedMenu,
setSelectedMenu,
widgetMenuSettings,
setWidgetMenuSettings,
hideMinimumOptionAlert,
setHideMinimumOptionAlert,
iconPosition,
setIconPosition,
iconDesign,
setIconDesign,
hasChanges,
setHasChanges,
planData,
setPlanData,
companyData,
setCompanyData,
accessibilityStatementData,
setAccessibilityStatementData,
showAccessibilityGeneratedInfotip,
setShowAccessibilityGeneratedInfotip,
}}
>
{children}
</SettingsContext.Provider>
);
};