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}))