u
This commit is contained in:
45
src/automats/helpAutomat.js
Normal file
45
src/automats/helpAutomat.js
Normal file
@@ -0,0 +1,45 @@
|
||||
import { Automat } from 'react-automat';
|
||||
|
||||
/**
|
||||
* @typedef {Object} HelpState
|
||||
* @property {boolean} enabled Whether interactive help badges are enabled systemwide.
|
||||
*/
|
||||
|
||||
/** @type {HelpState} */
|
||||
const initialState = {
|
||||
enabled: false,
|
||||
};
|
||||
|
||||
/**
|
||||
* Global reactive state for systemwide help badges mode.
|
||||
* Persisted in IndexedDB so the setting survives page reloads and sessions.
|
||||
* Registered as a named automat ('help') on window.__AUTOMATS__.
|
||||
*
|
||||
* @type {Automat<HelpState>}
|
||||
*/
|
||||
const helpAutomat = new Automat(
|
||||
initialState,
|
||||
{
|
||||
/**
|
||||
* Toggles the systemwide help mode on or off.
|
||||
*/
|
||||
toggle() {
|
||||
helpAutomat.setState((prev) => ({ enabled: !prev?.enabled }));
|
||||
},
|
||||
/**
|
||||
* Explicitly set whether help mode is enabled.
|
||||
* @param {boolean} enabled
|
||||
*/
|
||||
setEnabled(enabled) {
|
||||
helpAutomat.setState({ enabled: Boolean(enabled) });
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'help',
|
||||
persist: true,
|
||||
}
|
||||
);
|
||||
|
||||
export default helpAutomat;
|
||||
export const { toggle: toggleHelp, setEnabled: setHelpEnabled } = helpAutomat.actions;
|
||||
export const isHelpEnabled = (state = helpAutomat.state) => Boolean(state?.enabled);
|
||||
@@ -9,6 +9,9 @@ export { setLastDeliveryPath, setLastArticleSku, clearNavigation } from './navig
|
||||
export { default as userSettingsAutomat } from './userSettingsAutomat';
|
||||
export { setViewerPosition } from './userSettingsAutomat';
|
||||
|
||||
export { default as helpAutomat } from './helpAutomat';
|
||||
export { toggleHelp, setHelpEnabled, isHelpEnabled } from './helpAutomat';
|
||||
|
||||
export { default as supplierAutomat } from './supplierAutomat';
|
||||
export { default as warehouseAutomat } from './warehouseAutomat';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user