{"_id":"@coveops/dynamic-facet-generator","_rev":"40-59211afa193b7957718d04cb3a6674d7","name":"@coveops/dynamic-facet-generator","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@coveops/dynamic-facet-generator","version":"1.0.0","keywords":[],"author":"","license":"Apache-2.0","_id":"@coveops/dynamic-facet-generator@1.0.0","maintainers":[{"name":"eaubin","email":"eaubin@coveo.com"},{"name":"plavigueur","email":"plavigueur@coveo.com"},{"name":"elafleur_coveo","email":"elafleur@coveo.com"},{"name":"lgcarrierbedard","email":"lgcarrier@coveo.com"},{"name":"wnijmeijer","email":"wnijmeijer@coveo.com"},{"name":"hsinghcoveo","email":"hsingh@coveo.com"},{"name":"achouan","email":"achouan@coveo.com"},{"name":"jfallaire","email":"jeanfrancois.allaire@gmail.com"},{"name":"davebouffard","email":"dbouffard@coveo.com"},{"name":"jmdro","email":"jmdrolet@coveo.com"},{"name":"eqcoveo","email":"equinn@coveo.com"},{"name":"jfleurent","email":"jfleurent@coveo.com"},{"name":"mthusscoveo","email":"mthuss@coveo.com"},{"name":"sfecteau","email":"sfecteau@coveo.com"},{"name":"jwolfe-coveo","email":"jwolfe@coveo.com"},{"name":"rvundavalli","email":"rvundavalli@coveo.com"},{"name":"gfoumbi","email":"gfoumbi@coveo.com"},{"name":"yass1408","email":"yassine_lakhdar@hotmail.com"},{"name":"coveoit","email":"itaccounts@coveo.com"}],"dist":{"shasum":"ff7b7f268f481e86d9a3360707b599cbe3062b71","tarball":"https://registry.npmjs.org/@coveops/dynamic-facet-generator/-/dynamic-facet-generator-1.0.0.tgz","fileCount":10,"integrity":"sha512-1cAuX/8+JysqmbzGPNGAmyJmaCZTKlS8ZdJt5/h+mpd9xSKY/2eFlflTbogTKP854ZKc2GamwHh7yIK/tYoZiA==","signatures":[{"sig":"MEUCIQCK22KHQv5Y24pOaB2y4O9QTvAU/eshchc4ALCjQLUKVAIgA6AzNerUkwBuJ9jKvmTMsRmksyAf6OPzXCarcJ4y768=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":54814,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqp6ECRA9TVsSAnZWagAANrAP/jEazYIGjSvbBSj3EVd1\noS9hXzBR7KSzWeNQ34SSyjQGtiL2Fvkgmyo2XKLNSw7EUsNgsTkfCjx0BUFR\nBLPi3238QGC+RsryM5d5kdwYYxtnEPC3lIDHbSy74KoJrdQR8flxIVfvkHYg\naAlfIPyJBH1KywXXR7Js/fALnO0dwXqRXuNvfEbYQBSKX7N680BQtDn9E8w0\n2aHEh8vJgY0NCvGDLgWXefK4URd3S09GtCW1mwDBAFhZjMF2yYWDv8DNDiBg\nC++04lVTXzN/3X7zy7CYJaT/YgcIaqVDtmiSt1YIlH71g9tmefCZdXq0wC5s\nrJtbEbpm73xX5RihT2DMDyz4nfU4cnbiJgfRhD4HiAskx1K5QpVuiJcBsSxQ\nLxn/1bCCJMuLtxFSOdDSRMt7DlJHfDhjiO51vqNx3bF4Bj1wGnC3d0+JkJMB\nTe9rQAGQ49l+c1vQsgKxeNyjg75XcwyyUOiw7snYzmKCrKj40dTLeQGOcjbl\nV79oHms7lsL6+a8tYCPW/4Ro4SZT59ClPyKq2UQJRHdkIN01aHQ10/PEhC6u\nG8c/uymMxgAvXUHMKJfhyIjKSsLP+We267pOI/t51ASuFtWagXLpyr2i6A6H\n/3+aX+iAkgY3mDCDc90gUNFleif8FlhqVAg1XfkNjXHbCo77j6pnJ1+LLQMl\nYovC\r\n=uBFi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4349a42f3766a79471dbd8af5382a1c5ebd9f56a","scripts":{"doc":"typedoc --out docs src/DynamicFacetGenerator.ts","test":"echo \"Error: no test specified\" && exit 1","build":"coveops build DynamicFacetGenerator --template typescript","serve":"coveops serve","watch":"coveops build DynamicFacetGenerator --template typescript --watch","precompile":"npm run build"},"_npmUser":{"name":"wnijmeijer","email":"wnijmeijer@coveo.com"},"_npmVersion":"6.9.0","description":"Generates Facets dynamically for a specific category","directories":{},"_nodeVersion":"10.16.0","dependencies":{"coveo-search-ui":"^2.9659.2","@coveops/turbo-core":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"typedoc":"^0.19.0","typescript":"^4.0.2","@coveops/cli":"^0.11.1"},"_npmOperationalInternal":{"tmp":"tmp/dynamic-facet-generator_1.0.0_1605017219640_0.8429830887605383","host":"s3://npm-registry-packages"}}},"time":{"created":"2020-11-10T14:06:59.385Z","modified":"2026-05-13T17:46:42.552Z","1.0.0":"2020-11-10T14:06:59.802Z"},"license":"Apache-2.0","keywords":[],"description":"Generates Facets dynamically for a specific category","maintainers":[{"email":"jfleurent@coveo.com","name":"jfleurent"},{"email":"jmdrolet@coveo.com","name":"jmdro"},{"email":"jeanfrancois.allaire@gmail.com","name":"jfallaire"},{"email":"achouan@coveo.com","name":"achouan"},{"email":"lpblais@coveo.com","name":"lpblais-coveo"},{"email":"watallah@coveo.com","name":"watallah"},{"email":"eshahneh@coveo.com","name":"ehsanshahneh"},{"email":"belbizri@coveo.com","name":"belbizri"},{"email":"jpurohit@coveo.com","name":"jpurohit_coveo"},{"email":"acherney2@coveo.com","name":"acherney2c"},{"email":"jcharron@coveo.com","name":"jcharron-coveo"},{"email":"oa-npmcoveops@oacvo.com","name":"oa-npmcoveops"}],"readme":"# DynamicFacetGenerator\r\n\r\nGenerates Facets dynamicaly for a specific category\r\n\r\nDisclaimer: This component was built by the community at large and is not an official Coveo JSUI Component. Use this component at your own risk.\r\n\r\n## Documentation\r\n\r\nVisit [documentation page](https://coveo-turbo.github.io/dynamic-facet-generator/classes/dynamicfacetgenerator.html) for full component detail:\r\n\r\n## Getting Started\r\n\r\n1. Install the component into your project.\r\n\r\n```\r\nnpm i @coveops/dynamic-facet-generator\r\n```\r\n\r\n2. Use the Component or extend it\r\n\r\nTypescript:\r\n\r\n```javascript\r\nimport { DynamicFacetGenerator, IDynamicFacetGeneratorOptions } from '@coveops/dynamic-facet-generator';\r\n```\r\n\r\nJavascript\r\n\r\n```javascript\r\nconst DynamicFacetGenerator = require('@coveops/dynamic-facet-generator').DynamicFacetGenerator;\r\n```\r\n\r\n3. You can also expose the component alongside other components being built in your project.\r\n\r\n```javascript\r\nexport * from '@coveops/dynamic-facet-generator'\r\n```\r\n\r\n4. Include the component in your template as follows:\r\n\r\nPlace the component in your markup:\r\n\r\n```html\r\n<div class=\"CoveoDynamicFacetGenerator\"></div>\r\n```\r\n\r\n## Usage\r\n\r\nAdd the `CoveoDynamicFacetGenerator` along with the rest of the Facets.\r\n\r\n```html\r\n<div class=\"coveo-facet-column\">\r\n  <div class=\"CoveoDynamicFacetManager\">\r\n    <div class=\"CoveoDynamicFacet\" data-field=\"@prd_brand\" data-title=\"Brand\"></div>\r\n    <div class=\"CoveoDynamicFacet\" data-field=\"@prd_category\" data-title=\"Category Type\"></div>\r\n    <div class=\"CoveoDynamicFacetGenerator\" data-depends-on=\"@prd_category\"></div>\r\n  </div>\r\n</div>\r\n```\r\n\r\nBefore you initialize the UI, make sure you pass the dictionary to the DynamicFacetGenerator component\r\n\r\n```javascript\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n  Coveo.SearchEndpoint.configureSampleEndpointV2();\r\n  Coveo.init(document.body, {\r\n    DynamicFacetGenerator: {\r\n      dictionary: {\r\n        \"Computer\": [\"Total Storage\", \"Processor Type\"],\r\n        \"Phone\": [\"Screen Size\", \"Battery Life\", \"Color\"]\r\n      },\r\n      transformer: (value) => {\r\n        return { field: (`@prd_${value.replace(/\\W/g, '')}` || '').toLowerCase(), facetTitle: value };\r\n      },\r\n    }\r\n  });\r\n})\r\n```\r\n\r\n### Dictionary\r\nIf the dictionary is not defined at the moment you configure the component options, use the [getDictionaryPromise](https://coveo-turbo.github.io/dynamic-facet-generator/interfaces/idynamicfacetgeneratoroptions.html#getdictionarypromise) option.\r\nThat way, instead of passing the facet dictionary as an object, it is passed as an asynchronous function.\r\n\r\n\r\n### Transfomer\r\nThis function allows to transform the dictionary values into fields available in the index. In the above example, the component will generate Facets for `@prd_total_storage` and `@prd_processor_type` whenever the user selects the computer category.\r\n\r\nRefer to the [Reference Documentation page](https://coveo-turbo.github.io/dynamic-facet-generator/interfaces/idynamicfacetgeneratoroptions.html) for more options.\r\n\r\n## Extending\r\n\r\nExtending the component can be done as follows:\r\n\r\n```javascript\r\nimport { DynamicFacetGenerator, IDynamicFacetGeneratorOptions } from \"@coveops/dynamic-facet-generator\";\r\n\r\nexport interface IExtendedDynamicFacetGeneratorOptions extends IDynamicFacetGeneratorOptions {}\r\n\r\nexport class ExtendedDynamicFacetGenerator extends DynamicFacetGenerator {}\r\n```\r\n\r\n## Contribute\r\n\r\n1. Clone the project\r\n2. Copy `.env.dist` to `.env` and update the COVEO_ORG_ID and COVEO_TOKEN fields in the `.env` file to use your Coveo credentials and SERVER_PORT to configure the port of the sandbox - it will use 8080 by default.\r\n3. Build the code base: `npm run build`\r\n4. Serve the sandbox for live development `npm run serve`","readmeFilename":"README.md"}