@b2bfinance/products-embed
Version:
products-embed React component
118 lines (104 loc) • 3.53 kB
JavaScript
;
exports.__esModule = true;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _actions = require("./actions");
var _filter = require("./filter");
var embedReducer = function embedReducer(state, action) {
switch (action.type) {
case _actions.PRODUCTS_SET:
{
return _extends({}, state, {
productsLoading: false,
products: action.products
});
}
case _actions.PRODUCTS_LOADING:
{
return _extends({}, state, {
productsLoading: true
});
}
case _actions.PRODUCTS_ERROR:
{
return _extends({}, state, {
productsError: true
});
}
case _actions.PRODUCTS_INCREASE_LIMIT:
{
return _extends({}, state, {
productsLimit: state.productsLimit + 10
});
}
case _actions.FILTERS_TOGGLE:
{
var newFilters = state.filters.map(function (filter) {
if (filter.key === action.filter.key) {
// Check the selected store to see if we have this filter selected.
var isAlreadySet = filter.selected.indexOf(action.choice.value) !== -1;
if (isAlreadySet) {
// We already have this filter selected so we need to remove it
// from the selected store.
return _extends({}, filter, {
selected: filter.selected.filter(function (value) {
return value !== action.choice.value;
})
});
}
if (filter.multiChoice) {
// Filter is not already selected and is a multiChoice so we
// need to add it to the already present selected.
return _extends({}, filter, {
selected: [].concat(filter.selected, [action.choice.value])
});
}
// By the power of deduction we know this choice is not set
// and it's not a multiChoice so we'll create an array with
// only this choice.
return _extends({}, filter, {
selected: [action.choice.value]
});
}
// Simply return filters that are not related to our action.
return filter;
});
return _extends({}, state, {
filterQuery: (0, _filter.makeFilterQueryString)(newFilters),
filters: newFilters
});
}
case _actions.FILTERS_RESET:
{
var _newFilters = state.filters.map(function (filter) {
return _extends({}, filter, {
selected: []
});
});
return _extends({}, state, {
filterQuery: "",
filters: _newFilters
});
}
case _actions.FILTERS_GROUP_RESET:
{
var _newFilters2 = state.filters.map(function (filter) {
if (filter.key === action.filter.key) {
return _extends({}, filter, {
selected: []
});
}
return filter;
});
return _extends({}, state, {
filterQuery: (0, _filter.makeFilterQueryString)(_newFilters2),
filters: _newFilters2
});
}
default:
{
return state;
}
}
};
exports.default = embedReducer;
module.exports = exports["default"];