|
|
|
@ -8,121 +8,66 @@ import { |
|
|
|
|
SET_OVERFLOW_DRAWER, |
|
|
|
|
SET_OVERFLOW_MENU_VISIBLE, |
|
|
|
|
SET_TOOLBAR_HOVERED, |
|
|
|
|
SET_TOOLBOX_ALWAYS_VISIBLE, |
|
|
|
|
SET_TOOLBOX_ENABLED, |
|
|
|
|
SET_TOOLBOX_TIMEOUT, |
|
|
|
|
SET_TOOLBOX_TIMEOUT_MS, |
|
|
|
|
SET_TOOLBOX_VISIBLE, |
|
|
|
|
TOGGLE_TOOLBOX_VISIBLE |
|
|
|
|
} from './actionTypes'; |
|
|
|
|
|
|
|
|
|
declare var interfaceConfig: Object; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns initial state for toolbox's part of Redux store. |
|
|
|
|
* |
|
|
|
|
* @private |
|
|
|
|
* @returns {{ |
|
|
|
|
* alwaysVisible: boolean, |
|
|
|
|
* enabled: boolean, |
|
|
|
|
* hovered: boolean, |
|
|
|
|
* overflowDrawer: boolean, |
|
|
|
|
* overflowMenuVisible: boolean, |
|
|
|
|
* timeoutID: number, |
|
|
|
|
* timeoutMS: number, |
|
|
|
|
* visible: boolean |
|
|
|
|
* }} |
|
|
|
|
* Initial state of toolbox's part of Redux store. |
|
|
|
|
*/ |
|
|
|
|
function _getInitialState() { |
|
|
|
|
// Does the toolbar eventually fade out, or is it always visible?
|
|
|
|
|
let alwaysVisible = false; |
|
|
|
|
|
|
|
|
|
// Toolbar (initial) visibility.
|
|
|
|
|
let visible = false; |
|
|
|
|
|
|
|
|
|
// Default toolbox timeout for mobile app.
|
|
|
|
|
let timeoutMS = 5000; |
|
|
|
|
|
|
|
|
|
if (typeof interfaceConfig !== 'undefined') { |
|
|
|
|
if (interfaceConfig.INITIAL_TOOLBAR_TIMEOUT) { |
|
|
|
|
timeoutMS = interfaceConfig.INITIAL_TOOLBAR_TIMEOUT; |
|
|
|
|
} |
|
|
|
|
if (typeof interfaceConfig.TOOLBAR_ALWAYS_VISIBLE !== 'undefined') { |
|
|
|
|
alwaysVisible = interfaceConfig.TOOLBAR_ALWAYS_VISIBLE; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// When the toolbar is always visible, it must initially be visible too.
|
|
|
|
|
if (alwaysVisible === true) { |
|
|
|
|
visible = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return { |
|
|
|
|
/** |
|
|
|
|
* The indicator which determines whether the Toolbox should always be |
|
|
|
|
* visible. When false, the toolbar will fade out after timeoutMS. |
|
|
|
|
* |
|
|
|
|
* @type {boolean} |
|
|
|
|
*/ |
|
|
|
|
alwaysVisible, |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The indicator which determines whether the Toolbox is enabled. |
|
|
|
|
* |
|
|
|
|
* @type {boolean} |
|
|
|
|
*/ |
|
|
|
|
enabled: true, |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The indicator which determines whether a Toolbar in the Toolbox is |
|
|
|
|
* hovered. |
|
|
|
|
* |
|
|
|
|
* @type {boolean} |
|
|
|
|
*/ |
|
|
|
|
hovered: false, |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The indicator which determines whether the overflow menu(s) are to be displayed as drawers. |
|
|
|
|
* |
|
|
|
|
* @type {boolean} |
|
|
|
|
*/ |
|
|
|
|
overflowDrawer: false, |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The indicator which determines whether the OverflowMenu is visible. |
|
|
|
|
* |
|
|
|
|
* @type {boolean} |
|
|
|
|
*/ |
|
|
|
|
overflowMenuVisible: false, |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* A number, non-zero value which identifies the timer created by a call |
|
|
|
|
* to setTimeout() with timeoutMS. |
|
|
|
|
* |
|
|
|
|
* @type {number|null} |
|
|
|
|
*/ |
|
|
|
|
timeoutID: null, |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The delay in milliseconds before timeoutID executes (after its |
|
|
|
|
* initialization). |
|
|
|
|
* |
|
|
|
|
* @type {number} |
|
|
|
|
*/ |
|
|
|
|
timeoutMS, |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The indicator that determines whether the Toolbox is visible. |
|
|
|
|
* |
|
|
|
|
* @type {boolean} |
|
|
|
|
*/ |
|
|
|
|
visible |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
const INITIAL_STATE = { |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The indicator which determines whether the Toolbox is enabled. |
|
|
|
|
* |
|
|
|
|
* @type {boolean} |
|
|
|
|
*/ |
|
|
|
|
enabled: true, |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The indicator which determines whether a Toolbar in the Toolbox is |
|
|
|
|
* hovered. |
|
|
|
|
* |
|
|
|
|
* @type {boolean} |
|
|
|
|
*/ |
|
|
|
|
hovered: false, |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The indicator which determines whether the overflow menu(s) are to be displayed as drawers. |
|
|
|
|
* |
|
|
|
|
* @type {boolean} |
|
|
|
|
*/ |
|
|
|
|
overflowDrawer: false, |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The indicator which determines whether the OverflowMenu is visible. |
|
|
|
|
* |
|
|
|
|
* @type {boolean} |
|
|
|
|
*/ |
|
|
|
|
overflowMenuVisible: false, |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* A number, non-zero value which identifies the timer created by a call |
|
|
|
|
* to setTimeout(). |
|
|
|
|
* |
|
|
|
|
* @type {number|null} |
|
|
|
|
*/ |
|
|
|
|
timeoutID: null, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The indicator that determines whether the Toolbox is visible. |
|
|
|
|
* |
|
|
|
|
* @type {boolean} |
|
|
|
|
*/ |
|
|
|
|
visible: false |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
ReducerRegistry.register( |
|
|
|
|
'features/toolbox', |
|
|
|
|
(state: Object = _getInitialState(), action: Object) => { |
|
|
|
|
(state: Object = INITIAL_STATE, action: Object) => { |
|
|
|
|
switch (action.type) { |
|
|
|
|
case CLEAR_TOOLBOX_TIMEOUT: |
|
|
|
|
return { |
|
|
|
@ -154,13 +99,6 @@ ReducerRegistry.register( |
|
|
|
|
hovered: action.hovered |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
case SET_TOOLBOX_ALWAYS_VISIBLE: |
|
|
|
|
return { |
|
|
|
|
...state, |
|
|
|
|
alwaysVisible: action.alwaysVisible, |
|
|
|
|
visible: action.alwaysVisible === true ? true : state.visible |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
case SET_TOOLBOX_ENABLED: |
|
|
|
|
return { |
|
|
|
|
...state, |
|
|
|
@ -170,21 +108,14 @@ ReducerRegistry.register( |
|
|
|
|
case SET_TOOLBOX_TIMEOUT: |
|
|
|
|
return { |
|
|
|
|
...state, |
|
|
|
|
timeoutID: action.timeoutID, |
|
|
|
|
timeoutMS: action.timeoutMS |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
case SET_TOOLBOX_TIMEOUT_MS: |
|
|
|
|
return { |
|
|
|
|
...state, |
|
|
|
|
timeoutMS: action.timeoutMS |
|
|
|
|
timeoutID: action.timeoutID |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
case SET_TOOLBOX_VISIBLE: |
|
|
|
|
return set(state, 'visible', state.alwaysVisible || action.visible); |
|
|
|
|
return set(state, 'visible', action.visible); |
|
|
|
|
|
|
|
|
|
case TOGGLE_TOOLBOX_VISIBLE: |
|
|
|
|
return set(state, 'visible', state.alwaysVisible || !state.visible); |
|
|
|
|
return set(state, 'visible', !state.visible); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return state; |
|
|
|
|