JSFiddle - React, Tailwind, and code Playground
by amrendra kumar
JavaScript
const filters = {
"key": {
"label": "Select Content Type",
"value": "_content_type_uid",
"ariaLabel": "Content Type"
},
"value": [
{
"label": "AAAA",
"value": "popup"
},
{
"label": "AAAtest long ct name ",
"value": "aaatest_long_ct_name"
}
],
"operator": {
"name": "Equals",
"icon": "Equals",
"value": "$eq"
},
"isMulti": true,
"currentQuery": "fetchContentTypes",
"type": "contentType",
"placeHolder": "Search content type"
}
const buildQueryFilters = ({ filters }) => {
let queryObj = { $and: [] };
debugger
if (!filters.length) {
return;
}
filters.forEach((filter) => {
if (filter.isMulti && filter.value.length) {
if (filter.type === 'contentType') {
let ctValuesArray = filter.value.map((ct) => ct.value);
if (ctValuesArray.length) {
queryObj['_content_type_uid'] = { $in: ctValuesArray };
}
}
}
});
if (!queryObj.$and.length) {
const { $and, ...rest } = queryObj;
queryObj = rest;
}
if (!queryObj.$and && !queryObj._content_type_uid) {
return;
}
return queryObj;
};
console.log('buildQueryFilters', buildQueryFilters({filters}))