one-click-accessibility/modules/settings/assets/js/hooks/use-settings.js
Nirbhay Singh dc8bdd4c3b
fix: default border radius (#258)
* fix: default border radius

* add: default corner radius for new users

* update: add support for default values for users with saved style settings

* updated phpunit workflow

* revert to master

* hardcode 6.8.x

* update: default values for existing users

* update: remove saving default corner radius for new users

* fix: update default radius for text icon

* fix: PHPUnit tests for WP 6.8.0

* align with develop

* set to latest

---------

Co-authored-by: Raz Ohad <admin@bainternet.info>
Co-authored-by: Raz Ohad <ohad@elementor.com>
2025-04-18 12:49:29 +05:30

193 lines
3.7 KiB
JavaScript

import {
useState,
createContext,
useContext,
useEffect,
} 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: '',
});
useEffect(() => {
setSelectedMenu({
parent: window.location.hash.replace('#', '') || 'design',
});
}, []);
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,
},
sitemap: {
enabled: false,
},
'reading-mask': {
enabled: true,
},
'hide-images': {
enabled: true,
},
'pause-animations': {
enabled: true,
},
'highlight-links': {
enabled: true,
},
'focus-outline': {
enabled: true,
},
});
const [skipToContentSettings, setSkipToContentSettings] = useState({
enabled: true,
});
const [planData, setPlanData] = useState(null);
// Track settings changes to enable/disable Save Changes button
const [hasChanges, setHasChanges] = useState(false);
const [skipToContentHasChanges, setSkipToContentHasChanges] = useState(false);
const [hasError, setHasError] = useState({
sitemap: false,
skipToContent: false,
});
const [hideMinimumOptionAlert, setHideMinimumOptionAlert] = useState(false);
const [iconDesign, setIconDesign] = useState({
icon: 'person',
size: 'medium',
color: '#2563eb',
cornerRadius: {
radius: 32,
unit: 'px',
},
});
// 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: '',
company_website: '',
company_email: '',
current_date: new Date().toLocaleDateString(),
});
const [accessibilityStatementData, setAccessibilityStatementData] = useState({
statement: null,
pageId: null,
createdOn: null,
link: null,
hideLink: false,
});
const [
showAccessibilityGeneratedInfotip,
setShowAccessibilityGeneratedInfotip,
] = useState(false);
const [planUsage, setPlanUsage] = useState(0);
return (
<SettingsContext.Provider
value={{
openSidebar,
setOpenSidebar,
selectedMenu,
setSelectedMenu,
widgetMenuSettings,
setWidgetMenuSettings,
skipToContentSettings,
setSkipToContentSettings,
skipToContentHasChanges,
setSkipToContentHasChanges,
hideMinimumOptionAlert,
setHideMinimumOptionAlert,
iconPosition,
setIconPosition,
iconDesign,
setIconDesign,
hasChanges,
setHasChanges,
hasError,
setHasError,
planData,
setPlanData,
companyData,
setCompanyData,
accessibilityStatementData,
setAccessibilityStatementData,
showAccessibilityGeneratedInfotip,
setShowAccessibilityGeneratedInfotip,
planUsage,
setPlanUsage,
}}
>
{children}
</SettingsContext.Provider>
);
};