instantjob-recruiter-client
Version:
a set of tools for creating an instantjob recruiter react client
65 lines (63 loc) • 1.45 kB
JSX
const initial_state = {
alerts: {},
idGenerator: 0,
viewport: 'md',
scrollbar_size: 0,
popover_component: null,
popover_props: null,
popover_ref: null,
popover_fill_screen: false,
popover_title: null,
}
export function display(state = initial_state, action) {
switch (action.type) {
case 'create_alert':
return {
...state,
alerts: {
...state.alerts,
[state.idGenerator]: {
id: state.idGenerator,
kind: action.kind,
text: action.text,
},
},
idGenerator: state.idGenerator + 1,
}
case 'remove_alert':
let alerts = {...state.alerts}
delete alerts[action.alert]
return {
...state,
alerts,
}
case 'store_viewport':
return {
...state,
viewport: action.viewport,
scrollbar_size: action.scrollbar_size,
}
case 'show_popover':
return {
...state,
popover_component: action.component,
popover_props: action.props,
popover_title: action.title,
popover_fill_screen: action.fill_screen,
}
case 'store_popover_ref':
return {
...state,
popover_ref: action.ref,
}
case 'dismiss_popover':
return {
...state,
popover_component: null,
popover_props: null,
popover_ref: null,
}
default:
return state
}
}