@saooti/octopus-sdk 42.3.1-beta1 → 42.3.1
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/dist/{AdvancedSearch-D2jzRni-.mjs → AdvancedSearch-BTbYmlMm.mjs} +2 -2
- package/dist/AdvancedSearch-ChtUj3vS.mjs.map +1 -0
- package/dist/AdvancedSearch-D-9o5KzI.mjs.map +1 -0
- package/dist/AdvancedSearch-DH5YTENK.mjs.map +1 -0
- package/dist/AdvancedSearch-EpYd6K3d.mjs.map +1 -0
- package/dist/AdvancedSearch-PRJyRSID.mjs.map +1 -0
- package/dist/AdvancedSearch-_E2nwQ-A.mjs.map +1 -0
- package/dist/AdvancedSearch-k-fQfSBk.mjs.map +1 -0
- package/dist/AdvancedSearch-zFJq-WlO.mjs.map +1 -0
- package/dist/CategoryChooser-CSUjIA0D.mjs.map +1 -0
- package/dist/{CategoryChooser-CeF4n-nw.mjs → CategoryChooser-fAUMJNHu.mjs} +1 -1
- package/dist/{CategoryFilter-CLW42mHe.mjs → CategoryFilter-CsYCvEnz.mjs} +1 -1
- package/dist/CategoryFilter-DVwCpHLx.mjs.map +1 -0
- package/dist/{CategoryList-C1LlWALb.mjs → CategoryList-CDoIfrDw.mjs} +1 -1
- package/dist/CategoryList-CUae_phb.mjs.map +1 -0
- package/dist/{CategoryPage-DGPJ1VPS.mjs → CategoryPage-Cl5Yuxnu.mjs} +1 -1
- package/dist/CategoryPage-Dlq5XQBS.mjs.map +1 -0
- package/dist/{CategorySearchFilter-KVYBscdd.mjs → CategorySearchFilter-Cce5zxZB.mjs} +1 -1
- package/dist/CategorySearchFilter-EULpSE2e.mjs.map +1 -0
- package/dist/{CheckIdentityModal-p2kvRJbK.mjs → CheckIdentityModal-BrnYeGdk.mjs} +1 -1
- package/dist/CheckIdentityModal-CpRO7ehH.mjs.map +1 -0
- package/dist/ClassicDatePicker-4ouU5ov9.mjs.map +1 -0
- package/dist/{ClassicDatePicker-CpkjKzJ5.mjs → ClassicDatePicker-BTJWityQ.mjs} +25 -27
- package/dist/ClassicDatePicker-CChR9LBd.mjs.map +1 -0
- package/dist/ClassicDatePicker-DgcJCevR.mjs.map +1 -0
- package/dist/ClassicDatePicker-dgdGXcRk.mjs.map +1 -0
- package/dist/{ClassicEmojiPicker-B4TAlZvo.mjs → ClassicEmojiPicker-C0gm-DA2.mjs} +1 -1
- package/dist/ClassicEmojiPicker-CJZD8H7L.mjs.map +1 -0
- package/dist/{ClassicHelpButton-DT7T8tMe.mjs → ClassicHelpButton-BnRLmYuh.mjs} +1 -1
- package/dist/ClassicHelpButton-Qb4AwvWI.mjs.map +1 -0
- package/dist/{ClassicInputText-DJ5kURGM.mjs → ClassicInputText-YsntJkHk.mjs} +1 -1
- package/dist/ClassicInputText-npkVSUoH.mjs.map +1 -0
- package/dist/ClassicMultiselect-2I2K-o4R.mjs.map +1 -0
- package/dist/{ClassicMultiselect-CDHdJjjV.mjs → ClassicMultiselect-C0yzVQ8Y.mjs} +1 -1
- package/dist/{ClassicPopover-DWR50Nxi.mjs → ClassicPopover-BUb-1WMB.mjs} +1 -1
- package/dist/ClassicPopover-BhMY2SMo.mjs.map +1 -0
- package/dist/{CommentInput-ByigNGTw.mjs → CommentInput-CrRstzua.mjs} +1 -1
- package/dist/CommentInput-I97yysBW.mjs.map +1 -0
- package/dist/CommentItem-B7vvJwZI.mjs.map +1 -0
- package/dist/{CommentItem-BbUPCvEC.mjs → CommentItem-BYU67TIu.mjs} +2 -2
- package/dist/CommentList-CWrf45Di.mjs.map +1 -0
- package/dist/{CommentList-BmyJ4sBi.mjs → CommentList-snIIudVC.mjs} +1 -1
- package/dist/CommentMoreActions-BNajG7wk.mjs.map +1 -0
- package/dist/{CommentMoreActions-Bnx_Gjly.mjs → CommentMoreActions-y202UxL5.mjs} +1 -1
- package/dist/{CommentName-C5cbnPOy.mjs → CommentName-CHBlEM7I.mjs} +1 -1
- package/dist/CommentName-OJrxjSxu.mjs.map +1 -0
- package/dist/CommentParentInfo-Do3IlO95.mjs.map +1 -0
- package/dist/{CommentParentInfo-BO2YNPPR.mjs → CommentParentInfo-DoEeaQGU.mjs} +1 -1
- package/dist/CommentSection-CSehg6MD.mjs.map +1 -0
- package/dist/{CommentSection-BpbKr-oT.mjs → CommentSection-DZf04NxT.mjs} +1 -1
- package/dist/DateFilter-BwYSwGc-.mjs.map +1 -0
- package/dist/{DateFilter-iv7CkVTP.mjs → DateFilter-Cnb_S8Up.mjs} +1 -1
- package/dist/DateFilter-DMOUMeCh.mjs.map +1 -0
- package/dist/DateFilter-DdbvVu9Q.mjs.map +1 -0
- package/dist/DateFilter-Dr1nRuvZ.mjs.map +1 -0
- package/dist/{EditCommentModal-BDzkED7G.mjs → EditCommentModal-BQ03B6LC.mjs} +1 -1
- package/dist/EditCommentModal-sj0yXd7-.mjs.map +1 -0
- package/dist/EmissionGroupChooser--428fdeK.mjs.map +1 -0
- package/dist/EmissionGroupChooser-Cb3CF0uc.mjs.map +1 -0
- package/dist/EmissionGroupChooser-D4vMQH8g.mjs.map +1 -0
- package/dist/{EmissionGroupChooser-DWzoWRhp.mjs → EmissionGroupChooser-De_IpEhW.mjs} +1 -1
- package/dist/EmissionInlineList-DLUvPBNl.mjs.map +1 -0
- package/dist/{EmissionInlineList-ePdUy8g1.mjs → EmissionInlineList-dlb4gUOP.mjs} +1 -1
- package/dist/EmissionItem-BkPLFhAo.mjs.map +1 -0
- package/dist/{EmissionItem-CoMTOm31.mjs → EmissionItem-Dm_IGNkw.mjs} +1 -1
- package/dist/EmissionList-BQSI4xbi.mjs.map +1 -0
- package/dist/{EmissionList-QkBmjbaP.mjs → EmissionList-C4JEYLyK.mjs} +1 -1
- package/dist/{EmissionPage-BoQglhf0.mjs → EmissionPage-C4XUdzzm.mjs} +3 -3
- package/dist/EmissionPage-EMgXCVhK.mjs.map +1 -0
- package/dist/{EmissionPlayerItem-B6d5hOlx.mjs → EmissionPlayerItem-BLIdolRe.mjs} +1 -1
- package/dist/EmissionPlayerItem-DxXG20G1.mjs.map +1 -0
- package/dist/EmissionsPage-4To0aRBA.mjs.map +1 -0
- package/dist/{EmissionsPage-D4KDPr8j.mjs → EmissionsPage-B0bXLncg.mjs} +3 -3
- package/dist/EmissionsPage-BhUjdpEu.mjs.map +1 -0
- package/dist/EmissionsPage-Bn1R_ipo.mjs.map +1 -0
- package/dist/EmissionsPage-CNXwdJuV.mjs.map +1 -0
- package/dist/EmissionsPage-CPmhIbFf.mjs.map +1 -0
- package/dist/EmissionsPage-Dl7qaQT1.mjs.map +1 -0
- package/dist/EmissionsPage-DyleZtu_.mjs.map +1 -0
- package/dist/EmissionsPage-OVpc7k1Z.mjs.map +1 -0
- package/dist/{HomeDropdown-B9qhkjJy.mjs → HomeDropdown-Fx6kQAuH.mjs} +1 -1
- package/dist/HomeDropdown-PvmOUzYb.mjs.map +1 -0
- package/dist/{HomePage-CrAiSIgn.mjs → HomePage-7PT7HmHs.mjs} +1 -1
- package/dist/HomePage-D6_D1f33.mjs.map +1 -0
- package/dist/{LikeSection-wNtNtvR6.mjs → LikeSection-CGu4yOCr.mjs} +1 -1
- package/dist/LikeSection-D95IMsZE.mjs.map +1 -0
- package/dist/LiveHorizontalList-Bqe351Ut.mjs.map +1 -0
- package/dist/{LiveHorizontalList-Db4bP06I.mjs → LiveHorizontalList-Bs-Rz5Ws.mjs} +1 -1
- package/dist/{LiveList-D2DEpx3e.mjs → LiveList-BVOEnAEc.mjs} +1 -1
- package/dist/LiveList-DMB3FxUM.mjs.map +1 -0
- package/dist/{LivesPage-Dqton3gU.mjs → LivesPage-DG5VY4HF.mjs} +1 -1
- package/dist/LivesPage-DmSlg7iH.mjs.map +1 -0
- package/dist/{MobileMenu-DljmAIuw.mjs → MobileMenu-BZ5nOrYw.mjs} +1 -1
- package/dist/MobileMenu-C6W37oJg.mjs.map +1 -0
- package/dist/OctopusMultiselect-CFUGyzeM.mjs.map +1 -0
- package/dist/OctopusMultiselect-Cn1lqbQo.mjs.map +1 -0
- package/dist/OctopusMultiselect-esu8BY0J.mjs.map +1 -0
- package/dist/{OctopusMultiselect-C8qljiaH.mjs → OctopusMultiselect-noQPQMZQ.mjs} +7 -5
- package/dist/OrganisationChooser-BKfXLT4G.mjs.map +1 -0
- package/dist/{OrganisationChooser-yFfB9Xvq.mjs → OrganisationChooser-C48cWqbY.mjs} +1 -1
- package/dist/ParticipantPage-B6Gzg6ul.mjs.map +1 -0
- package/dist/{ParticipantPage-Bm18enqn.mjs → ParticipantPage-nTp2MbgB.mjs} +1 -1
- package/dist/{ParticipantsPage-DsHV_Ipv.mjs → ParticipantsPage-Bbz9lQ_0.mjs} +1 -1
- package/dist/ParticipantsPage-DhKCWwKE.mjs.map +1 -0
- package/dist/PlayerCompact-DtMginEc.mjs.map +1 -0
- package/dist/{PlayerCompact-BDvyTiV5.mjs → PlayerCompact-_39FpkWo.mjs} +2 -2
- package/dist/{PlayerComponent-BGxfETJ7.mjs → PlayerComponent-B1RsmSf0.mjs} +1 -1
- package/dist/PlayerComponent-BGVzhVz9.mjs.map +1 -0
- package/dist/PlayerComponent-BIshvul2.mjs.map +1 -0
- package/dist/PlayerComponent-BO7wUL2M.mjs.map +1 -0
- package/dist/{PlayerLarge-9iGjvAUI.mjs → PlayerLarge-BxdyYLOt.mjs} +2 -2
- package/dist/PlayerLarge-CPUAoR9q.mjs.map +1 -0
- package/dist/PlayerLarge-Dwtmu4gz.mjs.map +1 -0
- package/dist/PlayerLarge-qwr3iWSX.mjs.map +1 -0
- package/dist/PlayerProgressBar-C-I3dk3l.mjs.map +1 -0
- package/dist/{PlayerProgressBar-DKYzPUpT.mjs → PlayerProgressBar-dSschgez.mjs} +1 -1
- package/dist/PlayerVideo-BNfhaNUn.mjs.map +1 -0
- package/dist/{PlayerVideo-7decUhNG.mjs → PlayerVideo-BWyvKlJT.mjs} +1 -1
- package/dist/PlayerVideo-DzUapxuZ.mjs.map +1 -0
- package/dist/PlayerVideoHls-BsHaaJB-.mjs.map +1 -0
- package/dist/PlayerVideoHls-C0ddorEn.mjs.map +1 -0
- package/dist/{PlayerVideoHls-tRcw4ys1.mjs → PlayerVideoHls-DzbyXZsQ.mjs} +5 -3
- package/dist/{PlaylistPage-DAiQgAL9.mjs → PlaylistPage-BdbqXFwR.mjs} +3 -3
- package/dist/PlaylistPage-BgUaPJet.mjs.map +1 -0
- package/dist/PlaylistsPage-C62NUvz4.mjs.map +1 -0
- package/dist/{PlaylistsPage-BVD9XkRW.mjs → PlaylistsPage-D08i24b2.mjs} +1 -1
- package/dist/{PodcastFilterList-DbluQzny.mjs → PodcastFilterList-CL5ebQ69.mjs} +2 -2
- package/dist/PodcastFilterList-D9NTYS1v.mjs.map +1 -0
- package/dist/{PodcastInlineList-COmwflcV.mjs → PodcastInlineList-H6BxXx0A.mjs} +1 -1
- package/dist/PodcastInlineList-jI2EvXSo.mjs.map +1 -0
- package/dist/{PodcastItem-Dhm8myBb.mjs → PodcastItem-Baki7W0q.mjs} +2 -2
- package/dist/PodcastItem-DEhA78z9.mjs.map +1 -0
- package/dist/PodcastList-B4ic6Cij.mjs.map +1 -0
- package/dist/{PodcastList-DYhGnphb.mjs → PodcastList-N_XOE-hI.mjs} +1 -1
- package/dist/PodcastList-d3SGLPvF.mjs.map +1 -0
- package/dist/{PodcastList-BQX_YW4Q.mjs → PodcastList-yjd_exFg.mjs} +1 -1
- package/dist/PodcastPage-Bs1wz-0E.mjs.map +1 -0
- package/dist/{PodcastPage-DyQYsdi4.mjs → PodcastPage-SUEm-Enm.mjs} +4 -4
- package/dist/PodcastPlayBar-CBtMWlVc.mjs.map +1 -0
- package/dist/{PodcastPlayBar-DX_WtPKh.mjs → PodcastPlayBar-COU17bnm.mjs} +1 -1
- package/dist/PodcastPlaylistInlineList-C-WYs6aE.mjs.map +1 -0
- package/dist/{PodcastPlaylistInlineList-BNMWn-TD.mjs → PodcastPlaylistInlineList-DsEHaYGZ.mjs} +1 -1
- package/dist/{PodcastProgressBar-CyU6rIuS.mjs → PodcastProgressBar-B0FwZOTT.mjs} +1 -1
- package/dist/PodcastProgressBar-B8ONWq-Z.mjs.map +1 -0
- package/dist/{PodcastSwiperList-bOhOABMX.mjs → PodcastSwiperList-BKOYhrsH.mjs} +1 -1
- package/dist/PodcastSwiperList-BxsEv7_8.mjs.map +1 -0
- package/dist/{PodcastsPage-BZCrwDlm.mjs → PodcastsPage-B5NwPMyn.mjs} +3 -3
- package/dist/PodcastsPage-B7j2XxPZ.mjs.map +1 -0
- package/dist/PodcastsPage-BOzszXpc.mjs.map +1 -0
- package/dist/PodcastsPage-Bw0tzWoX.mjs.map +1 -0
- package/dist/PodcastsPage-D3TAYJV8.mjs.map +1 -0
- package/dist/PodcastsPage-DJsgHs7V.mjs.map +1 -0
- package/dist/PodcastsPage-DUcfPeLD.mjs.map +1 -0
- package/dist/PodcastsPage-DWBgwD6o.mjs.map +1 -0
- package/dist/PodcastsPage-DZO4H1Ff.mjs.map +1 -0
- package/dist/{ProductorSearch-B7pJFNqX.mjs → ProductorSearch-BiUEs7mG.mjs} +1 -1
- package/dist/ProductorSearch-DtVe_rU9.mjs.map +1 -0
- package/dist/{ProgressBar-o17a2f1E.mjs → ProgressBar-CXB5q3-H.mjs} +1 -1
- package/dist/ProgressBar-DAUOWol1.mjs.map +1 -0
- package/dist/RadioPage-CcK0y_5s.mjs.map +1 -0
- package/dist/{RadioPage-dMKtmHoU.mjs → RadioPage-Cwooj0wF.mjs} +1 -1
- package/dist/ReportAbuseModal-BdZRe29L.mjs.map +1 -0
- package/dist/{ReportAbuseModal-Bi6upLga.mjs → ReportAbuseModal-jjGeXbB9.mjs} +1 -1
- package/dist/RightsIndicator-4pUsBq5j.mjs.map +1 -0
- package/dist/{RightsIndicator-wm6dW8L3.mjs → RightsIndicator-CPzWpH5Z.mjs} +1 -1
- package/dist/{RightsWrapper-DAZF0Iij.mjs → RightsWrapper-BTQ8GGUi.mjs} +1 -1
- package/dist/RightsWrapper-nBURBTJX.mjs.map +1 -0
- package/dist/{RubriqueChoice-DaTWiDbl.mjs → RubriqueChoice-C-S-veJJ.mjs} +1 -1
- package/dist/RubriqueChoice-DsmnrUNs.mjs.map +1 -0
- package/dist/{RubriqueChooser-C33LorHa.mjs → RubriqueChooser-CNGn8LcP.mjs} +1 -1
- package/dist/RubriqueChooser-WmzcajTt.mjs.map +1 -0
- package/dist/RubriqueFilter-DDI7DjMR.mjs.map +1 -0
- package/dist/{RubriqueFilter-C3ImHHNV.mjs → RubriqueFilter-rxiG8Wci.mjs} +1 -1
- package/dist/RubriqueList-BiRimk17.mjs.map +1 -0
- package/dist/{RubriqueList-Bl0AIvmm.mjs → RubriqueList-rJj2IycY.mjs} +2 -2
- package/dist/{RubriquePage-BqDlwwdL.mjs → RubriquePage-BNEWnk3-.mjs} +2 -2
- package/dist/RubriquePage-Bpt-x7IK.mjs.map +1 -0
- package/dist/SearchPage-CbbbcXxs.mjs.map +1 -0
- package/dist/{SearchPage-y4ZwqHGE.mjs → SearchPage-DsZzPoEw.mjs} +1 -1
- package/dist/ShareAnonymous-CNWR1v6X.mjs.map +1 -0
- package/dist/{ShareAnonymous-q7zopt6i.mjs → ShareAnonymous-DK2rnLl1.mjs} +1 -1
- package/dist/{SimpleLayout-CUavy1lD.mjs → SimpleLayout-9O9FZ69Q.mjs} +1 -1
- package/dist/SimpleLayout-B-QSfHeQ.mjs.map +1 -0
- package/dist/SimpleLayout-BauUacaf.mjs.map +1 -0
- package/dist/SimpleLayout-vkWEZHLi.mjs.map +1 -0
- package/dist/{SubscribeButtons-Cy2S93qA.mjs → SubscribeButtons-IpzqDGIn.mjs} +1 -1
- package/dist/SubscribeButtons-yA2wowFc.mjs.map +1 -0
- package/dist/TagList-DVjqXiaA.mjs.map +1 -0
- package/dist/{TagList-DGdjrNax.mjs → TagList-V9fAFATL.mjs} +1 -1
- package/dist/{TagPage-DrznMl-f.mjs → TagPage-CsFwN4sE.mjs} +2 -2
- package/dist/TagPage-DMuxYu6y.mjs.map +1 -0
- package/dist/{TopBar-CE-8lAPx.mjs → TopBar-0oG6YPlW.mjs} +5 -5
- package/dist/TopBar-DdxThCLR.mjs.map +1 -0
- package/dist/VideoPage-BDGvtr1o.mjs.map +1 -0
- package/dist/{VideoPage-CaDhjXBc.mjs → VideoPage-BjlaP2DU.mjs} +1 -1
- package/dist/VideoPage-C-yjvvhl.mjs.map +1 -0
- package/dist/VideoPage-D2V1oXGC.mjs.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.mjs +6 -6
- package/dist/src/components/form/ClassicDatePicker.vue.d.ts +8 -6
- package/dist/src/components/form/OctopusMultiselect.vue.d.ts +2 -0
- package/package.json +1 -1
- package/src/components/form/ClassicDatePicker.vue +18 -13
- package/src/components/form/OctopusMultiselect.vue +3 -4
- package/src/components/misc/ClassicPopover.vue +1 -1
- package/src/components/misc/player/video/PlayerVideoHls.vue +160 -161
- package/tests/components/form/ClassicDatePicker.spec.ts +32 -0
- package/tests/components/form/OctopusMultiselect.spec.ts +5 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdvancedSearch-_E2nwQ-A.mjs","names":["_openBlock","_createElementBlock","_createCommentVNode","_createElementVNode","_toDisplayString","_createVNode","_normalizeClass","_Transition","_withCtx","_withDirectives","_createBlock","_vShow","_sfc_main"],"sources":["../src/components/display/filter/AdvancedSearch.vue","../src/components/display/filter/AdvancedSearch.vue"],"sourcesContent":["<template>\n <div id=\"advanced-search\" class=\"d-flex flex-column justify-content-center align-items-center\">\n <!-- Button to open the advanced filters -->\n <button\n class=\"d-flex justify-content-center align-items-center mb-3 text-secondary btn-transparent\"\n @click=\"clickShowFilters\"\n >\n <div>{{ t(\"Advanced filters\") }}</div>\n <ChevronDownIcon :class=\"{ 'arrow-transform': showFilters }\" />\n </button>\n\n <!-- Filters -->\n <Transition name=\"advanced-search\">\n <div\n v-if=\"firstLoaded\"\n v-show=\"showFilters\"\n class=\"advanced-search-container\"\n >\n <fieldset class=\"d-flex flex-column flex-grow-3\">\n <legend class=\"text-primary mb-2\">\n {{ t(\"Filter\") }}\n </legend>\n <MonetizableFilter\n v-if=\"!isPodcastmaker && !generalStore.platformEducation\"\n :is-emission=\"isEmission\"\n :monetisable=\"monetisable\"\n @update:monetisable=\"updateMonetisable\"\n />\n <CategorySearchFilter\n v-if=\"state.advancedSearch?.disableIabFiltering !== true\"\n :iab-id=\"iabId\"\n class=\"mb-3\"\n @update:iab-id=\"updateIab\"\n />\n <RubriqueFilter\n :rubrique-filter=\"rubriqueFilter\"\n @update:rubrique-filter=\"updateRubriquageFilter\"\n />\n\n <!-- Group filters -->\n <div v-if=\"showEmissionGroups\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n v-model:text-init=\"emissionGroupCheckbox\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-emission-groups-checkbox\"\n :label=\"t('Filters - Emission groups')\"\n />\n\n <EmissionGroupChooser\n v-if=\"emissionGroupCheckbox\"\n class=\"ms-4 flex-grow-1\"\n :organisation-id=\"organisationId\"\n :groups=\"emissionGroups\"\n @update:groups=\"updateEmissionGroupFilter\"\n />\n </div>\n\n <!-- Date -->\n <DateFilter\n :is-emission=\"isEmission\"\n :from-date=\"fromDate\"\n :to-date=\"toDate\"\n @update-dates=\"updateDates($event)\"\n />\n\n <!-- Rights holders/beneficiaries -->\n <div v-if=\"beneficiariesEnabled\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n :text-init=\"beneficiaries !== null && beneficiaries !== undefined\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-beneficiaries-checkbox\"\n :label=\"t('Filters - Beneficiaries')\"\n @update:text-init=\"updateBeneficiariesCheckbox\"\n />\n\n <ClassicTagInput\n v-if=\"beneficiaries !== null && beneficiaries !== undefined\"\n class=\"ms-4 flex-grow-1\"\n :tags=\"beneficiaries\"\n @update:tags=\"updateBeneficiaries\"\n />\n </div>\n\n <!-- 14876 - Only my episodes -->\n <div v-if=\"!isEmission && !isPodcastmaker\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n :text-init=\"onlyMyEpisodes\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-onlymine-checkbox\"\n :label=\"t('Filters - Only my episodes')\"\n @update:text-init=\"updateOnlyMineCheckbox\"\n />\n </div>\n\n <div\n v-if=\"organisation && organisationRight && !isPodcastmaker\"\n class=\"d-flex flex-column mt-3\"\n >\n <ClassicCheckbox\n :text-init=\"includeHidden\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-future-checkbox\"\n :label=\"textNotVisible\"\n :is-disabled=\"isSelectValidity && 'true'!==validity\"\n @update:text-init=\"updateIncludeHidden\"\n />\n </div>\n\n <ClassicSelect\n v-if=\"isSelectValidity\"\n :text-init=\"validity\"\n id-select=\"valid-episodes-select\"\n :label=\"t('Episodes to validate')+' :'\"\n :display-label=\"true\"\n class-label=\"flex-shrink-0 me-1\"\n class=\"d-flex align-items-center mt-3 mb-0\"\n :options=\"[\n { title: t('Display only episodes to validate'), value: 'false' },\n { title: t('Display episodes to validate'), value: '' },\n { title: t('Do not display episodes to validate'), value: 'true' },\n ]\"\n @update:text-init=\"updateValidity\"\n />\n\n <!-- Only with video -->\n <ClassicCheckbox\n v-if=\"!isEmission\"\n :text-init=\"onlyVideo\"\n class=\"flex-shrink-0 mt-3\"\n id-checkbox=\"only-video-checkbox\"\n :label=\"t('Show only episodes with video')\"\n @update:text-init=\"updateOnlyVideo\"\n />\n </fieldset>\n\n <!-- Sort -->\n <SearchOrder\n :is-emission=\"isEmission\"\n :sort=\"sort\"\n @update:sort=\"updateSort\"\n />\n </div>\n </Transition>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { useRubriquesFilterParam } from \"../../composable/route/useRubriquesFilterParam\";\nimport { RubriquageFilter } from \"@/stores/class/rubrique/rubriquageFilter\";\nimport { defineAsyncComponent, ref, computed, watch, onMounted } from \"vue\";\nimport { useGeneralStore } from \"../../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { state } from \"@/stores/ParamSdkStore\";\nconst MonetizableFilter = defineAsyncComponent(\n () => import(\"./MonetizableFilter.vue\"),\n);\nconst CategorySearchFilter = defineAsyncComponent(\n () => import(\"./CategorySearchFilter.vue\"),\n);\nconst RubriqueFilter = defineAsyncComponent(\n () => import(\"./RubriqueFilter.vue\"),\n);\nconst ClassicSelect = defineAsyncComponent(\n () => import(\"../../form/ClassicSelect.vue\"),\n);\nconst ClassicTagInput = defineAsyncComponent(\n () => import(\"../../form/ClassicTagInput.vue\"),\n);\nconst ClassicCheckbox = defineAsyncComponent(\n () => import(\"../../form/ClassicCheckbox.vue\"),\n);\nconst DateFilter = defineAsyncComponent(() => import(\"./DateFilter.vue\"));\nconst SearchOrder = defineAsyncComponent(() => import(\"./SearchOrder.vue\"));\nimport { ROUTE_PARAMS } from '../../composable/route/types';\nimport { EmissionGroup, groupsApi } from \"../../../api/groupsApi\";\nimport EmissionGroupChooser from \"../emission/EmissionGroupChooser.vue\";\n\n//Props \nconst props = withDefaults(defineProps<{\n organisationId?: string;\n /** Indicates that the filters apply to emissions */\n isEmission?: boolean;\n includeHidden?: boolean;\n sort?: string;\n onlyVideo?: boolean;\n monetisable?: string;\n iabId?: number;\n searchPattern?: string;\n fromDate?: string;\n toDate?: string;\n validity?: string;\n /** The filter on beneficiaries */\n beneficiaries?: Array<string>;\n /** The filter for only my episodes */\n onlyMyEpisodes?: boolean;\n rubriqueFilter?: Array<RubriquageFilter>;\n /** The filter on groups */\n emissionGroups?: Array<EmissionGroup>;\n /** Force hide the emission group filter */\n hideEmissionGroups?: boolean;\n}>(), {\n sort: \"DATE\",\n monetisable: \"UNDEFINED\",\n searchPattern: \"\",\n validity: \"\"\n});\n\n//Emits\nconst emit = defineEmits([\n \"update:toDate\",\n \"update:fromDate\",\n \"update:monetisable\",\n \"update:iabId\",\n \"update:sort\",\n \"update:includeHidden\",\n \"update:validity\",\n \"update:rubriqueFilter\",\n \"update:onlyVideo\",\n \"update:beneficiaries\",\n \"update:emission-groups\",\n \"update:only-my-episodes\"\n]);\n\n//Data \nconst showFilters = ref(false);\nconst firstLoaded = ref(false);\nconst showEmissionGroups = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights } = useOrgaComputed();\nconst { stringifyRubriquesFilter,updateRouteParamAdvanced } = useRubriquesFilterParam();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\n\nonMounted(async() => {\n if (props.hideEmissionGroups) {\n showEmissionGroups.value = false;\n return;\n }\n // Only show emission groups if there are some\n const nbGroups = await groupsApi.count({\n organisationIds: [props.organisationId]\n });\n showEmissionGroups.value = nbGroups > 0;\n});\n\n//Computed\nconst organisationRight = computed(() => isEditRights(props.organisationId));\nconst organisation = computed(() => props.organisationId ?? filterStore.filterOrgaId);\nconst textNotVisible = computed(() => props.isEmission ? t(\"Consider podcasts no visible\"): t(\"See podcasts no visible\"));\nconst isSelectValidity = computed(() => {\n return (\n undefined !== organisation.value &&\n organisationRight.value &&\n (authStore.isRoleContribution || authStore.isRolePublication) &&\n !isPodcastmaker.value &&\n !props.isEmission &&\n props.includeHidden\n );\n});\n\n/** The beneficiaries filter is only displayed if beneficiaries are enabled */\nconst beneficiariesEnabled = computed(() => {\n return authStore.authOrganisation.attributes['beneficiaries.enabled'] === 'true';\n});\n\n//Watch\nwatch(organisation, async () => {\n const hidden = undefined !== organisation.value && organisationRight.value && !props.isEmission;\n if (hidden !== props.includeHidden) {\n updateIncludeHidden(hidden);\n }\n});\n\nwatch(()=>props.searchPattern, (value: string) => {\n const search = value.trim();\n let valSort = \"SCORE\"\n if(search.length <= 3){\n valSort = props.isEmission? \"LAST_PODCAST_DESC\" : \"DATE\";\n }\n updateRouteParamAdvanced({\n q: search.length ? search : undefined,\n s: valSort,\n });\n});\n\n//Methods\nfunction updateMonetisable(value: string): void {\n emit(\"update:monetisable\", value);\n updateRouteParamAdvanced({ m: \"UNDEFINED\" !== value ? value : undefined });\n}\n\nfunction updateIab(value: number | undefined) {\n emit(\"update:iabId\", 0 !== value ? value : undefined);\n let filterIab = {};\n if (filterStore.filterIab && filterStore.filterIab.id !== value) {\n filterIab = { iabId: undefined };\n }\n updateRouteParamAdvanced({\n ...{ i: value ? value.toString() : undefined },\n ...filterIab,\n });\n}\n\nfunction updateSort(value: string) {\n emit(\"update:sort\", value);\n updateRouteParamAdvanced({ s: value });\n}\n\nfunction updateIncludeHidden(value: boolean) {\n emit(\"update:includeHidden\", value);\n updateRouteParamAdvanced({ h: value.toString() });\n}\n\nfunction updateValidity(value: boolean) {\n emit(\"update:validity\", value);\n updateRouteParamAdvanced({ vl: value.toString() });\n}\n\nfunction updateOnlyVideo(value: boolean) {\n emit(\"update:onlyVideo\", value);\n updateRouteParamAdvanced({ v: value ? \"true\" : undefined });\n}\n\nfunction updateDates(value: {\n from: string | undefined;\n to: string | undefined;\n}): void {\n emit(\"update:fromDate\", value.from);\n emit(\"update:toDate\", value.to);\n updateRouteParamAdvanced({ from: value.from, to: value.to });\n}\n\nfunction updateRubriquageFilter(value: Array<RubriquageFilter>) {\n emit(\"update:rubriqueFilter\", value);\n let filterRubriques = {};\n const valueString = stringifyRubriquesFilter(value);\n if (\n filterStore.filterRubrique.length &&\n stringifyRubriquesFilter(filterStore.filterRubrique) !== valueString\n ) {\n filterRubriques = { rubriquesId: undefined };\n }\n updateRouteParamAdvanced({\n r: valueString.length ? valueString : undefined,\n ...filterRubriques,\n });\n}\n\n/** Manage the checkbox enabling filtering on groups */\nconst emissionGroupCheckbox = computed({\n get(): boolean {\n return props.emissionGroups !== undefined && props.emissionGroups !== null;\n },\n set(value: boolean): void {\n if (value) {\n updateEmissionGroupFilter([]);\n } else {\n updateEmissionGroupFilter(undefined);\n }\n }\n});\n\n/** Update selected groups */\nfunction updateEmissionGroupFilter(groups: Array<EmissionGroup>|undefined): void {\n if (groups !== undefined && groups.length === 0) {\n emit('update:emission-groups', []);\n } else {\n updateRouteParamAdvanced({\n [ROUTE_PARAMS.EmissionGroups]: groups?.map(g => g.groupId)\n });\n emit('update:emission-groups', groups);\n }\n}\n\n/** Update the beneficiaries filter */\nfunction updateBeneficiaries(value: string[]|undefined): void {\n emit('update:beneficiaries', value);\n if (value === undefined) {\n updateRouteParamAdvanced({ [ROUTE_PARAMS.Beneficiaries]: undefined });\n } else {\n updateRouteParamAdvanced({ [ROUTE_PARAMS.Beneficiaries]: value });\n }\n}\n\n/** Update the value of the beneficiaries checkbox */\nfunction updateBeneficiariesCheckbox(value: boolean): void {\n if (value === true) {\n emit('update:beneficiaries', []);\n } else {\n updateBeneficiaries(undefined);\n }\n}\n\n/** Update the value of the 'only mine' checkbox */\nfunction updateOnlyMineCheckbox(value: boolean): void {\n emit('update:only-my-episodes', value);\n updateRouteParamAdvanced({\n [ROUTE_PARAMS.OnlyMyEpisodes]: value || undefined\n });\n}\n\nfunction clickShowFilters(): void {\n if (!firstLoaded.value) {\n firstLoaded.value = true;\n }\n showFilters.value = !showFilters.value;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n .advanced-search-container {\n background: var(--octopus-background);\n display: flex;\n width: 100%;\n padding-bottom: 1rem;\n justify-content: space-around;\n\n @media (width <= 720px) {\n flex-wrap: wrap;\n }\n }\n\n .advanced-search-enter-active,\n .advanced-search-leave-active {\n transition: 0.3s all;\n opacity: 1;\n max-height: 900px;\n height: auto;\n overflow: hidden;\n }\n\n .advanced-search-enter-from,\n .advanced-search-leave-to {\n opacity: 0;\n max-height: 0;\n overflow: hidden;\n }\n}\n</style>\n","<template>\n <div id=\"advanced-search\" class=\"d-flex flex-column justify-content-center align-items-center\">\n <!-- Button to open the advanced filters -->\n <button\n class=\"d-flex justify-content-center align-items-center mb-3 text-secondary btn-transparent\"\n @click=\"clickShowFilters\"\n >\n <div>{{ t(\"Advanced filters\") }}</div>\n <ChevronDownIcon :class=\"{ 'arrow-transform': showFilters }\" />\n </button>\n\n <!-- Filters -->\n <Transition name=\"advanced-search\">\n <div\n v-if=\"firstLoaded\"\n v-show=\"showFilters\"\n class=\"advanced-search-container\"\n >\n <fieldset class=\"d-flex flex-column flex-grow-3\">\n <legend class=\"text-primary mb-2\">\n {{ t(\"Filter\") }}\n </legend>\n <MonetizableFilter\n v-if=\"!isPodcastmaker && !generalStore.platformEducation\"\n :is-emission=\"isEmission\"\n :monetisable=\"monetisable\"\n @update:monetisable=\"updateMonetisable\"\n />\n <CategorySearchFilter\n v-if=\"state.advancedSearch?.disableIabFiltering !== true\"\n :iab-id=\"iabId\"\n class=\"mb-3\"\n @update:iab-id=\"updateIab\"\n />\n <RubriqueFilter\n :rubrique-filter=\"rubriqueFilter\"\n @update:rubrique-filter=\"updateRubriquageFilter\"\n />\n\n <!-- Group filters -->\n <div v-if=\"showEmissionGroups\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n v-model:text-init=\"emissionGroupCheckbox\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-emission-groups-checkbox\"\n :label=\"t('Filters - Emission groups')\"\n />\n\n <EmissionGroupChooser\n v-if=\"emissionGroupCheckbox\"\n class=\"ms-4 flex-grow-1\"\n :organisation-id=\"organisationId\"\n :groups=\"emissionGroups\"\n @update:groups=\"updateEmissionGroupFilter\"\n />\n </div>\n\n <!-- Date -->\n <DateFilter\n :is-emission=\"isEmission\"\n :from-date=\"fromDate\"\n :to-date=\"toDate\"\n @update-dates=\"updateDates($event)\"\n />\n\n <!-- Rights holders/beneficiaries -->\n <div v-if=\"beneficiariesEnabled\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n :text-init=\"beneficiaries !== null && beneficiaries !== undefined\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-beneficiaries-checkbox\"\n :label=\"t('Filters - Beneficiaries')\"\n @update:text-init=\"updateBeneficiariesCheckbox\"\n />\n\n <ClassicTagInput\n v-if=\"beneficiaries !== null && beneficiaries !== undefined\"\n class=\"ms-4 flex-grow-1\"\n :tags=\"beneficiaries\"\n @update:tags=\"updateBeneficiaries\"\n />\n </div>\n\n <!-- 14876 - Only my episodes -->\n <div v-if=\"!isEmission && !isPodcastmaker\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n :text-init=\"onlyMyEpisodes\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-onlymine-checkbox\"\n :label=\"t('Filters - Only my episodes')\"\n @update:text-init=\"updateOnlyMineCheckbox\"\n />\n </div>\n\n <div\n v-if=\"organisation && organisationRight && !isPodcastmaker\"\n class=\"d-flex flex-column mt-3\"\n >\n <ClassicCheckbox\n :text-init=\"includeHidden\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-future-checkbox\"\n :label=\"textNotVisible\"\n :is-disabled=\"isSelectValidity && 'true'!==validity\"\n @update:text-init=\"updateIncludeHidden\"\n />\n </div>\n\n <ClassicSelect\n v-if=\"isSelectValidity\"\n :text-init=\"validity\"\n id-select=\"valid-episodes-select\"\n :label=\"t('Episodes to validate')+' :'\"\n :display-label=\"true\"\n class-label=\"flex-shrink-0 me-1\"\n class=\"d-flex align-items-center mt-3 mb-0\"\n :options=\"[\n { title: t('Display only episodes to validate'), value: 'false' },\n { title: t('Display episodes to validate'), value: '' },\n { title: t('Do not display episodes to validate'), value: 'true' },\n ]\"\n @update:text-init=\"updateValidity\"\n />\n\n <!-- Only with video -->\n <ClassicCheckbox\n v-if=\"!isEmission\"\n :text-init=\"onlyVideo\"\n class=\"flex-shrink-0 mt-3\"\n id-checkbox=\"only-video-checkbox\"\n :label=\"t('Show only episodes with video')\"\n @update:text-init=\"updateOnlyVideo\"\n />\n </fieldset>\n\n <!-- Sort -->\n <SearchOrder\n :is-emission=\"isEmission\"\n :sort=\"sort\"\n @update:sort=\"updateSort\"\n />\n </div>\n </Transition>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { useRubriquesFilterParam } from \"../../composable/route/useRubriquesFilterParam\";\nimport { RubriquageFilter } from \"@/stores/class/rubrique/rubriquageFilter\";\nimport { defineAsyncComponent, ref, computed, watch, onMounted } from \"vue\";\nimport { useGeneralStore } from \"../../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { state } from \"@/stores/ParamSdkStore\";\nconst MonetizableFilter = defineAsyncComponent(\n () => import(\"./MonetizableFilter.vue\"),\n);\nconst CategorySearchFilter = defineAsyncComponent(\n () => import(\"./CategorySearchFilter.vue\"),\n);\nconst RubriqueFilter = defineAsyncComponent(\n () => import(\"./RubriqueFilter.vue\"),\n);\nconst ClassicSelect = defineAsyncComponent(\n () => import(\"../../form/ClassicSelect.vue\"),\n);\nconst ClassicTagInput = defineAsyncComponent(\n () => import(\"../../form/ClassicTagInput.vue\"),\n);\nconst ClassicCheckbox = defineAsyncComponent(\n () => import(\"../../form/ClassicCheckbox.vue\"),\n);\nconst DateFilter = defineAsyncComponent(() => import(\"./DateFilter.vue\"));\nconst SearchOrder = defineAsyncComponent(() => import(\"./SearchOrder.vue\"));\nimport { ROUTE_PARAMS } from '../../composable/route/types';\nimport { EmissionGroup, groupsApi } from \"../../../api/groupsApi\";\nimport EmissionGroupChooser from \"../emission/EmissionGroupChooser.vue\";\n\n//Props \nconst props = withDefaults(defineProps<{\n organisationId?: string;\n /** Indicates that the filters apply to emissions */\n isEmission?: boolean;\n includeHidden?: boolean;\n sort?: string;\n onlyVideo?: boolean;\n monetisable?: string;\n iabId?: number;\n searchPattern?: string;\n fromDate?: string;\n toDate?: string;\n validity?: string;\n /** The filter on beneficiaries */\n beneficiaries?: Array<string>;\n /** The filter for only my episodes */\n onlyMyEpisodes?: boolean;\n rubriqueFilter?: Array<RubriquageFilter>;\n /** The filter on groups */\n emissionGroups?: Array<EmissionGroup>;\n /** Force hide the emission group filter */\n hideEmissionGroups?: boolean;\n}>(), {\n sort: \"DATE\",\n monetisable: \"UNDEFINED\",\n searchPattern: \"\",\n validity: \"\"\n});\n\n//Emits\nconst emit = defineEmits([\n \"update:toDate\",\n \"update:fromDate\",\n \"update:monetisable\",\n \"update:iabId\",\n \"update:sort\",\n \"update:includeHidden\",\n \"update:validity\",\n \"update:rubriqueFilter\",\n \"update:onlyVideo\",\n \"update:beneficiaries\",\n \"update:emission-groups\",\n \"update:only-my-episodes\"\n]);\n\n//Data \nconst showFilters = ref(false);\nconst firstLoaded = ref(false);\nconst showEmissionGroups = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights } = useOrgaComputed();\nconst { stringifyRubriquesFilter,updateRouteParamAdvanced } = useRubriquesFilterParam();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\n\nonMounted(async() => {\n if (props.hideEmissionGroups) {\n showEmissionGroups.value = false;\n return;\n }\n // Only show emission groups if there are some\n const nbGroups = await groupsApi.count({\n organisationIds: [props.organisationId]\n });\n showEmissionGroups.value = nbGroups > 0;\n});\n\n//Computed\nconst organisationRight = computed(() => isEditRights(props.organisationId));\nconst organisation = computed(() => props.organisationId ?? filterStore.filterOrgaId);\nconst textNotVisible = computed(() => props.isEmission ? t(\"Consider podcasts no visible\"): t(\"See podcasts no visible\"));\nconst isSelectValidity = computed(() => {\n return (\n undefined !== organisation.value &&\n organisationRight.value &&\n (authStore.isRoleContribution || authStore.isRolePublication) &&\n !isPodcastmaker.value &&\n !props.isEmission &&\n props.includeHidden\n );\n});\n\n/** The beneficiaries filter is only displayed if beneficiaries are enabled */\nconst beneficiariesEnabled = computed(() => {\n return authStore.authOrganisation.attributes['beneficiaries.enabled'] === 'true';\n});\n\n//Watch\nwatch(organisation, async () => {\n const hidden = undefined !== organisation.value && organisationRight.value && !props.isEmission;\n if (hidden !== props.includeHidden) {\n updateIncludeHidden(hidden);\n }\n});\n\nwatch(()=>props.searchPattern, (value: string) => {\n const search = value.trim();\n let valSort = \"SCORE\"\n if(search.length <= 3){\n valSort = props.isEmission? \"LAST_PODCAST_DESC\" : \"DATE\";\n }\n updateRouteParamAdvanced({\n q: search.length ? search : undefined,\n s: valSort,\n });\n});\n\n//Methods\nfunction updateMonetisable(value: string): void {\n emit(\"update:monetisable\", value);\n updateRouteParamAdvanced({ m: \"UNDEFINED\" !== value ? value : undefined });\n}\n\nfunction updateIab(value: number | undefined) {\n emit(\"update:iabId\", 0 !== value ? value : undefined);\n let filterIab = {};\n if (filterStore.filterIab && filterStore.filterIab.id !== value) {\n filterIab = { iabId: undefined };\n }\n updateRouteParamAdvanced({\n ...{ i: value ? value.toString() : undefined },\n ...filterIab,\n });\n}\n\nfunction updateSort(value: string) {\n emit(\"update:sort\", value);\n updateRouteParamAdvanced({ s: value });\n}\n\nfunction updateIncludeHidden(value: boolean) {\n emit(\"update:includeHidden\", value);\n updateRouteParamAdvanced({ h: value.toString() });\n}\n\nfunction updateValidity(value: boolean) {\n emit(\"update:validity\", value);\n updateRouteParamAdvanced({ vl: value.toString() });\n}\n\nfunction updateOnlyVideo(value: boolean) {\n emit(\"update:onlyVideo\", value);\n updateRouteParamAdvanced({ v: value ? \"true\" : undefined });\n}\n\nfunction updateDates(value: {\n from: string | undefined;\n to: string | undefined;\n}): void {\n emit(\"update:fromDate\", value.from);\n emit(\"update:toDate\", value.to);\n updateRouteParamAdvanced({ from: value.from, to: value.to });\n}\n\nfunction updateRubriquageFilter(value: Array<RubriquageFilter>) {\n emit(\"update:rubriqueFilter\", value);\n let filterRubriques = {};\n const valueString = stringifyRubriquesFilter(value);\n if (\n filterStore.filterRubrique.length &&\n stringifyRubriquesFilter(filterStore.filterRubrique) !== valueString\n ) {\n filterRubriques = { rubriquesId: undefined };\n }\n updateRouteParamAdvanced({\n r: valueString.length ? valueString : undefined,\n ...filterRubriques,\n });\n}\n\n/** Manage the checkbox enabling filtering on groups */\nconst emissionGroupCheckbox = computed({\n get(): boolean {\n return props.emissionGroups !== undefined && props.emissionGroups !== null;\n },\n set(value: boolean): void {\n if (value) {\n updateEmissionGroupFilter([]);\n } else {\n updateEmissionGroupFilter(undefined);\n }\n }\n});\n\n/** Update selected groups */\nfunction updateEmissionGroupFilter(groups: Array<EmissionGroup>|undefined): void {\n if (groups !== undefined && groups.length === 0) {\n emit('update:emission-groups', []);\n } else {\n updateRouteParamAdvanced({\n [ROUTE_PARAMS.EmissionGroups]: groups?.map(g => g.groupId)\n });\n emit('update:emission-groups', groups);\n }\n}\n\n/** Update the beneficiaries filter */\nfunction updateBeneficiaries(value: string[]|undefined): void {\n emit('update:beneficiaries', value);\n if (value === undefined) {\n updateRouteParamAdvanced({ [ROUTE_PARAMS.Beneficiaries]: undefined });\n } else {\n updateRouteParamAdvanced({ [ROUTE_PARAMS.Beneficiaries]: value });\n }\n}\n\n/** Update the value of the beneficiaries checkbox */\nfunction updateBeneficiariesCheckbox(value: boolean): void {\n if (value === true) {\n emit('update:beneficiaries', []);\n } else {\n updateBeneficiaries(undefined);\n }\n}\n\n/** Update the value of the 'only mine' checkbox */\nfunction updateOnlyMineCheckbox(value: boolean): void {\n emit('update:only-my-episodes', value);\n updateRouteParamAdvanced({\n [ROUTE_PARAMS.OnlyMyEpisodes]: value || undefined\n });\n}\n\nfunction clickShowFilters(): void {\n if (!firstLoaded.value) {\n firstLoaded.value = true;\n }\n showFilters.value = !showFilters.value;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n .advanced-search-container {\n background: var(--octopus-background);\n display: flex;\n width: 100%;\n padding-bottom: 1rem;\n justify-content: space-around;\n\n @media (width <= 720px) {\n flex-wrap: wrap;\n }\n }\n\n .advanced-search-enter-active,\n .advanced-search-leave-active {\n transition: 0.3s all;\n opacity: 1;\n max-height: 900px;\n height: auto;\n overflow: hidden;\n }\n\n .advanced-search-enter-from,\n .advanced-search-leave-to {\n opacity: 0;\n max-height: 0;\n overflow: hidden;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6JA,MAAM,oBAAoB,2BAChB,OAAO,mCACjB;EACA,MAAM,uBAAuB,2BACnB,OAAO,sCACjB;EACA,MAAM,iBAAiB,2BACb,OAAO,gCACjB;EACA,MAAM,gBAAgB,2BACZ,OAAO,+BACjB,CAAA,MAAA,MAAA,EAAA,CAAA,CAAA;EACA,MAAM,kBAAkB,2BACd,OAAO,iCACjB;EACA,MAAM,kBAAkB,2BACd,OAAO,iCACjB,CAAA,MAAA,MAAA,EAAA,CAAA,CAAA;EACA,MAAM,aAAa,2BAA2B,OAAO,4BAAmB;EACxE,MAAM,cAAc,2BAA2B,OAAO,6BAAoB;EAM1E,MAAM,QAAQ;EA8Bd,MAAM,OAAO;EAgBb,MAAM,cAAc,IAAI,KAAK;EAC7B,MAAM,cAAc,IAAI,KAAK;EAC7B,MAAM,qBAAqB,IAAI,KAAK;EAGpC,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,gBAAgB,iBAAiB,gBAAgB;EACzD,MAAM,EAAE,0BAAyB,6BAA6B,wBAAwB;EACtF,MAAM,eAAe,gBAAgB;EACrC,MAAM,cAAc,eAAe;EACnC,MAAM,YAAY,aAAa;EAE/B,UAAU,YAAW;GACjB,IAAI,MAAM,oBAAoB;IAC1B,mBAAmB,QAAQ;IAC3B;GACJ;GAEA,MAAM,WAAW,MAAM,UAAU,MAAM,EACnC,iBAAiB,CAAC,MAAM,cAAc,EAC1C,CAAC;GACD,mBAAmB,QAAQ,WAAW;EAC1C,CAAC;EAGD,MAAM,oBAAoB,eAAe,aAAa,MAAM,cAAc,CAAC;EAC3E,MAAM,eAAe,eAAe,MAAM,kBAAkB,YAAY,YAAY;EACpF,MAAM,iBAAiB,eAAe,MAAM,aAAa,EAAE,8BAA8B,IAAG,EAAE,yBAAyB,CAAC;EACxH,MAAM,mBAAmB,eAAe;GACpC,OACI,KAAA,MAAc,aAAa,SAC3B,kBAAkB,UACjB,UAAU,sBAAsB,UAAU,sBAC3C,CAAC,eAAe,SAChB,CAAC,MAAM,cACP,MAAM;EAEd,CAAC;;EAGD,MAAM,uBAAuB,eAAe;GACxC,OAAO,UAAU,iBAAiB,WAAW,6BAA6B;EAC9E,CAAC;EAGD,MAAM,cAAc,YAAY;GAC5B,MAAM,SAAS,KAAA,MAAc,aAAa,SAAS,kBAAkB,SAAS,CAAC,MAAM;GACrF,IAAI,WAAW,MAAM,eACjB,oBAAoB,MAAM;EAElC,CAAC;EAED,YAAU,MAAM,gBAAgB,UAAkB;GAC9C,MAAM,SAAS,MAAM,KAAK;GAC1B,IAAI,UAAU;GACd,IAAG,OAAO,UAAU,GAChB,UAAU,MAAM,aAAY,sBAAsB;GAEtD,yBAAyB;IACrB,GAAG,OAAO,SAAS,SAAS,KAAA;IAC5B,GAAG;GACP,CAAC;EACL,CAAC;EAGD,SAAS,kBAAkB,OAAqB;GAC5C,KAAK,sBAAsB,KAAK;GAChC,yBAAyB,EAAE,GAAG,gBAAgB,QAAQ,QAAQ,KAAA,EAAU,CAAC;EAC7E;EAEA,SAAS,UAAU,OAA2B;GAC1C,KAAK,gBAAgB,MAAM,QAAQ,QAAQ,KAAA,CAAS;GACpD,IAAI,YAAY,CAAC;GACjB,IAAI,YAAY,aAAa,YAAY,UAAU,OAAO,OACtD,YAAY,EAAE,OAAO,KAAA,EAAU;GAEnC,yBAAyB;IAChB,GAAG,QAAQ,MAAM,SAAS,IAAI,KAAA;IACnC,GAAG;GACP,CAAC;EACL;EAEA,SAAS,WAAW,OAAe;GAC/B,KAAK,eAAe,KAAK;GACzB,yBAAyB,EAAE,GAAG,MAAM,CAAC;EACzC;EAEA,SAAS,oBAAoB,OAAgB;GACzC,KAAK,wBAAwB,KAAK;GAClC,yBAAyB,EAAE,GAAG,MAAM,SAAS,EAAE,CAAC;EACpD;EAEA,SAAS,eAAe,OAAgB;GACpC,KAAK,mBAAmB,KAAK;GAC7B,yBAAyB,EAAE,IAAI,MAAM,SAAS,EAAE,CAAC;EACrD;EAEA,SAAS,gBAAgB,OAAgB;GACrC,KAAK,oBAAoB,KAAK;GAC9B,yBAAyB,EAAE,GAAG,QAAQ,SAAS,KAAA,EAAU,CAAC;EAC9D;EAEA,SAAS,YAAY,OAGZ;GACL,KAAK,mBAAmB,MAAM,IAAI;GAClC,KAAK,iBAAiB,MAAM,EAAE;GAC9B,yBAAyB;IAAE,MAAM,MAAM;IAAM,IAAI,MAAM;GAAG,CAAC;EAC/D;EAEA,SAAS,uBAAuB,OAAgC;GAC5D,KAAK,yBAAyB,KAAK;GACnC,IAAI,kBAAkB,CAAC;GACvB,MAAM,cAAc,yBAAyB,KAAK;GAClD,IACI,YAAY,eAAe,UAC3B,yBAAyB,YAAY,cAAc,MAAM,aAEzD,kBAAkB,EAAE,aAAa,KAAA,EAAU;GAE/C,yBAAyB;IACrB,GAAG,YAAY,SAAS,cAAc,KAAA;IACtC,GAAG;GACP,CAAC;EACL;;EAGA,MAAM,wBAAwB,SAAS;GACnC,MAAe;IACX,OAAO,MAAM,mBAAmB,KAAA,KAAa,MAAM,mBAAmB;GAC1E;GACA,IAAI,OAAsB;IACtB,IAAI,OACA,0BAA0B,CAAC,CAAC;SAE5B,0BAA0B,KAAA,CAAS;GAE3C;EACJ,CAAC;;EAGD,SAAS,0BAA0B,QAA8C;GAC7E,IAAI,WAAW,KAAA,KAAa,OAAO,WAAW,GAC1C,KAAK,0BAA0B,CAAC,CAAC;QAC9B;IACH,yBAAyB,GACpB,aAAa,iBAAiB,QAAQ,KAAI,MAAK,EAAE,OAAO,EAC7D,CAAC;IACD,KAAK,0BAA0B,MAAM;GACzC;EACJ;;EAGA,SAAS,oBAAoB,OAAiC;GAC1D,KAAK,wBAAwB,KAAK;GAClC,IAAI,UAAU,KAAA,GACV,yBAAyB,GAAG,aAAa,gBAAgB,KAAA,EAAU,CAAC;QAEpE,yBAAyB,GAAG,aAAa,gBAAgB,MAAM,CAAC;EAExE;;EAGA,SAAS,4BAA4B,OAAsB;GACvD,IAAI,UAAU,MACV,KAAK,wBAAwB,CAAC,CAAC;QAE/B,oBAAoB,KAAA,CAAS;EAErC;;EAGA,SAAS,uBAAuB,OAAsB;GAClD,KAAK,2BAA2B,KAAK;GACrC,yBAAyB,GACpB,aAAa,iBAAiB,SAAS,KAAA,EAC5C,CAAC;EACL;EAEA,SAAS,mBAAyB;GAC9B,IAAI,CAAC,YAAY,OACb,YAAY,QAAQ;GAExB,YAAY,QAAQ,CAAC,YAAY;EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CC5ZS,IAAG;CAAkB,OAAM;;;;CAepB,OAAM;;AAEI,IAAA,aAAA,EAAA,OAAM,iCAAgC;AACpC,IAAA,aAAA,EAAA,OAAM,oBAAmB;;;CAqBF,OAAM;;;;CA0BJ,OAAM;;;;CAkBI,OAAM;;;;CAY7C,OAAM;;;CA/F1B,OAAAA,UAAA,GAAAC,mBA8IM,OA9IN,YA8IM;EA7IFC,mBAAA,uCAAA;EACAC,mBAMS,UAAA;GALL,OAAM;GACL,SAAO,OAAA;EAER,GAAA,CAAAA,mBAAsC,OAAA,MAAAC,gBAA9B,OAAA,EAAC,kBAAA,CAAA,GAAA,CAAA,GACTC,YAA+D,OAAA,oBAAA,EAA7C,OAAKC,eAAA,EAAA,mBAAuB,OAAA,YAAW,CAAA,EAAA,GAAA,MAAA,GAAA,CAAA,OAAA,CAAA,CAAA,CAAA;EAG7DJ,mBAAA,WAAA;EACAG,YAkIaE,YAAA,EAlID,MAAK,kBAAiB,GAAA;GAC9B,SAAAC,cAgIM,CA/HI,OAAA,cADVC,gBAAAT,UAAA,GAAAC,mBAgIM,OAhIN,YAgIM;IA3HFE,mBAmHW,YAnHX,YAmHW;KAlHPA,mBAES,UAFT,YAESC,gBADF,OAAA,EAAC,QAAA,CAAA,GAAA,CAAA;KAGG,CAAA,OAAA,kBAAc,CAAK,OAAA,aAAa,qBAD3CJ,UAAA,GAAAU,YAKE,OAAA,sBAAA;;MAHG,eAAa,OAAA;MACb,aAAa,OAAA;MACb,wBAAoB,OAAA;;KAGf,OAAA,MAAM,gBAAgB,wBAAmB,QADnDV,UAAA,GAAAU,YAKE,OAAA,yBAAA;;MAHG,UAAQ,OAAA;MACT,OAAM;MACL,kBAAe,OAAA;;KAEpBL,YAGE,OAAA,mBAAA;MAFG,mBAAiB,OAAA;MACjB,2BAAwB,OAAA;;KAG7BH,mBAAA,iBAAA;KACW,OAAA,sBAAXF,UAAA,GAAAC,mBAeM,OAfN,YAeM,CAdFI,YAKE,OAAA,oBAAA;MAJU,aAAW,OAAA;MAAA,qBAAA,OAAA,OAAA,OAAA,MAAA,WAAA,OAAA,wBAAqB;MACxC,OAAM;MACN,eAAY;MACX,OAAO,OAAA,EAAC,2BAAA;KAIH,GAAA,MAAA,GAAA,CAAA,aAAA,OAAA,CAAA,GAAA,OAAA,yBADVL,UAAA,GAAAU,YAME,OAAA,yBAAA;;MAJE,OAAM;MACL,mBAAiB,OAAA;MACjB,QAAQ,OAAA;MACR,mBAAe,OAAA;;KAIxBR,mBAAA,QAAA;KACAG,YAKE,OAAA,eAAA;MAJG,eAAa,OAAA;MACb,aAAW,OAAA;MACX,WAAS,OAAA;MACT,eAAY,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,YAAY,MAAM;;;;;;KAGrCH,mBAAA,gCAAA;KACW,OAAA,wBAAXF,UAAA,GAAAC,mBAeM,OAfN,YAeM,CAdFI,YAME,OAAA,oBAAA;MALG,aAAW,OAAA,kBAAa,QAAa,OAAA,kBAAkB,KAAA;MACxD,OAAM;MACN,eAAY;MACX,OAAO,OAAA,EAAC,yBAAA;MACR,qBAAkB,OAAA;KAIb,GAAA,MAAA,GAAA,CAAA,aAAA,OAAA,CAAA,GAAA,OAAA,kBAAa,QAAa,OAAA,kBAAkB,KAAA,KADtDL,UAAA,GAAAU,YAKE,OAAA,oBAAA;;MAHE,OAAM;MACL,MAAM,OAAA;MACN,iBAAa,OAAA;;KAItBR,mBAAA,4BAAA;KACY,CAAA,OAAA,cAAU,CAAK,OAAA,kBAA3BF,UAAA,GAAAC,mBAQM,OARN,YAQM,CAPFI,YAME,OAAA,oBAAA;MALG,aAAW,OAAA;MACZ,OAAM;MACN,eAAY;MACX,OAAO,OAAA,EAAC,4BAAA;MACR,qBAAkB,OAAA;;KAKjB,OAAA,gBAAgB,OAAA,qBAAiB,CAAK,OAAA,kBADhDL,UAAA,GAAAC,mBAYM,OAZN,YAYM,CARFI,YAOE,OAAA,oBAAA;MANG,aAAW,OAAA;MACZ,OAAM;MACN,eAAY;MACX,OAAO,OAAA;MACP,eAAa,OAAA,oBAAgB,WAAa,OAAA;MAC1C,qBAAkB,OAAA;;;;;;KAKjB,OAAA,oBADVL,UAAA,GAAAU,YAcE,OAAA,kBAAA;;MAZG,aAAW,OAAA;MACZ,aAAU;MACT,OAAO,OAAA,EAAC,sBAAA,IAAA;MACR,iBAAe;MAChB,eAAY;MACZ,OAAM;MACL,SAAO;OAAyC;QAAA,OAAA,OAAA,EAAC,mCAAA;QAAA,OAAA;OAAA;OAA8F;QAAA,OAAA,OAAA,EAAC,8BAAA;QAAA,OAAA;OAAA;OAAoF;QAAA,OAAA,OAAA,EAAC,qCAAA;QAAA,OAAA;OAAA;;MAKrO,qBAAkB,OAAA;;;;;;KAGvBR,mBAAA,mBAAA;KAEW,CAAA,OAAA,cADXF,UAAA,GAAAU,YAOE,OAAA,oBAAA;;MALG,aAAW,OAAA;MACZ,OAAM;MACN,eAAY;MACX,OAAO,OAAA,EAAC,+BAAA;MACR,qBAAkB,OAAA;;;IAI3BR,mBAAA,QAAA;IACAG,YAIE,OAAA,gBAAA;KAHG,eAAa,OAAA;KACb,MAAM,OAAA;KACN,iBAAa,OAAA;;GA5HV,GAAA,GAAA,IAAA,CAAA,CAAAM,OAAA,OAAA,WAAW,CAAA,CAAA,IAAAT,mBAAA,QAAA,IAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdvancedSearch-k-fQfSBk.mjs","names":["_openBlock","_createElementBlock","_createCommentVNode","_createElementVNode","_toDisplayString","_createVNode","_normalizeClass","_Transition","_withCtx","_withDirectives","_createBlock","_vShow","_sfc_main"],"sources":["../src/components/display/filter/AdvancedSearch.vue","../src/components/display/filter/AdvancedSearch.vue"],"sourcesContent":["<template>\n <div id=\"advanced-search\" class=\"d-flex flex-column justify-content-center align-items-center\">\n <!-- Button to open the advanced filters -->\n <button\n class=\"d-flex justify-content-center align-items-center mb-3 text-secondary btn-transparent\"\n @click=\"clickShowFilters\"\n >\n <div>{{ t(\"Advanced filters\") }}</div>\n <ChevronDownIcon :class=\"{ 'arrow-transform': showFilters }\" />\n </button>\n\n <!-- Filters -->\n <Transition name=\"advanced-search\">\n <div\n v-if=\"firstLoaded\"\n v-show=\"showFilters\"\n class=\"advanced-search-container\"\n >\n <fieldset class=\"d-flex flex-column flex-grow-3\">\n <legend class=\"text-primary mb-2\">\n {{ t(\"Filter\") }}\n </legend>\n <MonetizableFilter\n v-if=\"!isPodcastmaker && !generalStore.platformEducation\"\n :is-emission=\"isEmission\"\n :monetisable=\"monetisable\"\n @update:monetisable=\"updateMonetisable\"\n />\n <CategorySearchFilter\n v-if=\"state.advancedSearch?.disableIabFiltering !== true\"\n :iab-id=\"iabId\"\n class=\"mb-3\"\n @update:iab-id=\"updateIab\"\n />\n <RubriqueFilter\n :rubrique-filter=\"rubriqueFilter\"\n @update:rubrique-filter=\"updateRubriquageFilter\"\n />\n\n <!-- Group filters -->\n <div v-if=\"showEmissionGroups\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n v-model:text-init=\"emissionGroupCheckbox\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-emission-groups-checkbox\"\n :label=\"t('Filters - Emission groups')\"\n />\n\n <EmissionGroupChooser\n v-if=\"emissionGroupCheckbox\"\n class=\"ms-4 flex-grow-1\"\n :organisation-id=\"organisationId\"\n :groups=\"emissionGroups\"\n @update:groups=\"updateEmissionGroupFilter\"\n />\n </div>\n\n <!-- Date -->\n <DateFilter\n :is-emission=\"isEmission\"\n :from-date=\"fromDate\"\n :to-date=\"toDate\"\n @update-dates=\"updateDates($event)\"\n />\n\n <!-- Rights holders/beneficiaries -->\n <div v-if=\"beneficiariesEnabled\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n :text-init=\"beneficiaries !== null && beneficiaries !== undefined\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-beneficiaries-checkbox\"\n :label=\"t('Filters - Beneficiaries')\"\n @update:text-init=\"updateBeneficiariesCheckbox\"\n />\n\n <ClassicTagInput\n v-if=\"beneficiaries !== null && beneficiaries !== undefined\"\n class=\"ms-4 flex-grow-1\"\n :tags=\"beneficiaries\"\n @update:tags=\"updateBeneficiaries\"\n />\n </div>\n\n <!-- 14876 - Only my episodes -->\n <div v-if=\"!isEmission && !isPodcastmaker\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n :text-init=\"onlyMyEpisodes\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-onlymine-checkbox\"\n :label=\"t('Filters - Only my episodes')\"\n @update:text-init=\"updateOnlyMineCheckbox\"\n />\n </div>\n\n <div\n v-if=\"organisation && organisationRight && !isPodcastmaker\"\n class=\"d-flex flex-column mt-3\"\n >\n <ClassicCheckbox\n :text-init=\"includeHidden\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-future-checkbox\"\n :label=\"textNotVisible\"\n :is-disabled=\"isSelectValidity && 'true'!==validity\"\n @update:text-init=\"updateIncludeHidden\"\n />\n </div>\n\n <ClassicSelect\n v-if=\"isSelectValidity\"\n :text-init=\"validity\"\n id-select=\"valid-episodes-select\"\n :label=\"t('Episodes to validate')+' :'\"\n :display-label=\"true\"\n class-label=\"flex-shrink-0 me-1\"\n class=\"d-flex align-items-center mt-3 mb-0\"\n :options=\"[\n { title: t('Display only episodes to validate'), value: 'false' },\n { title: t('Display episodes to validate'), value: '' },\n { title: t('Do not display episodes to validate'), value: 'true' },\n ]\"\n @update:text-init=\"updateValidity\"\n />\n\n <!-- Only with video -->\n <ClassicCheckbox\n v-if=\"!isEmission\"\n :text-init=\"onlyVideo\"\n class=\"flex-shrink-0 mt-3\"\n id-checkbox=\"only-video-checkbox\"\n :label=\"t('Show only episodes with video')\"\n @update:text-init=\"updateOnlyVideo\"\n />\n </fieldset>\n\n <!-- Sort -->\n <SearchOrder\n :is-emission=\"isEmission\"\n :sort=\"sort\"\n @update:sort=\"updateSort\"\n />\n </div>\n </Transition>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { useRubriquesFilterParam } from \"../../composable/route/useRubriquesFilterParam\";\nimport { RubriquageFilter } from \"@/stores/class/rubrique/rubriquageFilter\";\nimport { defineAsyncComponent, ref, computed, watch, onMounted } from \"vue\";\nimport { useGeneralStore } from \"../../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { state } from \"@/stores/ParamSdkStore\";\nconst MonetizableFilter = defineAsyncComponent(\n () => import(\"./MonetizableFilter.vue\"),\n);\nconst CategorySearchFilter = defineAsyncComponent(\n () => import(\"./CategorySearchFilter.vue\"),\n);\nconst RubriqueFilter = defineAsyncComponent(\n () => import(\"./RubriqueFilter.vue\"),\n);\nconst ClassicSelect = defineAsyncComponent(\n () => import(\"../../form/ClassicSelect.vue\"),\n);\nconst ClassicTagInput = defineAsyncComponent(\n () => import(\"../../form/ClassicTagInput.vue\"),\n);\nconst ClassicCheckbox = defineAsyncComponent(\n () => import(\"../../form/ClassicCheckbox.vue\"),\n);\nconst DateFilter = defineAsyncComponent(() => import(\"./DateFilter.vue\"));\nconst SearchOrder = defineAsyncComponent(() => import(\"./SearchOrder.vue\"));\nimport { ROUTE_PARAMS } from '../../composable/route/types';\nimport { EmissionGroup, groupsApi } from \"../../../api/groupsApi\";\nimport EmissionGroupChooser from \"../emission/EmissionGroupChooser.vue\";\n\n//Props \nconst props = withDefaults(defineProps<{\n organisationId?: string;\n /** Indicates that the filters apply to emissions */\n isEmission?: boolean;\n includeHidden?: boolean;\n sort?: string;\n onlyVideo?: boolean;\n monetisable?: string;\n iabId?: number;\n searchPattern?: string;\n fromDate?: string;\n toDate?: string;\n validity?: string;\n /** The filter on beneficiaries */\n beneficiaries?: Array<string>;\n /** The filter for only my episodes */\n onlyMyEpisodes?: boolean;\n rubriqueFilter?: Array<RubriquageFilter>;\n /** The filter on groups */\n emissionGroups?: Array<EmissionGroup>;\n /** Force hide the emission group filter */\n hideEmissionGroups?: boolean;\n}>(), {\n sort: \"DATE\",\n monetisable: \"UNDEFINED\",\n searchPattern: \"\",\n validity: \"\"\n});\n\n//Emits\nconst emit = defineEmits([\n \"update:toDate\",\n \"update:fromDate\",\n \"update:monetisable\",\n \"update:iabId\",\n \"update:sort\",\n \"update:includeHidden\",\n \"update:validity\",\n \"update:rubriqueFilter\",\n \"update:onlyVideo\",\n \"update:beneficiaries\",\n \"update:emission-groups\",\n \"update:only-my-episodes\"\n]);\n\n//Data \nconst showFilters = ref(false);\nconst firstLoaded = ref(false);\nconst showEmissionGroups = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights } = useOrgaComputed();\nconst { stringifyRubriquesFilter,updateRouteParamAdvanced } = useRubriquesFilterParam();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\n\nonMounted(async() => {\n if (props.hideEmissionGroups) {\n showEmissionGroups.value = false;\n return;\n }\n // Only show emission groups if there are some\n const nbGroups = await groupsApi.count({\n organisationIds: [props.organisationId]\n });\n showEmissionGroups.value = nbGroups > 0;\n});\n\n//Computed\nconst organisationRight = computed(() => isEditRights(props.organisationId));\nconst organisation = computed(() => props.organisationId ?? filterStore.filterOrgaId);\nconst textNotVisible = computed(() => props.isEmission ? t(\"Consider podcasts no visible\"): t(\"See podcasts no visible\"));\nconst isSelectValidity = computed(() => {\n return (\n undefined !== organisation.value &&\n organisationRight.value &&\n (authStore.isRoleContribution || authStore.isRolePublication) &&\n !isPodcastmaker.value &&\n !props.isEmission &&\n props.includeHidden\n );\n});\n\n/** The beneficiaries filter is only displayed if beneficiaries are enabled */\nconst beneficiariesEnabled = computed(() => {\n return authStore.authOrganisation.attributes['beneficiaries.enabled'] === 'true';\n});\n\n//Watch\nwatch(organisation, async () => {\n const hidden = undefined !== organisation.value && organisationRight.value && !props.isEmission;\n if (hidden !== props.includeHidden) {\n updateIncludeHidden(hidden);\n }\n});\n\nwatch(()=>props.searchPattern, (value: string) => {\n const search = value.trim();\n let valSort = \"SCORE\"\n if(search.length <= 3){\n valSort = props.isEmission? \"LAST_PODCAST_DESC\" : \"DATE\";\n }\n updateRouteParamAdvanced({\n q: search.length ? search : undefined,\n s: valSort,\n });\n});\n\n//Methods\nfunction updateMonetisable(value: string): void {\n emit(\"update:monetisable\", value);\n updateRouteParamAdvanced({ m: \"UNDEFINED\" !== value ? value : undefined });\n}\n\nfunction updateIab(value: number | undefined) {\n emit(\"update:iabId\", 0 !== value ? value : undefined);\n let filterIab = {};\n if (filterStore.filterIab && filterStore.filterIab.id !== value) {\n filterIab = { iabId: undefined };\n }\n updateRouteParamAdvanced({\n ...{ i: value ? value.toString() : undefined },\n ...filterIab,\n });\n}\n\nfunction updateSort(value: string) {\n emit(\"update:sort\", value);\n updateRouteParamAdvanced({ s: value });\n}\n\nfunction updateIncludeHidden(value: boolean) {\n emit(\"update:includeHidden\", value);\n updateRouteParamAdvanced({ h: value.toString() });\n}\n\nfunction updateValidity(value: boolean) {\n emit(\"update:validity\", value);\n updateRouteParamAdvanced({ vl: value.toString() });\n}\n\nfunction updateOnlyVideo(value: boolean) {\n emit(\"update:onlyVideo\", value);\n updateRouteParamAdvanced({ v: value ? \"true\" : undefined });\n}\n\nfunction updateDates(value: {\n from: string | undefined;\n to: string | undefined;\n}): void {\n emit(\"update:fromDate\", value.from);\n emit(\"update:toDate\", value.to);\n updateRouteParamAdvanced({ from: value.from, to: value.to });\n}\n\nfunction updateRubriquageFilter(value: Array<RubriquageFilter>) {\n emit(\"update:rubriqueFilter\", value);\n let filterRubriques = {};\n const valueString = stringifyRubriquesFilter(value);\n if (\n filterStore.filterRubrique.length &&\n stringifyRubriquesFilter(filterStore.filterRubrique) !== valueString\n ) {\n filterRubriques = { rubriquesId: undefined };\n }\n updateRouteParamAdvanced({\n r: valueString.length ? valueString : undefined,\n ...filterRubriques,\n });\n}\n\n/** Manage the checkbox enabling filtering on groups */\nconst emissionGroupCheckbox = computed({\n get(): boolean {\n return props.emissionGroups !== undefined && props.emissionGroups !== null;\n },\n set(value: boolean): void {\n if (value) {\n updateEmissionGroupFilter([]);\n } else {\n updateEmissionGroupFilter(undefined);\n }\n }\n});\n\n/** Update selected groups */\nfunction updateEmissionGroupFilter(groups: Array<EmissionGroup>|undefined): void {\n if (groups !== undefined && groups.length === 0) {\n emit('update:emission-groups', []);\n } else {\n updateRouteParamAdvanced({\n [ROUTE_PARAMS.EmissionGroups]: groups?.map(g => g.groupId)\n });\n emit('update:emission-groups', groups);\n }\n}\n\n/** Update the beneficiaries filter */\nfunction updateBeneficiaries(value: string[]|undefined): void {\n emit('update:beneficiaries', value);\n if (value === undefined) {\n updateRouteParamAdvanced({ [ROUTE_PARAMS.Beneficiaries]: undefined });\n } else {\n updateRouteParamAdvanced({ [ROUTE_PARAMS.Beneficiaries]: value });\n }\n}\n\n/** Update the value of the beneficiaries checkbox */\nfunction updateBeneficiariesCheckbox(value: boolean): void {\n if (value === true) {\n emit('update:beneficiaries', []);\n } else {\n updateBeneficiaries(undefined);\n }\n}\n\n/** Update the value of the 'only mine' checkbox */\nfunction updateOnlyMineCheckbox(value: boolean): void {\n emit('update:only-my-episodes', value);\n updateRouteParamAdvanced({\n [ROUTE_PARAMS.OnlyMyEpisodes]: value || undefined\n });\n}\n\nfunction clickShowFilters(): void {\n if (!firstLoaded.value) {\n firstLoaded.value = true;\n }\n showFilters.value = !showFilters.value;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n .advanced-search-container {\n background: var(--octopus-background);\n display: flex;\n width: 100%;\n padding-bottom: 1rem;\n justify-content: space-around;\n\n @media (width <= 720px) {\n flex-wrap: wrap;\n }\n }\n\n .advanced-search-enter-active,\n .advanced-search-leave-active {\n transition: 0.3s all;\n opacity: 1;\n max-height: 900px;\n height: auto;\n overflow: hidden;\n }\n\n .advanced-search-enter-from,\n .advanced-search-leave-to {\n opacity: 0;\n max-height: 0;\n overflow: hidden;\n }\n}\n</style>\n","<template>\n <div id=\"advanced-search\" class=\"d-flex flex-column justify-content-center align-items-center\">\n <!-- Button to open the advanced filters -->\n <button\n class=\"d-flex justify-content-center align-items-center mb-3 text-secondary btn-transparent\"\n @click=\"clickShowFilters\"\n >\n <div>{{ t(\"Advanced filters\") }}</div>\n <ChevronDownIcon :class=\"{ 'arrow-transform': showFilters }\" />\n </button>\n\n <!-- Filters -->\n <Transition name=\"advanced-search\">\n <div\n v-if=\"firstLoaded\"\n v-show=\"showFilters\"\n class=\"advanced-search-container\"\n >\n <fieldset class=\"d-flex flex-column flex-grow-3\">\n <legend class=\"text-primary mb-2\">\n {{ t(\"Filter\") }}\n </legend>\n <MonetizableFilter\n v-if=\"!isPodcastmaker && !generalStore.platformEducation\"\n :is-emission=\"isEmission\"\n :monetisable=\"monetisable\"\n @update:monetisable=\"updateMonetisable\"\n />\n <CategorySearchFilter\n v-if=\"state.advancedSearch?.disableIabFiltering !== true\"\n :iab-id=\"iabId\"\n class=\"mb-3\"\n @update:iab-id=\"updateIab\"\n />\n <RubriqueFilter\n :rubrique-filter=\"rubriqueFilter\"\n @update:rubrique-filter=\"updateRubriquageFilter\"\n />\n\n <!-- Group filters -->\n <div v-if=\"showEmissionGroups\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n v-model:text-init=\"emissionGroupCheckbox\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-emission-groups-checkbox\"\n :label=\"t('Filters - Emission groups')\"\n />\n\n <EmissionGroupChooser\n v-if=\"emissionGroupCheckbox\"\n class=\"ms-4 flex-grow-1\"\n :organisation-id=\"organisationId\"\n :groups=\"emissionGroups\"\n @update:groups=\"updateEmissionGroupFilter\"\n />\n </div>\n\n <!-- Date -->\n <DateFilter\n :is-emission=\"isEmission\"\n :from-date=\"fromDate\"\n :to-date=\"toDate\"\n @update-dates=\"updateDates($event)\"\n />\n\n <!-- Rights holders/beneficiaries -->\n <div v-if=\"beneficiariesEnabled\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n :text-init=\"beneficiaries !== null && beneficiaries !== undefined\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-beneficiaries-checkbox\"\n :label=\"t('Filters - Beneficiaries')\"\n @update:text-init=\"updateBeneficiariesCheckbox\"\n />\n\n <ClassicTagInput\n v-if=\"beneficiaries !== null && beneficiaries !== undefined\"\n class=\"ms-4 flex-grow-1\"\n :tags=\"beneficiaries\"\n @update:tags=\"updateBeneficiaries\"\n />\n </div>\n\n <!-- 14876 - Only my episodes -->\n <div v-if=\"!isEmission && !isPodcastmaker\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n :text-init=\"onlyMyEpisodes\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-onlymine-checkbox\"\n :label=\"t('Filters - Only my episodes')\"\n @update:text-init=\"updateOnlyMineCheckbox\"\n />\n </div>\n\n <div\n v-if=\"organisation && organisationRight && !isPodcastmaker\"\n class=\"d-flex flex-column mt-3\"\n >\n <ClassicCheckbox\n :text-init=\"includeHidden\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-future-checkbox\"\n :label=\"textNotVisible\"\n :is-disabled=\"isSelectValidity && 'true'!==validity\"\n @update:text-init=\"updateIncludeHidden\"\n />\n </div>\n\n <ClassicSelect\n v-if=\"isSelectValidity\"\n :text-init=\"validity\"\n id-select=\"valid-episodes-select\"\n :label=\"t('Episodes to validate')+' :'\"\n :display-label=\"true\"\n class-label=\"flex-shrink-0 me-1\"\n class=\"d-flex align-items-center mt-3 mb-0\"\n :options=\"[\n { title: t('Display only episodes to validate'), value: 'false' },\n { title: t('Display episodes to validate'), value: '' },\n { title: t('Do not display episodes to validate'), value: 'true' },\n ]\"\n @update:text-init=\"updateValidity\"\n />\n\n <!-- Only with video -->\n <ClassicCheckbox\n v-if=\"!isEmission\"\n :text-init=\"onlyVideo\"\n class=\"flex-shrink-0 mt-3\"\n id-checkbox=\"only-video-checkbox\"\n :label=\"t('Show only episodes with video')\"\n @update:text-init=\"updateOnlyVideo\"\n />\n </fieldset>\n\n <!-- Sort -->\n <SearchOrder\n :is-emission=\"isEmission\"\n :sort=\"sort\"\n @update:sort=\"updateSort\"\n />\n </div>\n </Transition>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { useRubriquesFilterParam } from \"../../composable/route/useRubriquesFilterParam\";\nimport { RubriquageFilter } from \"@/stores/class/rubrique/rubriquageFilter\";\nimport { defineAsyncComponent, ref, computed, watch, onMounted } from \"vue\";\nimport { useGeneralStore } from \"../../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { state } from \"@/stores/ParamSdkStore\";\nconst MonetizableFilter = defineAsyncComponent(\n () => import(\"./MonetizableFilter.vue\"),\n);\nconst CategorySearchFilter = defineAsyncComponent(\n () => import(\"./CategorySearchFilter.vue\"),\n);\nconst RubriqueFilter = defineAsyncComponent(\n () => import(\"./RubriqueFilter.vue\"),\n);\nconst ClassicSelect = defineAsyncComponent(\n () => import(\"../../form/ClassicSelect.vue\"),\n);\nconst ClassicTagInput = defineAsyncComponent(\n () => import(\"../../form/ClassicTagInput.vue\"),\n);\nconst ClassicCheckbox = defineAsyncComponent(\n () => import(\"../../form/ClassicCheckbox.vue\"),\n);\nconst DateFilter = defineAsyncComponent(() => import(\"./DateFilter.vue\"));\nconst SearchOrder = defineAsyncComponent(() => import(\"./SearchOrder.vue\"));\nimport { ROUTE_PARAMS } from '../../composable/route/types';\nimport { EmissionGroup, groupsApi } from \"../../../api/groupsApi\";\nimport EmissionGroupChooser from \"../emission/EmissionGroupChooser.vue\";\n\n//Props \nconst props = withDefaults(defineProps<{\n organisationId?: string;\n /** Indicates that the filters apply to emissions */\n isEmission?: boolean;\n includeHidden?: boolean;\n sort?: string;\n onlyVideo?: boolean;\n monetisable?: string;\n iabId?: number;\n searchPattern?: string;\n fromDate?: string;\n toDate?: string;\n validity?: string;\n /** The filter on beneficiaries */\n beneficiaries?: Array<string>;\n /** The filter for only my episodes */\n onlyMyEpisodes?: boolean;\n rubriqueFilter?: Array<RubriquageFilter>;\n /** The filter on groups */\n emissionGroups?: Array<EmissionGroup>;\n /** Force hide the emission group filter */\n hideEmissionGroups?: boolean;\n}>(), {\n sort: \"DATE\",\n monetisable: \"UNDEFINED\",\n searchPattern: \"\",\n validity: \"\"\n});\n\n//Emits\nconst emit = defineEmits([\n \"update:toDate\",\n \"update:fromDate\",\n \"update:monetisable\",\n \"update:iabId\",\n \"update:sort\",\n \"update:includeHidden\",\n \"update:validity\",\n \"update:rubriqueFilter\",\n \"update:onlyVideo\",\n \"update:beneficiaries\",\n \"update:emission-groups\",\n \"update:only-my-episodes\"\n]);\n\n//Data \nconst showFilters = ref(false);\nconst firstLoaded = ref(false);\nconst showEmissionGroups = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights } = useOrgaComputed();\nconst { stringifyRubriquesFilter,updateRouteParamAdvanced } = useRubriquesFilterParam();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\n\nonMounted(async() => {\n if (props.hideEmissionGroups) {\n showEmissionGroups.value = false;\n return;\n }\n // Only show emission groups if there are some\n const nbGroups = await groupsApi.count({\n organisationIds: [props.organisationId]\n });\n showEmissionGroups.value = nbGroups > 0;\n});\n\n//Computed\nconst organisationRight = computed(() => isEditRights(props.organisationId));\nconst organisation = computed(() => props.organisationId ?? filterStore.filterOrgaId);\nconst textNotVisible = computed(() => props.isEmission ? t(\"Consider podcasts no visible\"): t(\"See podcasts no visible\"));\nconst isSelectValidity = computed(() => {\n return (\n undefined !== organisation.value &&\n organisationRight.value &&\n (authStore.isRoleContribution || authStore.isRolePublication) &&\n !isPodcastmaker.value &&\n !props.isEmission &&\n props.includeHidden\n );\n});\n\n/** The beneficiaries filter is only displayed if beneficiaries are enabled */\nconst beneficiariesEnabled = computed(() => {\n return authStore.authOrganisation.attributes['beneficiaries.enabled'] === 'true';\n});\n\n//Watch\nwatch(organisation, async () => {\n const hidden = undefined !== organisation.value && organisationRight.value && !props.isEmission;\n if (hidden !== props.includeHidden) {\n updateIncludeHidden(hidden);\n }\n});\n\nwatch(()=>props.searchPattern, (value: string) => {\n const search = value.trim();\n let valSort = \"SCORE\"\n if(search.length <= 3){\n valSort = props.isEmission? \"LAST_PODCAST_DESC\" : \"DATE\";\n }\n updateRouteParamAdvanced({\n q: search.length ? search : undefined,\n s: valSort,\n });\n});\n\n//Methods\nfunction updateMonetisable(value: string): void {\n emit(\"update:monetisable\", value);\n updateRouteParamAdvanced({ m: \"UNDEFINED\" !== value ? value : undefined });\n}\n\nfunction updateIab(value: number | undefined) {\n emit(\"update:iabId\", 0 !== value ? value : undefined);\n let filterIab = {};\n if (filterStore.filterIab && filterStore.filterIab.id !== value) {\n filterIab = { iabId: undefined };\n }\n updateRouteParamAdvanced({\n ...{ i: value ? value.toString() : undefined },\n ...filterIab,\n });\n}\n\nfunction updateSort(value: string) {\n emit(\"update:sort\", value);\n updateRouteParamAdvanced({ s: value });\n}\n\nfunction updateIncludeHidden(value: boolean) {\n emit(\"update:includeHidden\", value);\n updateRouteParamAdvanced({ h: value.toString() });\n}\n\nfunction updateValidity(value: boolean) {\n emit(\"update:validity\", value);\n updateRouteParamAdvanced({ vl: value.toString() });\n}\n\nfunction updateOnlyVideo(value: boolean) {\n emit(\"update:onlyVideo\", value);\n updateRouteParamAdvanced({ v: value ? \"true\" : undefined });\n}\n\nfunction updateDates(value: {\n from: string | undefined;\n to: string | undefined;\n}): void {\n emit(\"update:fromDate\", value.from);\n emit(\"update:toDate\", value.to);\n updateRouteParamAdvanced({ from: value.from, to: value.to });\n}\n\nfunction updateRubriquageFilter(value: Array<RubriquageFilter>) {\n emit(\"update:rubriqueFilter\", value);\n let filterRubriques = {};\n const valueString = stringifyRubriquesFilter(value);\n if (\n filterStore.filterRubrique.length &&\n stringifyRubriquesFilter(filterStore.filterRubrique) !== valueString\n ) {\n filterRubriques = { rubriquesId: undefined };\n }\n updateRouteParamAdvanced({\n r: valueString.length ? valueString : undefined,\n ...filterRubriques,\n });\n}\n\n/** Manage the checkbox enabling filtering on groups */\nconst emissionGroupCheckbox = computed({\n get(): boolean {\n return props.emissionGroups !== undefined && props.emissionGroups !== null;\n },\n set(value: boolean): void {\n if (value) {\n updateEmissionGroupFilter([]);\n } else {\n updateEmissionGroupFilter(undefined);\n }\n }\n});\n\n/** Update selected groups */\nfunction updateEmissionGroupFilter(groups: Array<EmissionGroup>|undefined): void {\n if (groups !== undefined && groups.length === 0) {\n emit('update:emission-groups', []);\n } else {\n updateRouteParamAdvanced({\n [ROUTE_PARAMS.EmissionGroups]: groups?.map(g => g.groupId)\n });\n emit('update:emission-groups', groups);\n }\n}\n\n/** Update the beneficiaries filter */\nfunction updateBeneficiaries(value: string[]|undefined): void {\n emit('update:beneficiaries', value);\n if (value === undefined) {\n updateRouteParamAdvanced({ [ROUTE_PARAMS.Beneficiaries]: undefined });\n } else {\n updateRouteParamAdvanced({ [ROUTE_PARAMS.Beneficiaries]: value });\n }\n}\n\n/** Update the value of the beneficiaries checkbox */\nfunction updateBeneficiariesCheckbox(value: boolean): void {\n if (value === true) {\n emit('update:beneficiaries', []);\n } else {\n updateBeneficiaries(undefined);\n }\n}\n\n/** Update the value of the 'only mine' checkbox */\nfunction updateOnlyMineCheckbox(value: boolean): void {\n emit('update:only-my-episodes', value);\n updateRouteParamAdvanced({\n [ROUTE_PARAMS.OnlyMyEpisodes]: value || undefined\n });\n}\n\nfunction clickShowFilters(): void {\n if (!firstLoaded.value) {\n firstLoaded.value = true;\n }\n showFilters.value = !showFilters.value;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n .advanced-search-container {\n background: var(--octopus-background);\n display: flex;\n width: 100%;\n padding-bottom: 1rem;\n justify-content: space-around;\n\n @media (width <= 720px) {\n flex-wrap: wrap;\n }\n }\n\n .advanced-search-enter-active,\n .advanced-search-leave-active {\n transition: 0.3s all;\n opacity: 1;\n max-height: 900px;\n height: auto;\n overflow: hidden;\n }\n\n .advanced-search-enter-from,\n .advanced-search-leave-to {\n opacity: 0;\n max-height: 0;\n overflow: hidden;\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdvancedSearch-zFJq-WlO.mjs","names":["_openBlock","_createElementBlock","_createCommentVNode","_createElementVNode","_toDisplayString","_createVNode","_normalizeClass","_Transition","_withCtx","_withDirectives","_createBlock","_vShow","_sfc_main"],"sources":["../src/components/display/filter/AdvancedSearch.vue","../src/components/display/filter/AdvancedSearch.vue"],"sourcesContent":["<template>\n <div id=\"advanced-search\" class=\"d-flex flex-column justify-content-center align-items-center\">\n <!-- Button to open the advanced filters -->\n <button\n class=\"d-flex justify-content-center align-items-center mb-3 text-secondary btn-transparent\"\n @click=\"clickShowFilters\"\n >\n <div>{{ t(\"Advanced filters\") }}</div>\n <ChevronDownIcon :class=\"{ 'arrow-transform': showFilters }\" />\n </button>\n\n <!-- Filters -->\n <Transition name=\"advanced-search\">\n <div\n v-if=\"firstLoaded\"\n v-show=\"showFilters\"\n class=\"advanced-search-container\"\n >\n <fieldset class=\"d-flex flex-column flex-grow-3\">\n <legend class=\"text-primary mb-2\">\n {{ t(\"Filter\") }}\n </legend>\n <MonetizableFilter\n v-if=\"!isPodcastmaker && !generalStore.platformEducation\"\n :is-emission=\"isEmission\"\n :monetisable=\"monetisable\"\n @update:monetisable=\"updateMonetisable\"\n />\n <CategorySearchFilter\n v-if=\"state.advancedSearch?.disableIabFiltering !== true\"\n :iab-id=\"iabId\"\n class=\"mb-3\"\n @update:iab-id=\"updateIab\"\n />\n <RubriqueFilter\n :rubrique-filter=\"rubriqueFilter\"\n @update:rubrique-filter=\"updateRubriquageFilter\"\n />\n\n <!-- Group filters -->\n <div v-if=\"showEmissionGroups\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n v-model:text-init=\"emissionGroupCheckbox\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-emission-groups-checkbox\"\n :label=\"t('Filters - Emission groups')\"\n />\n\n <EmissionGroupChooser\n v-if=\"emissionGroupCheckbox\"\n class=\"ms-4 flex-grow-1\"\n :organisation-id=\"organisationId\"\n :groups=\"emissionGroups\"\n @update:groups=\"updateEmissionGroupFilter\"\n />\n </div>\n\n <!-- Date -->\n <DateFilter\n :is-emission=\"isEmission\"\n :from-date=\"fromDate\"\n :to-date=\"toDate\"\n @update-dates=\"updateDates($event)\"\n />\n\n <!-- Rights holders/beneficiaries -->\n <div v-if=\"beneficiariesEnabled\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n :text-init=\"beneficiaries !== null && beneficiaries !== undefined\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-beneficiaries-checkbox\"\n :label=\"t('Filters - Beneficiaries')\"\n @update:text-init=\"updateBeneficiariesCheckbox\"\n />\n\n <ClassicTagInput\n v-if=\"beneficiaries !== null && beneficiaries !== undefined\"\n class=\"ms-4 flex-grow-1\"\n :tags=\"beneficiaries\"\n @update:tags=\"updateBeneficiaries\"\n />\n </div>\n\n <!-- 14876 - Only my episodes -->\n <div v-if=\"!isEmission && !isPodcastmaker\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n :text-init=\"onlyMyEpisodes\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-onlymine-checkbox\"\n :label=\"t('Filters - Only my episodes')\"\n @update:text-init=\"updateOnlyMineCheckbox\"\n />\n </div>\n\n <div\n v-if=\"organisation && organisationRight && !isPodcastmaker\"\n class=\"d-flex flex-column mt-3\"\n >\n <ClassicCheckbox\n :text-init=\"includeHidden\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-future-checkbox\"\n :label=\"textNotVisible\"\n :is-disabled=\"isSelectValidity && 'true'!==validity\"\n @update:text-init=\"updateIncludeHidden\"\n />\n </div>\n\n <ClassicSelect\n v-if=\"isSelectValidity\"\n :text-init=\"validity\"\n id-select=\"valid-episodes-select\"\n :label=\"t('Episodes to validate')+' :'\"\n :display-label=\"true\"\n class-label=\"flex-shrink-0 me-1\"\n class=\"d-flex align-items-center mt-3 mb-0\"\n :options=\"[\n { title: t('Display only episodes to validate'), value: 'false' },\n { title: t('Display episodes to validate'), value: '' },\n { title: t('Do not display episodes to validate'), value: 'true' },\n ]\"\n @update:text-init=\"updateValidity\"\n />\n\n <!-- Only with video -->\n <ClassicCheckbox\n v-if=\"!isEmission\"\n :text-init=\"onlyVideo\"\n class=\"flex-shrink-0 mt-3\"\n id-checkbox=\"only-video-checkbox\"\n :label=\"t('Show only episodes with video')\"\n @update:text-init=\"updateOnlyVideo\"\n />\n </fieldset>\n\n <!-- Sort -->\n <SearchOrder\n :is-emission=\"isEmission\"\n :sort=\"sort\"\n @update:sort=\"updateSort\"\n />\n </div>\n </Transition>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { useRubriquesFilterParam } from \"../../composable/route/useRubriquesFilterParam\";\nimport { RubriquageFilter } from \"@/stores/class/rubrique/rubriquageFilter\";\nimport { defineAsyncComponent, ref, computed, watch, onMounted } from \"vue\";\nimport { useGeneralStore } from \"../../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { state } from \"@/stores/ParamSdkStore\";\nconst MonetizableFilter = defineAsyncComponent(\n () => import(\"./MonetizableFilter.vue\"),\n);\nconst CategorySearchFilter = defineAsyncComponent(\n () => import(\"./CategorySearchFilter.vue\"),\n);\nconst RubriqueFilter = defineAsyncComponent(\n () => import(\"./RubriqueFilter.vue\"),\n);\nconst ClassicSelect = defineAsyncComponent(\n () => import(\"../../form/ClassicSelect.vue\"),\n);\nconst ClassicTagInput = defineAsyncComponent(\n () => import(\"../../form/ClassicTagInput.vue\"),\n);\nconst ClassicCheckbox = defineAsyncComponent(\n () => import(\"../../form/ClassicCheckbox.vue\"),\n);\nconst DateFilter = defineAsyncComponent(() => import(\"./DateFilter.vue\"));\nconst SearchOrder = defineAsyncComponent(() => import(\"./SearchOrder.vue\"));\nimport { ROUTE_PARAMS } from '../../composable/route/types';\nimport { EmissionGroup, groupsApi } from \"../../../api/groupsApi\";\nimport EmissionGroupChooser from \"../emission/EmissionGroupChooser.vue\";\n\n//Props \nconst props = withDefaults(defineProps<{\n organisationId?: string;\n /** Indicates that the filters apply to emissions */\n isEmission?: boolean;\n includeHidden?: boolean;\n sort?: string;\n onlyVideo?: boolean;\n monetisable?: string;\n iabId?: number;\n searchPattern?: string;\n fromDate?: string;\n toDate?: string;\n validity?: string;\n /** The filter on beneficiaries */\n beneficiaries?: Array<string>;\n /** The filter for only my episodes */\n onlyMyEpisodes?: boolean;\n rubriqueFilter?: Array<RubriquageFilter>;\n /** The filter on groups */\n emissionGroups?: Array<EmissionGroup>;\n /** Force hide the emission group filter */\n hideEmissionGroups?: boolean;\n}>(), {\n sort: \"DATE\",\n monetisable: \"UNDEFINED\",\n searchPattern: \"\",\n validity: \"\"\n});\n\n//Emits\nconst emit = defineEmits([\n \"update:toDate\",\n \"update:fromDate\",\n \"update:monetisable\",\n \"update:iabId\",\n \"update:sort\",\n \"update:includeHidden\",\n \"update:validity\",\n \"update:rubriqueFilter\",\n \"update:onlyVideo\",\n \"update:beneficiaries\",\n \"update:emission-groups\",\n \"update:only-my-episodes\"\n]);\n\n//Data \nconst showFilters = ref(false);\nconst firstLoaded = ref(false);\nconst showEmissionGroups = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights } = useOrgaComputed();\nconst { stringifyRubriquesFilter,updateRouteParamAdvanced } = useRubriquesFilterParam();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\n\nonMounted(async() => {\n if (props.hideEmissionGroups) {\n showEmissionGroups.value = false;\n return;\n }\n // Only show emission groups if there are some\n const nbGroups = await groupsApi.count({\n organisationIds: [props.organisationId]\n });\n showEmissionGroups.value = nbGroups > 0;\n});\n\n//Computed\nconst organisationRight = computed(() => isEditRights(props.organisationId));\nconst organisation = computed(() => props.organisationId ?? filterStore.filterOrgaId);\nconst textNotVisible = computed(() => props.isEmission ? t(\"Consider podcasts no visible\"): t(\"See podcasts no visible\"));\nconst isSelectValidity = computed(() => {\n return (\n undefined !== organisation.value &&\n organisationRight.value &&\n (authStore.isRoleContribution || authStore.isRolePublication) &&\n !isPodcastmaker.value &&\n !props.isEmission &&\n props.includeHidden\n );\n});\n\n/** The beneficiaries filter is only displayed if beneficiaries are enabled */\nconst beneficiariesEnabled = computed(() => {\n return authStore.authOrganisation.attributes['beneficiaries.enabled'] === 'true';\n});\n\n//Watch\nwatch(organisation, async () => {\n const hidden = undefined !== organisation.value && organisationRight.value && !props.isEmission;\n if (hidden !== props.includeHidden) {\n updateIncludeHidden(hidden);\n }\n});\n\nwatch(()=>props.searchPattern, (value: string) => {\n const search = value.trim();\n let valSort = \"SCORE\"\n if(search.length <= 3){\n valSort = props.isEmission? \"LAST_PODCAST_DESC\" : \"DATE\";\n }\n updateRouteParamAdvanced({\n q: search.length ? search : undefined,\n s: valSort,\n });\n});\n\n//Methods\nfunction updateMonetisable(value: string): void {\n emit(\"update:monetisable\", value);\n updateRouteParamAdvanced({ m: \"UNDEFINED\" !== value ? value : undefined });\n}\n\nfunction updateIab(value: number | undefined) {\n emit(\"update:iabId\", 0 !== value ? value : undefined);\n let filterIab = {};\n if (filterStore.filterIab && filterStore.filterIab.id !== value) {\n filterIab = { iabId: undefined };\n }\n updateRouteParamAdvanced({\n ...{ i: value ? value.toString() : undefined },\n ...filterIab,\n });\n}\n\nfunction updateSort(value: string) {\n emit(\"update:sort\", value);\n updateRouteParamAdvanced({ s: value });\n}\n\nfunction updateIncludeHidden(value: boolean) {\n emit(\"update:includeHidden\", value);\n updateRouteParamAdvanced({ h: value.toString() });\n}\n\nfunction updateValidity(value: boolean) {\n emit(\"update:validity\", value);\n updateRouteParamAdvanced({ vl: value.toString() });\n}\n\nfunction updateOnlyVideo(value: boolean) {\n emit(\"update:onlyVideo\", value);\n updateRouteParamAdvanced({ v: value ? \"true\" : undefined });\n}\n\nfunction updateDates(value: {\n from: string | undefined;\n to: string | undefined;\n}): void {\n emit(\"update:fromDate\", value.from);\n emit(\"update:toDate\", value.to);\n updateRouteParamAdvanced({ from: value.from, to: value.to });\n}\n\nfunction updateRubriquageFilter(value: Array<RubriquageFilter>) {\n emit(\"update:rubriqueFilter\", value);\n let filterRubriques = {};\n const valueString = stringifyRubriquesFilter(value);\n if (\n filterStore.filterRubrique.length &&\n stringifyRubriquesFilter(filterStore.filterRubrique) !== valueString\n ) {\n filterRubriques = { rubriquesId: undefined };\n }\n updateRouteParamAdvanced({\n r: valueString.length ? valueString : undefined,\n ...filterRubriques,\n });\n}\n\n/** Manage the checkbox enabling filtering on groups */\nconst emissionGroupCheckbox = computed({\n get(): boolean {\n return props.emissionGroups !== undefined && props.emissionGroups !== null;\n },\n set(value: boolean): void {\n if (value) {\n updateEmissionGroupFilter([]);\n } else {\n updateEmissionGroupFilter(undefined);\n }\n }\n});\n\n/** Update selected groups */\nfunction updateEmissionGroupFilter(groups: Array<EmissionGroup>|undefined): void {\n if (groups !== undefined && groups.length === 0) {\n emit('update:emission-groups', []);\n } else {\n updateRouteParamAdvanced({\n [ROUTE_PARAMS.EmissionGroups]: groups?.map(g => g.groupId)\n });\n emit('update:emission-groups', groups);\n }\n}\n\n/** Update the beneficiaries filter */\nfunction updateBeneficiaries(value: string[]|undefined): void {\n emit('update:beneficiaries', value);\n if (value === undefined) {\n updateRouteParamAdvanced({ [ROUTE_PARAMS.Beneficiaries]: undefined });\n } else {\n updateRouteParamAdvanced({ [ROUTE_PARAMS.Beneficiaries]: value });\n }\n}\n\n/** Update the value of the beneficiaries checkbox */\nfunction updateBeneficiariesCheckbox(value: boolean): void {\n if (value === true) {\n emit('update:beneficiaries', []);\n } else {\n updateBeneficiaries(undefined);\n }\n}\n\n/** Update the value of the 'only mine' checkbox */\nfunction updateOnlyMineCheckbox(value: boolean): void {\n emit('update:only-my-episodes', value);\n updateRouteParamAdvanced({\n [ROUTE_PARAMS.OnlyMyEpisodes]: value || undefined\n });\n}\n\nfunction clickShowFilters(): void {\n if (!firstLoaded.value) {\n firstLoaded.value = true;\n }\n showFilters.value = !showFilters.value;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n .advanced-search-container {\n background: var(--octopus-background);\n display: flex;\n width: 100%;\n padding-bottom: 1rem;\n justify-content: space-around;\n\n @media (width <= 720px) {\n flex-wrap: wrap;\n }\n }\n\n .advanced-search-enter-active,\n .advanced-search-leave-active {\n transition: 0.3s all;\n opacity: 1;\n max-height: 900px;\n height: auto;\n overflow: hidden;\n }\n\n .advanced-search-enter-from,\n .advanced-search-leave-to {\n opacity: 0;\n max-height: 0;\n overflow: hidden;\n }\n}\n</style>\n","<template>\n <div id=\"advanced-search\" class=\"d-flex flex-column justify-content-center align-items-center\">\n <!-- Button to open the advanced filters -->\n <button\n class=\"d-flex justify-content-center align-items-center mb-3 text-secondary btn-transparent\"\n @click=\"clickShowFilters\"\n >\n <div>{{ t(\"Advanced filters\") }}</div>\n <ChevronDownIcon :class=\"{ 'arrow-transform': showFilters }\" />\n </button>\n\n <!-- Filters -->\n <Transition name=\"advanced-search\">\n <div\n v-if=\"firstLoaded\"\n v-show=\"showFilters\"\n class=\"advanced-search-container\"\n >\n <fieldset class=\"d-flex flex-column flex-grow-3\">\n <legend class=\"text-primary mb-2\">\n {{ t(\"Filter\") }}\n </legend>\n <MonetizableFilter\n v-if=\"!isPodcastmaker && !generalStore.platformEducation\"\n :is-emission=\"isEmission\"\n :monetisable=\"monetisable\"\n @update:monetisable=\"updateMonetisable\"\n />\n <CategorySearchFilter\n v-if=\"state.advancedSearch?.disableIabFiltering !== true\"\n :iab-id=\"iabId\"\n class=\"mb-3\"\n @update:iab-id=\"updateIab\"\n />\n <RubriqueFilter\n :rubrique-filter=\"rubriqueFilter\"\n @update:rubrique-filter=\"updateRubriquageFilter\"\n />\n\n <!-- Group filters -->\n <div v-if=\"showEmissionGroups\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n v-model:text-init=\"emissionGroupCheckbox\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-emission-groups-checkbox\"\n :label=\"t('Filters - Emission groups')\"\n />\n\n <EmissionGroupChooser\n v-if=\"emissionGroupCheckbox\"\n class=\"ms-4 flex-grow-1\"\n :organisation-id=\"organisationId\"\n :groups=\"emissionGroups\"\n @update:groups=\"updateEmissionGroupFilter\"\n />\n </div>\n\n <!-- Date -->\n <DateFilter\n :is-emission=\"isEmission\"\n :from-date=\"fromDate\"\n :to-date=\"toDate\"\n @update-dates=\"updateDates($event)\"\n />\n\n <!-- Rights holders/beneficiaries -->\n <div v-if=\"beneficiariesEnabled\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n :text-init=\"beneficiaries !== null && beneficiaries !== undefined\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-beneficiaries-checkbox\"\n :label=\"t('Filters - Beneficiaries')\"\n @update:text-init=\"updateBeneficiariesCheckbox\"\n />\n\n <ClassicTagInput\n v-if=\"beneficiaries !== null && beneficiaries !== undefined\"\n class=\"ms-4 flex-grow-1\"\n :tags=\"beneficiaries\"\n @update:tags=\"updateBeneficiaries\"\n />\n </div>\n\n <!-- 14876 - Only my episodes -->\n <div v-if=\"!isEmission && !isPodcastmaker\" class=\"mt-3 d-flex\">\n <ClassicCheckbox\n :text-init=\"onlyMyEpisodes\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-onlymine-checkbox\"\n :label=\"t('Filters - Only my episodes')\"\n @update:text-init=\"updateOnlyMineCheckbox\"\n />\n </div>\n\n <div\n v-if=\"organisation && organisationRight && !isPodcastmaker\"\n class=\"d-flex flex-column mt-3\"\n >\n <ClassicCheckbox\n :text-init=\"includeHidden\"\n class=\"flex-shrink-0\"\n id-checkbox=\"search-future-checkbox\"\n :label=\"textNotVisible\"\n :is-disabled=\"isSelectValidity && 'true'!==validity\"\n @update:text-init=\"updateIncludeHidden\"\n />\n </div>\n\n <ClassicSelect\n v-if=\"isSelectValidity\"\n :text-init=\"validity\"\n id-select=\"valid-episodes-select\"\n :label=\"t('Episodes to validate')+' :'\"\n :display-label=\"true\"\n class-label=\"flex-shrink-0 me-1\"\n class=\"d-flex align-items-center mt-3 mb-0\"\n :options=\"[\n { title: t('Display only episodes to validate'), value: 'false' },\n { title: t('Display episodes to validate'), value: '' },\n { title: t('Do not display episodes to validate'), value: 'true' },\n ]\"\n @update:text-init=\"updateValidity\"\n />\n\n <!-- Only with video -->\n <ClassicCheckbox\n v-if=\"!isEmission\"\n :text-init=\"onlyVideo\"\n class=\"flex-shrink-0 mt-3\"\n id-checkbox=\"only-video-checkbox\"\n :label=\"t('Show only episodes with video')\"\n @update:text-init=\"updateOnlyVideo\"\n />\n </fieldset>\n\n <!-- Sort -->\n <SearchOrder\n :is-emission=\"isEmission\"\n :sort=\"sort\"\n @update:sort=\"updateSort\"\n />\n </div>\n </Transition>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { useRubriquesFilterParam } from \"../../composable/route/useRubriquesFilterParam\";\nimport { RubriquageFilter } from \"@/stores/class/rubrique/rubriquageFilter\";\nimport { defineAsyncComponent, ref, computed, watch, onMounted } from \"vue\";\nimport { useGeneralStore } from \"../../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { state } from \"@/stores/ParamSdkStore\";\nconst MonetizableFilter = defineAsyncComponent(\n () => import(\"./MonetizableFilter.vue\"),\n);\nconst CategorySearchFilter = defineAsyncComponent(\n () => import(\"./CategorySearchFilter.vue\"),\n);\nconst RubriqueFilter = defineAsyncComponent(\n () => import(\"./RubriqueFilter.vue\"),\n);\nconst ClassicSelect = defineAsyncComponent(\n () => import(\"../../form/ClassicSelect.vue\"),\n);\nconst ClassicTagInput = defineAsyncComponent(\n () => import(\"../../form/ClassicTagInput.vue\"),\n);\nconst ClassicCheckbox = defineAsyncComponent(\n () => import(\"../../form/ClassicCheckbox.vue\"),\n);\nconst DateFilter = defineAsyncComponent(() => import(\"./DateFilter.vue\"));\nconst SearchOrder = defineAsyncComponent(() => import(\"./SearchOrder.vue\"));\nimport { ROUTE_PARAMS } from '../../composable/route/types';\nimport { EmissionGroup, groupsApi } from \"../../../api/groupsApi\";\nimport EmissionGroupChooser from \"../emission/EmissionGroupChooser.vue\";\n\n//Props \nconst props = withDefaults(defineProps<{\n organisationId?: string;\n /** Indicates that the filters apply to emissions */\n isEmission?: boolean;\n includeHidden?: boolean;\n sort?: string;\n onlyVideo?: boolean;\n monetisable?: string;\n iabId?: number;\n searchPattern?: string;\n fromDate?: string;\n toDate?: string;\n validity?: string;\n /** The filter on beneficiaries */\n beneficiaries?: Array<string>;\n /** The filter for only my episodes */\n onlyMyEpisodes?: boolean;\n rubriqueFilter?: Array<RubriquageFilter>;\n /** The filter on groups */\n emissionGroups?: Array<EmissionGroup>;\n /** Force hide the emission group filter */\n hideEmissionGroups?: boolean;\n}>(), {\n sort: \"DATE\",\n monetisable: \"UNDEFINED\",\n searchPattern: \"\",\n validity: \"\"\n});\n\n//Emits\nconst emit = defineEmits([\n \"update:toDate\",\n \"update:fromDate\",\n \"update:monetisable\",\n \"update:iabId\",\n \"update:sort\",\n \"update:includeHidden\",\n \"update:validity\",\n \"update:rubriqueFilter\",\n \"update:onlyVideo\",\n \"update:beneficiaries\",\n \"update:emission-groups\",\n \"update:only-my-episodes\"\n]);\n\n//Data \nconst showFilters = ref(false);\nconst firstLoaded = ref(false);\nconst showEmissionGroups = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights } = useOrgaComputed();\nconst { stringifyRubriquesFilter,updateRouteParamAdvanced } = useRubriquesFilterParam();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\n\nonMounted(async() => {\n if (props.hideEmissionGroups) {\n showEmissionGroups.value = false;\n return;\n }\n // Only show emission groups if there are some\n const nbGroups = await groupsApi.count({\n organisationIds: [props.organisationId]\n });\n showEmissionGroups.value = nbGroups > 0;\n});\n\n//Computed\nconst organisationRight = computed(() => isEditRights(props.organisationId));\nconst organisation = computed(() => props.organisationId ?? filterStore.filterOrgaId);\nconst textNotVisible = computed(() => props.isEmission ? t(\"Consider podcasts no visible\"): t(\"See podcasts no visible\"));\nconst isSelectValidity = computed(() => {\n return (\n undefined !== organisation.value &&\n organisationRight.value &&\n (authStore.isRoleContribution || authStore.isRolePublication) &&\n !isPodcastmaker.value &&\n !props.isEmission &&\n props.includeHidden\n );\n});\n\n/** The beneficiaries filter is only displayed if beneficiaries are enabled */\nconst beneficiariesEnabled = computed(() => {\n return authStore.authOrganisation.attributes['beneficiaries.enabled'] === 'true';\n});\n\n//Watch\nwatch(organisation, async () => {\n const hidden = undefined !== organisation.value && organisationRight.value && !props.isEmission;\n if (hidden !== props.includeHidden) {\n updateIncludeHidden(hidden);\n }\n});\n\nwatch(()=>props.searchPattern, (value: string) => {\n const search = value.trim();\n let valSort = \"SCORE\"\n if(search.length <= 3){\n valSort = props.isEmission? \"LAST_PODCAST_DESC\" : \"DATE\";\n }\n updateRouteParamAdvanced({\n q: search.length ? search : undefined,\n s: valSort,\n });\n});\n\n//Methods\nfunction updateMonetisable(value: string): void {\n emit(\"update:monetisable\", value);\n updateRouteParamAdvanced({ m: \"UNDEFINED\" !== value ? value : undefined });\n}\n\nfunction updateIab(value: number | undefined) {\n emit(\"update:iabId\", 0 !== value ? value : undefined);\n let filterIab = {};\n if (filterStore.filterIab && filterStore.filterIab.id !== value) {\n filterIab = { iabId: undefined };\n }\n updateRouteParamAdvanced({\n ...{ i: value ? value.toString() : undefined },\n ...filterIab,\n });\n}\n\nfunction updateSort(value: string) {\n emit(\"update:sort\", value);\n updateRouteParamAdvanced({ s: value });\n}\n\nfunction updateIncludeHidden(value: boolean) {\n emit(\"update:includeHidden\", value);\n updateRouteParamAdvanced({ h: value.toString() });\n}\n\nfunction updateValidity(value: boolean) {\n emit(\"update:validity\", value);\n updateRouteParamAdvanced({ vl: value.toString() });\n}\n\nfunction updateOnlyVideo(value: boolean) {\n emit(\"update:onlyVideo\", value);\n updateRouteParamAdvanced({ v: value ? \"true\" : undefined });\n}\n\nfunction updateDates(value: {\n from: string | undefined;\n to: string | undefined;\n}): void {\n emit(\"update:fromDate\", value.from);\n emit(\"update:toDate\", value.to);\n updateRouteParamAdvanced({ from: value.from, to: value.to });\n}\n\nfunction updateRubriquageFilter(value: Array<RubriquageFilter>) {\n emit(\"update:rubriqueFilter\", value);\n let filterRubriques = {};\n const valueString = stringifyRubriquesFilter(value);\n if (\n filterStore.filterRubrique.length &&\n stringifyRubriquesFilter(filterStore.filterRubrique) !== valueString\n ) {\n filterRubriques = { rubriquesId: undefined };\n }\n updateRouteParamAdvanced({\n r: valueString.length ? valueString : undefined,\n ...filterRubriques,\n });\n}\n\n/** Manage the checkbox enabling filtering on groups */\nconst emissionGroupCheckbox = computed({\n get(): boolean {\n return props.emissionGroups !== undefined && props.emissionGroups !== null;\n },\n set(value: boolean): void {\n if (value) {\n updateEmissionGroupFilter([]);\n } else {\n updateEmissionGroupFilter(undefined);\n }\n }\n});\n\n/** Update selected groups */\nfunction updateEmissionGroupFilter(groups: Array<EmissionGroup>|undefined): void {\n if (groups !== undefined && groups.length === 0) {\n emit('update:emission-groups', []);\n } else {\n updateRouteParamAdvanced({\n [ROUTE_PARAMS.EmissionGroups]: groups?.map(g => g.groupId)\n });\n emit('update:emission-groups', groups);\n }\n}\n\n/** Update the beneficiaries filter */\nfunction updateBeneficiaries(value: string[]|undefined): void {\n emit('update:beneficiaries', value);\n if (value === undefined) {\n updateRouteParamAdvanced({ [ROUTE_PARAMS.Beneficiaries]: undefined });\n } else {\n updateRouteParamAdvanced({ [ROUTE_PARAMS.Beneficiaries]: value });\n }\n}\n\n/** Update the value of the beneficiaries checkbox */\nfunction updateBeneficiariesCheckbox(value: boolean): void {\n if (value === true) {\n emit('update:beneficiaries', []);\n } else {\n updateBeneficiaries(undefined);\n }\n}\n\n/** Update the value of the 'only mine' checkbox */\nfunction updateOnlyMineCheckbox(value: boolean): void {\n emit('update:only-my-episodes', value);\n updateRouteParamAdvanced({\n [ROUTE_PARAMS.OnlyMyEpisodes]: value || undefined\n });\n}\n\nfunction clickShowFilters(): void {\n if (!firstLoaded.value) {\n firstLoaded.value = true;\n }\n showFilters.value = !showFilters.value;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n .advanced-search-container {\n background: var(--octopus-background);\n display: flex;\n width: 100%;\n padding-bottom: 1rem;\n justify-content: space-around;\n\n @media (width <= 720px) {\n flex-wrap: wrap;\n }\n }\n\n .advanced-search-enter-active,\n .advanced-search-leave-active {\n transition: 0.3s all;\n opacity: 1;\n max-height: 900px;\n height: auto;\n overflow: hidden;\n }\n\n .advanced-search-enter-from,\n .advanced-search-leave-to {\n opacity: 0;\n max-height: 0;\n overflow: hidden;\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategoryChooser-CSUjIA0D.mjs","names":["_openBlock","_createBlock","_sfc_main"],"sources":["../src/components/display/categories/CategoryChooser.vue","../src/components/display/categories/CategoryChooser.vue"],"sourcesContent":["<template>\n <ClassicMultiselect\n :id=\"idClassicMultiselect\"\n ref=\"selectCategory\"\n :option-chosen=\"model\"\n option-label=\"name\"\n :display-label=\"displayLabel\"\n :label=\"label ?? t('By category')\"\n :text-danger=\"textDanger\"\n :placeholder=\"t('Type string to filter by categories')\"\n :max-element=\"maxElement\"\n :in-modal=\"inModal\"\n :multiple=\"multiple\"\n :min-search-length=\"1\"\n :width=\"width\"\n :height=\"height\"\n :is-disabled=\"isDisabled\"\n :no-deselect=\"noDeselect\"\n :display-required=\"displayRequired\"\n :popover=\"popover\"\n :popover-relative-class=\"popoverRelativeClass\"\n @on-search=\"onSearchCategory\"\n @selected=\"onCategorySelected\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../../stores/GeneralStore\";\nimport ClassicMultiselect from \"../../form/ClassicMultiselect.vue\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { computed, onMounted, Ref, ref, useTemplateRef, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n defaultanswer: { default: \"\", type: String },\n width: { default: \"100%\", type: String },\n height: { default: undefined, type: String },\n multiple: { default: false, type: Boolean },\n isDisabled: { default: false, type: Boolean },\n initCategories: {\n default: undefined,\n type: Array as () => Array<Category>,\n },\n displayAllCategories: { default: false, type: Boolean },\n categorySelected: { default: undefined, type: Number },\n categorySelectedArray: {\n default: undefined,\n type: Array as () => Array<number>,\n },\n inModal: { default: false, type: Boolean },\n noDeselect: { default: true, type: Boolean },\n label:{default: undefined, type: String },\n displayLabel: { default: false, type: Boolean },\n textDanger :{ default: undefined, type: String },\n displayRequired: { default: false, type: Boolean },\n popover: { default: undefined, type: String },\n popoverRelativeClass: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\n \"update:categorySelected\",\n \"update:categorySelectedArray\",\n \"selected\"\n]);\n\n\n//Data \nconst maxElement = ref(50);\nconst category: Ref<Category | undefined> = ref(undefined);\nconst categoryForArray: Ref<Array<Category> | undefined> = ref([]);\nconst selectCategoryRef=useTemplateRef('selectCategory');\n\n//Composables\nconst { t } = useI18n();\nconst generalStore = useGeneralStore();\n\n\n//Computed\nconst categoriesChosen = computed(() => {\n if (props.initCategories) {\n return props.initCategories;\n }\n return generalStore.storedCategories;\n});\nconst categoriesOrdered = computed(() => {\n let allCategoriesOrdered = categoriesChosen.value.toSorted(\n (a: Category, b: Category) => (a.name > b.name ? 1 : -1),\n );\n if (!props.displayAllCategories) {\n allCategoriesOrdered = allCategoriesOrdered.filter((c: Category) => {\n return c.podcastCount;\n });\n }\n if (getDefaultCategory.value) {\n allCategoriesOrdered.unshift(getDefaultCategory.value);\n }\n return allCategoriesOrdered;\n});\nconst getDefaultCategory = computed(() => {\n if (\"\" === props.defaultanswer) {\n return undefined;\n }\n return { id: 0, name: props.defaultanswer };\n});\nconst idClassicMultiselect = computed(() => {\n if (props.multiple) return \"categoryChooser\" + props.multiple;\n return \"categoryChooser\";\n});\nconst model = computed({\n get(): Category | Array<Category> | undefined {\n return props.multiple ? categoryForArray.value :category.value;\n },\n set(value: Category | Array<Category> | undefined): void {\n if (!props.multiple) {\n category.value = value as Category | undefined;\n return;\n }\n categoryForArray.value = value as Array<Category> | undefined;\n },\n});\n\n\n//Watch\nwatch(()=>props.categorySelected, async () => {\n if (props.categorySelected) {\n initCategorySelected();\n } else {\n category.value = getDefaultCategory.value;\n }\n}, {immediate: true});\n\n\nonMounted(()=>initCategoryArray())\n\n\n//Methods\nasync function onSearchCategory(query?: string): Promise<void> {\n let categories = categoriesOrdered.value;\n if (query) {\n categories = categories.filter((item: Category) => {\n return item.name.toUpperCase().includes(query.toUpperCase());\n });\n }\n (selectCategoryRef?.value as InstanceType<typeof ClassicMultiselect>).afterSearch(categories, categories.length);\n}\nfunction onCategorySelected(category: Category | Array<Category>): void {\n if (undefined !== props.categorySelected) {\n emit(\"update:categorySelected\", (category as Category).id);\n } else if (undefined !== props.categorySelectedArray) {\n const idsArray: Array<number> = [];\n (category as Array<Category>).forEach((el: Category) => {\n idsArray.push(el.id);\n });\n emit(\"update:categorySelectedArray\", idsArray);\n } else {\n emit(\"selected\", category);\n }\n}\nfunction initCategorySelected(): void {\n category.value =\n categoriesChosen.value.find((el: Category) => {\n return el.id === props.categorySelected;\n }) ?? getDefaultCategory.value;\n}\nfunction initCategoryArray(): void {\n if (!categoryForArray.value || !props.categorySelectedArray) {\n return;\n }\n categoryForArray.value.length = 0;\n props.categorySelectedArray.forEach((element: number) => {\n const item = categoriesChosen.value.find((el: Category) => {\n return el.id === element;\n });\n if (categoryForArray.value && item) {\n categoryForArray.value.push(item);\n }\n });\n}\n</script>\n","<template>\n <ClassicMultiselect\n :id=\"idClassicMultiselect\"\n ref=\"selectCategory\"\n :option-chosen=\"model\"\n option-label=\"name\"\n :display-label=\"displayLabel\"\n :label=\"label ?? t('By category')\"\n :text-danger=\"textDanger\"\n :placeholder=\"t('Type string to filter by categories')\"\n :max-element=\"maxElement\"\n :in-modal=\"inModal\"\n :multiple=\"multiple\"\n :min-search-length=\"1\"\n :width=\"width\"\n :height=\"height\"\n :is-disabled=\"isDisabled\"\n :no-deselect=\"noDeselect\"\n :display-required=\"displayRequired\"\n :popover=\"popover\"\n :popover-relative-class=\"popoverRelativeClass\"\n @on-search=\"onSearchCategory\"\n @selected=\"onCategorySelected\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../../stores/GeneralStore\";\nimport ClassicMultiselect from \"../../form/ClassicMultiselect.vue\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { computed, onMounted, Ref, ref, useTemplateRef, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n defaultanswer: { default: \"\", type: String },\n width: { default: \"100%\", type: String },\n height: { default: undefined, type: String },\n multiple: { default: false, type: Boolean },\n isDisabled: { default: false, type: Boolean },\n initCategories: {\n default: undefined,\n type: Array as () => Array<Category>,\n },\n displayAllCategories: { default: false, type: Boolean },\n categorySelected: { default: undefined, type: Number },\n categorySelectedArray: {\n default: undefined,\n type: Array as () => Array<number>,\n },\n inModal: { default: false, type: Boolean },\n noDeselect: { default: true, type: Boolean },\n label:{default: undefined, type: String },\n displayLabel: { default: false, type: Boolean },\n textDanger :{ default: undefined, type: String },\n displayRequired: { default: false, type: Boolean },\n popover: { default: undefined, type: String },\n popoverRelativeClass: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\n \"update:categorySelected\",\n \"update:categorySelectedArray\",\n \"selected\"\n]);\n\n\n//Data \nconst maxElement = ref(50);\nconst category: Ref<Category | undefined> = ref(undefined);\nconst categoryForArray: Ref<Array<Category> | undefined> = ref([]);\nconst selectCategoryRef=useTemplateRef('selectCategory');\n\n//Composables\nconst { t } = useI18n();\nconst generalStore = useGeneralStore();\n\n\n//Computed\nconst categoriesChosen = computed(() => {\n if (props.initCategories) {\n return props.initCategories;\n }\n return generalStore.storedCategories;\n});\nconst categoriesOrdered = computed(() => {\n let allCategoriesOrdered = categoriesChosen.value.toSorted(\n (a: Category, b: Category) => (a.name > b.name ? 1 : -1),\n );\n if (!props.displayAllCategories) {\n allCategoriesOrdered = allCategoriesOrdered.filter((c: Category) => {\n return c.podcastCount;\n });\n }\n if (getDefaultCategory.value) {\n allCategoriesOrdered.unshift(getDefaultCategory.value);\n }\n return allCategoriesOrdered;\n});\nconst getDefaultCategory = computed(() => {\n if (\"\" === props.defaultanswer) {\n return undefined;\n }\n return { id: 0, name: props.defaultanswer };\n});\nconst idClassicMultiselect = computed(() => {\n if (props.multiple) return \"categoryChooser\" + props.multiple;\n return \"categoryChooser\";\n});\nconst model = computed({\n get(): Category | Array<Category> | undefined {\n return props.multiple ? categoryForArray.value :category.value;\n },\n set(value: Category | Array<Category> | undefined): void {\n if (!props.multiple) {\n category.value = value as Category | undefined;\n return;\n }\n categoryForArray.value = value as Array<Category> | undefined;\n },\n});\n\n\n//Watch\nwatch(()=>props.categorySelected, async () => {\n if (props.categorySelected) {\n initCategorySelected();\n } else {\n category.value = getDefaultCategory.value;\n }\n}, {immediate: true});\n\n\nonMounted(()=>initCategoryArray())\n\n\n//Methods\nasync function onSearchCategory(query?: string): Promise<void> {\n let categories = categoriesOrdered.value;\n if (query) {\n categories = categories.filter((item: Category) => {\n return item.name.toUpperCase().includes(query.toUpperCase());\n });\n }\n (selectCategoryRef?.value as InstanceType<typeof ClassicMultiselect>).afterSearch(categories, categories.length);\n}\nfunction onCategorySelected(category: Category | Array<Category>): void {\n if (undefined !== props.categorySelected) {\n emit(\"update:categorySelected\", (category as Category).id);\n } else if (undefined !== props.categorySelectedArray) {\n const idsArray: Array<number> = [];\n (category as Array<Category>).forEach((el: Category) => {\n idsArray.push(el.id);\n });\n emit(\"update:categorySelectedArray\", idsArray);\n } else {\n emit(\"selected\", category);\n }\n}\nfunction initCategorySelected(): void {\n category.value =\n categoriesChosen.value.find((el: Category) => {\n return el.id === props.categorySelected;\n }) ?? getDefaultCategory.value;\n}\nfunction initCategoryArray(): void {\n if (!categoryForArray.value || !props.categorySelectedArray) {\n return;\n }\n categoryForArray.value.length = 0;\n props.categorySelectedArray.forEach((element: number) => {\n const item = categoriesChosen.value.find((el: Category) => {\n return el.id === element;\n });\n if (categoryForArray.value && item) {\n categoryForArray.value.push(item);\n }\n });\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./rolldown-runtime-Dy4uBu1J.mjs";
|
|
2
2
|
import { t } from "./GeneralStore-Darfv4af.mjs";
|
|
3
|
-
import { t as n } from "./ClassicMultiselect-
|
|
3
|
+
import { t as n } from "./ClassicMultiselect-C0yzVQ8Y.mjs";
|
|
4
4
|
import { computed as r, createBlock as i, defineComponent as a, onMounted as o, openBlock as s, ref as c, unref as l, useTemplateRef as u, watch as d } from "vue";
|
|
5
5
|
import { useI18n as f } from "vue-i18n";
|
|
6
6
|
//#region src/components/display/categories/CategoryChooser.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -21,7 +21,7 @@ var w = { class: "d-flex-low-importance flex-column justify-content-end" }, T =
|
|
|
21
21
|
}, j = /* @__PURE__ */ d({
|
|
22
22
|
__name: "CategoryFilter",
|
|
23
23
|
setup(d) {
|
|
24
|
-
let j = u(() => import("./CategoryList-
|
|
24
|
+
let j = u(() => import("./CategoryList-CDoIfrDw.mjs")), M = u(() => import("./RubriqueList-rJj2IycY.mjs")), N = u(() => import("./RubriqueChooser-CNGn8LcP.mjs")), P = h(!1), { t: F } = S(), { updateFiltersParam: I } = t(), { modifyRubriquesFilter: L } = r(), R = n(), z = e(), B = C(), V = a(() => (B.name === "homePriv" || B.name === "home" || B.name === "podcasts" || B.name === "emissions") && (P.value || z.filterIab !== void 0 || z.filterRubrique.length !== 0 || U.value.length !== 0)), H = a(() => V.value || B.name === "participants" || B.name === "playlists"), U = a(() => z.filterOrgaId ? z.filterRubriquage : []), W = a(() => {
|
|
25
25
|
switch (B.name) {
|
|
26
26
|
case "podcasts": return F("All podcasts");
|
|
27
27
|
case "emissions": return F("All emissions");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategoryFilter-DVwCpHLx.mjs","names":["_openBlock","_createElementBlock","_Fragment","_withDirectives","_createElementVNode","_normalizeStyle","_toDisplayString","_vShow","_createCommentVNode","_renderList","_normalizeClass","_createBlock","_sfc_main"],"sources":["../src/components/display/categories/CategoryFilter.vue","../src/components/display/categories/CategoryFilter.vue"],"sourcesContent":["<template>\n <section\n v-show=\"isHeaderDisplay\"\n class=\"header-img flex-column justify-content-end\"\n :style=\"backgroundDisplay\"\n >\n <h1 v-if=\"isHeaderDisplay\" v-show=\"titleDisplay\">\n {{ titleDisplay ?? t(\"Home\") }}\n </h1>\n <div\n v-show=\"isDisplay\"\n class=\"d-flex-low-importance flex-column justify-content-end\"\n >\n <ol\n v-if=\"filterStore.filterIab || filterStore.filterRubrique.length\"\n class=\"octopus-breadcrumb\"\n >\n <li class=\"octopus-breadcrumb-li\">\n <a href=\"#\" @click=\"removeFilter(-1, $event)\">{{ t(\"All\") }}</a>\n </li>\n <li v-if=\"filterStore.filterIab\" class=\"octopus-breadcrumb-li\">\n {{ filterStore.filterIab.name }}\n </li>\n <li\n v-for=\"(filter, index) in filterStore.filterRubrique\"\n :key=\"filter.rubriqueId\"\n class=\"octopus-breadcrumb-li\"\n :class=\"filterStore.filterRubrique.length - 1 === index ? 'active' : ''\"\n >\n <a\n v-if=\"filterStore.filterRubrique.length - 1 !== index\"\n href=\"#\"\n @click=\"removeFilter(index, $event)\"\n >{{ filter.nameRubriquage }}</a\n >\n <div v-else class=\"fw-bold\">\n {{ filter.nameRubriquage }}\n </div>\n <div class=\"mx-1\">:</div>\n <RubriqueChooser\n v-if=\"getRubriquesLength(filter.rubriquageId)\"\n :id=\"'rubrique-chooser'+filter.rubriquageId\"\n class=\"ms-2 multiselect-transparent multiselect-white\"\n :multiple=\"false\"\n :rubrique-selected=\"filter.rubriqueId\"\n :all-rubriques=\"getRubriques(filter.rubriquageId)\"\n width=\"auto\"\n @selected=\"onRubriqueSelected(index, $event)\"\n />\n </li>\n </ol>\n <CategoryList\n v-if=\"!filterStore.filterIab && !rubriquageFilter.length\"\n :is-filter=\"true\"\n :is-display=\"isDisplay\"\n @categories-length=\"checkIfCategories\"\n />\n <RubriqueList\n v-else-if=\"\n isDisplay && rubriquageFilter.length !== filterStore.filterRubrique.length\n \"\n :rubriquages=\"rubriquageFilter\"\n />\n </div>\n </section>\n <section v-if=\"!isDisplay\" class=\"category-filter-no-filter\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from \"vue-i18n\";\nimport { useRubriquesFilterParam } from \"../../composable/route/useRubriquesFilterParam\";\nimport { useRouteUpdateParams } from \"../../composable/route/useRouteUpdateParams\";\nimport { Rubriquage } from \"@/stores/class/rubrique/rubriquage\";\nimport { RubriquageFilter } from \"@/stores/class/rubrique/rubriquageFilter\";\nimport { Rubrique } from \"@/stores/class/rubrique/rubrique\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { useGeneralStore } from \"../../../stores/GeneralStore\";\nimport { defineAsyncComponent, ref, computed, watch } from \"vue\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { useRoute } from \"vue-router\";\nconst CategoryList = defineAsyncComponent(() => import(\"./CategoryList.vue\"));\nconst RubriqueList = defineAsyncComponent(\n () => import(\"./../rubriques/RubriqueList.vue\"),\n);\nconst RubriqueChooser = defineAsyncComponent(\n () => import(\"../rubriques/RubriqueChooser.vue\"),\n);\n\n//Data \nconst isCategories = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst { updateFiltersParam } = useRouteUpdateParams();\nconst { modifyRubriquesFilter } = useRubriquesFilterParam();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst route = useRoute();\n\n//Computed\nconst isDisplay = computed(() => {\n return (\n (\"homePriv\" === route.name ||\n \"home\" === route.name ||\n \"podcasts\" === route.name ||\n \"emissions\" === route.name) &&\n (isCategories.value ||\n undefined !== filterStore.filterIab ||\n 0 !== filterStore.filterRubrique.length ||\n 0 !== rubriquageFilter.value.length)\n );\n});\nconst isHeaderDisplay = computed(() => {\n return (\n isDisplay.value ||\n \"participants\" === route.name ||\n \"playlists\" === route.name\n );\n});\nconst rubriquageFilter = computed(() => filterStore.filterOrgaId ? filterStore.filterRubriquage : []);\nconst titleDisplay = computed(() => {\n switch (route.name) {\n case \"podcasts\":\n return t(\"All podcasts\");\n case \"emissions\":\n return t(\"All emissions\");\n case \"participants\":\n return t(\"All participants\");\n case \"playlists\":\n return t(\"All playlists\");\n default:\n return undefined;\n }\n});\nconst backgroundDisplay = computed(() => {\n let imgName = \"home\";\n switch (route.name) {\n case \"podcasts\":\n imgName = \"podcasts\";\n break;\n case \"emissions\":\n imgName = \"emissions\";\n break;\n case \"participants\":\n imgName = \"intervenants\";\n break;\n case \"playlists\":\n imgName = \"playlists\";\n break;\n default:\n break;\n }\n return `background-image: url('/img/header-${imgName}.webp');`;\n});\nconst routeFilterIab = computed(() => route.query.iabId);\nconst routeRubriques = computed(() => route.query.rubriquesId);\n\n\n//Watch\nwatch(routeFilterIab, () => {\n if (routeFilterIab.value && \"string\" === typeof routeFilterIab.value) {\n const iabId = parseInt(routeFilterIab.value, 10);\n const category = generalStore.storedCategories.filter((c: Category) => {\n return c.id === iabId;\n });\n if (category.length) {\n filterStore.filterUpdateIab(category[0]);\n }\n } else {\n filterStore.filterUpdateIab();\n }\n}, {deep: true, immediate: true});\nwatch(routeRubriques, () => {\n if (0 === filterStore.filterRubriquage.length) {\n return;\n }\n const rubriquesFilter: Array<RubriquageFilter> = [];\n if (\n route.query.rubriquesId &&\n \"string\" === typeof route.query.rubriquesId\n ) {\n const arrayFilter = route.query.rubriquesId.split(\",\");\n const filterLength = arrayFilter.length;\n for (let index = 0; index < filterLength; index++) {\n const rubriqueFilter = arrayFilter[index].split(\":\");\n const rubriquage = filterStore.filterRubriquage.find((x: Rubriquage) => {\n return x.rubriquageId === parseInt(rubriqueFilter[0]);\n });\n if (rubriquage) {\n const rubrique = rubriquage.rubriques.find((x: Rubrique) => {\n return x.rubriqueId === parseInt(rubriqueFilter[1]);\n });\n rubriquesFilter.push({\n rubriquageId: rubriquage.rubriquageId,\n rubriqueId: rubrique?.rubriqueId,\n nameRubriquage: rubriquage.title,\n nameRubrique: rubrique?.name,\n });\n }\n }\n }\n filterStore.filterUpdateRubrique(rubriquesFilter);\n}, {deep: true, immediate: true});\n\n\n//Methods\nfunction checkIfCategories(length: number): void {\n isCategories.value = 0 !== length;\n}\nfunction onRubriqueSelected(index: number, rubrique: Rubrique): void {\n if (\n !rubrique ||\n filterStore.filterRubrique[index].rubriqueId === rubrique.rubriqueId\n ) {\n return;\n }\n modifyRubriquesFilter((a) => {\n a[index].rubriqueId = rubrique.rubriqueId ?? 0;\n return a;\n });\n}\nfunction getRubriques(rubriquageId: number): Array<Rubrique> {\n const rubriquage = filterStore.filterRubriquage.find((x: Rubriquage) => {\n return x.rubriquageId === rubriquageId;\n });\n return rubriquage ? rubriquage.rubriques : [];\n}\nfunction getRubriquesLength(rubriquageId: number): number {\n const rubriquage = filterStore.filterRubriquage.find((x: Rubriquage) => {\n return x.rubriquageId === rubriquageId;\n });\n return rubriquage ? rubriquage.rubriques.length : 0;\n}\nfunction removeFilter(index: number, event?: { preventDefault: () => void }): void {\n if (filterStore.filterIab) {\n if (route.query.iabId) {\n updateFiltersParam({ iabId: undefined }, { i: undefined });\n }\n } else {\n modifyRubriquesFilter((a) => {\n a.splice(index + 1);\n return a;\n });\n }\n if (event) {\n event.preventDefault();\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app {\n .header-img {\n display: flex;\n min-height: 10rem;\n background-size: cover;\n background-position: center;\n\n h1 {\n margin: auto 1rem;\n font-size: 2rem;\n color: white;\n }\n\n @media (width <= 960px) {\n min-height: 6rem;\n }\n }\n\n .octopus-breadcrumb {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n padding: 1rem;\n\n .octopus-breadcrumb-li {\n display: flex;\n align-items: center;\n list-style: none;\n color: white !important;\n\n a {\n color: white !important;\n font-weight: bold;\n }\n\n &::after {\n content: \"-\";\n margin: 0 0.5rem;\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n }\n }\n}\n</style>\n","<template>\n <section\n v-show=\"isHeaderDisplay\"\n class=\"header-img flex-column justify-content-end\"\n :style=\"backgroundDisplay\"\n >\n <h1 v-if=\"isHeaderDisplay\" v-show=\"titleDisplay\">\n {{ titleDisplay ?? t(\"Home\") }}\n </h1>\n <div\n v-show=\"isDisplay\"\n class=\"d-flex-low-importance flex-column justify-content-end\"\n >\n <ol\n v-if=\"filterStore.filterIab || filterStore.filterRubrique.length\"\n class=\"octopus-breadcrumb\"\n >\n <li class=\"octopus-breadcrumb-li\">\n <a href=\"#\" @click=\"removeFilter(-1, $event)\">{{ t(\"All\") }}</a>\n </li>\n <li v-if=\"filterStore.filterIab\" class=\"octopus-breadcrumb-li\">\n {{ filterStore.filterIab.name }}\n </li>\n <li\n v-for=\"(filter, index) in filterStore.filterRubrique\"\n :key=\"filter.rubriqueId\"\n class=\"octopus-breadcrumb-li\"\n :class=\"filterStore.filterRubrique.length - 1 === index ? 'active' : ''\"\n >\n <a\n v-if=\"filterStore.filterRubrique.length - 1 !== index\"\n href=\"#\"\n @click=\"removeFilter(index, $event)\"\n >{{ filter.nameRubriquage }}</a\n >\n <div v-else class=\"fw-bold\">\n {{ filter.nameRubriquage }}\n </div>\n <div class=\"mx-1\">:</div>\n <RubriqueChooser\n v-if=\"getRubriquesLength(filter.rubriquageId)\"\n :id=\"'rubrique-chooser'+filter.rubriquageId\"\n class=\"ms-2 multiselect-transparent multiselect-white\"\n :multiple=\"false\"\n :rubrique-selected=\"filter.rubriqueId\"\n :all-rubriques=\"getRubriques(filter.rubriquageId)\"\n width=\"auto\"\n @selected=\"onRubriqueSelected(index, $event)\"\n />\n </li>\n </ol>\n <CategoryList\n v-if=\"!filterStore.filterIab && !rubriquageFilter.length\"\n :is-filter=\"true\"\n :is-display=\"isDisplay\"\n @categories-length=\"checkIfCategories\"\n />\n <RubriqueList\n v-else-if=\"\n isDisplay && rubriquageFilter.length !== filterStore.filterRubrique.length\n \"\n :rubriquages=\"rubriquageFilter\"\n />\n </div>\n </section>\n <section v-if=\"!isDisplay\" class=\"category-filter-no-filter\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from \"vue-i18n\";\nimport { useRubriquesFilterParam } from \"../../composable/route/useRubriquesFilterParam\";\nimport { useRouteUpdateParams } from \"../../composable/route/useRouteUpdateParams\";\nimport { Rubriquage } from \"@/stores/class/rubrique/rubriquage\";\nimport { RubriquageFilter } from \"@/stores/class/rubrique/rubriquageFilter\";\nimport { Rubrique } from \"@/stores/class/rubrique/rubrique\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { useGeneralStore } from \"../../../stores/GeneralStore\";\nimport { defineAsyncComponent, ref, computed, watch } from \"vue\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { useRoute } from \"vue-router\";\nconst CategoryList = defineAsyncComponent(() => import(\"./CategoryList.vue\"));\nconst RubriqueList = defineAsyncComponent(\n () => import(\"./../rubriques/RubriqueList.vue\"),\n);\nconst RubriqueChooser = defineAsyncComponent(\n () => import(\"../rubriques/RubriqueChooser.vue\"),\n);\n\n//Data \nconst isCategories = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst { updateFiltersParam } = useRouteUpdateParams();\nconst { modifyRubriquesFilter } = useRubriquesFilterParam();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst route = useRoute();\n\n//Computed\nconst isDisplay = computed(() => {\n return (\n (\"homePriv\" === route.name ||\n \"home\" === route.name ||\n \"podcasts\" === route.name ||\n \"emissions\" === route.name) &&\n (isCategories.value ||\n undefined !== filterStore.filterIab ||\n 0 !== filterStore.filterRubrique.length ||\n 0 !== rubriquageFilter.value.length)\n );\n});\nconst isHeaderDisplay = computed(() => {\n return (\n isDisplay.value ||\n \"participants\" === route.name ||\n \"playlists\" === route.name\n );\n});\nconst rubriquageFilter = computed(() => filterStore.filterOrgaId ? filterStore.filterRubriquage : []);\nconst titleDisplay = computed(() => {\n switch (route.name) {\n case \"podcasts\":\n return t(\"All podcasts\");\n case \"emissions\":\n return t(\"All emissions\");\n case \"participants\":\n return t(\"All participants\");\n case \"playlists\":\n return t(\"All playlists\");\n default:\n return undefined;\n }\n});\nconst backgroundDisplay = computed(() => {\n let imgName = \"home\";\n switch (route.name) {\n case \"podcasts\":\n imgName = \"podcasts\";\n break;\n case \"emissions\":\n imgName = \"emissions\";\n break;\n case \"participants\":\n imgName = \"intervenants\";\n break;\n case \"playlists\":\n imgName = \"playlists\";\n break;\n default:\n break;\n }\n return `background-image: url('/img/header-${imgName}.webp');`;\n});\nconst routeFilterIab = computed(() => route.query.iabId);\nconst routeRubriques = computed(() => route.query.rubriquesId);\n\n\n//Watch\nwatch(routeFilterIab, () => {\n if (routeFilterIab.value && \"string\" === typeof routeFilterIab.value) {\n const iabId = parseInt(routeFilterIab.value, 10);\n const category = generalStore.storedCategories.filter((c: Category) => {\n return c.id === iabId;\n });\n if (category.length) {\n filterStore.filterUpdateIab(category[0]);\n }\n } else {\n filterStore.filterUpdateIab();\n }\n}, {deep: true, immediate: true});\nwatch(routeRubriques, () => {\n if (0 === filterStore.filterRubriquage.length) {\n return;\n }\n const rubriquesFilter: Array<RubriquageFilter> = [];\n if (\n route.query.rubriquesId &&\n \"string\" === typeof route.query.rubriquesId\n ) {\n const arrayFilter = route.query.rubriquesId.split(\",\");\n const filterLength = arrayFilter.length;\n for (let index = 0; index < filterLength; index++) {\n const rubriqueFilter = arrayFilter[index].split(\":\");\n const rubriquage = filterStore.filterRubriquage.find((x: Rubriquage) => {\n return x.rubriquageId === parseInt(rubriqueFilter[0]);\n });\n if (rubriquage) {\n const rubrique = rubriquage.rubriques.find((x: Rubrique) => {\n return x.rubriqueId === parseInt(rubriqueFilter[1]);\n });\n rubriquesFilter.push({\n rubriquageId: rubriquage.rubriquageId,\n rubriqueId: rubrique?.rubriqueId,\n nameRubriquage: rubriquage.title,\n nameRubrique: rubrique?.name,\n });\n }\n }\n }\n filterStore.filterUpdateRubrique(rubriquesFilter);\n}, {deep: true, immediate: true});\n\n\n//Methods\nfunction checkIfCategories(length: number): void {\n isCategories.value = 0 !== length;\n}\nfunction onRubriqueSelected(index: number, rubrique: Rubrique): void {\n if (\n !rubrique ||\n filterStore.filterRubrique[index].rubriqueId === rubrique.rubriqueId\n ) {\n return;\n }\n modifyRubriquesFilter((a) => {\n a[index].rubriqueId = rubrique.rubriqueId ?? 0;\n return a;\n });\n}\nfunction getRubriques(rubriquageId: number): Array<Rubrique> {\n const rubriquage = filterStore.filterRubriquage.find((x: Rubriquage) => {\n return x.rubriquageId === rubriquageId;\n });\n return rubriquage ? rubriquage.rubriques : [];\n}\nfunction getRubriquesLength(rubriquageId: number): number {\n const rubriquage = filterStore.filterRubriquage.find((x: Rubriquage) => {\n return x.rubriquageId === rubriquageId;\n });\n return rubriquage ? rubriquage.rubriques.length : 0;\n}\nfunction removeFilter(index: number, event?: { preventDefault: () => void }): void {\n if (filterStore.filterIab) {\n if (route.query.iabId) {\n updateFiltersParam({ iabId: undefined }, { i: undefined });\n }\n } else {\n modifyRubriquesFilter((a) => {\n a.splice(index + 1);\n return a;\n });\n }\n if (event) {\n event.preventDefault();\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app {\n .header-img {\n display: flex;\n min-height: 10rem;\n background-size: cover;\n background-position: center;\n\n h1 {\n margin: auto 1rem;\n font-size: 2rem;\n color: white;\n }\n\n @media (width <= 960px) {\n min-height: 6rem;\n }\n }\n\n .octopus-breadcrumb {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n padding: 1rem;\n\n .octopus-breadcrumb-li {\n display: flex;\n align-items: center;\n list-style: none;\n color: white !important;\n\n a {\n color: white !important;\n font-weight: bold;\n }\n\n &::after {\n content: \"-\";\n margin: 0 0.5rem;\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n }\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { j as e, r as t, t as n } from "./classicApi-CGipMqf7.mjs";
|
|
2
2
|
import { t as r } from "./useRouteUpdateParams-DJLm3IAI.mjs";
|
|
3
3
|
import { t as i } from "./GeneralStore-Darfv4af.mjs";
|
|
4
|
-
import { t as a } from "./ClassicPopover-
|
|
4
|
+
import { t as a } from "./ClassicPopover-BUb-1WMB.mjs";
|
|
5
5
|
import { Fragment as o, computed as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createVNode as d, defineComponent as f, nextTick as p, onMounted as m, onUnmounted as h, openBlock as g, ref as _, renderList as v, toDisplayString as y, unref as b, useTemplateRef as x, vShow as S, watch as C, withCtx as w, withDirectives as T, withKeys as E } from "vue";
|
|
6
6
|
import D from "vue-material-design-icons/Plus.vue";
|
|
7
7
|
import { useI18n as O } from "vue-i18n";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategoryList-CUae_phb.mjs","names":["classicApi","_openBlock","_createElementBlock","_createElementVNode","_Fragment","_renderList","_toDisplayString","_withDirectives","_createVNode","_vShow","_withCtx","_withKeys","_createCommentVNode","_sfc_main"],"sources":["../src/components/display/categories/CategoryList.vue","../src/components/display/categories/CategoryList.vue"],"sourcesContent":["<template>\n <div\n v-if=\"categories.length\"\n class=\"d-inline-flex w-100 mb-3 ps-3 pe-3 category-list hide-phone\"\n >\n <div ref=\"categoryListContainer\" class=\"category-list-container\">\n <button\n v-for=\"category in categories\"\n :id=\"'category' + category.id\"\n :key=\"category.id\"\n class=\"btn btn-primary btn-on-dark m-1\"\n @click=\"checkIfFilter(category)\"\n >\n {{ category.name }}\n </button>\n </div>\n <button\n v-show=\"hidenCategories.length\"\n id=\"categories-dropdown\"\n class=\"btn btn-primary btn-on-dark m-1\"\n :title=\"t('See more')\"\n >\n <PlusIcon />\n </button>\n <ClassicPopover\n target=\"categories-dropdown\"\n :only-click=\"true\"\n :left-pos=\"true\"\n >\n <button\n v-for=\"category in hidenCategories\"\n :key=\"category.id\"\n class=\"me-3 octopus-dropdown-item\"\n @keydown.enter=\"checkIfFilter(category)\"\n @mousedown=\"checkIfFilter(category)\"\n >\n {{ category.name }}\n </button>\n </ClassicPopover>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport PlusIcon from \"vue-material-design-icons/Plus.vue\";\nimport { useRouteUpdateParams } from \"../../composable/route/useRouteUpdateParams\";\nimport classicApi from \"../../../api/classicApi\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport ClassicPopover from \"../../misc/ClassicPopover.vue\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { useGeneralStore } from \"../../../stores/GeneralStore\";\nimport { computed, nextTick, onMounted, onUnmounted, Ref, ref, useTemplateRef, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute, useRouter } from \"vue-router\";\n\n//Props \nconst props = defineProps({\n isFilter: { default: false, type: Boolean },\n isDisplay: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits([\"categoriesLength\"]);\n\n//Data \nconst hidenCategories: Ref<Array<Category>> = ref([]);\nconst categoryListRef = useTemplateRef('categoryListContainer');\n\n//Composables\nconst { t, locale } = useI18n();\nconst { updateFiltersParam } = useRouteUpdateParams();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst router = useRouter();\nconst route = useRoute();\n\n//Computed\nconst categories = computed(() => {\n let arrayCategories: Array<Category> = [];\n if (filterStore.filterOrgaId) {\n arrayCategories = generalStore.storedCategoriesOrga.filter((c: Category) => {\n return c.podcastOrganisationCount;\n });\n } else {\n arrayCategories = generalStore.storedCategories.filter((c: Category) => {\n if (state.generalParameters.podcastmaker) return c.podcastOrganisationCount;\n return c.podcastCount;\n });\n }\n emit(\"categoriesLength\", arrayCategories.length);\n return arrayCategories;\n});\nconst watchVariable = computed(() => `${props.isDisplay}|${categories.value}`);\nconst reloadVariable = computed(() => `${filterStore.filterOrgaId}|${generalStore.storedCategories}`);\n\n\n//Watch\nwatch(watchVariable, () => {\n nextTick(() => {\n resizeWindow();\n });\n}, {deep: true, immediate: true});\nwatch(reloadVariable, () => {\n if (filterStore.filterOrgaId) {\n fetchCategories(filterStore.filterOrgaId);\n }\n}, {deep: true, immediate: true});\n\n\nonMounted(()=>window.addEventListener(\"resize\", resizeWindow))\nonUnmounted(()=>window.removeEventListener(\"resize\", resizeWindow))\n\n\n//Methods\nfunction checkIfFilter(category: Category): void {\n if (!props.isFilter) {\n router.push({\n name: \"category\",\n params: { iabId: category.id.toString() },\n });\n return;\n }\n const queries = route.query;\n if (\n !queries.iabId ||\n (\"string\" === typeof queries.iabId &&\n parseInt(queries.iabId, 10) !== category.id)\n ) {\n updateFiltersParam(\n { iabId: category.id.toString() },\n { i: category.id.toString() },\n );\n }\n}\nfunction resizeWindow(): void {\n const categoryList = categoryListRef?.value as HTMLElement;\n if (null === categoryList || !categoryList) {\n return;\n }\n categoryList.style.justifyContent = \"flex-start\";\n hidenCategories.value.length = 0;\n categories.value.forEach((element: Category) => {\n const el = categoryList.querySelector('#category' + element.id);\n if (!el) return;\n if (el.classList.contains(\"hid\")) {\n el.classList.remove(\"hid\");\n }\n });\n categories.value.forEach((element: Category) => {\n const el = categoryList.querySelector('#category' + element.id);\n if (!el) return;\n const parent = el.parentElement;\n if (\n parent &&\n el.offsetLeft + el.clientWidth <= parent.clientWidth - 20\n ) {\n return;\n }\n hidenCategories.value.push(element);\n if (!el.classList.contains(\"hid\")) {\n el.className += \" hid\";\n }\n });\n if (!hidenCategories.value.length) {\n categoryList.style.justifyContent = \"center\";\n }\n}\nasync function fetchCategories(organisationId: string): Promise<void> {\n const data = await classicApi.fetchData<Array<Category>>({\n api: 0,\n path: `iab/list/${organisationId}`,\n parameters: { lang: locale.value },\n });\n generalStore.storedUpdateCategoriesOrga(data);\n}\n</script>\n<style lang=\"scss\">\n.octopus-app {\n .category-list-container {\n display: inline-flex;\n justify-content: flex-start;\n overflow: hidden;\n flex-grow: 1;\n width: 0;\n }\n}\n</style>\n","<template>\n <div\n v-if=\"categories.length\"\n class=\"d-inline-flex w-100 mb-3 ps-3 pe-3 category-list hide-phone\"\n >\n <div ref=\"categoryListContainer\" class=\"category-list-container\">\n <button\n v-for=\"category in categories\"\n :id=\"'category' + category.id\"\n :key=\"category.id\"\n class=\"btn btn-primary btn-on-dark m-1\"\n @click=\"checkIfFilter(category)\"\n >\n {{ category.name }}\n </button>\n </div>\n <button\n v-show=\"hidenCategories.length\"\n id=\"categories-dropdown\"\n class=\"btn btn-primary btn-on-dark m-1\"\n :title=\"t('See more')\"\n >\n <PlusIcon />\n </button>\n <ClassicPopover\n target=\"categories-dropdown\"\n :only-click=\"true\"\n :left-pos=\"true\"\n >\n <button\n v-for=\"category in hidenCategories\"\n :key=\"category.id\"\n class=\"me-3 octopus-dropdown-item\"\n @keydown.enter=\"checkIfFilter(category)\"\n @mousedown=\"checkIfFilter(category)\"\n >\n {{ category.name }}\n </button>\n </ClassicPopover>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport PlusIcon from \"vue-material-design-icons/Plus.vue\";\nimport { useRouteUpdateParams } from \"../../composable/route/useRouteUpdateParams\";\nimport classicApi from \"../../../api/classicApi\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport ClassicPopover from \"../../misc/ClassicPopover.vue\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { useGeneralStore } from \"../../../stores/GeneralStore\";\nimport { computed, nextTick, onMounted, onUnmounted, Ref, ref, useTemplateRef, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute, useRouter } from \"vue-router\";\n\n//Props \nconst props = defineProps({\n isFilter: { default: false, type: Boolean },\n isDisplay: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits([\"categoriesLength\"]);\n\n//Data \nconst hidenCategories: Ref<Array<Category>> = ref([]);\nconst categoryListRef = useTemplateRef('categoryListContainer');\n\n//Composables\nconst { t, locale } = useI18n();\nconst { updateFiltersParam } = useRouteUpdateParams();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst router = useRouter();\nconst route = useRoute();\n\n//Computed\nconst categories = computed(() => {\n let arrayCategories: Array<Category> = [];\n if (filterStore.filterOrgaId) {\n arrayCategories = generalStore.storedCategoriesOrga.filter((c: Category) => {\n return c.podcastOrganisationCount;\n });\n } else {\n arrayCategories = generalStore.storedCategories.filter((c: Category) => {\n if (state.generalParameters.podcastmaker) return c.podcastOrganisationCount;\n return c.podcastCount;\n });\n }\n emit(\"categoriesLength\", arrayCategories.length);\n return arrayCategories;\n});\nconst watchVariable = computed(() => `${props.isDisplay}|${categories.value}`);\nconst reloadVariable = computed(() => `${filterStore.filterOrgaId}|${generalStore.storedCategories}`);\n\n\n//Watch\nwatch(watchVariable, () => {\n nextTick(() => {\n resizeWindow();\n });\n}, {deep: true, immediate: true});\nwatch(reloadVariable, () => {\n if (filterStore.filterOrgaId) {\n fetchCategories(filterStore.filterOrgaId);\n }\n}, {deep: true, immediate: true});\n\n\nonMounted(()=>window.addEventListener(\"resize\", resizeWindow))\nonUnmounted(()=>window.removeEventListener(\"resize\", resizeWindow))\n\n\n//Methods\nfunction checkIfFilter(category: Category): void {\n if (!props.isFilter) {\n router.push({\n name: \"category\",\n params: { iabId: category.id.toString() },\n });\n return;\n }\n const queries = route.query;\n if (\n !queries.iabId ||\n (\"string\" === typeof queries.iabId &&\n parseInt(queries.iabId, 10) !== category.id)\n ) {\n updateFiltersParam(\n { iabId: category.id.toString() },\n { i: category.id.toString() },\n );\n }\n}\nfunction resizeWindow(): void {\n const categoryList = categoryListRef?.value as HTMLElement;\n if (null === categoryList || !categoryList) {\n return;\n }\n categoryList.style.justifyContent = \"flex-start\";\n hidenCategories.value.length = 0;\n categories.value.forEach((element: Category) => {\n const el = categoryList.querySelector('#category' + element.id);\n if (!el) return;\n if (el.classList.contains(\"hid\")) {\n el.classList.remove(\"hid\");\n }\n });\n categories.value.forEach((element: Category) => {\n const el = categoryList.querySelector('#category' + element.id);\n if (!el) return;\n const parent = el.parentElement;\n if (\n parent &&\n el.offsetLeft + el.clientWidth <= parent.clientWidth - 20\n ) {\n return;\n }\n hidenCategories.value.push(element);\n if (!el.classList.contains(\"hid\")) {\n el.className += \" hid\";\n }\n });\n if (!hidenCategories.value.length) {\n categoryList.style.justifyContent = \"center\";\n }\n}\nasync function fetchCategories(organisationId: string): Promise<void> {\n const data = await classicApi.fetchData<Array<Category>>({\n api: 0,\n path: `iab/list/${organisationId}`,\n parameters: { lang: locale.value },\n });\n generalStore.storedUpdateCategoriesOrga(data);\n}\n</script>\n<style lang=\"scss\">\n.octopus-app {\n .category-list-container {\n display: inline-flex;\n justify-content: flex-start;\n overflow: hidden;\n flex-grow: 1;\n width: 0;\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as e } from "./classicApi-CGipMqf7.mjs";
|
|
2
2
|
import { t } from "./GeneralStore-Darfv4af.mjs";
|
|
3
|
-
import { t as n } from "./PodcastList-
|
|
3
|
+
import { t as n } from "./PodcastList-yjd_exFg.mjs";
|
|
4
4
|
import { computed as r, createElementBlock as i, createElementVNode as a, createVNode as o, defineComponent as s, openBlock as c, toDisplayString as l, watch as u } from "vue";
|
|
5
5
|
//#region src/components/pages/CategoryPage.vue?vue&type=script&setup=true&lang.ts
|
|
6
6
|
var d = { class: "page-box" }, f = /* @__PURE__ */ s({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategoryPage-Dlq5XQBS.mjs","names":["_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_createVNode","_sfc_main"],"sources":["../src/components/pages/CategoryPage.vue","../src/components/pages/CategoryPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <h1>{{ title }}</h1>\n <PodcastList\n :first=\"0\"\n :size=\"30\"\n :iab-id=\"iabId\"\n :organisation-id=\"orgaArray\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport PodcastList from \"../display/podcasts/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { computed, watch } from \"vue\";\nimport { Category } from \"@/stores/class/general/category\";\n\n\n//Props \nconst props = defineProps({\n iabId: { default: undefined, type: Number },\n})\n\n//Composables\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\n\n//Computed\nconst orgaArray = computed(() => filterStore.filterOrgaId ? [filterStore.filterOrgaId] : []);\nconst title = computed(() => {\n const matchCategories = generalStore.storedCategories.filter(\n (c: Category) => c.id === props.iabId,\n );\n if (1 !== matchCategories.length) return \"\";\n return matchCategories[0][\"name\"];\n});\n\n\n//Watch\nwatch(title, () => {\n document.title = title.value + ' - ' + generalStore.metaTitle\n}, {immediate: true});\n\n</script>\n","<template>\n <section class=\"page-box\">\n <h1>{{ title }}</h1>\n <PodcastList\n :first=\"0\"\n :size=\"30\"\n :iab-id=\"iabId\"\n :organisation-id=\"orgaArray\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport PodcastList from \"../display/podcasts/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { computed, watch } from \"vue\";\nimport { Category } from \"@/stores/class/general/category\";\n\n\n//Props \nconst props = defineProps({\n iabId: { default: undefined, type: Number },\n})\n\n//Composables\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\n\n//Computed\nconst orgaArray = computed(() => filterStore.filterOrgaId ? [filterStore.filterOrgaId] : []);\nconst title = computed(() => {\n const matchCategories = generalStore.storedCategories.filter(\n (c: Category) => c.id === props.iabId,\n );\n if (1 !== matchCategories.length) return \"\";\n return matchCategories[0][\"name\"];\n});\n\n\n//Watch\nwatch(title, () => {\n document.title = title.value + ' - ' + generalStore.metaTitle\n}, {immediate: true});\n\n</script>\n"],"mappings":";;;;;;;;;;;;;;EAqBA,MAAM,QAAQ;EAKd,MAAM,eAAe,gBAAgB;EACrC,MAAM,cAAc,eAAe;EAGnC,MAAM,YAAY,eAAe,YAAY,eAAe,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC;EAC3F,MAAM,QAAQ,eAAe;GAC3B,MAAM,kBAAkB,aAAa,iBAAiB,QACnD,MAAgB,EAAE,OAAO,MAAM,KAClC;GACA,IAAI,MAAM,gBAAgB,QAAQ,OAAO;GACzC,OAAO,gBAAgB,EAAE,CAAC;EAC5B,CAAC;EAID,MAAM,aAAa;GACjB,SAAS,QAAQ,MAAM,QAAQ,QAAQ,aAAa;EACtD,GAAG,EAAC,WAAW,KAAI,CAAC;;;;;;;;;;;;;;;;;;AC1CT,IAAA,aAAA,EAAA,OAAM,WAAU;;CAAzB,OAAAA,UAAA,GAAAC,mBAQU,WARV,YAQU,CAPRC,mBAAoB,MAAA,MAAAC,gBAAb,OAAA,KAAK,GAAA,CAAA,GACZC,YAKE,OAAA,gBAAA;EAJC,OAAO;EACP,MAAM;EACN,UAAQ,OAAA;EACR,mBAAiB,OAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as e } from "./ClassicCheckbox-xPu56Drn.mjs";
|
|
2
|
-
import { t } from "./CategoryChooser-
|
|
2
|
+
import { t } from "./CategoryChooser-fAUMJNHu.mjs";
|
|
3
3
|
import { createElementBlock as n, createVNode as r, defineComponent as i, openBlock as a, ref as o, unref as s, watch as c } from "vue";
|
|
4
4
|
import { useI18n as l } from "vue-i18n";
|
|
5
5
|
//#region src/components/display/filter/CategorySearchFilter.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategorySearchFilter-EULpSE2e.mjs","names":["_openBlock","_createElementBlock","_createVNode","_sfc_main"],"sources":["../src/components/display/filter/CategorySearchFilter.vue","../src/components/display/filter/CategorySearchFilter.vue"],"sourcesContent":["<template>\n <div class=\"d-flex mt-3 align-items-center\">\n <ClassicCheckbox\n v-model:text-init=\"isCategory\"\n class=\"flex-shrink-0 me-2\"\n id-checkbox=\"search-category-checkbox\"\n :label=\"t('By category')\"\n />\n <CategoryChooser\n :category-selected=\"iabIdIntern\"\n width=\"100%\"\n :defaultanswer=\"t('No category filter')\"\n @update:category-selected=\"updateIabId\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from \"vue-i18n\";\nimport ClassicCheckbox from \"../../form/ClassicCheckbox.vue\";\nimport CategoryChooser from \"../categories/CategoryChooser.vue\";\nimport { ref, watch } from \"vue\";\n\n//Props \nconst props = defineProps({\n iabId: { default: undefined, type: Number },\n})\n\n\n//Emits\nconst emit = defineEmits([\"update:iabId\"]);\n\n//Data \nconst isCategory = ref(false);\nconst iabIdIntern = ref(0);\n\n//Composables\nconst { t } = useI18n();\n \n//Watch\nwatch(()=>props.iabId, () => {\n isCategory.value = undefined !== props.iabId;\n if (props.iabId && props.iabId !== iabIdIntern.value) {\n iabIdIntern.value = props.iabId;\n }\n}, {immediate: true});\nwatch(isCategory, () => {\n const value = isCategory.value ? iabIdIntern.value : undefined;\n if (value !== props.iabId) {\n emit(\"update:iabId\", value);\n }\n});\n\n//Methods\nfunction updateIabId(iabId: number) {\n iabIdIntern.value = iabId;\n if (isCategory.value) {\n emit(\"update:iabId\", iabIdIntern.value);\n } else {\n isCategory.value = true;\n }\n}\n</script>\n","<template>\n <div class=\"d-flex mt-3 align-items-center\">\n <ClassicCheckbox\n v-model:text-init=\"isCategory\"\n class=\"flex-shrink-0 me-2\"\n id-checkbox=\"search-category-checkbox\"\n :label=\"t('By category')\"\n />\n <CategoryChooser\n :category-selected=\"iabIdIntern\"\n width=\"100%\"\n :defaultanswer=\"t('No category filter')\"\n @update:category-selected=\"updateIabId\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from \"vue-i18n\";\nimport ClassicCheckbox from \"../../form/ClassicCheckbox.vue\";\nimport CategoryChooser from \"../categories/CategoryChooser.vue\";\nimport { ref, watch } from \"vue\";\n\n//Props \nconst props = defineProps({\n iabId: { default: undefined, type: Number },\n})\n\n\n//Emits\nconst emit = defineEmits([\"update:iabId\"]);\n\n//Data \nconst isCategory = ref(false);\nconst iabIdIntern = ref(0);\n\n//Composables\nconst { t } = useI18n();\n \n//Watch\nwatch(()=>props.iabId, () => {\n isCategory.value = undefined !== props.iabId;\n if (props.iabId && props.iabId !== iabIdIntern.value) {\n iabIdIntern.value = props.iabId;\n }\n}, {immediate: true});\nwatch(isCategory, () => {\n const value = isCategory.value ? iabIdIntern.value : undefined;\n if (value !== props.iabId) {\n emit(\"update:iabId\", value);\n }\n});\n\n//Methods\nfunction updateIabId(iabId: number) {\n iabIdIntern.value = iabId;\n if (isCategory.value) {\n emit(\"update:iabId\", iabIdIntern.value);\n } else {\n isCategory.value = true;\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;EAwBA,MAAM,QAAQ;EAMd,MAAM,OAAO;EAGb,MAAM,aAAa,IAAI,KAAK;EAC5B,MAAM,cAAc,IAAI,CAAC;EAGzB,MAAM,EAAE,MAAM,QAAQ;EAGtB,YAAU,MAAM,aAAa;GAC3B,WAAW,QAAQ,KAAA,MAAc,MAAM;GACvC,IAAI,MAAM,SAAS,MAAM,UAAU,YAAY,OAC7C,YAAY,QAAQ,MAAM;EAE9B,GAAG,EAAC,WAAW,KAAI,CAAC;EACpB,MAAM,kBAAkB;GACtB,MAAM,QAAQ,WAAW,QAAQ,YAAY,QAAQ,KAAA;GACrD,IAAI,UAAU,MAAM,OAClB,KAAK,gBAAgB,KAAK;EAE9B,CAAC;EAGD,SAAS,YAAY,OAAe;GAClC,YAAY,QAAQ;GACpB,IAAI,WAAW,OACb,KAAK,gBAAgB,YAAY,KAAK;QAEtC,WAAW,QAAQ;EAEvB;;;;;;;;;;;;;;;;;;;;AC5DO,IAAA,aAAA,EAAA,OAAM,iCAAgC;;CAA3C,OAAAA,UAAA,GAAAC,mBAaM,OAbN,YAaM,CAZJC,YAKE,OAAA,oBAAA;EAJQ,aAAW,OAAA;EAAA,qBAAA,OAAA,OAAA,OAAA,MAAA,WAAA,OAAA,aAAU;EAC7B,OAAM;EACN,eAAY;EACX,OAAO,OAAA,EAAC,aAAA;CAEX,GAAA,MAAA,GAAA,CAAA,aAAA,OAAA,CAAA,GAAAA,YAKE,OAAA,oBAAA;EAJC,qBAAmB,OAAA;EACpB,OAAM;EACL,eAAe,OAAA,EAAC,oBAAA;EAChB,6BAA0B,OAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./CommentStore-CysGkBHp.mjs";
|
|
2
2
|
import { t } from "./config-DMjLBcZ2.mjs";
|
|
3
|
-
import { t as n } from "./ClassicInputText-
|
|
3
|
+
import { t as n } from "./ClassicInputText-YsntJkHk.mjs";
|
|
4
4
|
import { t as r } from "./RecaptchaModal-BdW4xNlX.mjs";
|
|
5
5
|
import { computed as i, createBlock as a, createVNode as o, defineComponent as s, openBlock as c, ref as l, unref as u, withCtx as d } from "vue";
|
|
6
6
|
import { useI18n as f } from "vue-i18n";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckIdentityModal-CpRO7ehH.mjs","names":["Constants","_openBlock","_createBlock","_withCtx","_createVNode","_sfc_main"],"sources":["../src/components/display/comments/modal/CheckIdentityModal.vue","../src/components/display/comments/modal/CheckIdentityModal.vue"],"sourcesContent":["<template>\n <RecaptchaModal\n id-modal=\"check-identity-modal\"\n :title-modal=\"titleModal\"\n :disable-validate=\"errorName\"\n @close=\"emit('close')\"\n @validate=\"updateName\"\n >\n <template #form>\n <ClassicInputText\n v-model:text-init=\"name\"\n v-model:error-variable=\"errorName\"\n input-id=\"adserver-tag\"\n focus\n :label=\"t('Let\\'s get acquainted :')\"\n :max-length=\"Constants.MAX_COMMENT_NAME\"\n :placeholder=\"t('Your name')\"\n autocomplete-type=\"name\"\n />\n </template>\n </RecaptchaModal>\n</template>\n\n<script setup lang=\"ts\">\nimport Constants from \"../../../../../public/config\";\nimport ClassicInputText from \"../../../form/ClassicInputText.vue\";\nimport RecaptchaModal from \"./RecaptchaModal.vue\";\nimport { computed, Ref, ref } from \"vue\";\nimport { useCommentStore } from \"../../../../stores/CommentStore\";\nimport { useI18n } from \"vue-i18n\";\n\n\n//Props \nconst props = defineProps({\n title: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"close\", \"validate\"]);\n\n//Data \nconst errorName = ref(true);\nconst name: Ref<string | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\nconst commentStore = useCommentStore();\n\n\n//Computed\nconst titleModal = computed(() => props.title ?? t(\"Welcome, thanks for your comment\"));\n\n//Methods\nfunction updateName(): void {\n commentStore.setCommentUser(name.value ?? \"\");\n emit(\"validate\");\n}\n</script>\n","<template>\n <RecaptchaModal\n id-modal=\"check-identity-modal\"\n :title-modal=\"titleModal\"\n :disable-validate=\"errorName\"\n @close=\"emit('close')\"\n @validate=\"updateName\"\n >\n <template #form>\n <ClassicInputText\n v-model:text-init=\"name\"\n v-model:error-variable=\"errorName\"\n input-id=\"adserver-tag\"\n focus\n :label=\"t('Let\\'s get acquainted :')\"\n :max-length=\"Constants.MAX_COMMENT_NAME\"\n :placeholder=\"t('Your name')\"\n autocomplete-type=\"name\"\n />\n </template>\n </RecaptchaModal>\n</template>\n\n<script setup lang=\"ts\">\nimport Constants from \"../../../../../public/config\";\nimport ClassicInputText from \"../../../form/ClassicInputText.vue\";\nimport RecaptchaModal from \"./RecaptchaModal.vue\";\nimport { computed, Ref, ref } from \"vue\";\nimport { useCommentStore } from \"../../../../stores/CommentStore\";\nimport { useI18n } from \"vue-i18n\";\n\n\n//Props \nconst props = defineProps({\n title: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"close\", \"validate\"]);\n\n//Data \nconst errorName = ref(true);\nconst name: Ref<string | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\nconst commentStore = useCommentStore();\n\n\n//Computed\nconst titleModal = computed(() => props.title ?? t(\"Welcome, thanks for your comment\"));\n\n//Methods\nfunction updateName(): void {\n commentStore.setCommentUser(name.value ?? \"\");\n emit(\"validate\");\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;EAiCA,MAAM,QAAQ;EAKd,MAAM,OAAO;EAGb,MAAM,YAAY,IAAI,IAAI;EAC1B,MAAM,OAAgC,IAAI,KAAA,CAAS;EAGnD,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,eAAe,gBAAgB;EAIrC,MAAM,aAAa,eAAe,MAAM,SAAS,EAAE,kCAAkC,CAAC;EAGtF,SAAS,aAAmB;GAC1B,aAAa,eAAe,KAAK,SAAS,EAAE;GAC5C,KAAK,UAAU;EACjB;;;;;;;;;;;;;;;;;;;;;;;;;;CCvDE,OAAAC,UAAA,GAAAC,YAmBiB,OAAA,mBAAA;EAlBf,YAAS;EACR,eAAa,OAAA;EACb,oBAAkB,OAAA;EAClB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,KAAI,OAAA;EACX,YAAU,OAAA;;EAEA,MAAIC,cAUX,CATFC,YASE,OAAA,qBAAA;GARQ,aAAW,OAAA;GAAA,qBAAA,OAAA,OAAA,OAAA,MAAA,WAAA,OAAA,OAAI;GACf,kBAAgB,OAAA;GAAA,0BAAA,OAAA,OAAA,OAAA,MAAA,WAAA,OAAA,YAAS;GACjC,YAAS;GACT,OAAA;GACC,OAAO,OAAA,EAAC,wBAAA;GACR,cAAY,OAAA,UAAU;GACtB,aAAa,OAAA,EAAC,WAAA;GACf,qBAAkB"}
|