redux-modal-tabs
Version:
Redux modal tabs
45 lines (44 loc) • 1.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("./constants");
exports.defaultReduxModalTabsState = {
modalTabs: [],
activeModalTabId: null
};
function reduxModalTabsReducer(state = exports.defaultReduxModalTabsState, action) {
switch (action.type) {
case constants_1.ADD_MODAL_TAB: {
const modalTabs = state.modalTabs.concat([]);
const modalTab = action.payload.modalTab;
const existing = modalTabs.findIndex(search => search.id === modalTab.id);
if (existing !== -1) {
// If the id already exists, replace it
modalTabs[existing] = modalTab;
}
else {
modalTabs.push(modalTab);
}
let activeModalTabId = state.activeModalTabId;
if (action.payload.open) {
activeModalTabId = modalTab.id;
}
return Object.assign({}, state, { modalTabs,
activeModalTabId });
}
case constants_1.REMOVE_MODAL_TAB: {
const modalTabs = state.modalTabs.filter(modalTab => modalTab.id !== action.payload.id);
return Object.assign({}, state, { modalTabs });
}
case constants_1.OPEN_MODAL_TAB: {
const activeModalTabId = action.payload.id;
return Object.assign({}, state, { activeModalTabId });
}
case constants_1.CLOSE_MODAL_TAB: {
return Object.assign({}, state, { activeModalTabId: null });
}
default: {
return state;
}
}
}
exports.reduxModalTabsReducer = reduxModalTabsReducer;