@blaze-cms/react-page-builder 0.114.0-alpha.0 → 0.114.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +76 -0
- package/README.md +5 -8
- package/lib/components/Card/CardRender.js +61 -17
- package/lib/components/Card/CardRender.js.map +1 -1
- package/lib/components/Card/helpers/filter-query-setup.js.map +1 -1
- package/lib/components/DataSummary/helpers/build-loop-props-content.js +1 -1
- package/lib/components/DataSummary/helpers/build-loop-props-content.js.map +1 -1
- package/lib/components/List/ListBuilder.js +11 -6
- package/lib/components/List/ListBuilder.js.map +1 -1
- package/lib/components/List/ListFactory.js +20 -7
- package/lib/components/List/ListFactory.js.map +1 -1
- package/lib/components/List/helpers/get-sort-props.js +46 -0
- package/lib/components/List/helpers/get-sort-props.js.map +1 -0
- package/lib/components/List/helpers/index.js +8 -0
- package/lib/components/List/helpers/index.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilter/FiltersList.js +11 -5
- package/lib/components/SearchFilter/SearchFilter/FiltersList.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js +7 -2
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib/components/SearchFilter/components/Checkbox.js +5 -2
- package/lib/components/SearchFilter/components/Checkbox.js.map +1 -1
- package/lib/components/SearchFilter/components/Range.js +7 -3
- package/lib/components/SearchFilter/components/Range.js.map +1 -1
- package/lib/components/SearchFilter/components/Select.js +5 -2
- package/lib/components/SearchFilter/components/Select.js.map +1 -1
- package/lib/components/SearchFilter/helpers/build-query.js +6 -5
- package/lib/components/SearchFilter/helpers/build-query.js.map +1 -1
- package/lib/components/SearchFilter/helpers/get-range-value.js +6 -4
- package/lib/components/SearchFilter/helpers/get-range-value.js.map +1 -1
- package/lib/components/SearchFilter/helpers/is-device-desktop.js +1 -1
- package/lib/components/SearchFilter/helpers/is-device-desktop.js.map +1 -1
- package/lib/helpers/get-generic-render-variables.js +32 -22
- package/lib/helpers/get-generic-render-variables.js.map +1 -1
- package/lib-es/components/Card/CardRender.js +32 -5
- package/lib-es/components/Card/CardRender.js.map +1 -1
- package/lib-es/components/Card/helpers/filter-query-setup.js.map +1 -1
- package/lib-es/components/DataSummary/helpers/build-loop-props-content.js +1 -1
- package/lib-es/components/DataSummary/helpers/build-loop-props-content.js.map +1 -1
- package/lib-es/components/List/ListBuilder.js +11 -6
- package/lib-es/components/List/ListBuilder.js.map +1 -1
- package/lib-es/components/List/ListFactory.js +20 -8
- package/lib-es/components/List/ListFactory.js.map +1 -1
- package/lib-es/components/List/helpers/get-sort-props.js +26 -0
- package/lib-es/components/List/helpers/get-sort-props.js.map +1 -0
- package/lib-es/components/List/helpers/index.js +1 -0
- package/lib-es/components/List/helpers/index.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilter/FiltersList.js +11 -5
- package/lib-es/components/SearchFilter/SearchFilter/FiltersList.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js +7 -2
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib-es/components/SearchFilter/components/Checkbox.js +5 -2
- package/lib-es/components/SearchFilter/components/Checkbox.js.map +1 -1
- package/lib-es/components/SearchFilter/components/Range.js +7 -3
- package/lib-es/components/SearchFilter/components/Range.js.map +1 -1
- package/lib-es/components/SearchFilter/components/Select.js +5 -2
- package/lib-es/components/SearchFilter/components/Select.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/build-query.js +5 -4
- package/lib-es/components/SearchFilter/helpers/build-query.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/get-range-value.js +1 -1
- package/lib-es/components/SearchFilter/helpers/get-range-value.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/is-device-desktop.js +1 -1
- package/lib-es/components/SearchFilter/helpers/is-device-desktop.js.map +1 -1
- package/lib-es/helpers/get-generic-render-variables.js +22 -15
- package/lib-es/helpers/get-generic-render-variables.js.map +1 -1
- package/package.json +3 -3
- package/src/components/Card/CardRender.js +24 -6
- package/src/components/Card/helpers/filter-query-setup.js +1 -0
- package/src/components/DataSummary/helpers/build-loop-props-content.js +1 -6
- package/src/components/List/ListBuilder.js +11 -6
- package/src/components/List/ListFactory.js +18 -8
- package/src/components/List/helpers/get-sort-props.js +17 -0
- package/src/components/List/helpers/index.js +1 -0
- package/src/components/SearchFilter/SearchFilter/FiltersList.js +15 -2
- package/src/components/SearchFilter/SearchFilter/SearchFilter.js +7 -2
- package/src/components/SearchFilter/components/Checkbox.js +4 -2
- package/src/components/SearchFilter/components/Range.js +7 -3
- package/src/components/SearchFilter/components/Select.js +4 -2
- package/src/components/SearchFilter/helpers/build-query.js +5 -4
- package/src/components/SearchFilter/helpers/get-range-value.js +3 -1
- package/src/components/SearchFilter/helpers/is-device-desktop.js +2 -1
- package/src/helpers/get-generic-render-variables.js +22 -12
- package/tests/unit/src/components/DataSummary/helpers/build-loop-props-content.test.js +24 -0
- package/tests/unit/src/components/List/helpers/get-sort-props.test.js +58 -0
- package/tests/unit/src/components/SearchFilter/components/__snapshots__/Range.test.js.snap +2 -2
- package/tests/unit/src/helpers/build-raw-query.test.js +2 -1
- package/tests/unit/src/helpers/get-generic-render-variables.test.js +5 -11
- package/lib/helpers/check-sort-by.js +0 -16
- package/lib/helpers/check-sort-by.js.map +0 -1
- package/lib-es/helpers/check-sort-by.js +0 -4
- package/lib-es/helpers/check-sort-by.js.map +0 -1
- package/src/helpers/check-sort-by.js +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/List/ListFactory.js"],"names":["React","useContext","useQuery","parseUrl","PropTypes","useRouter","MainContext","getSingleEntitySchema","generateSingleItemQuery","ListBuilder","AZ_LIST_TYPE","getAzQueryFilter","getGenericProps","getRequiredSchemas","checkForError","getUnpublishedEntityName","getPaginationIndex","getSearchFilterType","getElasticsearchOperator","buildSearchValuesText","getQueryFilters","getInheritedFilters","getQueryProps","useGetEntitySchemasAsObj","AND_OPERATOR","TEXT_SEARCH","ID","AND","FULL","ListFactory","props","entity","parent","name","filterByProperty","filterBy","omitWrappers","type","sortby","defaultSortBy","sort","defaultSort","searchFilter","operator","filterOperator","isPreview","router","asPath","parsedQuery","replace","query","url","querySort","querySortBy","itemEntity","itemId","itemEntityUpdated","paginationIndex","azFilter","data","entitySchema","error","schemaError","loading","schemaLoading","variables","id","mainSchemas","schemasLoading","schemasError","currentSchema","filterEntitySchema","requiredSchema","requiredSchemaLoading","requiredSchemaError","inheritedFilters","queryProps","actions","getAction","get","getPublished","entityData","itemQueryError","itemQueryLoading","skip","length","errorsToCheck","hasErr","errMsg","isCard","isAZ","genericProps","textFilter","shouldApplyTextFilter","propsToDisplay","valuesText","valuesAnd","valuesOr","isTextSearchFilterApplied","search_term","searchValues","searchValuesText","searchValuesCheckboxSelectRange","searchValuesCheckboxOr","listProps","propTypes","object","isRequired","string","array","bool","defaultProps"],"mappings":";;;;;;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,QAAT,QAAyB,qBAAzB;AACA,SAASC,QAAT,QAAyB,cAAzB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,SAAT,QAA0B,aAA1B;AACA,SAASC,WAAT,QAA4B,8BAA5B;AACA,SAASC,qBAAT,EAAgCC,uBAAhC,QAA+D,yBAA/D;AACA,OAAOC,WAAP,MAAwB,eAAxB;AACA,SAASC,YAAT,QAA6B,aAA7B;AACA,SAASC,gBAAT,QAAiC,WAAjC;AACA,SACEC,eADF,EAEEC,kBAFF,EAGEC,aAHF,EAIEC,wBAJF,EAKEC,kBALF,EAMEC,mBANF,EAOEC,wBAPF,EAQEC,qBARF,EASEC,eATF,EAUEC,mBAVF,EAWEC,aAXF,QAYO,eAZP;AAaA,SAASC,wBAAT,QAAyC,aAAzC;AACA,SAASC,YAAT,EAAuBC,WAAvB,EAAoCC,EAApC,EAAwCC,GAAxC,EAA6CC,IAA7C,QAAyD,iBAAzD;;AAEA,MAAMC,WAAW,GAAGC,KAAK,IAAI;AAC3B,QAAM;AACJC,IAAAA,MADI;AAEJC,IAAAA,MAFI;AAGJC,IAAAA,IAHI;AAIJC,IAAAA,gBAJI;AAKJC,IAAAA,QALI;AAMJC,IAAAA,YANI;AAOJC,IAAAA,IAPI;AAQJC,IAAAA,MAAM,EAAEC,aARJ;AASJC,IAAAA,IAAI,EAAEC,WATF;AAUJC,IAAAA,YAVI;AAWJC,IAAAA,QAAQ,EAAEC;AAXN,MAYFd,KAZJ;AAcA,QAAM;AAAEe,IAAAA;AAAF,MAAgB5C,UAAU,CAACK,WAAD,CAAhC;AACA,QAAMwC,MAAM,GAAGzC,SAAS,EAAxB;AACA,QAAM;AAAE0C,IAAAA;AAAF,MAAaD,MAAnB;AACA,QAAME,WAAW,GAAGD,MAAM,CAACE,OAAP,CAAe,MAAf,EAAuB,GAAvB,EAA4BA,OAA5B,CAAoC,MAApC,EAA4C,GAA5C,CAApB;AACA,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,GAAT;AAAcD,IAAAA,KAAK,EAAE;AAAEV,MAAAA,IAAI,EAAEY,SAAR;AAAmBd,MAAAA,MAAM,EAAEe;AAA3B,QAA2C;AAAhE,MAAuElD,QAAQ,CACnF6C,WADmF,CAArF;AAGA,QAAMR,IAAI,GAAGY,SAAS,IAAIX,WAA1B;AACA,QAAMH,MAAM,GAAGe,WAAW,GAAG,CAACA,WAAD,CAAH,GAAmBd,aAAa,IAAI,EAA9D;AACA,QAAM;AAAEe,IAAAA,UAAF;AAAcC,IAAAA;AAAd,MAAyBvB,MAA/B;AACA,QAAMwB,iBAAiB,GAAGzC,wBAAwB,CAACuC,UAAD,CAAlD;AACA,QAAMG,eAAe,GAAGzC,kBAAkB,CAACkC,KAAD,EAAQjB,IAAR,CAA1C;AACA,QAAMyB,QAAQ,GAAG/C,gBAAgB,CAACuC,KAAD,EAAQjB,IAAR,CAAjC;AAEA,QAAM;AAAE0B,IAAAA,IAAI,EAAEC,YAAR;AAAsBC,IAAAA,KAAK,EAAEC,WAA7B;AAA0CC,IAAAA,OAAO,EAAEC;AAAnD,MAAqE9D,QAAQ,CACjFK,qBADiF,EAEjF;AACE0D,IAAAA,SAAS,EAAE;AAAEC,MAAAA,EAAE,EAAEnC;AAAN;AADb,GAFiF,CAAnF;AAMA,QAAM;AACJ4B,IAAAA,IAAI,EAAEQ,WAAW,GAAG,EADhB;AAEJJ,IAAAA,OAAO,EAAEK,cAFL;AAGJP,IAAAA,KAAK,EAAEQ;AAHH,MAIF9C,wBAAwB,CAAC,CAACiC,iBAAD,EAAoBzB,MAApB,CAAD,CAJ5B;AAMA,QAAM;AACJ,KAACyB,iBAAD,GAAqBc,aAAa,GAAG,EADjC;AAEJ,KAACvC,MAAD,GAAUwC,kBAAkB,GAAG;AAF3B,MAGFJ,WAHJ;AAKA,QAAM;AACJR,IAAAA,IAAI,EAAEa,cAAc,GAAG,EADnB;AAEJT,IAAAA,OAAO,EAAEU,qBAFL;AAGJZ,IAAAA,KAAK,EAAEa;AAHH,MAIFnD,wBAAwB,CAC1BV,kBAAkB,CAAC,CAAC,GAAGqB,gBAAJ,EAAsB,GAAGI,MAAzB,CAAD,EAAmCiC,kBAAnC,CADQ,EAE1BH,cAF0B,CAJ5B;AAQA,QAAMO,gBAAgB,GAAGtD,mBAAmB,CAACc,QAAD,EAAWD,gBAAX,CAA5C;AACA,QAAM0C,UAAU,GAAGtD,aAAa,CAACqD,gBAAD,EAAmBL,aAAnB,EAAkCC,kBAAlC,CAAhC;AACA,QAAM;AAAEM,IAAAA,OAAO,GAAG;AAAZ,MAAmBP,aAAa,IAAI,EAA1C;AACA,QAAMQ,SAAS,GAAGjC,SAAS,GAAGgC,OAAO,CAACE,GAAX,GAAiBF,OAAO,CAACG,YAApD;AAEA,QAAM;AACJrB,IAAAA,IAAI,EAAE;AAAEsB,MAAAA,UAAU,GAAG;AAAf,QAAsB,EADxB;AAEJpB,IAAAA,KAAK,EAAEqB,cAFH;AAGJnB,IAAAA,OAAO,EAAEoB;AAHL,MAIFjF,QAAQ,CAACM,uBAAuB,CAACsE,SAAD,EAAYF,UAAZ,CAAxB,EAAiD;AAC3DX,IAAAA,SAAS,EAAE;AAAEC,MAAAA,EAAE,EAAEX;AAAN,KADgD;AAE3D6B,IAAAA,IAAI,EAAEhB,cAAc,IAAK,CAACO,gBAAgB,CAACU,MAAlB,IAA4BT,UAAU,KAAKlD;AAFT,GAAjD,CAJZ;AAQA,QAAM4D,aAAa,GAAG,CAACxB,WAAD,EAAcO,YAAd,EAA4BK,mBAA5B,EAAiDQ,cAAjD,CAAtB;AACA,QAAM;AAAEK,IAAAA,MAAF;AAAUC,IAAAA;AAAV,MAAqB1E,aAAa,CAACwE,aAAD,CAAxC;AAEA,MAAIb,qBAAqB,IAAIL,cAAzB,IAA2CJ,aAA3C,IAA4DmB,gBAAhE,EAAkF,OAAO,EAAP;AAClF,MAAII,MAAJ,EAAY,OAAOC,MAAP;AACZ,MAAI,CAAC5B,YAAL,EAAmB,OAAO,IAAP;AAEnB,QAAM6B,MAAM,GAAGpD,IAAI,KAAKT,IAAxB;AACA,QAAM8D,IAAI,GAAGrD,IAAI,KAAK3B,YAAtB;AACA,QAAMiF,YAAY,GAAG/E,eAAe,CAACkB,KAAD,CAApC;AACA,QAAM,CAAC8D,UAAD,IAAe3E,mBAAmB,CAACyB,YAAD,EAAejB,WAAf,CAAxC;AACA,QAAMoE,qBAAqB,GAAGD,UAAU,IAAIA,UAAU,CAACE,cAAX,CAA0BT,MAAtE;AACA,QAAM1C,QAAQ,GAAGkD,qBAAqB,GAAG3E,wBAAwB,CAAC0E,UAAD,CAA3B,GAA0CpE,YAAhF;AACA,QAAMuE,UAAU,GAAGF,qBAAqB,GAAG1E,qBAAqB,CAACyE,UAAD,EAAa1C,KAAb,CAAxB,GAA8C,EAAtF;AACA,QAAM;AAAE8C,IAAAA,SAAF;AAAaC,IAAAA;AAAb,MAA0B7E,eAAe,CAACsB,YAAD,EAAeQ,KAAf,CAA/C;AACA,QAAMgD,yBAAyB,GAAG,CAAC,EACjChD,KAAK,CAACiD,WAAN,IACAzD,YADA,IAEAzB,mBAAmB,CAACyB,YAAD,EAAejB,WAAf,CAAnB,CAA+C4D,MAHd,CAAnC;AAMA,QAAMe,YAAY,GAAG;AACnBC,IAAAA,gBAAgB,EAAEN,UADC;AAEnBO,IAAAA,+BAA+B,EAAEN,SAFd;AAGnBO,IAAAA,sBAAsB,EAAEN;AAHL,GAArB;;AAKA,QAAMO,SAAS,iDACV1E,KADU,GAEV6D,YAFU;AAGbzC,IAAAA,KAHa;AAIbC,IAAAA,GAJa;AAKbsC,IAAAA,MALa;AAMbC,IAAAA,IANa;AAOb5C,IAAAA,MAPa;AAQbc,IAAAA,YARa;AASbpB,IAAAA,IATa;AAUbF,IAAAA,MAVa;AAWboB,IAAAA,QAXa;AAYb0C,IAAAA,YAZa;AAab7B,IAAAA,kBAba;AAcbC,IAAAA,cAda;AAebF,IAAAA,aAfa;AAgBblC,IAAAA,YAhBa;AAiBbO,IAAAA,QAjBa;AAkBbuD,IAAAA,yBAlBa;AAmBbzC,IAAAA,eAnBa;AAoBbwB,IAAAA,UApBa;AAqBbN,IAAAA,gBArBa;AAsBb/B,IAAAA;AAtBa,IAAf;;AAyBA,sBAAO,oBAAC,WAAD,EAAiB4D,SAAjB,CAAP;AACD,CAvHD;;AAyHA3E,WAAW,CAAC4E,SAAZ,GAAwB;AACtBzE,EAAAA,MAAM,EAAE5B,SAAS,CAACsG,MAAV,CAAiBC,UADH;AAEtB5E,EAAAA,MAAM,EAAE3B,SAAS,CAACwG,MAAV,CAAiBD,UAFH;AAGtBtE,EAAAA,IAAI,EAAEjC,SAAS,CAACwG,MAAV,CAAiBD,UAHD;AAItBxE,EAAAA,QAAQ,EAAE/B,SAAS,CAACyG,KAJE;AAKtB3E,EAAAA,gBAAgB,EAAE9B,SAAS,CAACyG,KALN;AAMtBzE,EAAAA,YAAY,EAAEhC,SAAS,CAAC0G,IANF;AAOtBnE,EAAAA,QAAQ,EAAEvC,SAAS,CAACwG,MAPE;AAQtB3E,EAAAA,IAAI,EAAE7B,SAAS,CAACwG,MARM;AAStBtE,EAAAA,MAAM,EAAElC,SAAS,CAACyG,KATI;AAUtBrE,EAAAA,IAAI,EAAEpC,SAAS,CAACwG,MAVM;AAWtBlE,EAAAA,YAAY,EAAEtC,SAAS,CAACsG;AAXF,CAAxB;AAcA7E,WAAW,CAACkF,YAAZ,GAA2B;AACzB5E,EAAAA,QAAQ,EAAE,EADe;AAEzBD,EAAAA,gBAAgB,EAAE,EAFO;AAGzBE,EAAAA,YAAY,EAAE,KAHW;AAIzBH,EAAAA,IAAI,EAAE,EAJmB;AAKzBK,EAAAA,MAAM,EAAE,EALiB;AAMzBE,EAAAA,IAAI,EAAE,EANmB;AAOzBG,EAAAA,QAAQ,EAAEhB,GAPe;AAQzBe,EAAAA,YAAY,EAAE;AARW,CAA3B;AAWA,eAAeb,WAAf","sourcesContent":["import React, { useContext } from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport { parseUrl } from 'query-string';\nimport PropTypes from 'prop-types';\nimport { useRouter } from 'next/router';\nimport { MainContext } from '@blaze-cms/nextjs-components';\nimport { getSingleEntitySchema, generateSingleItemQuery } from '../../application/query';\nimport ListBuilder from './ListBuilder';\nimport { AZ_LIST_TYPE } from './constants';\nimport { getAzQueryFilter } from './helpers';\nimport {\n getGenericProps,\n getRequiredSchemas,\n checkForError,\n getUnpublishedEntityName,\n getPaginationIndex,\n getSearchFilterType,\n getElasticsearchOperator,\n buildSearchValuesText,\n getQueryFilters,\n getInheritedFilters,\n getQueryProps\n} from '../../helpers';\nimport { useGetEntitySchemasAsObj } from '../../hooks';\nimport { AND_OPERATOR, TEXT_SEARCH, ID, AND, FULL } from '../../constants';\n\nconst ListFactory = props => {\n const {\n entity,\n parent,\n name,\n filterByProperty,\n filterBy,\n omitWrappers,\n type,\n sortby: defaultSortBy,\n sort: defaultSort,\n searchFilter,\n operator: filterOperator\n } = props;\n\n const { isPreview } = useContext(MainContext);\n const router = useRouter();\n const { asPath } = router;\n const parsedQuery = asPath.replace(/%5D/g, ']').replace(/%5B/g, '[');\n const { query, url, query: { sort: querySort, sortby: querySortBy } = {} } = parseUrl(\n parsedQuery\n );\n const sort = querySort || defaultSort;\n const sortby = querySortBy ? [querySortBy] : defaultSortBy || [];\n const { itemEntity, itemId } = parent;\n const itemEntityUpdated = getUnpublishedEntityName(itemEntity);\n const paginationIndex = getPaginationIndex(query, name);\n const azFilter = getAzQueryFilter(query, name);\n\n const { data: entitySchema, error: schemaError, loading: schemaLoading } = useQuery(\n getSingleEntitySchema,\n {\n variables: { id: entity }\n }\n );\n const {\n data: mainSchemas = {},\n loading: schemasLoading,\n error: schemasError\n } = useGetEntitySchemasAsObj([itemEntityUpdated, entity]);\n\n const {\n [itemEntityUpdated]: currentSchema = {},\n [entity]: filterEntitySchema = {}\n } = mainSchemas;\n\n const {\n data: requiredSchema = {},\n loading: requiredSchemaLoading,\n error: requiredSchemaError\n } = useGetEntitySchemasAsObj(\n getRequiredSchemas([...filterByProperty, ...sortby], filterEntitySchema),\n schemasLoading\n );\n const inheritedFilters = getInheritedFilters(filterBy, filterByProperty);\n const queryProps = getQueryProps(inheritedFilters, currentSchema, filterEntitySchema);\n const { actions = {} } = currentSchema || {};\n const getAction = isPreview ? actions.get : actions.getPublished;\n\n const {\n data: { entityData = {} } = {},\n error: itemQueryError,\n loading: itemQueryLoading\n } = useQuery(generateSingleItemQuery(getAction, queryProps), {\n variables: { id: itemId },\n skip: schemasLoading || (!inheritedFilters.length && queryProps === ID)\n });\n const errorsToCheck = [schemaError, schemasError, requiredSchemaError, itemQueryError];\n const { hasErr, errMsg } = checkForError(errorsToCheck);\n\n if (requiredSchemaLoading || schemasLoading || schemaLoading || itemQueryLoading) return '';\n if (hasErr) return errMsg;\n if (!entitySchema) return null;\n\n const isCard = type !== FULL;\n const isAZ = type === AZ_LIST_TYPE;\n const genericProps = getGenericProps(props);\n const [textFilter] = getSearchFilterType(searchFilter, TEXT_SEARCH);\n const shouldApplyTextFilter = textFilter && textFilter.propsToDisplay.length;\n const operator = shouldApplyTextFilter ? getElasticsearchOperator(textFilter) : AND_OPERATOR;\n const valuesText = shouldApplyTextFilter ? buildSearchValuesText(textFilter, query) : [];\n const { valuesAnd, valuesOr } = getQueryFilters(searchFilter, query);\n const isTextSearchFilterApplied = !!(\n query.search_term &&\n searchFilter &&\n getSearchFilterType(searchFilter, TEXT_SEARCH).length\n );\n\n const searchValues = {\n searchValuesText: valuesText,\n searchValuesCheckboxSelectRange: valuesAnd,\n searchValuesCheckboxOr: valuesOr\n };\n const listProps = {\n ...props,\n ...genericProps,\n query,\n url,\n isCard,\n isAZ,\n router,\n entitySchema,\n sort,\n sortby,\n azFilter,\n searchValues,\n filterEntitySchema,\n requiredSchema,\n currentSchema,\n omitWrappers,\n operator,\n isTextSearchFilterApplied,\n paginationIndex,\n entityData,\n inheritedFilters,\n filterOperator\n };\n\n return <ListBuilder {...listProps} />;\n};\n\nListFactory.propTypes = {\n parent: PropTypes.object.isRequired,\n entity: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n filterBy: PropTypes.array,\n filterByProperty: PropTypes.array,\n omitWrappers: PropTypes.bool,\n operator: PropTypes.string,\n name: PropTypes.string,\n sortby: PropTypes.array,\n sort: PropTypes.string,\n searchFilter: PropTypes.object\n};\n\nListFactory.defaultProps = {\n filterBy: [],\n filterByProperty: [],\n omitWrappers: false,\n name: '',\n sortby: [],\n sort: '',\n operator: AND,\n searchFilter: {}\n};\n\nexport default ListFactory;\n"],"file":"ListFactory.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/List/ListFactory.js"],"names":["React","useContext","useQuery","parseUrl","PropTypes","useRouter","MainContext","getSingleEntitySchema","generateSingleItemQuery","ListBuilder","AZ_LIST_TYPE","getAzQueryFilter","getSortProps","getGenericProps","getRequiredSchemas","checkForError","getUnpublishedEntityName","getPaginationIndex","getSearchFilterType","getElasticsearchOperator","buildSearchValuesText","getQueryFilters","getInheritedFilters","getQueryProps","useGetEntitySchemasAsObj","AND_OPERATOR","TEXT_SEARCH","ID","AND","FULL","ListFactory","props","entity","parent","name","filterByProperty","filterBy","omitWrappers","type","sortby","defaultSortBy","sort","defaultSort","searchFilter","operator","filterOperator","sortProperties","isPreview","router","asPath","parsedQuery","replace","query","url","querySort","querySortBy","sortbyFilters","updatedSortProperties","itemEntity","itemId","itemEntityUpdated","paginationIndex","azFilter","data","entitySchema","error","schemaError","loading","schemaLoading","variables","id","mainSchemas","schemasLoading","schemasError","currentSchema","filterEntitySchema","requiredSchema","requiredSchemaLoading","requiredSchemaError","inheritedFilters","queryProps","actions","getAction","get","getPublished","entityData","itemQueryError","itemQueryLoading","skip","length","errorsToCheck","hasErr","errMsg","isCard","isAZ","genericProps","textFilter","shouldApplyTextFilter","propsToDisplay","valuesText","valuesAnd","valuesOr","isTextSearchFilterApplied","search_term","searchValues","searchValuesText","searchValuesCheckboxSelectRange","searchValuesCheckboxOr","listProps","propTypes","object","isRequired","string","array","bool","defaultProps"],"mappings":"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","sourcesContent":["import React, { useContext } from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport { parseUrl } from 'query-string';\nimport PropTypes from 'prop-types';\nimport { useRouter } from 'next/router';\nimport { MainContext } from '@blaze-cms/nextjs-components';\nimport { getSingleEntitySchema, generateSingleItemQuery } from '../../application/query';\nimport ListBuilder from './ListBuilder';\nimport { AZ_LIST_TYPE } from './constants';\nimport { getAzQueryFilter, getSortProps } from './helpers';\nimport {\n getGenericProps,\n getRequiredSchemas,\n checkForError,\n getUnpublishedEntityName,\n getPaginationIndex,\n getSearchFilterType,\n getElasticsearchOperator,\n buildSearchValuesText,\n getQueryFilters,\n getInheritedFilters,\n getQueryProps\n} from '../../helpers';\nimport { useGetEntitySchemasAsObj } from '../../hooks';\nimport { AND_OPERATOR, TEXT_SEARCH, ID, AND, FULL } from '../../constants';\n\nconst ListFactory = props => {\n const {\n entity,\n parent,\n name,\n filterByProperty,\n filterBy,\n omitWrappers,\n type,\n sortby: defaultSortBy,\n sort: defaultSort,\n searchFilter,\n operator: filterOperator,\n sortProperties\n } = props;\n\n const { isPreview } = useContext(MainContext);\n const router = useRouter();\n const { asPath } = router;\n const parsedQuery = asPath.replace(/%5D/g, ']').replace(/%5B/g, '[');\n const { query, url, query: { sort: querySort, sortby: querySortBy } = {} } = parseUrl(\n parsedQuery\n );\n const { sortbyFilters, updatedSortProperties } = getSortProps({\n querySort,\n sortProperties,\n defaultSort,\n querySortBy,\n defaultSortBy\n });\n\n const { itemEntity, itemId } = parent;\n const itemEntityUpdated = getUnpublishedEntityName(itemEntity);\n const paginationIndex = getPaginationIndex(query, name);\n const azFilter = getAzQueryFilter(query, name);\n\n const { data: entitySchema, error: schemaError, loading: schemaLoading } = useQuery(\n getSingleEntitySchema,\n {\n variables: { id: entity }\n }\n );\n const {\n data: mainSchemas = {},\n loading: schemasLoading,\n error: schemasError\n } = useGetEntitySchemasAsObj([itemEntityUpdated, entity]);\n\n const {\n [itemEntityUpdated]: currentSchema = {},\n [entity]: filterEntitySchema = {}\n } = mainSchemas;\n\n const {\n data: requiredSchema = {},\n loading: requiredSchemaLoading,\n error: requiredSchemaError\n } = useGetEntitySchemasAsObj(\n getRequiredSchemas([...filterByProperty, ...sortbyFilters], filterEntitySchema),\n schemasLoading\n );\n const inheritedFilters = getInheritedFilters(filterBy, filterByProperty);\n const queryProps = getQueryProps(inheritedFilters, currentSchema, filterEntitySchema);\n const { actions = {} } = currentSchema || {};\n const getAction = isPreview ? actions.get : actions.getPublished;\n\n const {\n data: { entityData = {} } = {},\n error: itemQueryError,\n loading: itemQueryLoading\n } = useQuery(generateSingleItemQuery(getAction, queryProps), {\n variables: { id: itemId },\n skip: schemasLoading || (!inheritedFilters.length && queryProps === ID)\n });\n const errorsToCheck = [schemaError, schemasError, requiredSchemaError, itemQueryError];\n const { hasErr, errMsg } = checkForError(errorsToCheck);\n\n if (requiredSchemaLoading || schemasLoading || schemaLoading || itemQueryLoading) return '';\n if (hasErr) return errMsg;\n if (!entitySchema) return null;\n\n const isCard = type !== FULL;\n const isAZ = type === AZ_LIST_TYPE;\n const genericProps = getGenericProps(props);\n const [textFilter] = getSearchFilterType(searchFilter, TEXT_SEARCH);\n const shouldApplyTextFilter = textFilter && textFilter.propsToDisplay.length;\n const operator = shouldApplyTextFilter ? getElasticsearchOperator(textFilter) : AND_OPERATOR;\n const valuesText = shouldApplyTextFilter ? buildSearchValuesText(textFilter, query) : [];\n const { valuesAnd, valuesOr } = getQueryFilters(searchFilter, query);\n const isTextSearchFilterApplied = !!(\n query.search_term &&\n searchFilter &&\n getSearchFilterType(searchFilter, TEXT_SEARCH).length\n );\n\n const searchValues = {\n searchValuesText: valuesText,\n searchValuesCheckboxSelectRange: valuesAnd,\n searchValuesCheckboxOr: valuesOr\n };\n const listProps = {\n ...props,\n ...genericProps,\n query,\n url,\n isCard,\n isAZ,\n router,\n entitySchema,\n sort: null,\n sortby: null,\n sortProperties: updatedSortProperties,\n azFilter,\n searchValues,\n filterEntitySchema,\n requiredSchema,\n currentSchema,\n omitWrappers,\n operator,\n isTextSearchFilterApplied,\n paginationIndex,\n entityData,\n inheritedFilters,\n filterOperator\n };\n\n return <ListBuilder {...listProps} />;\n};\n\nListFactory.propTypes = {\n parent: PropTypes.object.isRequired,\n entity: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n filterBy: PropTypes.array,\n filterByProperty: PropTypes.array,\n omitWrappers: PropTypes.bool,\n operator: PropTypes.string,\n name: PropTypes.string,\n sortby: PropTypes.array,\n sort: PropTypes.string,\n searchFilter: PropTypes.object,\n sortProperties: PropTypes.array\n};\n\nListFactory.defaultProps = {\n filterBy: [],\n filterByProperty: [],\n omitWrappers: false,\n name: '',\n sortby: [],\n sortProperties: [],\n sort: '',\n operator: AND,\n searchFilter: {}\n};\n\nexport default ListFactory;\n"],"file":"ListFactory.js"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const getSortProps = ({
|
|
2
|
+
querySort,
|
|
3
|
+
sortProperties,
|
|
4
|
+
defaultSort,
|
|
5
|
+
querySortBy,
|
|
6
|
+
defaultSortBy
|
|
7
|
+
}) => {
|
|
8
|
+
const sort = querySort || (sortProperties.length ? null : defaultSort);
|
|
9
|
+
let sortby = null;
|
|
10
|
+
if (querySortBy) sortby = [querySortBy];else if (!sortProperties.length) sortby = defaultSortBy;
|
|
11
|
+
const updatedSortProperties = [...sortProperties];
|
|
12
|
+
if (sort) updatedSortProperties.unshift({
|
|
13
|
+
sort,
|
|
14
|
+
propsToDisplay: sortby
|
|
15
|
+
});
|
|
16
|
+
const sortbyFilters = updatedSortProperties.map(({
|
|
17
|
+
propsToDisplay: filterProps
|
|
18
|
+
}) => filterProps).filter(Boolean).flat();
|
|
19
|
+
return {
|
|
20
|
+
sortbyFilters,
|
|
21
|
+
updatedSortProperties
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export default getSortProps;
|
|
26
|
+
//# sourceMappingURL=get-sort-props.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/List/helpers/get-sort-props.js"],"names":["getSortProps","querySort","sortProperties","defaultSort","querySortBy","defaultSortBy","sort","length","sortby","updatedSortProperties","unshift","propsToDisplay","sortbyFilters","map","filterProps","filter","Boolean","flat"],"mappings":"AAAA,MAAMA,YAAY,GAAG,CAAC;AAAEC,EAAAA,SAAF;AAAaC,EAAAA,cAAb;AAA6BC,EAAAA,WAA7B;AAA0CC,EAAAA,WAA1C;AAAuDC,EAAAA;AAAvD,CAAD,KAA4E;AAC/F,QAAMC,IAAI,GAAGL,SAAS,KAAKC,cAAc,CAACK,MAAf,GAAwB,IAAxB,GAA+BJ,WAApC,CAAtB;AACA,MAAIK,MAAM,GAAG,IAAb;AACA,MAAIJ,WAAJ,EAAiBI,MAAM,GAAG,CAACJ,WAAD,CAAT,CAAjB,KACK,IAAI,CAACF,cAAc,CAACK,MAApB,EAA4BC,MAAM,GAAGH,aAAT;AAEjC,QAAMI,qBAAqB,GAAG,CAAC,GAAGP,cAAJ,CAA9B;AACA,MAAII,IAAJ,EAAUG,qBAAqB,CAACC,OAAtB,CAA8B;AAAEJ,IAAAA,IAAF;AAAQK,IAAAA,cAAc,EAAEH;AAAxB,GAA9B;AAEV,QAAMI,aAAa,GAAGH,qBAAqB,CACxCI,GADmB,CACf,CAAC;AAAEF,IAAAA,cAAc,EAAEG;AAAlB,GAAD,KAAqCA,WADtB,EAEnBC,MAFmB,CAEZC,OAFY,EAGnBC,IAHmB,EAAtB;AAIA,SAAO;AAAEL,IAAAA,aAAF;AAAiBH,IAAAA;AAAjB,GAAP;AACD,CAdD;;AAgBA,eAAeT,YAAf","sourcesContent":["const getSortProps = ({ querySort, sortProperties, defaultSort, querySortBy, defaultSortBy }) => {\n const sort = querySort || (sortProperties.length ? null : defaultSort);\n let sortby = null;\n if (querySortBy) sortby = [querySortBy];\n else if (!sortProperties.length) sortby = defaultSortBy;\n\n const updatedSortProperties = [...sortProperties];\n if (sort) updatedSortProperties.unshift({ sort, propsToDisplay: sortby });\n\n const sortbyFilters = updatedSortProperties\n .map(({ propsToDisplay: filterProps }) => filterProps)\n .filter(Boolean)\n .flat();\n return { sortbyFilters, updatedSortProperties };\n};\n\nexport default getSortProps;\n"],"file":"get-sort-props.js"}
|
|
@@ -4,4 +4,5 @@ export { default as buildAzAggregations } from './build-az-aggregations';
|
|
|
4
4
|
export { default as buildAzUrl } from './build-az-url';
|
|
5
5
|
export { default as sortAggs } from './sort-aggs';
|
|
6
6
|
export { default as getItemsPerPageToUse } from './get-items-per-page-to-use';
|
|
7
|
+
export { default as getSortProps } from './get-sort-props';
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/List/helpers/index.js"],"names":["default","buildPaginationItems","getAzQueryFilter","buildAzAggregations","buildAzUrl","sortAggs","getItemsPerPageToUse"],"mappings":"AAAA,SAASA,OAAO,IAAIC,oBAApB,QAAgD,0BAAhD;AACA,SAASD,OAAO,IAAIE,gBAApB,QAA4C,uBAA5C;AACA,SAASF,OAAO,IAAIG,mBAApB,QAA+C,yBAA/C;AACA,SAASH,OAAO,IAAII,UAApB,QAAsC,gBAAtC;AACA,SAASJ,OAAO,IAAIK,QAApB,QAAoC,aAApC;AACA,SAASL,OAAO,IAAIM,oBAApB,QAAgD,6BAAhD","sourcesContent":["export { default as buildPaginationItems } from './build-pagination-items';\nexport { default as getAzQueryFilter } from './get-az-query-filter';\nexport { default as buildAzAggregations } from './build-az-aggregations';\nexport { default as buildAzUrl } from './build-az-url';\nexport { default as sortAggs } from './sort-aggs';\nexport { default as getItemsPerPageToUse } from './get-items-per-page-to-use';\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/List/helpers/index.js"],"names":["default","buildPaginationItems","getAzQueryFilter","buildAzAggregations","buildAzUrl","sortAggs","getItemsPerPageToUse","getSortProps"],"mappings":"AAAA,SAASA,OAAO,IAAIC,oBAApB,QAAgD,0BAAhD;AACA,SAASD,OAAO,IAAIE,gBAApB,QAA4C,uBAA5C;AACA,SAASF,OAAO,IAAIG,mBAApB,QAA+C,yBAA/C;AACA,SAASH,OAAO,IAAII,UAApB,QAAsC,gBAAtC;AACA,SAASJ,OAAO,IAAIK,QAApB,QAAoC,aAApC;AACA,SAASL,OAAO,IAAIM,oBAApB,QAAgD,6BAAhD;AACA,SAASN,OAAO,IAAIO,YAApB,QAAwC,kBAAxC","sourcesContent":["export { default as buildPaginationItems } from './build-pagination-items';\nexport { default as getAzQueryFilter } from './get-az-query-filter';\nexport { default as buildAzAggregations } from './build-az-aggregations';\nexport { default as buildAzUrl } from './build-az-url';\nexport { default as sortAggs } from './sort-aggs';\nexport { default as getItemsPerPageToUse } from './get-items-per-page-to-use';\nexport { default as getSortProps } from './get-sort-props';\n"],"file":"index.js"}
|
|
@@ -10,7 +10,8 @@ const FiltersList = ({
|
|
|
10
10
|
hasUrl,
|
|
11
11
|
entity,
|
|
12
12
|
filterValues,
|
|
13
|
-
updateFilterValues
|
|
13
|
+
updateFilterValues,
|
|
14
|
+
shouldSearch
|
|
14
15
|
}) => {
|
|
15
16
|
const {
|
|
16
17
|
itemId
|
|
@@ -54,7 +55,8 @@ const FiltersList = ({
|
|
|
54
55
|
elementTitle: elementTitle,
|
|
55
56
|
hasUrl: hasUrl,
|
|
56
57
|
filterValues: filterValues,
|
|
57
|
-
updateFilterValues: updateFilterValues
|
|
58
|
+
updateFilterValues: updateFilterValues,
|
|
59
|
+
shouldSearch: shouldSearch
|
|
58
60
|
}));
|
|
59
61
|
|
|
60
62
|
case SELECT:
|
|
@@ -68,7 +70,8 @@ const FiltersList = ({
|
|
|
68
70
|
elementTitle: elementTitle,
|
|
69
71
|
hasUrl: hasUrl,
|
|
70
72
|
filterValues: filterValues,
|
|
71
|
-
updateFilterValues: updateFilterValues
|
|
73
|
+
updateFilterValues: updateFilterValues,
|
|
74
|
+
shouldSearch: shouldSearch
|
|
72
75
|
}));
|
|
73
76
|
|
|
74
77
|
case RANGE:
|
|
@@ -83,7 +86,8 @@ const FiltersList = ({
|
|
|
83
86
|
elementTitle: elementTitle,
|
|
84
87
|
entity: entity,
|
|
85
88
|
filterValues: filterValues,
|
|
86
|
-
updateFilterValues: updateFilterValues
|
|
89
|
+
updateFilterValues: updateFilterValues,
|
|
90
|
+
shouldSearch: shouldSearch
|
|
87
91
|
}));
|
|
88
92
|
|
|
89
93
|
default:
|
|
@@ -98,9 +102,11 @@ FiltersList.propTypes = {
|
|
|
98
102
|
filterValues: PropTypes.object.isRequired,
|
|
99
103
|
updateFilterValues: PropTypes.func.isRequired,
|
|
100
104
|
data: PropTypes.object,
|
|
101
|
-
filters: PropTypes.array
|
|
105
|
+
filters: PropTypes.array,
|
|
106
|
+
shouldSearch: PropTypes.bool
|
|
102
107
|
};
|
|
103
108
|
FiltersList.defaultProps = {
|
|
109
|
+
shouldSearch: false,
|
|
104
110
|
data: {},
|
|
105
111
|
filters: []
|
|
106
112
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SearchFilter/SearchFilter/FiltersList.js"],"names":["React","useContext","PropTypes","MainContext","TextSearch","Checkbox","SelectFilter","Range","CHECKBOX","SELECT","TEXT_SEARCH","RANGE","SEARCH_TERM","FiltersList","data","filters","hasUrl","entity","filterValues","updateFilterValues","itemId","map","type","label","propsToDisplay","rangeInterval","elementTitle","index","length","dynamicKey","join","isDataAvailable","Object","keys","dataAggregations","areAggregationsAvailable","results","shouldDisplayFilter","buckets","propTypes","bool","isRequired","string","object","func","array","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,WAAT,QAA4B,8BAA5B;AACA,SAASC,UAAT,EAAqBC,QAArB,EAA+BC,YAA/B,EAA6CC,KAA7C,QAA0D,eAA1D;AACA,SAASC,QAAT,EAAmBC,MAAnB,EAA2BC,WAA3B,EAAwCC,KAAxC,EAA+CC,WAA/C,QAAkE,cAAlE;;AAEA,MAAMC,WAAW,GAAG,CAAC;
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SearchFilter/SearchFilter/FiltersList.js"],"names":["React","useContext","PropTypes","MainContext","TextSearch","Checkbox","SelectFilter","Range","CHECKBOX","SELECT","TEXT_SEARCH","RANGE","SEARCH_TERM","FiltersList","data","filters","hasUrl","entity","filterValues","updateFilterValues","shouldSearch","itemId","map","type","label","propsToDisplay","rangeInterval","elementTitle","index","length","dynamicKey","join","isDataAvailable","Object","keys","dataAggregations","areAggregationsAvailable","results","shouldDisplayFilter","buckets","propTypes","bool","isRequired","string","object","func","array","defaultProps"],"mappings":"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","sourcesContent":["import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { MainContext } from '@blaze-cms/nextjs-components';\nimport { TextSearch, Checkbox, SelectFilter, Range } from '../components';\nimport { CHECKBOX, SELECT, TEXT_SEARCH, RANGE, SEARCH_TERM } from '../constants';\n\nconst FiltersList = ({\n data,\n filters,\n hasUrl,\n entity,\n filterValues,\n updateFilterValues,\n shouldSearch\n}) => {\n const { itemId } = useContext(MainContext);\n\n return filters.map(({ type, label, propsToDisplay, rangeInterval, elementTitle }, index) => {\n if (!propsToDisplay && !propsToDisplay.length) return null;\n\n const dynamicKey = [itemId, index].join('-');\n const isDataAvailable = !!data && Object.keys(data).length;\n const dataAggregations = isDataAvailable ? data : null;\n const areAggregationsAvailable = isDataAvailable && !!dataAggregations;\n const results = areAggregationsAvailable && dataAggregations[propsToDisplay[0]];\n const shouldDisplayFilter = results && results.buckets && results.buckets.length;\n\n switch (type) {\n case TEXT_SEARCH:\n return (\n <div\n key={dynamicKey}\n className=\"filter__section filter__section--search-refine filter__section--search\">\n <TextSearch\n label={label}\n elementTitle={elementTitle}\n searchValue={filterValues[SEARCH_TERM]}\n updateFilterValues={updateFilterValues}\n filterValues={filterValues}\n />\n </div>\n );\n case CHECKBOX:\n return (\n !!shouldDisplayFilter && (\n <div\n key={dynamicKey}\n className=\"filter__section filter__section--search-refine filter__section--checkboxes\">\n <Checkbox\n data={data}\n prop={propsToDisplay[0]}\n label={label}\n elementTitle={elementTitle}\n hasUrl={hasUrl}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n shouldSearch={shouldSearch}\n />\n </div>\n )\n );\n case SELECT:\n return (\n !!shouldDisplayFilter && (\n <div\n key={dynamicKey}\n className=\"filter__section filter__section--search-refine filter__section--selects\">\n <SelectFilter\n data={data}\n prop={propsToDisplay[0]}\n label={label}\n elementTitle={elementTitle}\n hasUrl={hasUrl}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n shouldSearch={shouldSearch}\n />\n </div>\n )\n );\n case RANGE:\n return (\n !!areAggregationsAvailable && (\n <div key={dynamicKey} className=\"range-slider__wrapper\">\n <Range\n dataAggregations={dataAggregations}\n propsToDisplay={propsToDisplay}\n rangeInterval={rangeInterval}\n label={label}\n elementTitle={elementTitle}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n shouldSearch={shouldSearch}\n />\n </div>\n )\n );\n default:\n return null;\n }\n });\n};\n\nFiltersList.propTypes = {\n hasUrl: PropTypes.bool.isRequired,\n entity: PropTypes.string.isRequired,\n filterValues: PropTypes.object.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n data: PropTypes.object,\n filters: PropTypes.array,\n shouldSearch: PropTypes.bool\n};\n\nFiltersList.defaultProps = {\n shouldSearch: false,\n data: {},\n filters: []\n};\n\nexport default FiltersList;\n"],"file":"FiltersList.js"}
|
|
@@ -123,15 +123,16 @@ const SearchFilter = ({
|
|
|
123
123
|
});
|
|
124
124
|
};
|
|
125
125
|
|
|
126
|
-
const updateFilterValues = (newValues,
|
|
126
|
+
const updateFilterValues = (newValues, shouldSubmit) => {
|
|
127
127
|
dispatch({
|
|
128
128
|
newValues,
|
|
129
|
-
shouldSearch,
|
|
129
|
+
shouldSearch: shouldSubmit,
|
|
130
130
|
type: 'update'
|
|
131
131
|
});
|
|
132
132
|
};
|
|
133
133
|
|
|
134
134
|
const shouldGroup = !!(groupAfterDesktop || groupAfterMobile);
|
|
135
|
+
const shouldSearch = !hasUrl;
|
|
135
136
|
return /*#__PURE__*/React.createElement(React.Fragment, null, isDesktopFormDisplayed || isMobileFormDisplayed ? /*#__PURE__*/React.createElement("form", {
|
|
136
137
|
ref: searchFilterRef,
|
|
137
138
|
className: formClass,
|
|
@@ -151,6 +152,7 @@ const SearchFilter = ({
|
|
|
151
152
|
}), /*#__PURE__*/React.createElement("div", {
|
|
152
153
|
className: "filter__wrapper filter__wrapper--search-refine"
|
|
153
154
|
}, !shouldGroup && /*#__PURE__*/React.createElement(FiltersList, {
|
|
155
|
+
shouldSearch: shouldSearch,
|
|
154
156
|
data: data,
|
|
155
157
|
filters: filters,
|
|
156
158
|
hasUrl: hasUrl,
|
|
@@ -158,6 +160,7 @@ const SearchFilter = ({
|
|
|
158
160
|
filterValues: filterValues,
|
|
159
161
|
updateFilterValues: updateFilterValues
|
|
160
162
|
}), shouldGroup && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FiltersList, {
|
|
163
|
+
shouldSearch: shouldSearch,
|
|
161
164
|
data: data,
|
|
162
165
|
filters: filters.slice(0, groupAfterMobile),
|
|
163
166
|
hasUrl: hasUrl,
|
|
@@ -173,6 +176,7 @@ const SearchFilter = ({
|
|
|
173
176
|
}, /*#__PURE__*/React.createElement("div", {
|
|
174
177
|
className: MORE_FILTERS_CLASSES.MOBILE_CONTENT
|
|
175
178
|
}, /*#__PURE__*/React.createElement(FiltersList, {
|
|
179
|
+
shouldSearch: shouldSearch && isDeviceDesktop(),
|
|
176
180
|
data: data,
|
|
177
181
|
filters: filters.slice(groupAfterMobile, groupAfterDesktop ? groupAfterDesktop - 1 : 0),
|
|
178
182
|
hasUrl: hasUrl,
|
|
@@ -188,6 +192,7 @@ const SearchFilter = ({
|
|
|
188
192
|
}, /*#__PURE__*/React.createElement("div", {
|
|
189
193
|
className: MORE_FILTERS_CLASSES.DESKTOP_CONTENT
|
|
190
194
|
}, /*#__PURE__*/React.createElement(FiltersList, {
|
|
195
|
+
shouldSearch: false,
|
|
191
196
|
data: data,
|
|
192
197
|
filters: filters.slice(groupAfterDesktop),
|
|
193
198
|
hasUrl: hasUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SearchFilter/SearchFilter/SearchFilter.js"],"names":["React","useState","useEffect","useReducer","PropTypes","classnames","debounce","FiltersList","isDeviceDesktop","buildQuery","getInitialFilterValues","getResponsiveFilterClassnames","CloseMobileForm","ResetDesktopForm","MobileFormToolbar","SEARCH","REFINE","MORE_FILTERS_CLASSES","reducer","state","action","newValues","type","shouldSearch","Error","SearchFilter","searchFilterRef","data","filters","hasUrl","entity","handleSearch","name","isCollapsedOnResponsive","displaySearchFilter","setDisplaySearchFilter","initialFilterValues","groupAfterDesktop","groupAfterMobile","isDesktop","setIsDesktop","pageWidth","setPageWidth","moreFiltersMobileCollapsed","setMoreFiltersMobileCollapsed","moreFiltersDesktopCollapsed","setMoreFiltersDesktopCollapsed","filterValues","dispatch","handleSubmit","newQuery","window","innerWidth","handleResize","target","addEventListener","removeEventListener","isDesktopFormDisplayed","isMobileFormDisplayed","formClass","moreFiltersMobileWrapperClass","moreFiltersMobileTogglerClass","moreFiltersDesktopWrapperClass","moreFiltersDesktopTogglerClass","formId","handleReset","updateFilterValues","shouldGroup","e","preventDefault","slice","MOBILE_CONTENT","DESKTOP_CONTENT","DESKTOP_BUTTONS","MOBILE_BUTTONS","propTypes","object","isRequired","array","bool","string","func","number"],"mappings":"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","sourcesContent":["import React, { useState, useEffect, useReducer } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport FiltersList from './FiltersList';\nimport {\n isDeviceDesktop,\n buildQuery,\n getInitialFilterValues,\n getResponsiveFilterClassnames\n} from '../helpers';\nimport CloseMobileForm from './CloseMobileForm';\nimport ResetDesktopForm from './ResetDesktopForm';\nimport MobileFormToolbar from './MobileFormToolbar';\nimport { SEARCH, REFINE, MORE_FILTERS_CLASSES } from '../constants';\n\nconst reducer = (state, action) => {\n const { newValues, type, shouldSearch = true } = action;\n\n switch (type) {\n case 'update':\n return { ...state, ...newValues, shouldSearch };\n case 'resetSearch':\n return { ...state, shouldSearch: false };\n case 'reset':\n return { ...newValues, shouldSearch };\n default:\n throw new Error();\n }\n};\n\nconst SearchFilter = ({\n searchFilterRef,\n data,\n filters,\n hasUrl,\n entity,\n handleSearch,\n name,\n isCollapsedOnResponsive,\n displaySearchFilter,\n setDisplaySearchFilter,\n initialFilterValues,\n groupAfterDesktop,\n groupAfterMobile\n}) => {\n const [isDesktop, setIsDesktop] = useState(true);\n const [pageWidth, setPageWidth] = useState(null);\n const [moreFiltersMobileCollapsed, setMoreFiltersMobileCollapsed] = useState(true);\n const [moreFiltersDesktopCollapsed, setMoreFiltersDesktopCollapsed] = useState(true);\n const [filterValues, dispatch] = useReducer(reducer, initialFilterValues);\n\n const handleSubmit = debounce(newValues => {\n const newQuery = buildQuery(newValues, filters);\n handleSearch(newQuery);\n }, 200);\n\n useEffect(\n () => {\n if (window && !pageWidth) {\n setPageWidth(window.innerWidth);\n setIsDesktop(isDeviceDesktop());\n }\n\n const handleResize = ({ target: { innerWidth } }) => {\n setIsDesktop(isDeviceDesktop());\n setPageWidth(innerWidth);\n if (isDesktop) setDisplaySearchFilter(false);\n };\n\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n },\n [isDesktop, pageWidth, setDisplaySearchFilter]\n );\n\n useEffect(\n () => {\n if (filterValues.shouldSearch) {\n handleSubmit(filterValues);\n dispatch({ type: 'resetSearch' });\n }\n },\n [filterValues, handleSubmit]\n );\n\n let isDesktopFormDisplayed = true;\n let isMobileFormDisplayed = false;\n\n if (!isDesktop && isCollapsedOnResponsive) {\n isMobileFormDisplayed = displaySearchFilter;\n isDesktopFormDisplayed = false;\n }\n\n const formClass = classnames({\n 'filter__form filter__form--mobile': isMobileFormDisplayed\n });\n\n const {\n moreFiltersMobileWrapperClass,\n moreFiltersMobileTogglerClass,\n moreFiltersDesktopWrapperClass,\n moreFiltersDesktopTogglerClass\n } = getResponsiveFilterClassnames(moreFiltersDesktopCollapsed, moreFiltersMobileCollapsed);\n\n const formId = `filter-${name}-form`;\n\n const handleReset = () => {\n const newValues = getInitialFilterValues(data, filters, {});\n\n dispatch({ newValues, type: 'reset' });\n };\n\n const updateFilterValues = (newValues, shouldSearch) => {\n dispatch({ newValues, shouldSearch, type: 'update' });\n };\n\n const shouldGroup = !!(groupAfterDesktop || groupAfterMobile);\n\n return (\n <>\n {isDesktopFormDisplayed || isMobileFormDisplayed ? (\n <form\n ref={searchFilterRef}\n className={formClass}\n data-testid={formId}\n id={formId}\n onSubmit={e => {\n e.preventDefault();\n const newQuery = buildQuery(filterValues, filters);\n handleSearch(newQuery);\n }}>\n {isMobileFormDisplayed && (\n <CloseMobileForm handleClose={() => setDisplaySearchFilter(false)} />\n )}\n\n <div className=\"filter filter--search-refine\">\n {isDesktopFormDisplayed && <ResetDesktopForm handleReset={handleReset} />}\n\n <div className=\"filter__wrapper filter__wrapper--search-refine\">\n {!shouldGroup && (\n <FiltersList\n data={data}\n filters={filters}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n )}\n\n {shouldGroup && (\n <>\n <FiltersList\n data={data}\n filters={filters.slice(0, groupAfterMobile)}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n\n {!!groupAfterMobile && (\n <button\n className={moreFiltersMobileTogglerClass}\n type=\"button\"\n onClick={() => setMoreFiltersMobileCollapsed(!moreFiltersMobileCollapsed)}>\n Filters\n </button>\n )}\n\n <div className={moreFiltersMobileWrapperClass}>\n <div className={MORE_FILTERS_CLASSES.MOBILE_CONTENT}>\n <FiltersList\n data={data}\n filters={filters.slice(\n groupAfterMobile,\n groupAfterDesktop ? groupAfterDesktop - 1 : 0\n )}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n\n {!!groupAfterDesktop && (\n <button\n className={moreFiltersDesktopTogglerClass}\n type=\"button\"\n onClick={() =>\n setMoreFiltersDesktopCollapsed(!moreFiltersDesktopCollapsed)\n }>\n More filters\n </button>\n )}\n\n <div className={moreFiltersDesktopWrapperClass}>\n <div className={MORE_FILTERS_CLASSES.DESKTOP_CONTENT}>\n <FiltersList\n data={data}\n filters={filters.slice(groupAfterDesktop)}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n </div>\n\n <div className={MORE_FILTERS_CLASSES.DESKTOP_BUTTONS}>\n <ResetDesktopForm handleReset={handleReset} />\n\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n </div>\n </div>\n </div>\n\n <div className={MORE_FILTERS_CLASSES.MOBILE_BUTTONS}>\n <ResetDesktopForm handleReset={handleReset} />\n\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n </div>\n </div>\n </>\n )}\n\n <br />\n\n {isDesktopFormDisplayed && (\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n )}\n </div>\n </div>\n\n {isMobileFormDisplayed && <MobileFormToolbar formId={formId} handleReset={handleReset} />}\n </form>\n ) : (\n <>\n {isCollapsedOnResponsive && (\n <div\n className=\"filter__refine filter__refine--mobile-close\"\n data-testid=\"refine-mobile\">\n <div role=\"button\" onClick={() => setDisplaySearchFilter(true)}>\n {REFINE}\n </div>\n </div>\n )}\n </>\n )}\n </>\n );\n};\n\nSearchFilter.propTypes = {\n data: PropTypes.object.isRequired,\n filters: PropTypes.array.isRequired,\n searchFilterRef: PropTypes.object.isRequired,\n hasUrl: PropTypes.bool.isRequired,\n entity: PropTypes.string.isRequired,\n handleSearch: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n displaySearchFilter: PropTypes.bool.isRequired,\n setDisplaySearchFilter: PropTypes.func.isRequired,\n isCollapsedOnResponsive: PropTypes.bool.isRequired,\n groupAfterDesktop: PropTypes.number.isRequired,\n groupAfterMobile: PropTypes.number.isRequired,\n initialFilterValues: PropTypes.object.isRequired\n};\n\nexport default SearchFilter;\n"],"file":"SearchFilter.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SearchFilter/SearchFilter/SearchFilter.js"],"names":["React","useState","useEffect","useReducer","PropTypes","classnames","debounce","FiltersList","isDeviceDesktop","buildQuery","getInitialFilterValues","getResponsiveFilterClassnames","CloseMobileForm","ResetDesktopForm","MobileFormToolbar","SEARCH","REFINE","MORE_FILTERS_CLASSES","reducer","state","action","newValues","type","shouldSearch","Error","SearchFilter","searchFilterRef","data","filters","hasUrl","entity","handleSearch","name","isCollapsedOnResponsive","displaySearchFilter","setDisplaySearchFilter","initialFilterValues","groupAfterDesktop","groupAfterMobile","isDesktop","setIsDesktop","pageWidth","setPageWidth","moreFiltersMobileCollapsed","setMoreFiltersMobileCollapsed","moreFiltersDesktopCollapsed","setMoreFiltersDesktopCollapsed","filterValues","dispatch","handleSubmit","newQuery","window","innerWidth","handleResize","target","addEventListener","removeEventListener","isDesktopFormDisplayed","isMobileFormDisplayed","formClass","moreFiltersMobileWrapperClass","moreFiltersMobileTogglerClass","moreFiltersDesktopWrapperClass","moreFiltersDesktopTogglerClass","formId","handleReset","updateFilterValues","shouldSubmit","shouldGroup","e","preventDefault","slice","MOBILE_CONTENT","DESKTOP_CONTENT","DESKTOP_BUTTONS","MOBILE_BUTTONS","propTypes","object","isRequired","array","bool","string","func","number"],"mappings":"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","sourcesContent":["import React, { useState, useEffect, useReducer } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport FiltersList from './FiltersList';\nimport {\n isDeviceDesktop,\n buildQuery,\n getInitialFilterValues,\n getResponsiveFilterClassnames\n} from '../helpers';\nimport CloseMobileForm from './CloseMobileForm';\nimport ResetDesktopForm from './ResetDesktopForm';\nimport MobileFormToolbar from './MobileFormToolbar';\nimport { SEARCH, REFINE, MORE_FILTERS_CLASSES } from '../constants';\n\nconst reducer = (state, action) => {\n const { newValues, type, shouldSearch = true } = action;\n\n switch (type) {\n case 'update':\n return { ...state, ...newValues, shouldSearch };\n case 'resetSearch':\n return { ...state, shouldSearch: false };\n case 'reset':\n return { ...newValues, shouldSearch };\n default:\n throw new Error();\n }\n};\n\nconst SearchFilter = ({\n searchFilterRef,\n data,\n filters,\n hasUrl,\n entity,\n handleSearch,\n name,\n isCollapsedOnResponsive,\n displaySearchFilter,\n setDisplaySearchFilter,\n initialFilterValues,\n groupAfterDesktop,\n groupAfterMobile\n}) => {\n const [isDesktop, setIsDesktop] = useState(true);\n const [pageWidth, setPageWidth] = useState(null);\n const [moreFiltersMobileCollapsed, setMoreFiltersMobileCollapsed] = useState(true);\n const [moreFiltersDesktopCollapsed, setMoreFiltersDesktopCollapsed] = useState(true);\n const [filterValues, dispatch] = useReducer(reducer, initialFilterValues);\n\n const handleSubmit = debounce(newValues => {\n const newQuery = buildQuery(newValues, filters);\n handleSearch(newQuery);\n }, 200);\n\n useEffect(\n () => {\n if (window && !pageWidth) {\n setPageWidth(window.innerWidth);\n setIsDesktop(isDeviceDesktop());\n }\n\n const handleResize = ({ target: { innerWidth } }) => {\n setIsDesktop(isDeviceDesktop());\n setPageWidth(innerWidth);\n if (isDesktop) setDisplaySearchFilter(false);\n };\n\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n },\n [isDesktop, pageWidth, setDisplaySearchFilter]\n );\n\n useEffect(\n () => {\n if (filterValues.shouldSearch) {\n handleSubmit(filterValues);\n dispatch({ type: 'resetSearch' });\n }\n },\n [filterValues, handleSubmit]\n );\n\n let isDesktopFormDisplayed = true;\n let isMobileFormDisplayed = false;\n\n if (!isDesktop && isCollapsedOnResponsive) {\n isMobileFormDisplayed = displaySearchFilter;\n isDesktopFormDisplayed = false;\n }\n\n const formClass = classnames({\n 'filter__form filter__form--mobile': isMobileFormDisplayed\n });\n\n const {\n moreFiltersMobileWrapperClass,\n moreFiltersMobileTogglerClass,\n moreFiltersDesktopWrapperClass,\n moreFiltersDesktopTogglerClass\n } = getResponsiveFilterClassnames(moreFiltersDesktopCollapsed, moreFiltersMobileCollapsed);\n\n const formId = `filter-${name}-form`;\n\n const handleReset = () => {\n const newValues = getInitialFilterValues(data, filters, {});\n\n dispatch({ newValues, type: 'reset' });\n };\n\n const updateFilterValues = (newValues, shouldSubmit) => {\n dispatch({ newValues, shouldSearch: shouldSubmit, type: 'update' });\n };\n\n const shouldGroup = !!(groupAfterDesktop || groupAfterMobile);\n const shouldSearch = !hasUrl;\n\n return (\n <>\n {isDesktopFormDisplayed || isMobileFormDisplayed ? (\n <form\n ref={searchFilterRef}\n className={formClass}\n data-testid={formId}\n id={formId}\n onSubmit={e => {\n e.preventDefault();\n const newQuery = buildQuery(filterValues, filters);\n handleSearch(newQuery);\n }}>\n {isMobileFormDisplayed && (\n <CloseMobileForm handleClose={() => setDisplaySearchFilter(false)} />\n )}\n\n <div className=\"filter filter--search-refine\">\n {isDesktopFormDisplayed && <ResetDesktopForm handleReset={handleReset} />}\n\n <div className=\"filter__wrapper filter__wrapper--search-refine\">\n {!shouldGroup && (\n <FiltersList\n shouldSearch={shouldSearch}\n data={data}\n filters={filters}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n )}\n\n {shouldGroup && (\n <>\n <FiltersList\n shouldSearch={shouldSearch}\n data={data}\n filters={filters.slice(0, groupAfterMobile)}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n\n {!!groupAfterMobile && (\n <button\n className={moreFiltersMobileTogglerClass}\n type=\"button\"\n onClick={() => setMoreFiltersMobileCollapsed(!moreFiltersMobileCollapsed)}>\n Filters\n </button>\n )}\n\n <div className={moreFiltersMobileWrapperClass}>\n <div className={MORE_FILTERS_CLASSES.MOBILE_CONTENT}>\n <FiltersList\n shouldSearch={shouldSearch && isDeviceDesktop()}\n data={data}\n filters={filters.slice(\n groupAfterMobile,\n groupAfterDesktop ? groupAfterDesktop - 1 : 0\n )}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n\n {!!groupAfterDesktop && (\n <button\n className={moreFiltersDesktopTogglerClass}\n type=\"button\"\n onClick={() =>\n setMoreFiltersDesktopCollapsed(!moreFiltersDesktopCollapsed)\n }>\n More filters\n </button>\n )}\n\n <div className={moreFiltersDesktopWrapperClass}>\n <div className={MORE_FILTERS_CLASSES.DESKTOP_CONTENT}>\n <FiltersList\n shouldSearch={false}\n data={data}\n filters={filters.slice(groupAfterDesktop)}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n </div>\n\n <div className={MORE_FILTERS_CLASSES.DESKTOP_BUTTONS}>\n <ResetDesktopForm handleReset={handleReset} />\n\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n </div>\n </div>\n </div>\n\n <div className={MORE_FILTERS_CLASSES.MOBILE_BUTTONS}>\n <ResetDesktopForm handleReset={handleReset} />\n\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n </div>\n </div>\n </>\n )}\n\n <br />\n\n {isDesktopFormDisplayed && (\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n )}\n </div>\n </div>\n\n {isMobileFormDisplayed && <MobileFormToolbar formId={formId} handleReset={handleReset} />}\n </form>\n ) : (\n <>\n {isCollapsedOnResponsive && (\n <div\n className=\"filter__refine filter__refine--mobile-close\"\n data-testid=\"refine-mobile\">\n <div role=\"button\" onClick={() => setDisplaySearchFilter(true)}>\n {REFINE}\n </div>\n </div>\n )}\n </>\n )}\n </>\n );\n};\n\nSearchFilter.propTypes = {\n data: PropTypes.object.isRequired,\n filters: PropTypes.array.isRequired,\n searchFilterRef: PropTypes.object.isRequired,\n hasUrl: PropTypes.bool.isRequired,\n entity: PropTypes.string.isRequired,\n handleSearch: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n displaySearchFilter: PropTypes.bool.isRequired,\n setDisplaySearchFilter: PropTypes.func.isRequired,\n isCollapsedOnResponsive: PropTypes.bool.isRequired,\n groupAfterDesktop: PropTypes.number.isRequired,\n groupAfterMobile: PropTypes.number.isRequired,\n initialFilterValues: PropTypes.object.isRequired\n};\n\nexport default SearchFilter;\n"],"file":"SearchFilter.js"}
|
|
@@ -19,7 +19,8 @@ const Checkbox = ({
|
|
|
19
19
|
prop,
|
|
20
20
|
updateFilterValues,
|
|
21
21
|
filterValues,
|
|
22
|
-
label
|
|
22
|
+
label,
|
|
23
|
+
shouldSearch
|
|
23
24
|
}) => {
|
|
24
25
|
const [checkboxLimit, setCheckboxLimit] = useState(null);
|
|
25
26
|
|
|
@@ -73,7 +74,7 @@ const Checkbox = ({
|
|
|
73
74
|
}) => value);
|
|
74
75
|
updateFilterValues({
|
|
75
76
|
[prop]: newCheckboxValues
|
|
76
|
-
},
|
|
77
|
+
}, shouldSearch);
|
|
77
78
|
}
|
|
78
79
|
}), data[prop].buckets.length > LIMIT_MIN && /*#__PURE__*/React.createElement("div", {
|
|
79
80
|
role: "button",
|
|
@@ -89,9 +90,11 @@ Checkbox.propTypes = {
|
|
|
89
90
|
prop: PropTypes.string.isRequired,
|
|
90
91
|
filterValues: PropTypes.object.isRequired,
|
|
91
92
|
updateFilterValues: PropTypes.func.isRequired,
|
|
93
|
+
shouldSearch: PropTypes.bool,
|
|
92
94
|
label: PropTypes.string
|
|
93
95
|
};
|
|
94
96
|
Checkbox.defaultProps = {
|
|
97
|
+
shouldSearch: false,
|
|
95
98
|
label: ''
|
|
96
99
|
};
|
|
97
100
|
export default withTitle(Checkbox);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SearchFilter/components/Checkbox.js"],"names":["React","useState","PropTypes","upperFirst","Checkboxes","withTitle","decodeValue","LIMIT_MIN","LIMIT_MAX","MORE","LESS","DOWN","UP","getButtonInfo","isMore","icon","text","Checkbox","data","prop","updateFilterValues","filterValues","label","checkboxLimit","setCheckboxLimit","handleCheckboxOptions","checkboxQueryParams","map","val","multiple","sortedValues","buckets","key","filter","Boolean","sort","forEach","value","i","push","name","checked","includes","id","shouldDisplayMore","eData","newCheckboxValues","length","propTypes","object","isRequired","string","func","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,mBAAvB;AACA,SAASC,UAAT,QAA2B,yBAA3B;AACA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,WAAT,QAA4B,YAA5B;AACA,SAASC,SAAT,EAAoBC,SAApB,EAA+BC,IAA/B,EAAqCC,IAArC,EAA2CC,IAA3C,EAAiDC,EAAjD,QAA2D,cAA3D;;AAEA,MAAMC,aAAa,GAAGC,MAAM,IAAKA,MAAM,GAAG;AAAEC,EAAAA,IAAI,EAAEJ,IAAR;AAAcK,EAAAA,IAAI,EAAEP;AAApB,CAAH,GAAgC;AAAEM,EAAAA,IAAI,EAAEH,EAAR;AAAYI,EAAAA,IAAI,EAAEN;AAAlB,CAAvE;;AAEA,MAAMO,QAAQ,GAAG,CAAC;AAAEC,EAAAA,IAAF;AAAQC,EAAAA,IAAR;AAAcC,EAAAA,kBAAd;AAAkCC,EAAAA,YAAlC;AAAgDC,EAAAA;
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SearchFilter/components/Checkbox.js"],"names":["React","useState","PropTypes","upperFirst","Checkboxes","withTitle","decodeValue","LIMIT_MIN","LIMIT_MAX","MORE","LESS","DOWN","UP","getButtonInfo","isMore","icon","text","Checkbox","data","prop","updateFilterValues","filterValues","label","shouldSearch","checkboxLimit","setCheckboxLimit","handleCheckboxOptions","checkboxQueryParams","map","val","multiple","sortedValues","buckets","key","filter","Boolean","sort","forEach","value","i","push","name","checked","includes","id","shouldDisplayMore","eData","newCheckboxValues","length","propTypes","object","isRequired","string","func","bool","defaultProps"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport upperFirst from 'lodash.upperfirst';\nimport { Checkboxes } from '@blaze-react/checkboxes';\nimport { withTitle } from '../../../HOC';\nimport { decodeValue } from '../helpers';\nimport { LIMIT_MIN, LIMIT_MAX, MORE, LESS, DOWN, UP } from '../constants';\n\nconst getButtonInfo = isMore => (isMore ? { icon: DOWN, text: MORE } : { icon: UP, text: LESS });\n\nconst Checkbox = ({ data, prop, updateFilterValues, filterValues, label, shouldSearch }) => {\n const [checkboxLimit, setCheckboxLimit] = useState(null);\n\n const handleCheckboxOptions = () => {\n if (checkboxLimit[prop] === LIMIT_MIN) {\n setCheckboxLimit({ [prop]: LIMIT_MAX });\n } else {\n setCheckboxLimit({ [prop]: LIMIT_MIN });\n }\n };\n\n if (!checkboxLimit) {\n setCheckboxLimit({ [prop]: LIMIT_MIN });\n }\n\n if (!checkboxLimit) return null;\n\n let checkboxQueryParams = [];\n\n if (filterValues && filterValues[prop]) {\n checkboxQueryParams =\n typeof filterValues[prop] === 'string'\n ? [decodeValue(filterValues[prop])]\n : filterValues[prop].map(val => decodeValue(val));\n }\n const multiple = [];\n\n const sortedValues = data[prop].buckets\n .map(({ key }) => key)\n .filter(Boolean)\n .sort();\n\n sortedValues.forEach(\n (value, i) =>\n i < checkboxLimit[prop] &&\n multiple.push({\n label: upperFirst(value),\n value,\n name: prop,\n checked: checkboxQueryParams.includes(value),\n id: value\n })\n );\n\n const shouldDisplayMore = !checkboxLimit || checkboxLimit[prop] === LIMIT_MIN;\n\n return (\n <>\n {label ? <p>{label}</p> : ''}\n <Checkboxes\n className=\"form-checkbox\"\n options={multiple}\n onChange={({ data: eData }) => {\n const newCheckboxValues = eData\n .filter(({ checked }) => checked)\n .map(({ value }) => value);\n updateFilterValues({ [prop]: newCheckboxValues }, shouldSearch);\n }}\n />\n {data[prop].buckets.length > LIMIT_MIN && (\n <div role=\"button\" className=\"see-more\" onClick={handleCheckboxOptions}>\n <i className={`fas fa-chevron-${getButtonInfo(shouldDisplayMore).icon}`} />\n {` See ${getButtonInfo(shouldDisplayMore).text}`}\n </div>\n )}\n </>\n );\n};\n\nCheckbox.propTypes = {\n data: PropTypes.object.isRequired,\n prop: PropTypes.string.isRequired,\n filterValues: PropTypes.object.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n shouldSearch: PropTypes.bool,\n label: PropTypes.string\n};\n\nCheckbox.defaultProps = {\n shouldSearch: false,\n label: ''\n};\n\nexport default withTitle(Checkbox);\n"],"file":"Checkbox.js"}
|
|
@@ -22,9 +22,11 @@ const Range = ({
|
|
|
22
22
|
entity,
|
|
23
23
|
propsToDisplay,
|
|
24
24
|
updateFilterValues,
|
|
25
|
-
filterValues
|
|
25
|
+
filterValues,
|
|
26
|
+
shouldSearch
|
|
26
27
|
}) => {
|
|
27
28
|
const router = useRouter();
|
|
29
|
+
const debounceAmount = shouldSearch ? 1200 : 100;
|
|
28
30
|
const {
|
|
29
31
|
query
|
|
30
32
|
} = parseUrl(decodeValue(router.asPath));
|
|
@@ -50,8 +52,8 @@ const Range = ({
|
|
|
50
52
|
[option]: _objectSpread(_objectSpread({}, value), {}, {
|
|
51
53
|
selectedOption: rangeOption
|
|
52
54
|
})
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
+
}, shouldSearch);
|
|
56
|
+
}, debounceAmount);
|
|
55
57
|
return /*#__PURE__*/React.createElement(React.Fragment, null, hasMultipleOptions && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("label", null, label), /*#__PURE__*/React.createElement(Select, {
|
|
56
58
|
value: rangeOption,
|
|
57
59
|
id: rangeOption,
|
|
@@ -92,10 +94,12 @@ Range.propTypes = {
|
|
|
92
94
|
entity: PropTypes.string.isRequired,
|
|
93
95
|
filterValues: PropTypes.object.isRequired,
|
|
94
96
|
updateFilterValues: PropTypes.func.isRequired,
|
|
97
|
+
shouldSearch: PropTypes.bool,
|
|
95
98
|
rangeInterval: PropTypes.number,
|
|
96
99
|
label: PropTypes.string
|
|
97
100
|
};
|
|
98
101
|
Range.defaultProps = {
|
|
102
|
+
shouldSearch: false,
|
|
99
103
|
rangeInterval: 1,
|
|
100
104
|
label: ''
|
|
101
105
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SearchFilter/components/Range.js"],"names":["React","PropTypes","debounce","RangeFilter","useRouter","Select","parseUrl","useGetSingleEntitySchema","withTitle","getSelectOptions","getIntersectedProp","getRangeValue","decodeValue","Range","rangeInterval","label","entity","propsToDisplay","updateFilterValues","filterValues","router","query","asPath","hasMultipleOptions","length","initialRangeOption","rangeOption","selectedOption","rangeValue","data","getEntitySchema","loading","options","min","max","shouldShowRange","handleChange","option","value","updatedOptions","forEach","prop","eMin","eMax","initValue","propTypes","array","isRequired","string","object","func","number","defaultProps"],"mappings":";;;;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,WAAP,MAAwB,2BAAxB;AACA,SAASC,SAAT,QAA0B,aAA1B;AACA,OAAOC,MAAP,MAAmB,qBAAnB;AACA,SAASC,QAAT,QAAyB,cAAzB;AACA,SAASC,wBAAT,QAAyC,gBAAzC;AACA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,gBAAT,EAA2BC,kBAA3B,EAA+CC,aAA/C,QAAoE,YAApE;AACA,SAASC,WAAT,QAA4B,0BAA5B;;AAEA,MAAMC,KAAK,GAAG,CAAC;AACbC,EAAAA,aADa;AAEbC,EAAAA,KAFa;AAGbC,EAAAA,MAHa;AAIbC,EAAAA,cAJa;AAKbC,EAAAA,kBALa;AAMbC,EAAAA;
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SearchFilter/components/Range.js"],"names":["React","PropTypes","debounce","RangeFilter","useRouter","Select","parseUrl","useGetSingleEntitySchema","withTitle","getSelectOptions","getIntersectedProp","getRangeValue","decodeValue","Range","rangeInterval","label","entity","propsToDisplay","updateFilterValues","filterValues","shouldSearch","router","debounceAmount","query","asPath","hasMultipleOptions","length","initialRangeOption","rangeOption","selectedOption","rangeValue","data","getEntitySchema","loading","options","min","max","shouldShowRange","handleChange","option","value","updatedOptions","forEach","prop","eMin","eMax","initValue","propTypes","array","isRequired","string","object","func","bool","number","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport RangeFilter from '@blaze-react/range-filter';\nimport { useRouter } from 'next/router';\nimport Select from '@blaze-react/select';\nimport { parseUrl } from 'query-string';\nimport { useGetSingleEntitySchema } from '../../../hooks';\nimport { withTitle } from '../../../HOC';\nimport { getSelectOptions, getIntersectedProp, getRangeValue } from '../helpers';\nimport { decodeValue } from '../helpers/decode-encode';\n\nconst Range = ({\n rangeInterval,\n label,\n entity,\n propsToDisplay,\n updateFilterValues,\n filterValues,\n shouldSearch\n}) => {\n const router = useRouter();\n const debounceAmount = shouldSearch ? 1200 : 100;\n const { query } = parseUrl(decodeValue(router.asPath));\n const hasMultipleOptions = propsToDisplay.length > 1;\n const initialRangeOption = getIntersectedProp(query, propsToDisplay) || propsToDisplay[0];\n const rangeOption =\n (filterValues[initialRangeOption] && filterValues[initialRangeOption].selectedOption) ||\n initialRangeOption;\n const rangeValue = filterValues[rangeOption];\n\n const { data: { getEntitySchema = {} } = {}, loading } = useGetSingleEntitySchema(\n entity,\n !hasMultipleOptions\n );\n\n if (loading || !rangeOption || !rangeValue) return '';\n\n const options = getSelectOptions(getEntitySchema, propsToDisplay);\n const { min, max } = rangeValue;\n const shouldShowRange = rangeOption && min !== max;\n\n const handleChange = debounce((option, value) => {\n updateFilterValues({ [option]: { ...value, selectedOption: rangeOption } }, shouldSearch);\n }, debounceAmount);\n\n return (\n <>\n {hasMultipleOptions && (\n <>\n <label>{label}</label>\n <Select\n value={rangeOption}\n id={rangeOption}\n options={options}\n required\n onChange={({ value }) => {\n const updatedOptions = {};\n propsToDisplay.forEach(prop => {\n const { min: eMin, max: eMax } = filterValues[prop];\n const initValue = getRangeValue(null, rangeInterval, eMin, eMax);\n updatedOptions[prop] = { ...initValue, selectedOption: value };\n });\n\n updateFilterValues(updatedOptions, false);\n }}\n />\n </>\n )}\n {shouldShowRange && (\n <RangeFilter\n key={rangeOption}\n name={rangeOption}\n label={hasMultipleOptions ? '' : label}\n value={rangeValue}\n id={rangeOption}\n onChange={({ value }) => {\n handleChange(rangeOption, value);\n }}\n />\n )}\n </>\n );\n};\n\nRange.propTypes = {\n propsToDisplay: PropTypes.array.isRequired,\n entity: PropTypes.string.isRequired,\n filterValues: PropTypes.object.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n shouldSearch: PropTypes.bool,\n rangeInterval: PropTypes.number,\n label: PropTypes.string\n};\n\nRange.defaultProps = {\n shouldSearch: false,\n rangeInterval: 1,\n label: ''\n};\n\nexport default withTitle(Range);\n"],"file":"Range.js"}
|
|
@@ -9,7 +9,8 @@ const SelectFilter = ({
|
|
|
9
9
|
label,
|
|
10
10
|
prop,
|
|
11
11
|
updateFilterValues,
|
|
12
|
-
filterValues
|
|
12
|
+
filterValues,
|
|
13
|
+
shouldSearch
|
|
13
14
|
}) => {
|
|
14
15
|
const filterValue = filterValues[prop] || '';
|
|
15
16
|
const options = data[prop].buckets.map(bucket => bucket.key).filter(Boolean).sort();
|
|
@@ -24,7 +25,7 @@ const SelectFilter = ({
|
|
|
24
25
|
}) => {
|
|
25
26
|
updateFilterValues({
|
|
26
27
|
[prop]: value
|
|
27
|
-
},
|
|
28
|
+
}, shouldSearch);
|
|
28
29
|
}
|
|
29
30
|
});
|
|
30
31
|
};
|
|
@@ -34,9 +35,11 @@ SelectFilter.propTypes = {
|
|
|
34
35
|
prop: PropTypes.string.isRequired,
|
|
35
36
|
filterValues: PropTypes.object.isRequired,
|
|
36
37
|
updateFilterValues: PropTypes.func.isRequired,
|
|
38
|
+
shouldSearch: PropTypes.bool,
|
|
37
39
|
label: PropTypes.string
|
|
38
40
|
};
|
|
39
41
|
SelectFilter.defaultProps = {
|
|
42
|
+
shouldSearch: false,
|
|
40
43
|
label: ''
|
|
41
44
|
};
|
|
42
45
|
export default withTitle(SelectFilter);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SearchFilter/components/Select.js"],"names":["React","PropTypes","Select","withTitle","DEFAULT_OPTION","SelectFilter","data","label","prop","updateFilterValues","filterValues","filterValue","options","buckets","map","bucket","key","filter","Boolean","sort","optionsJoined","value","propTypes","object","isRequired","string","func","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,MAAP,MAAmB,qBAAnB;AACA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,cAAT,QAA+B,cAA/B;;AAEA,MAAMC,YAAY,GAAG,CAAC;AAAEC,EAAAA,IAAF;AAAQC,EAAAA,KAAR;AAAeC,EAAAA,IAAf;AAAqBC,EAAAA,kBAArB;AAAyCC,EAAAA;
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SearchFilter/components/Select.js"],"names":["React","PropTypes","Select","withTitle","DEFAULT_OPTION","SelectFilter","data","label","prop","updateFilterValues","filterValues","shouldSearch","filterValue","options","buckets","map","bucket","key","filter","Boolean","sort","optionsJoined","value","propTypes","object","isRequired","string","func","bool","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,MAAP,MAAmB,qBAAnB;AACA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,cAAT,QAA+B,cAA/B;;AAEA,MAAMC,YAAY,GAAG,CAAC;AAAEC,EAAAA,IAAF;AAAQC,EAAAA,KAAR;AAAeC,EAAAA,IAAf;AAAqBC,EAAAA,kBAArB;AAAyCC,EAAAA,YAAzC;AAAuDC,EAAAA;AAAvD,CAAD,KAA2E;AAC9F,QAAMC,WAAW,GAAGF,YAAY,CAACF,IAAD,CAAZ,IAAsB,EAA1C;AAEA,QAAMK,OAAO,GAAGP,IAAI,CAACE,IAAD,CAAJ,CAAWM,OAAX,CACbC,GADa,CACTC,MAAM,IAAIA,MAAM,CAACC,GADR,EAEbC,MAFa,CAENC,OAFM,EAGbC,IAHa,EAAhB;AAKA,QAAMC,aAAa,GAAG,CAACjB,cAAD,EAAiB,GAAGS,OAApB,CAAtB;AAEA,sBACE,oBAAC,MAAD;AACE,IAAA,KAAK,EAAG,GAAEN,KAAK,IAAIC,IAAK,EAD1B;AAEE,IAAA,KAAK,EAAEI,WAFT;AAGE,IAAA,EAAE,EAAEJ,IAHN;AAIE,IAAA,OAAO,EAAEa,aAJX;AAKE,IAAA,QAAQ,EAAE,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAe;AACvBb,MAAAA,kBAAkB,CAAC;AAAE,SAACD,IAAD,GAAQc;AAAV,OAAD,EAAoBX,YAApB,CAAlB;AACD;AAPH,IADF;AAWD,CArBD;;AAuBAN,YAAY,CAACkB,SAAb,GAAyB;AACvBjB,EAAAA,IAAI,EAAEL,SAAS,CAACuB,MAAV,CAAiBC,UADA;AAEvBjB,EAAAA,IAAI,EAAEP,SAAS,CAACyB,MAAV,CAAiBD,UAFA;AAGvBf,EAAAA,YAAY,EAAET,SAAS,CAACuB,MAAV,CAAiBC,UAHR;AAIvBhB,EAAAA,kBAAkB,EAAER,SAAS,CAAC0B,IAAV,CAAeF,UAJZ;AAKvBd,EAAAA,YAAY,EAAEV,SAAS,CAAC2B,IALD;AAMvBrB,EAAAA,KAAK,EAAEN,SAAS,CAACyB;AANM,CAAzB;AASArB,YAAY,CAACwB,YAAb,GAA4B;AAC1BlB,EAAAA,YAAY,EAAE,KADY;AAE1BJ,EAAAA,KAAK,EAAE;AAFmB,CAA5B;AAKA,eAAeJ,SAAS,CAACE,YAAD,CAAxB","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Select from '@blaze-react/select';\nimport { withTitle } from '../../../HOC';\nimport { DEFAULT_OPTION } from '../constants';\n\nconst SelectFilter = ({ data, label, prop, updateFilterValues, filterValues, shouldSearch }) => {\n const filterValue = filterValues[prop] || '';\n\n const options = data[prop].buckets\n .map(bucket => bucket.key)\n .filter(Boolean)\n .sort();\n\n const optionsJoined = [DEFAULT_OPTION, ...options];\n\n return (\n <Select\n label={`${label || prop}`}\n value={filterValue}\n id={prop}\n options={optionsJoined}\n onChange={({ value }) => {\n updateFilterValues({ [prop]: value }, shouldSearch);\n }}\n />\n );\n};\n\nSelectFilter.propTypes = {\n data: PropTypes.object.isRequired,\n prop: PropTypes.string.isRequired,\n filterValues: PropTypes.object.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n shouldSearch: PropTypes.bool,\n label: PropTypes.string\n};\n\nSelectFilter.defaultProps = {\n shouldSearch: false,\n label: ''\n};\n\nexport default withTitle(SelectFilter);\n"],"file":"Select.js"}
|
|
@@ -10,12 +10,13 @@ const buildQuery = (filterValues, filters) => {
|
|
|
10
10
|
type
|
|
11
11
|
}) => {
|
|
12
12
|
if (type === TEXT_SEARCH) return;
|
|
13
|
-
propsToDisplay.
|
|
13
|
+
propsToDisplay.forEach(prop => {
|
|
14
14
|
const value = filterValues[prop];
|
|
15
15
|
const parsedValue = parseFilterValue(prop, type, value);
|
|
16
|
-
|
|
17
|
-
if (parsedValue
|
|
18
|
-
|
|
16
|
+
|
|
17
|
+
if (parsedValue && !newQuery.includes(parsedValue)) {
|
|
18
|
+
newQuery.push(parsedValue);
|
|
19
|
+
}
|
|
19
20
|
});
|
|
20
21
|
});
|
|
21
22
|
return newQuery.join('&');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SearchFilter/helpers/build-query.js"],"names":["SEARCH_TERM","TEXT_SEARCH","parseFilterValue","buildQuery","filterValues","filters","newQuery","searchValue","push","forEach","propsToDisplay","type","
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SearchFilter/helpers/build-query.js"],"names":["SEARCH_TERM","TEXT_SEARCH","parseFilterValue","buildQuery","filterValues","filters","newQuery","searchValue","push","forEach","propsToDisplay","type","prop","value","parsedValue","includes","join"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,WAAtB,QAAyC,cAAzC;AACA,OAAOC,gBAAP,MAA6B,sBAA7B;;AAEA,MAAMC,UAAU,GAAG,CAACC,YAAD,EAAeC,OAAf,KAA2B;AAC5C,QAAMC,QAAQ,GAAG,EAAjB;AACA,QAAMC,WAAW,GAAGH,YAAY,CAACJ,WAAD,CAAhC;AACA,MAAIO,WAAJ,EAAiBD,QAAQ,CAACE,IAAT,CAAe,GAAER,WAAY,IAAGO,WAAY,EAA5C;AAEjBF,EAAAA,OAAO,CAACI,OAAR,CAAgB,CAAC;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA;AAAlB,GAAD,KAA8B;AAC5C,QAAIA,IAAI,KAAKV,WAAb,EAA0B;AAE1BS,IAAAA,cAAc,CAACD,OAAf,CAAuBG,IAAI,IAAI;AAC7B,YAAMC,KAAK,GAAGT,YAAY,CAACQ,IAAD,CAA1B;AACA,YAAME,WAAW,GAAGZ,gBAAgB,CAACU,IAAD,EAAOD,IAAP,EAAaE,KAAb,CAApC;;AACA,UAAIC,WAAW,IAAI,CAACR,QAAQ,CAACS,QAAT,CAAkBD,WAAlB,CAApB,EAAoD;AAClDR,QAAAA,QAAQ,CAACE,IAAT,CAAcM,WAAd;AACD;AACF,KAND;AAOD,GAVD;AAYA,SAAOR,QAAQ,CAACU,IAAT,CAAc,GAAd,CAAP;AACD,CAlBD;;AAoBA,eAAeb,UAAf","sourcesContent":["import { SEARCH_TERM, TEXT_SEARCH } from '../constants';\nimport parseFilterValue from './parse-filter-value';\n\nconst buildQuery = (filterValues, filters) => {\n const newQuery = [];\n const searchValue = filterValues[SEARCH_TERM];\n if (searchValue) newQuery.push(`${SEARCH_TERM}=${searchValue}`);\n\n filters.forEach(({ propsToDisplay, type }) => {\n if (type === TEXT_SEARCH) return;\n\n propsToDisplay.forEach(prop => {\n const value = filterValues[prop];\n const parsedValue = parseFilterValue(prop, type, value);\n if (parsedValue && !newQuery.includes(parsedValue)) {\n newQuery.push(parsedValue);\n }\n });\n });\n\n return newQuery.join('&');\n};\n\nexport default buildQuery;\n"],"file":"build-query.js"}
|
|
@@ -10,7 +10,7 @@ const getRangeValue = (rawQueryProp, rangeInterval, _min, _max) => {
|
|
|
10
10
|
}, rangeInterval);
|
|
11
11
|
|
|
12
12
|
if (rawQueryProp) {
|
|
13
|
-
const [queryParamMin, queryParamMax] = rawQueryProp.split('-');
|
|
13
|
+
const [queryParamMin, queryParamMax] = Array.isArray(rawQueryProp) ? rawQueryProp[0].split('-') : rawQueryProp.split('-');
|
|
14
14
|
const updatedMinValue = Number(queryParamMin);
|
|
15
15
|
const updatedMaxValue = Number(queryParamMax);
|
|
16
16
|
return {
|