{"_id":"@cslegany/multi-select-filter-strapi5","_rev":"10-0cb459aae61b43df848ea39efd008730","name":"@cslegany/multi-select-filter-strapi5","dist-tags":{"latest":"0.5.10"},"versions":{"0.5.0":{"name":"@cslegany/multi-select-filter-strapi5","version":"0.5.0","keywords":["Custom Multi-Select Filter","Strapi 5"],"author":{"url":"https://synerinsoft.com/","name":"cslegany","email":"cslegany@synerinsoft.com"},"license":"MIT","_id":"@cslegany/multi-select-filter-strapi5@0.5.0","maintainers":[{"name":"cslegany","email":"cslegany@synerinsoft.com"}],"dist":{"shasum":"ef00696ca85fce3bf8472b7a59a46c8da2257531","tarball":"https://registry.npmjs.org/@cslegany/multi-select-filter-strapi5/-/multi-select-filter-strapi5-0.5.0.tgz","fileCount":18,"integrity":"sha512-NihQXa2hEbwVHRoRSLj2CNUSkWBHy0WvkuAXe3wFSCXp1AN/yW2lHExcW+WOxC0Cc0Lhvxt9wAHqT9ZrwY2bnA==","signatures":[{"sig":"MEYCIQCXx/jOgoJXzzszCsw1dpFRxrcA0T1y06qS2obXkR5z2AIhAJdr3+FmSDlnGQvkZUiHV1UmkncSbBnDx0nkrmUTsJjN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346427},"type":"commonjs","strapi":{"kind":"plugin","name":"strapi5-multi-select-filter","description":"A customizable Multi-Select Filter to replace the default one.","displayName":"Multi-Select Filter"},"exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","import":"./dist/admin/index.mjs","source":"./admin/src/index.ts","default":"./dist/admin/index.js","require":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"ff39426728be9baebaa36aff33d29ba5857dd5be","scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","test:ts:back":"run -T tsc -p server/tsconfig.json","test:ts:front":"run -T tsc -p admin/tsconfig.json"},"_npmUser":{"name":"cslegany","email":"cslegany@synerinsoft.com"},"_npmVersion":"10.2.4","description":"A customizable Multi-Select Filter to replace the default one.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"yup":"^1.4.0","array-move":"^4.0.0","react-intl":"^6.8.1","use-debounce":"^10.0.4","@dnd-kit/core":"^6.1.0","@strapi/icons":"^2.0.0-rc.11","@dnd-kit/sortable":"^8.0.0","@dnd-kit/utilities":"^3.2.2","@strapi/design-system":"^2.0.0-rc.11"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.3.3","react-dom":"^18.3.1","typescript":"^5.6.3","@types/react":"^18.3.12","@strapi/strapi":"^5.0.0","@types/react-dom":"^18.3.1","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7","@strapi/typescript-utils":"^5.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.0.0","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7"},"_npmOperationalInternal":{"tmp":"tmp/multi-select-filter-strapi5_0.5.0_1730203329303_0.5506481447694231","host":"s3://npm-registry-packages"}},"0.5.1":{"name":"@cslegany/multi-select-filter-strapi5","version":"0.5.1","keywords":["Custom Multi-Select Filter","Strapi 5"],"author":{"url":"https://synerinsoft.com/","name":"cslegany","email":"cslegany@synerinsoft.com"},"license":"MIT","_id":"@cslegany/multi-select-filter-strapi5@0.5.1","maintainers":[{"name":"cslegany","email":"cslegany@synerinsoft.com"}],"dist":{"shasum":"e30a865c4e378024cdd9b6bf9dcea020a873a861","tarball":"https://registry.npmjs.org/@cslegany/multi-select-filter-strapi5/-/multi-select-filter-strapi5-0.5.1.tgz","fileCount":18,"integrity":"sha512-N+2HLTrfsYhzzrLruYxn+yhIK5+tkJekjs4F7BvP1lCHk+jbSx+ujhJJBED/+KK+4xva10/c1DnfqkezVUvv7w==","signatures":[{"sig":"MEQCICsZ0nSmy8EXra1NpALiWeO0n3lC2G88zS1D6hnxzrjsAiAiizJWOlMMyGi6126yWGLyZ43O38Ft5c/P/SjmA9yGqg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346599},"type":"commonjs","strapi":{"kind":"plugin","name":"multi-select-filter","description":"A customizable Multi-Select Filter to replace the default one.","displayName":"Multi-Select Filter"},"exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","import":"./dist/admin/index.mjs","source":"./admin/src/index.ts","default":"./dist/admin/index.js","require":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"ff39426728be9baebaa36aff33d29ba5857dd5be","scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","test:ts:back":"run -T tsc -p server/tsconfig.json","test:ts:front":"run -T tsc -p admin/tsconfig.json"},"_npmUser":{"name":"cslegany","email":"cslegany@synerinsoft.com"},"_npmVersion":"10.2.4","description":"A customizable Multi-Select Filter to replace the default one.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"yup":"^1.4.0","array-move":"^4.0.0","react-intl":"^6.8.1","use-debounce":"^10.0.4","@dnd-kit/core":"^6.1.0","@strapi/icons":"^2.0.0-rc.11","@dnd-kit/sortable":"^8.0.0","@dnd-kit/utilities":"^3.2.2","@strapi/design-system":"^2.0.0-rc.11"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.3.3","react-dom":"^18.3.1","typescript":"^5.6.3","@types/react":"^18.3.12","@strapi/strapi":"^5.0.0","@types/react-dom":"^18.3.1","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7","@strapi/typescript-utils":"^5.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.0.0","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7"},"_npmOperationalInternal":{"tmp":"tmp/multi-select-filter-strapi5_0.5.1_1730206936322_0.2126830401322568","host":"s3://npm-registry-packages"}},"0.5.2":{"name":"@cslegany/multi-select-filter-strapi5","version":"0.5.2","keywords":["Custom Multi-Select Filter","Strapi 5"],"author":{"url":"https://synerinsoft.com/","name":"cslegany","email":"cslegany@synerinsoft.com"},"license":"MIT","_id":"@cslegany/multi-select-filter-strapi5@0.5.2","maintainers":[{"name":"cslegany","email":"cslegany@synerinsoft.com"}],"dist":{"shasum":"c2fd0892617379e4954208b0bd167ed95667d764","tarball":"https://registry.npmjs.org/@cslegany/multi-select-filter-strapi5/-/multi-select-filter-strapi5-0.5.2.tgz","fileCount":18,"integrity":"sha512-kFVlcNvCWv1rrqNwp6EaIX0nBDLwL3eWK87VE/Dfyf5KRFlbW6B9xpDzVAAHe+3IV3XSVYAS+CmS6dkxvio8oQ==","signatures":[{"sig":"MEQCIBJUAzrM4e8nCzW35x7QIE6RcY8K/yg/CvDRPGknG+52AiBhALCIoLa3zYdL7hZLUl6wmWm2d4RTj5e2wXxGOiOugQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346575},"type":"commonjs","strapi":{"kind":"plugin","name":"multi-select-filter","description":"A customizable Multi-Select Filter to replace the default one.","displayName":"Multi-Select Filter"},"exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","import":"./dist/admin/index.mjs","source":"./admin/src/index.ts","default":"./dist/admin/index.js","require":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"7d855561a3bf06d3222178438e9840a54718c048","scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","test:ts:back":"run -T tsc -p server/tsconfig.json","test:ts:front":"run -T tsc -p admin/tsconfig.json"},"_npmUser":{"name":"cslegany","email":"cslegany@synerinsoft.com"},"_npmVersion":"10.2.4","description":"A customizable Multi-Select Filter to replace the default one.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"yup":"^1.4.0","array-move":"^4.0.0","react-intl":"^6.8.1","use-debounce":"^10.0.4","@dnd-kit/core":"^6.1.0","@strapi/icons":"^2.0.0-rc.11","@dnd-kit/sortable":"^8.0.0","@dnd-kit/utilities":"^3.2.2","@strapi/design-system":"^2.0.0-rc.11"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.3.3","react-dom":"^18.3.1","typescript":"^5.6.3","@types/react":"^18.3.12","@strapi/strapi":"^5.0.0","@types/react-dom":"^18.3.1","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7","@strapi/typescript-utils":"^5.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.0.0","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7"},"_npmOperationalInternal":{"tmp":"tmp/multi-select-filter-strapi5_0.5.2_1730207271350_0.4268948836512749","host":"s3://npm-registry-packages"}},"0.5.3":{"name":"@cslegany/multi-select-filter-strapi5","version":"0.5.3","keywords":["Custom Multi-Select Filter","Strapi 5"],"author":{"url":"https://synerinsoft.com/","name":"cslegany","email":"cslegany@synerinsoft.com"},"license":"MIT","_id":"@cslegany/multi-select-filter-strapi5@0.5.3","maintainers":[{"name":"cslegany","email":"cslegany@synerinsoft.com"}],"dist":{"shasum":"2703c0f28bcef61a42ad6789c916ffb81a608d6d","tarball":"https://registry.npmjs.org/@cslegany/multi-select-filter-strapi5/-/multi-select-filter-strapi5-0.5.3.tgz","fileCount":18,"integrity":"sha512-VsI31fBAMLbtZWCvYBwC3FXdpFvQRb3p8hNWn8Jbl2N5wgFfy1nDGBWSwqbRNek5NMk8/e9jKZGVcbhtGu+n5A==","signatures":[{"sig":"MEUCIGG4gR8KrYp1RJBMDmF8f5K6CzyqKUGWuLfVyg5D0DyLAiEA9h9vmnKAbWWzN+HEaE/NLTAaE0vPMAAfio2lB1QW7i4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346547},"type":"commonjs","strapi":{"kind":"plugin","name":"multi-select-filter","description":"A customizable Multi-Select Filter to replace the default one.","displayName":"Multi-Select Filter"},"exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","import":"./dist/admin/index.mjs","source":"./admin/src/index.ts","default":"./dist/admin/index.js","require":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"f8ed6cc3d35400c80fe3d3d6cce8142bbb6cd7b9","scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","test:ts:back":"run -T tsc -p server/tsconfig.json","test:ts:front":"run -T tsc -p admin/tsconfig.json"},"_npmUser":{"name":"cslegany","email":"cslegany@synerinsoft.com"},"_npmVersion":"10.2.4","description":"A customizable Multi-Select Filter to replace the default one.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"yup":"^1.4.0","array-move":"^4.0.0","react-intl":"^6.8.1","use-debounce":"^10.0.4","@dnd-kit/core":"^6.1.0","@strapi/icons":"^2.0.0-rc.11","@dnd-kit/sortable":"^8.0.0","@dnd-kit/utilities":"^3.2.2","@strapi/design-system":"^2.0.0-rc.11"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.3.3","react-dom":"^18.3.1","typescript":"^5.6.3","@types/react":"^18.3.12","@strapi/strapi":"^5.0.0","@types/react-dom":"^18.3.1","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7","@strapi/typescript-utils":"^5.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.0.0","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7"},"_npmOperationalInternal":{"tmp":"tmp/multi-select-filter-strapi5_0.5.3_1730210458088_0.7212554486947647","host":"s3://npm-registry-packages"}},"0.5.4":{"name":"@cslegany/multi-select-filter-strapi5","version":"0.5.4","keywords":["Custom Multi-Select Filter","Strapi 5"],"author":{"url":"https://synerinsoft.com/","name":"cslegany","email":"cslegany@synerinsoft.com"},"license":"MIT","_id":"@cslegany/multi-select-filter-strapi5@0.5.4","maintainers":[{"name":"cslegany","email":"cslegany@synerinsoft.com"}],"dist":{"shasum":"438f85942a2c6471b43913079251c4e9d5bb91e1","tarball":"https://registry.npmjs.org/@cslegany/multi-select-filter-strapi5/-/multi-select-filter-strapi5-0.5.4.tgz","fileCount":18,"integrity":"sha512-zlPH7VV/kl+t6Ru/dQzZkWjsvfc5qo6vvsYOHHNnLqYhxnHlteUI9xgOOrbIK6dEehuCqcct4J3OH6DlmuJbhw==","signatures":[{"sig":"MEQCIAGnku82NjYMUwJxtmPop4WnNKI4rc/vZN7jQjbsffYnAiBySvt5+tTty0uv1iIVhk/IHY52+O8p+osPEbq+Sy5mLg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346761},"type":"commonjs","strapi":{"kind":"plugin","name":"multi-select-filter","description":"A customizable Multi-Select Filter to replace the default one.","displayName":"Multi-Select Filter"},"exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","import":"./dist/admin/index.mjs","source":"./admin/src/index.ts","default":"./dist/admin/index.js","require":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"f8ed6cc3d35400c80fe3d3d6cce8142bbb6cd7b9","scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","test:ts:back":"run -T tsc -p server/tsconfig.json","test:ts:front":"run -T tsc -p admin/tsconfig.json"},"_npmUser":{"name":"cslegany","email":"cslegany@synerinsoft.com"},"_npmVersion":"10.2.4","description":"A customizable Multi-Select Filter to replace the default one.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"yup":"^1.4.0","array-move":"^4.0.0","react-intl":"^6.8.1","use-debounce":"^10.0.4","@dnd-kit/core":"^6.1.0","@strapi/icons":"^2.0.0-rc.11","@dnd-kit/sortable":"^8.0.0","@dnd-kit/utilities":"^3.2.2","@strapi/design-system":"^2.0.0-rc.11"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.3.3","react-dom":"^18.3.1","typescript":"^5.6.3","@types/react":"^18.3.12","@strapi/strapi":"^5.0.0","@types/react-dom":"^18.3.1","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7","@strapi/typescript-utils":"^5.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.0.0","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7"},"_npmOperationalInternal":{"tmp":"tmp/multi-select-filter-strapi5_0.5.4_1730213561625_0.6071508165009438","host":"s3://npm-registry-packages"}},"0.5.5":{"name":"@cslegany/multi-select-filter-strapi5","version":"0.5.5","keywords":["Custom Multi-Select Filter","Strapi 5"],"author":{"url":"https://synerinsoft.com/","name":"cslegany","email":"cslegany@synerinsoft.com"},"license":"MIT","_id":"@cslegany/multi-select-filter-strapi5@0.5.5","maintainers":[{"name":"cslegany","email":"cslegany@synerinsoft.com"}],"dist":{"shasum":"4792cb7530c18835cbd540d51d1ffcd2881bdf63","tarball":"https://registry.npmjs.org/@cslegany/multi-select-filter-strapi5/-/multi-select-filter-strapi5-0.5.5.tgz","fileCount":18,"integrity":"sha512-BzQkd30XFQMZIPuY/aM0mzLx0WVl8dxcQEWuyia8FYmvoOdlzZx2fhSZOmGVPq37vfdNpnvngSVxnjc5aPPKSw==","signatures":[{"sig":"MEYCIQDBmbUfopJc8GgCAVFyncWL7RhlcvtJL3c9eybVjmJPUgIhAIOp/37CqYZPr13BP1BmSMeeQNf2UkrK5hM+JWUymrjd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346803},"type":"commonjs","strapi":{"kind":"plugin","name":"multi-select-filter","description":"A customizable Multi-Select Filter to replace the default one.","displayName":"Multi-Select Filter"},"exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","import":"./dist/admin/index.mjs","source":"./admin/src/index.ts","default":"./dist/admin/index.js","require":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"f2e83f5858811dcaca2ceb0882e43237cba4a361","scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","test:ts:back":"run -T tsc -p server/tsconfig.json","test:ts:front":"run -T tsc -p admin/tsconfig.json"},"_npmUser":{"name":"cslegany","email":"cslegany@synerinsoft.com"},"_npmVersion":"10.2.4","description":"A customizable Multi-Select Filter to replace the default one.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"yup":"^1.4.0","array-move":"^4.0.0","react-intl":"^6.8.1","use-debounce":"^10.0.4","@dnd-kit/core":"^6.1.0","@strapi/icons":"^2.0.0-rc.11","@dnd-kit/sortable":"^8.0.0","@dnd-kit/utilities":"^3.2.2","@strapi/design-system":"^2.0.0-rc.11"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.3.3","react-dom":"^18.3.1","typescript":"^5.6.3","@types/react":"^18.3.12","@strapi/strapi":"^5.0.0","@types/react-dom":"^18.3.1","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7","@strapi/typescript-utils":"^5.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.0.0","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7"},"_npmOperationalInternal":{"tmp":"tmp/multi-select-filter-strapi5_0.5.5_1730218045844_0.9371311085546483","host":"s3://npm-registry-packages"}},"0.5.6":{"name":"@cslegany/multi-select-filter-strapi5","version":"0.5.6","keywords":["Custom Multi-Select Filter","Strapi 5"],"author":{"url":"https://synerinsoft.com/","name":"cslegany","email":"cslegany@synerinsoft.com"},"license":"MIT","_id":"@cslegany/multi-select-filter-strapi5@0.5.6","maintainers":[{"name":"cslegany","email":"cslegany@synerinsoft.com"}],"dist":{"shasum":"bea237df8be625a7d950232a0a66fcb3351ba829","tarball":"https://registry.npmjs.org/@cslegany/multi-select-filter-strapi5/-/multi-select-filter-strapi5-0.5.6.tgz","fileCount":18,"integrity":"sha512-QaSfZ8YbWjoNMSjy0B2XroHAIS5PqPniP+7yZU/8XkYIxAr3OeKtIK3GVIJu0w5dPb1k0e4KfqS3L5MdtiDieQ==","signatures":[{"sig":"MEQCIFVRe2jznsYXMIhnqi5CDCdoq5wFpvKuWhfH1/LfHyGuAiAzFNB78N+e30p4xLSedd7VXrvvkr2gySqB1u61Q05z7g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":353041},"type":"commonjs","strapi":{"kind":"plugin","name":"multi-select-filter","description":"A customizable Multi-Select Filter to replace the default one.","displayName":"Multi-Select Filter"},"exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","import":"./dist/admin/index.mjs","source":"./admin/src/index.ts","default":"./dist/admin/index.js","require":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"289ed9a9cd13a790a8ba1707227cd6ed1bf64448","scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","test:ts:back":"run -T tsc -p server/tsconfig.json","test:ts:front":"run -T tsc -p admin/tsconfig.json"},"_npmUser":{"name":"cslegany","email":"cslegany@synerinsoft.com"},"_npmVersion":"10.2.4","description":"A customizable Multi-Select Filter to replace the default one.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"yup":"^1.4.0","array-move":"^4.0.0","react-intl":"^6.8.1","use-debounce":"^10.0.4","@dnd-kit/core":"^6.1.0","@strapi/icons":"^2.0.0-rc.11","@dnd-kit/sortable":"^8.0.0","@dnd-kit/utilities":"^3.2.2","@strapi/design-system":"^2.0.0-rc.11"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.3.3","react-dom":"^18.3.1","typescript":"^5.6.3","@types/react":"^18.3.12","@strapi/strapi":"^5.0.0","@types/react-dom":"^18.3.1","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7","@strapi/typescript-utils":"^5.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.0.0","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7"},"_npmOperationalInternal":{"tmp":"tmp/multi-select-filter-strapi5_0.5.6_1730223716615_0.5986265765597427","host":"s3://npm-registry-packages"}},"0.5.7":{"name":"@cslegany/multi-select-filter-strapi5","version":"0.5.7","keywords":["Custom Multi-Select Filter","Strapi 5"],"author":{"url":"https://synerinsoft.com/","name":"cslegany","email":"cslegany@synerinsoft.com"},"license":"MIT","_id":"@cslegany/multi-select-filter-strapi5@0.5.7","maintainers":[{"name":"cslegany","email":"cslegany@synerinsoft.com"}],"dist":{"shasum":"5ade2d50912968a1535afdebf5aadbc519a40074","tarball":"https://registry.npmjs.org/@cslegany/multi-select-filter-strapi5/-/multi-select-filter-strapi5-0.5.7.tgz","fileCount":18,"integrity":"sha512-S1eIUtiUYbMLsUO85+jpjXy0b4OV6W/6ypCS2jIMpd+ly84qFbAfsVQkbKBZ/CLv4u8fc6tPj25wlCqNo/u01Q==","signatures":[{"sig":"MEYCIQCUo/flxgPF30hoED9zbarY/rl46OHlQuiWlTnLZNs7awIhAO6UMoxFn+jKs5Ox/KXFRDVZDrYPrArFnKoxchLbCoa1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":358499},"type":"commonjs","strapi":{"kind":"plugin","name":"multi-select-filter","description":"A customizable Multi-Select Filter to replace the default one.","displayName":"Multi-Select Filter"},"exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","import":"./dist/admin/index.mjs","source":"./admin/src/index.ts","default":"./dist/admin/index.js","require":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"c6f179113036cdecc1969cbcff8e8783df8efadf","scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","test:ts:back":"run -T tsc -p server/tsconfig.json","test:ts:front":"run -T tsc -p admin/tsconfig.json"},"_npmUser":{"name":"cslegany","email":"cslegany@synerinsoft.com"},"_npmVersion":"10.2.4","description":"A customizable Multi-Select Filter to replace the default one.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"yup":"^1.4.0","array-move":"^4.0.0","react-intl":"^6.8.1","use-debounce":"^10.0.4","@dnd-kit/core":"^6.1.0","@strapi/icons":"^2.0.0-rc.11","@dnd-kit/sortable":"^8.0.0","@dnd-kit/utilities":"^3.2.2","@strapi/design-system":"^2.0.0-rc.11"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.3.3","react-dom":"^18.3.1","typescript":"^5.6.3","@types/react":"^18.3.12","@strapi/strapi":"^5.0.0","@types/react-dom":"^18.3.1","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7","@strapi/typescript-utils":"^5.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.0.0","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7"},"_npmOperationalInternal":{"tmp":"tmp/multi-select-filter-strapi5_0.5.7_1730306556165_0.8710917089755601","host":"s3://npm-registry-packages"}},"0.5.8":{"name":"@cslegany/multi-select-filter-strapi5","version":"0.5.8","keywords":["Custom Multi-Select Filter","Strapi 5"],"author":{"url":"https://synerinsoft.com/","name":"cslegany","email":"cslegany@synerinsoft.com"},"license":"MIT","_id":"@cslegany/multi-select-filter-strapi5@0.5.8","maintainers":[{"name":"cslegany","email":"cslegany@synerinsoft.com"}],"dist":{"shasum":"3c4d7a243c942f31408382fad03b9c45eff22456","tarball":"https://registry.npmjs.org/@cslegany/multi-select-filter-strapi5/-/multi-select-filter-strapi5-0.5.8.tgz","fileCount":18,"integrity":"sha512-wSAkzCR2N/godB2VXgbz7sMwKl5FWdBvObfFZqFKRobuA88EojTgztuce1NfT2LMLCWRsW9/uclhpmNjK9NliA==","signatures":[{"sig":"MEUCIQCHkFd3tOKbLzpdhdVlhSz7gqMm33l5pSk+s/FxRkmmOAIgH+6zQN6jZnodTU2g6sZM2EJDc5x0SQ4J/Rr+Bfd3Rmw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":359121},"type":"commonjs","strapi":{"kind":"plugin","name":"multi-select-filter","description":"A customizable Multi-Select Filter to replace the default one.","displayName":"Multi-Select Filter"},"exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","import":"./dist/admin/index.mjs","source":"./admin/src/index.ts","default":"./dist/admin/index.js","require":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"e30afd2818e6b33f9c301fd547422555f742b818","scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","test:ts:back":"run -T tsc -p server/tsconfig.json","test:ts:front":"run -T tsc -p admin/tsconfig.json"},"_npmUser":{"name":"cslegany","email":"cslegany@synerinsoft.com"},"_npmVersion":"10.2.4","description":"A customizable Multi-Select Filter to replace the default one.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"yup":"^1.4.0","array-move":"^4.0.0","react-intl":"^6.8.1","use-debounce":"^10.0.4","@dnd-kit/core":"^6.1.0","@strapi/icons":"^2.0.0-rc.11","@dnd-kit/sortable":"^8.0.0","@dnd-kit/utilities":"^3.2.2","@strapi/design-system":"^2.0.0-rc.11"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.3.3","react-dom":"^18.3.1","typescript":"^5.6.3","@types/react":"^18.3.12","@strapi/strapi":"^5.0.0","@types/react-dom":"^18.3.1","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7","@strapi/typescript-utils":"^5.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.0.0","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7"},"_npmOperationalInternal":{"tmp":"tmp/multi-select-filter-strapi5_0.5.8_1730309014741_0.0012371646141857706","host":"s3://npm-registry-packages"}},"0.5.9":{"name":"@cslegany/multi-select-filter-strapi5","version":"0.5.9","keywords":["Custom Multi-Select Filter","Strapi 5"],"author":{"url":"https://synerinsoft.com/","name":"cslegany","email":"cslegany@synerinsoft.com"},"license":"MIT","_id":"@cslegany/multi-select-filter-strapi5@0.5.9","maintainers":[{"name":"cslegany","email":"cslegany@synerinsoft.com"}],"dist":{"shasum":"a6e09063a238e322a953ae6b347fc1d31fbca9ee","tarball":"https://registry.npmjs.org/@cslegany/multi-select-filter-strapi5/-/multi-select-filter-strapi5-0.5.9.tgz","fileCount":18,"integrity":"sha512-C8FWEPDKawFyQdVhgWgqv7cwZEni2U7yWIGo6TPFX0AhJaKHeKYlcBmUTt6Qb2NbVRn7/jW+fCPNnF3WQTEfAg==","signatures":[{"sig":"MEYCIQCBmELktpebOLqamPKMFgmDrIp0tmjoBaRyWnFBcFduOAIhAJ8KMSpcAnxlrWH/O1IyQZRHQsOMwBQR1iYNnyBtYO2Q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":356903},"type":"commonjs","strapi":{"kind":"plugin","name":"multi-select-filter","description":"A customizable Multi-Select Filter to replace the default one.","displayName":"Multi-Select Filter"},"exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","import":"./dist/admin/index.mjs","source":"./admin/src/index.ts","default":"./dist/admin/index.js","require":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"1978c4e3c1573e33fb5f33ee1d5d830cc4b7adf4","scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","test:ts:back":"run -T tsc -p server/tsconfig.json","test:ts:front":"run -T tsc -p admin/tsconfig.json"},"_npmUser":{"name":"cslegany","email":"cslegany@synerinsoft.com"},"_npmVersion":"10.2.4","description":"A customizable Multi-Select Filter to replace the default one.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"yup":"^1.4.0","moment":"^2.30.1","array-move":"^4.0.0","react-intl":"^6.8.1","use-debounce":"^10.0.4","@dnd-kit/core":"^6.1.0","@strapi/icons":"^2.0.0-rc.11","@dnd-kit/sortable":"^8.0.0","@dnd-kit/utilities":"^3.2.2","@strapi/design-system":"^2.0.0-rc.11"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.3.3","react-dom":"^18.3.1","typescript":"^5.6.3","@types/react":"^18.3.12","@strapi/strapi":"^5.0.0","@types/react-dom":"^18.3.1","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7","@strapi/typescript-utils":"^5.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@strapi/strapi":"^5.0.0","react-router-dom":"^6.27.0","styled-components":"^6.1.13","@strapi/sdk-plugin":"^5.2.7"},"_npmOperationalInternal":{"tmp":"tmp/multi-select-filter-strapi5_0.5.9_1730396968001_0.25144984288591177","host":"s3://npm-registry-packages"}},"0.5.10":{"name":"@cslegany/multi-select-filter-strapi5","version":"0.5.10","description":"A customizable Multi-Select Filter to replace the default one.","strapi":{"kind":"plugin","name":"multi-select-filter","displayName":"Multi-Select Filter","description":"A customizable Multi-Select Filter to replace the default one."},"keywords":["Custom Multi-Select Filter","Strapi 5"],"license":"MIT","type":"commonjs","exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","source":"./admin/src/index.ts","import":"./dist/admin/index.mjs","require":"./dist/admin/index.js","default":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","source":"./server/src/index.ts","import":"./dist/server/index.mjs","require":"./dist/server/index.js","default":"./dist/server/index.js"}},"scripts":{"build":"strapi-plugin build","test:ts:back":"run -T tsc -p server/tsconfig.json","test:ts:front":"run -T tsc -p admin/tsconfig.json","verify":"strapi-plugin verify","watch":"strapi-plugin watch","watch:link":"strapi-plugin watch:link"},"dependencies":{"@dnd-kit/core":"^6.1.0","@dnd-kit/sortable":"^8.0.0","@dnd-kit/utilities":"^3.2.2","@strapi/design-system":"^2.0.0-rc.11","@strapi/icons":"^2.0.0-rc.11","array-move":"^4.0.0","moment":"^2.30.1","react-intl":"^6.8.1","use-debounce":"^10.0.4","yup":"^1.4.0"},"devDependencies":{"@strapi/sdk-plugin":"^5.2.7","@strapi/strapi":"^5.0.0","@strapi/typescript-utils":"^5.0.0","@types/react":"^18.3.12","@types/react-dom":"^18.3.1","prettier":"^3.3.3","react":"^18.3.1","react-dom":"^18.3.1","react-router-dom":"^6.27.0","styled-components":"^6.1.13","typescript":"^5.6.3"},"peerDependencies":{"@strapi/sdk-plugin":"^5.2.7","@strapi/strapi":"^5.0.0","react":"^18.3.1","react-dom":"^18.3.1","react-router-dom":"^6.27.0","styled-components":"^6.1.13"},"author":{"name":"cslegany","email":"cslegany@synerinsoft.com","url":"https://synerinsoft.com/"},"maintainers":[{"name":"cslegany","email":"cslegany@synerinsoft.com"}],"_id":"@cslegany/multi-select-filter-strapi5@0.5.10","gitHead":"1978c4e3c1573e33fb5f33ee1d5d830cc4b7adf4","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-4rWpc0oH8pe3h6VetpwuVQ04aB6WOrFG4O5KevxtIsWTTYfd7ibtTtrelAPj7lNETtgL4P4eyqW2bhngJrRY9Q==","shasum":"721e1a0d7f92fdea92fe507398b91d58b438f560","tarball":"https://registry.npmjs.org/@cslegany/multi-select-filter-strapi5/-/multi-select-filter-strapi5-0.5.10.tgz","fileCount":18,"unpackedSize":367494,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbxkU/BR8K7nXISlxBQcTBcjSKkDh5T/HBPvRVQged2AIgd+runMUhGbj6esyO6QWxw5jRz5HLDY3unBRrgS25Kx8="}]},"_npmUser":{"name":"cslegany","email":"cslegany@synerinsoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/multi-select-filter-strapi5_0.5.10_1730415086779_0.4917631412744392"},"_hasShrinkwrap":false}},"time":{"created":"2024-10-29T12:02:09.187Z","modified":"2024-10-31T22:51:27.203Z","0.5.0":"2024-10-29T12:02:09.501Z","0.5.1":"2024-10-29T13:02:16.592Z","0.5.2":"2024-10-29T13:07:51.633Z","0.5.3":"2024-10-29T14:00:58.408Z","0.5.4":"2024-10-29T14:52:41.856Z","0.5.5":"2024-10-29T16:07:26.164Z","0.5.6":"2024-10-29T17:41:57.000Z","0.5.7":"2024-10-30T16:42:36.540Z","0.5.8":"2024-10-30T17:23:35.093Z","0.5.9":"2024-10-31T17:49:28.200Z","0.5.10":"2024-10-31T22:51:27.013Z"},"author":{"name":"cslegany","email":"cslegany@synerinsoft.com","url":"https://synerinsoft.com/"},"license":"MIT","keywords":["Custom Multi-Select Filter","Strapi 5"],"description":"A customizable Multi-Select Filter to replace the default one.","maintainers":[{"name":"cslegany","email":"cslegany@synerinsoft.com"}],"readme":"# strapi5-multi-select-filter\r\n> This package adds a customizable Multi-Select Filter to replace the default one.\r\n\r\n## Installation\r\n\r\nNPM:\r\n\r\n> `npm install @cslegany/multi-select-filter-strapi5`\r\n\r\nYarn:\r\n\r\n> `yarn add @cslegany/multi-select-filter-strapi5`\r\n\r\n## Usage\r\n- This plugin was created becase we wanted to display a list of articles on a Single Type Page to get something like\r\na list of selected articles for Featured News.\r\n- Default Settings of this plugin are accessible via Settings / Multi Select Filter / Configuration. \r\nYou can set a default Entity Uid (i.e. api::article.article), a custom api endpoint, the option to show only published items and a query limit.\r\nThe plugin can update a potentially hidden field on the Single Type Page form to ensure that Save and Publish buttons of the form work properly.\r\n- You have to register Multi-Select Filter to the Single Type as a custom field. Set a unique name for each instance of your custom field. You can override default settings here.\r\n- Thereafter you can use the plugin on the Single Type Page. It supports infinite loading and query limit is the maximum amount of items loaded in one batch.\r\n- It is highly recommended to show only published items since you don't want to display drafts in a Featured News section.\r\n- If you don't provide an Api Endpoint, a basic query will be used by the plugin to query all items specified by the Entity Uid and sort them by the entity's mainField property.\r\n\r\n## Custom Api Endpoint\r\nYou can write your custom api endpoint for your main Strapi project to suit your business needs. The following is an example that supports a scheduled_at field for articles.\r\nLogic is that you need only those articles which were scheduled before the current date and we suppose that scheduled_at always has a value.\r\nMeta pagination info is needed for infinite scrolling.\r\nReturn value of the service is fixed, it has to contain an object\r\n``` \r\n{\r\n  result: {\"id\", \"documentId\" }[],\r\n  mainField: string,\r\n  meta: {\r\n     total: number;\r\n     pageSize: number;\r\n     pageCount: number;\r\n     currentPage: number;\r\n  } | undefined,\r\n}\r\n```\r\n\r\nThe api endpoint POST request also has a fixed format and have to supply the following values:\r\nfilter: string, publishedOnly?: boolean, queryStart?: number, queryLimit?: number\r\n\r\narticlefilter.ts controller is as follows\r\n```\r\nimport type * as strapi from '@strapi/strapi';\r\n\r\nexport default ({ strapi }: { strapi: strapi.Core.Strapi }) => ({\r\n  \r\n  async getFeaturedNews(ctx) {\r\n    return await strapi.service(\"api::article-filter.articlefilter\").getFeaturedNews();\r\n  },\r\n\r\n  async getFilteredArticles(ctx) {\r\n    const body = ctx.request.body;\r\n    return await strapi.service('api::article-filter.articlefilter').getFilteredArticles(\r\n      body.filter, body.publishedOnly, body.queryStart, body.queryLimit);\r\n  },\r\n})\r\n```\r\n\r\narticlefilter.ts route is as follows\r\n```\r\nexport default {\r\n  routes: [\r\n    {\r\n      method: 'POST',\r\n      path: '/article-filter',\r\n      handler: 'articlefilter.getFilteredArticles',\r\n      config: {\r\n        auth: false,\r\n        policies: [],\r\n        middlewares: [],\r\n      },\r\n    },\r\n    {\r\n      method: 'GET',\r\n      path: '/featured-news',\r\n      handler: 'articlefilter.getFeaturedNews',\r\n      config: {\r\n        auth: false,\r\n        policies: [],\r\n        middlewares: [],\r\n      },\r\n    }\r\n  ]\r\n};\r\n```\r\n\r\nNow you can develop your own api endpoint to get results from the plugin.\r\nHere we suppose that the Single Type page contains three instances of the custom field named as left_articles, main_articles and right_articles.\r\narticlefilter.ts service is as follows\r\n```\r\nimport type * as strapi from '@strapi/strapi';\r\n\r\ntype Settings = {\r\n  mainField: string;\r\n  defaultSortBy: string;\r\n  defaultSortOrder: string;\r\n};\r\n\r\ninterface DocumentResponse {\r\n  id: number;\r\n  documentId: string;\r\n}\r\n\r\ninterface OrderedDocumentResponse extends DocumentResponse {\r\n  order: number;\r\n  tag: string;\r\n}\r\n\r\ninterface GetDocumentsByTagResult {\r\n  result: {\r\n    uid: string;\r\n    items: OrderedDocumentResponse[];\r\n  }[];\r\n  errorMessage: string;\r\n}\r\n\r\ninterface FeaturedNewsResult {\r\n  left_articles: DocumentResponse[];\r\n  main_articles: DocumentResponse[];\r\n  right_articles: DocumentResponse[];\r\n}\r\n\r\nexport default ({ strapi }: { strapi: strapi.Core.Strapi }) => ({\r\n\r\n  async getFeaturedNews() {\r\n    const multiSelectFilter = strapi.plugin(\"multi-select-filter\").service(\"multiSelectFilter\");\r\n    const documentResult: GetDocumentsByTagResult = await multiSelectFilter.getDocumentsGroupedByTag();\r\n    if (documentResult.errorMessage)\r\n      return;\r\n\r\n    const articleResult = documentResult.result.find(x => x.uid === \"api::article.article\");\r\n    if (!articleResult)\r\n      return;\r\n\r\n    let leftArticles = articleResult.items.filter(x => x.tag === \"left_side_multi_select_filter\");\r\n    leftArticles = leftArticles.sort(x => x.order);\r\n\r\n    let mainArticles = articleResult.items.filter(x => x.tag === \"main_multi_select_filter\");\r\n    mainArticles = mainArticles.sort(x => x.order);\r\n\r\n    let rightArticles = articleResult.items.filter(x => x.tag === \"right_side_multi_select_filter\");\r\n    rightArticles = rightArticles.sort(x => x.order);\r\n\r\n    return <FeaturedNewsResult>{\r\n      left_articles: leftArticles.map(x => <DocumentResponse>{ id: x.id, documentId: x.documentId }),\r\n      main_articles: mainArticles.map(x => <DocumentResponse>{ id: x.id, documentId: x.documentId }),\r\n      right_articles: rightArticles.map(x => <DocumentResponse>{ id: x.id, documentId: x.documentId }),\r\n    }\r\n  },\r\n\r\n  async getFilteredArticles(filter: string, publishedOnly?: boolean, queryStart?: number, queryLimit?: number) {\r\n    let res = {\r\n      result: [],\r\n      errorMessage: \"\",\r\n      mainField: \"\",\r\n    };\r\n\r\n    try {\r\n      const { findConfiguration } = strapi.plugin('content-manager').service('content-types');\r\n      const { settings }: Record<string, Settings> = await findConfiguration(strapi.contentType(\"api::article.article\"));\r\n      const { mainField, defaultSortBy, defaultSortOrder } = settings; //defaultSortBy is 'title' in case of an article\r\n\r\n      const scheduledAtFilter = {\r\n        scheduled_at: { $lte: (new Date).toISOString() }\r\n      };\r\n\r\n      const mainFieldFilter = {\r\n        [mainField]: {\r\n          $contains: filter\r\n        }\r\n      };\r\n\r\n      const publishedFilter = {\r\n        $and: [\r\n          mainFieldFilter,\r\n          { publishedAt: { $notNull: true } },\r\n          scheduledAtFilter,\r\n        ],\r\n      };\r\n\r\n      const notPublishedFilter = {\r\n        $and: [\r\n          mainFieldFilter,\r\n          scheduledAtFilter,\r\n        ],\r\n      };\r\n\r\n      let filters = (!filter)\r\n        ? scheduledAtFilter\r\n        : publishedOnly\r\n          ? publishedFilter\r\n          : notPublishedFilter;\r\n\r\n      const start = queryStart ?? 0;\r\n      const limit = queryLimit ?? undefined;\r\n      const sort = publishedOnly ? `scheduled_at:desc` : `${defaultSortBy}:${defaultSortOrder}`;\r\n\r\n      const total = await strapi.documents(\"api::article.article\").count({\r\n        filters,\r\n        status: publishedOnly ? 'published' : undefined,\r\n      });\r\n\r\n      const documents = await strapi.documents(\"api::article.article\").findMany({\r\n        fields: [\"id\", \"publishedAt\", \"scheduled_at\", mainField] as any,\r\n        filters,\r\n        status: publishedOnly ? 'published' : undefined,\r\n        start,\r\n        limit,\r\n        sort: sort as any,\r\n      });\r\n\r\n      const hasMeta = limit !== undefined;\r\n      const meta = !hasMeta ? undefined : {\r\n        total, // gets the total number of records\r\n        pageSize: limit, // gets the limit we set earlier\r\n        pageCount: Math.ceil(total / limit), // gives us the number of total pages\r\n        currentPage: start / limit + 1, // returns the current page      \r\n      };\r\n\r\n      return {\r\n        result: documents,\r\n        mainField,\r\n        meta,\r\n      }\r\n    }\r\n    catch (error) {\r\n      console.error(error);\r\n\r\n      res.result = [];\r\n      res.errorMessage = error;\r\n    }\r\n\r\n    return res;\r\n  }\r\n})\r\n```\r\n\r\nTime to develop your Single Type page which will be called Highlight Settings. Generate a Single Type in src/api/highlight-setting.\r\nAdjust schema.json in content-types as follows:\r\n\r\n```\r\n{\r\n  \"kind\": \"singleType\",\r\n  \"collectionName\": \"highlight_settings\",\r\n  \"info\": {\r\n    \"singularName\": \"highlight-setting\",\r\n    \"pluralName\": \"highlight-settings\",\r\n    \"displayName\": \"Highlight Settings\",\r\n    \"description\": \"\"\r\n  },\r\n  \"options\": {\r\n    \"draftAndPublish\": true\r\n  },\r\n  \"pluginOptions\": {},\r\n  \"attributes\": {\r\n    \"name\": {\r\n      \"type\": \"string\"\r\n    },\r\n    \"featured_news_info\": {\r\n      \"type\": \"string\"\r\n    },\r\n    \"featured_news\": {\r\n      \"type\": \"component\",\r\n      \"repeatable\": false,\r\n      \"component\": \"highlighted.highlighted-articles\"\r\n    }\r\n  }\r\n}\r\n```\r\n\r\nMake a lifecycles.ts file here and add the following code to ensure that multiselect items will get published when you publish your Single Type.\r\n\r\n```\r\nimport * as Attribute from '@strapi/types/dist/modules/documents/params/attributes';\r\nimport { Event } from '@strapi/database/dist/lifecycles';\r\n\r\ntype LifecycleEvent<T> = Event & {\r\n\tresult?: T; // since result is only available in `afterXXX` events\r\n}\r\ntype MyEvent = LifecycleEvent<Attribute.GetValues<'api::highlight-setting.highlight-setting'>>;\r\n\r\ninterface MultiSelectItemId {\r\n\tid: number;\r\n\tdocumentId: string;\r\n}\r\n\r\nconst publishByTag = async (tag: string) => {\r\n\tconst pluginId = \"plugin::multi-select-filter.multiselect\";\r\n\r\n\t//delete existing published items\r\n\tconst multiSelectsToDelete = (await strapi.documents(pluginId).findMany({\r\n\t\tfields: ['id', 'documentId'] as any,\r\n\t\tfilters: {\r\n\t\t\ttag: { $eq: tag },\r\n\t\t},\r\n\t\tstatus: 'published',\r\n\t})) as MultiSelectItemId[];\r\n\r\n\tawait Promise.all(multiSelectsToDelete.map(async (x) => {\r\n\t\tawait strapi.documents(pluginId).delete({\r\n\t\t\tdocumentId: x.documentId,\r\n\t\t\tfilters: {\r\n\t\t\t\tpublishedAt: { $notNull: true },\r\n\t\t\t}\r\n\t\t})\r\n\t}))\r\n\r\n\t//publish not published items\r\n\tconst multiSelectsToPublish = (await strapi.documents(pluginId).findMany({\r\n\t\tfields: ['id', 'documentId'] as any,\r\n\t\tfilters: {\r\n\t\t\t$and: [\r\n\t\t\t\t{ tag: { $eq: tag } },\r\n\t\t\t\t{ publishedAt: { $null: true } },\r\n\t\t\t]\r\n\t\t},\r\n\t})) as MultiSelectItemId[];\r\n\r\n\tawait Promise.all(multiSelectsToPublish.map(async (x) => {\r\n\t\tawait strapi.documents(pluginId).publish({\r\n\t\t\tdocumentId: x.documentId,\r\n\t\t})\r\n\t}))\r\n}\r\n\r\nexport default {\r\n\r\n\tasync beforeDelete(event: MyEvent) {\r\n\t\tconst where = event.params.where;\r\n\r\n\t\t//we receive the unpublished item's id in where?.id\r\n\t\t//get the documentId belonging to that item\r\n\t\tconst unpublishedItem = await strapi.db.query(\"api::highlight-setting.highlight-setting\").findOne({\r\n\t\t\twhere,\r\n\t\t\tselect: ['id', 'documentId']\r\n\t\t});\r\n\r\n\t\t//get the id of the published version of this item\r\n\t\tconst publishedItem = await strapi.documents(\"api::highlight-setting.highlight-setting\").findOne({\r\n\t\t\tdocumentId: unpublishedItem.documentId,\r\n\t\t\tfields: ['publishedAt'],\r\n\t\t\tstatus: 'published',\r\n\t\t})\r\n\r\n\t\t//save it to strapi as a temp storage\r\n\t\tstrapi[\"highlight-updating-id\"] = publishedItem.id;\r\n\t},\r\n\r\n\tasync afterCreate(event: MyEvent) {\r\n\t\t// a publish means a delete and create\r\n\t\t// if there was a delete beforehand, try to get back our saved id which indicates id of the previous published version of the item\r\n\t\tconst where = event.params.where;\r\n\t\tconst item2UpdatingId = strapi[\"highlight-updating-id\"];\r\n\r\n\t\tconst unpublishedItem = await strapi.db.query(\"api::highlight-setting.highlight-setting\").findOne({\r\n\t\t\twhere,\r\n\t\t\tselect: ['id', 'documentId']\r\n\t\t});\r\n\r\n\t\tconst publishedItem = await strapi.documents(\"api::highlight-setting.highlight-setting\").findOne({\r\n\t\t\tdocumentId: unpublishedItem.documentId,\r\n\t\t\tfields: ['publishedAt'],\r\n\t\t\tpopulate: [\"featured_news\"],\r\n\t\t\tstatus: 'published',\r\n\t\t})\r\n\r\n\t\t//if the current published item isn't the saved one, we published an item\r\n\t\tif (publishedItem.id !== item2UpdatingId || item2UpdatingId === undefined) {\r\n\t\t\tconst multiFilterTags = Object.keys(publishedItem.featured_news).filter(x => x !== \"id\");\r\n\r\n\t\t\tawait Promise.all(multiFilterTags.map(async (tag) => {\r\n\t\t\t\tawait publishByTag(tag)\r\n\t\t\t}))\r\n\t\t}\r\n\r\n\t\tstrapi[\"highlight-updating-id\"] = undefined;\r\n\t}\r\n}\r\n```\r\n\r\nFinally add the following code to components / highlighted / highlighted-articles.json to add the component required by the Single Type page.\r\n\r\n```\r\n{\r\n  \"collectionName\": \"components_highlighted_highlighted_articles\",\r\n  \"info\": {\r\n    \"displayName\": \"Highlighted Articles\",\r\n    \"icon\": \"dashboard\",\r\n    \"description\": \"\"\r\n  },\r\n  \"options\": {},\r\n  \"attributes\": {\r\n    \"left_side_multi_select_filter\": {\r\n      \"type\": \"customField\",\r\n      \"options\": {\r\n        \"publishedOnly\": true,\r\n        \"queryLimit\": 20\r\n      },\r\n      \"customField\": \"plugin::multi-select-filter.multiSelectFilter\"\r\n    },\r\n    \"main_multi_select_filter\": {\r\n      \"type\": \"customField\",\r\n      \"options\": {\r\n        \"publishedOnly\": true,\r\n        \"queryLimit\": 20\r\n      },\r\n      \"customField\": \"plugin::multi-select-filter.multiSelectFilter\"\r\n    },\r\n    \"right_side_multi_select_filter\": {\r\n      \"type\": \"customField\",\r\n      \"options\": {\r\n        \"publishedOnly\": true,\r\n        \"queryLimit\": 20\r\n      },\r\n      \"customField\": \"plugin::multi-select-filter.multiSelectFilter\"\r\n    }\r\n  }\r\n}\r\n```\r\n\r\nHere you go, now you can use your api endpoint to get highlighted articles in a Next JS application with the following code:\r\n\r\n```\r\n  const featuredNews = await fetchAPI(`/featured-news`, []);\r\n  if (!featuredNews)\r\n    return null;\r\n\r\n  const mainArticles = featuredNews.main_articles ?? [];\r\n  const leftSideArticles = featuredNews?.left_side_articles ?? [];\r\n  const rightSideArticles = featuredNews?.right_side_articles ?? [];\r\n```","readmeFilename":"README.md"}