@saooti/octopus-sdk 42.3.0 → 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-DEh3iiuK.mjs → AdvancedSearch-BTbYmlMm.mjs} +8 -8
- package/dist/AdvancedSearch-C6BJzvGT.mjs.map +1 -0
- package/dist/AdvancedSearch-ChnJq71j.mjs.map +1 -0
- 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-DN3WFduh.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-cLjakm-6.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-B0S_nCvS.mjs.map +1 -0
- package/dist/CategoryFilter-BVrLO_pV.mjs.map +1 -0
- package/dist/{CategoryFilter-Djmal5bY.mjs → CategoryFilter-CsYCvEnz.mjs} +3 -3
- package/dist/CategoryFilter-DVwCpHLx.mjs.map +1 -0
- package/dist/CategoryList-B_9GG6Z9.mjs.map +1 -0
- package/dist/{CategoryList-Dksp79Lm.mjs → CategoryList-CDoIfrDw.mjs} +2 -2
- package/dist/CategoryList-CUae_phb.mjs.map +1 -0
- package/dist/CategoryList-DxR0fpKd.mjs.map +1 -0
- package/dist/CategoryPage-C7aKDtgs.mjs.map +1 -0
- package/dist/{CategoryPage-DC8fMny_.mjs → CategoryPage-Cl5Yuxnu.mjs} +2 -2
- package/dist/CategoryPage-DlnAp05t.mjs.map +1 -0
- 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/ChapteringModal-BplEGZj2.mjs.map +1 -0
- package/dist/ChapteringModal-C9yuW_IU.mjs.map +1 -0
- package/dist/{ChapteringModal-Be9FF1yz.mjs → ChapteringModal-DiiVSG7s.mjs} +1 -1
- package/dist/{CheckIdentityModal-nMszYOsW.mjs → CheckIdentityModal-BrnYeGdk.mjs} +3 -3
- package/dist/CheckIdentityModal-BtGdsv2v.mjs.map +1 -0
- package/dist/CheckIdentityModal-CpRO7ehH.mjs.map +1 -0
- package/dist/CheckIdentityModal-Cry9ra4J.mjs.map +1 -0
- package/dist/ClassicDatePicker--q1yYb-S.mjs.map +1 -0
- package/dist/ClassicDatePicker-4ouU5ov9.mjs.map +1 -0
- package/dist/ClassicDatePicker-B8bI9QfF.mjs.map +1 -0
- package/dist/ClassicDatePicker-BTJWityQ.mjs +186 -0
- package/dist/ClassicDatePicker-CChR9LBd.mjs.map +1 -0
- package/dist/ClassicDatePicker-CopJVkF0.mjs.map +1 -0
- package/dist/ClassicDatePicker-DgcJCevR.mjs.map +1 -0
- package/dist/ClassicDatePicker-NxGNQxHE.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/{ClassicNotifications-DEpVRRHg.mjs → ClassicNotifications-8CVfGSqL.mjs} +1 -1
- package/dist/ClassicNotifications-BFQ-R6kO.mjs.map +1 -0
- package/dist/ClassicNotifications-DR0PM1Xp.mjs.map +1 -0
- package/dist/{ClassicPopover-DWR50Nxi.mjs → ClassicPopover-BUb-1WMB.mjs} +1 -1
- package/dist/ClassicPopover-BhMY2SMo.mjs.map +1 -0
- package/dist/ClipboardModal-B_SZ6jDk.mjs.map +1 -0
- package/dist/{ClipboardModal-BUKwZYOf.mjs → ClipboardModal-ByVXPcKD.mjs} +1 -1
- package/dist/ClipboardModal-DjrZQRtY.mjs.map +1 -0
- package/dist/{CommentInput-US8ZtNj1.mjs → CommentInput-CrRstzua.mjs} +4 -4
- package/dist/CommentInput-DPMj47uE.mjs.map +1 -0
- package/dist/CommentInput-DbhOyi7c.mjs.map +1 -0
- package/dist/CommentInput-I97yysBW.mjs.map +1 -0
- package/dist/CommentItem-AItzrTBi.mjs.map +1 -0
- package/dist/CommentItem-B7vvJwZI.mjs.map +1 -0
- package/dist/{CommentItem-CqWZPmbj.mjs → CommentItem-BYU67TIu.mjs} +4 -4
- package/dist/CommentItem-CvNbH7Hf.mjs.map +1 -0
- package/dist/CommentList-BTyyCcX4.mjs.map +1 -0
- package/dist/CommentList-CWrf45Di.mjs.map +1 -0
- package/dist/CommentList-DP6wk4PD.mjs.map +1 -0
- package/dist/{CommentList-CSYpqgNM.mjs → CommentList-snIIudVC.mjs} +2 -2
- package/dist/CommentMoreActions-BNajG7wk.mjs.map +1 -0
- package/dist/CommentMoreActions-C1l4Y_HY.mjs.map +1 -0
- package/dist/CommentMoreActions-DPbJnEEV.mjs.map +1 -0
- package/dist/{CommentMoreActions-T5RN6BGq.mjs → CommentMoreActions-y202UxL5.mjs} +3 -3
- package/dist/{CommentName-DslRo9jg.mjs → CommentName-CHBlEM7I.mjs} +3 -3
- package/dist/CommentName-D5HN8bGE.mjs.map +1 -0
- package/dist/CommentName-DMom_kwo.mjs.map +1 -0
- package/dist/CommentName-OJrxjSxu.mjs.map +1 -0
- package/dist/CommentParentInfo-DWVF5Ewh.mjs.map +1 -0
- package/dist/CommentParentInfo-Do3IlO95.mjs.map +1 -0
- package/dist/{CommentParentInfo-DMX3nkCb.mjs → CommentParentInfo-DoEeaQGU.mjs} +2 -2
- package/dist/CommentParentInfo-DqHfDpKs.mjs.map +1 -0
- package/dist/{CommentPlayer-D3JEVPKX.mjs → CommentPlayer-B4MXG-gG.mjs} +2 -2
- package/dist/CommentPlayer-B67saxPf.mjs.map +1 -0
- package/dist/CommentPlayer-BUtEvkoV.mjs.map +1 -0
- package/dist/CommentSection-BIZMRePu.mjs.map +1 -0
- package/dist/CommentSection-CSehg6MD.mjs.map +1 -0
- package/dist/{CommentSection-Brn0VQcc.mjs → CommentSection-DZf04NxT.mjs} +3 -3
- package/dist/CommentSection-MDKioQWf.mjs.map +1 -0
- package/dist/CommentStore-BBm8MjxW.mjs.map +1 -0
- package/dist/{CommentStore-hPTYaDGr.mjs → CommentStore-CysGkBHp.mjs} +8 -8
- package/dist/CommentStore-F5MVSrDw.mjs.map +1 -0
- package/dist/ContractPreviewModal-CFSkXgB4.mjs.map +1 -0
- package/dist/ContractPreviewModal-CKL6Rb_V.mjs.map +1 -0
- package/dist/{ContractPreviewModal-48Je4Wuy.mjs → ContractPreviewModal-Dd-1KasR.mjs} +2 -2
- package/dist/DateFilter-BwYSwGc-.mjs.map +1 -0
- package/dist/DateFilter-CGTz76bp.mjs.map +1 -0
- package/dist/DateFilter-CfeYepTO.mjs.map +1 -0
- package/dist/{DateFilter-DztHuPm8.mjs → DateFilter-Cnb_S8Up.mjs} +1 -1
- package/dist/DateFilter-DFw66D2V.mjs.map +1 -0
- 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/DateFilter-QGaXHkcu.mjs.map +1 -0
- package/dist/{DownloadPodcastButton-BYWuLoNg.mjs → DownloadPodcastButton-6HtR84aE.mjs} +2 -2
- package/dist/DownloadPodcastButton-D2qeKDPT.mjs.map +1 -0
- package/dist/DownloadPodcastButton-Tr_Y4qMu.mjs.map +1 -0
- package/dist/{EditCommentModal-DacFxzLx.mjs → EditCommentModal-BQ03B6LC.mjs} +2 -2
- package/dist/EditCommentModal-BZitN0Ir.mjs.map +1 -0
- package/dist/EditCommentModal-CcmCx_My.mjs.map +1 -0
- package/dist/EditCommentModal-sj0yXd7-.mjs.map +1 -0
- package/dist/EmissionGroupChooser--428fdeK.mjs.map +1 -0
- package/dist/EmissionGroupChooser-BJCKekKM.mjs.map +1 -0
- package/dist/EmissionGroupChooser-ByqGmsGw.mjs.map +1 -0
- package/dist/EmissionGroupChooser-Cb3CF0uc.mjs.map +1 -0
- package/dist/EmissionGroupChooser-D4vMQH8g.mjs.map +1 -0
- package/dist/{EmissionGroupChooser-KmzQjp7d.mjs → EmissionGroupChooser-De_IpEhW.mjs} +2 -2
- package/dist/EmissionInlineList-CdHQBjfR.mjs.map +1 -0
- package/dist/EmissionInlineList-CnA0d_k2.mjs.map +1 -0
- package/dist/EmissionInlineList-DLUvPBNl.mjs.map +1 -0
- package/dist/{EmissionInlineList-BoEIAbLu.mjs → EmissionInlineList-dlb4gUOP.mjs} +5 -5
- package/dist/EmissionItem-B39oFnXF.mjs.map +1 -0
- package/dist/EmissionItem-BkPLFhAo.mjs.map +1 -0
- package/dist/EmissionItem-CjAUdLb7.mjs.map +1 -0
- package/dist/{EmissionItem-BeQWw-UT.mjs → EmissionItem-Dm_IGNkw.mjs} +4 -4
- package/dist/EmissionList-B0UntYdC.mjs.map +1 -0
- package/dist/EmissionList-BQSI4xbi.mjs.map +1 -0
- package/dist/{EmissionList-DB7O1nj5.mjs → EmissionList-C4JEYLyK.mjs} +4 -4
- package/dist/EmissionList-C7lQBdlW.mjs.map +1 -0
- package/dist/EmissionPage-BF6s2ySo.mjs.map +1 -0
- package/dist/EmissionPage-B_-nDP5x.mjs.map +1 -0
- package/dist/EmissionPage-C-ESprrZ.mjs.map +1 -0
- package/dist/{EmissionPage-CNYJ1Puo.mjs → EmissionPage-C4XUdzzm.mjs} +10 -10
- package/dist/EmissionPage-CPXcNHGS.mjs.map +1 -0
- package/dist/EmissionPage-EMgXCVhK.mjs.map +1 -0
- package/dist/EmissionPage-mXbUqOh9.mjs.map +1 -0
- package/dist/{EmissionPlayerItem-S_yqupad.mjs → EmissionPlayerItem-BLIdolRe.mjs} +3 -3
- package/dist/EmissionPlayerItem-C27zJBhY.mjs.map +1 -0
- package/dist/EmissionPlayerItem-C3fkgEaL.mjs.map +1 -0
- package/dist/EmissionPlayerItem-DxXG20G1.mjs.map +1 -0
- package/dist/EmissionPresentationItem-BNnDSWGQ.mjs.map +1 -0
- package/dist/EmissionPresentationItem-BeETY65I.mjs.map +1 -0
- package/dist/{EmissionPresentationItem-kJgKN7Ju.mjs → EmissionPresentationItem-DYDwfqwp.mjs} +1 -1
- package/dist/EmissionPresentationList-BD7rIUok.mjs.map +1 -0
- package/dist/EmissionPresentationList-CGMyY_iu.mjs.map +1 -0
- package/dist/{EmissionPresentationList-Bg9X3CJP.mjs → EmissionPresentationList-Cxi7QnIs.mjs} +3 -3
- package/dist/EmissionsPage-4To0aRBA.mjs.map +1 -0
- package/dist/{EmissionsPage-BLpGH_PR.mjs → EmissionsPage-B0bXLncg.mjs} +5 -5
- package/dist/EmissionsPage-BIspB5uq.mjs.map +1 -0
- 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-Cgzvn2h8.mjs.map +1 -0
- package/dist/EmissionsPage-D09zTpGb.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/EmissionsPage-wjKBLFM6.mjs.map +1 -0
- package/dist/Error403Page-B6Q7ijY3.mjs.map +1 -0
- package/dist/Error403Page-DF08mgCL.mjs.map +1 -0
- package/dist/{Error403Page-BB69doEn.mjs → Error403Page-DVmC5AOd.mjs} +2 -2
- package/dist/FooterGarSection-BWahCyz0.mjs.map +1 -0
- package/dist/{FooterGarSection-B9nsnpfF.mjs → FooterGarSection-BqPggI3o.mjs} +3 -3
- package/dist/FooterGarSection-CN8ZfO7e.mjs.map +1 -0
- package/dist/FooterSection-BOjr1LRb.mjs.map +1 -0
- package/dist/{FooterSection-DdGtlbk-.mjs → FooterSection-C5FEIJlU.mjs} +11 -11
- package/dist/FooterSection-nVRzKSYN.mjs.map +1 -0
- package/dist/HomeDropdown-3fl_xltN.mjs.map +1 -0
- package/dist/HomeDropdown-DGNkJhG2.mjs.map +1 -0
- package/dist/{HomeDropdown-BqwwLStt.mjs → HomeDropdown-Fx6kQAuH.mjs} +3 -3
- package/dist/HomeDropdown-PvmOUzYb.mjs.map +1 -0
- package/dist/{HomePage-JOUAKKfP.mjs → HomePage-7PT7HmHs.mjs} +3 -3
- package/dist/HomePage-D0Pbu_h1.mjs.map +1 -0
- package/dist/HomePage-D6_D1f33.mjs.map +1 -0
- package/dist/HomePage-ry0NfX1M.mjs.map +1 -0
- package/dist/InlineRubriqueList-BdpS1pVc.mjs.map +1 -0
- package/dist/InlineRubriqueList-BlcjQ4wR.mjs.map +1 -0
- package/dist/{InlineRubriqueList-BzcHKvM4.mjs → InlineRubriqueList-ezgexR-O.mjs} +1 -1
- package/dist/{LikeSection-MmbHMunb.mjs → LikeSection-CGu4yOCr.mjs} +3 -3
- package/dist/LikeSection-Cqj4y7qZ.mjs.map +1 -0
- package/dist/LikeSection-D95IMsZE.mjs.map +1 -0
- package/dist/LikeSection-HJla-zgI.mjs.map +1 -0
- package/dist/{ListPaginate-5uRK_QKJ.mjs → ListPaginate-BPdnBcpe.mjs} +2 -2
- package/dist/ListPaginate-DYzRnp-2.mjs.map +1 -0
- package/dist/ListPaginate-DyR7HLIc.mjs.map +1 -0
- package/dist/LiveHorizontalList-Bqe351Ut.mjs.map +1 -0
- package/dist/{LiveHorizontalList-CpoIRd4C.mjs → LiveHorizontalList-Bs-Rz5Ws.mjs} +3 -3
- package/dist/LiveHorizontalList-CaujYMT3.mjs.map +1 -0
- package/dist/LiveHorizontalList-DhsOZPT3.mjs.map +1 -0
- package/dist/{LiveList-DYFBrNgg.mjs → LiveList-BVOEnAEc.mjs} +5 -5
- package/dist/LiveList-DMB3FxUM.mjs.map +1 -0
- package/dist/LiveList-DOi4GV1x.mjs.map +1 -0
- package/dist/LiveList-Dh1mJVs7.mjs.map +1 -0
- package/dist/LivesPage-BvDLscOE.mjs.map +1 -0
- package/dist/{LivesPage-FSkmBdVw.mjs → LivesPage-DG5VY4HF.mjs} +2 -2
- package/dist/LivesPage-DmSlg7iH.mjs.map +1 -0
- package/dist/LivesPage-yy_5pI8R.mjs.map +1 -0
- package/dist/MapPage-3n-rigBK.mjs.map +1 -0
- package/dist/MapPage-5GwE8Z4E.mjs.map +1 -0
- package/dist/{MapPage-DpBt2gWF.mjs → MapPage-bIe2a9O1.mjs} +2 -2
- package/dist/MobileMenu-BSos17v3.mjs.map +1 -0
- package/dist/{MobileMenu-CjNMfHUP.mjs → MobileMenu-BZ5nOrYw.mjs} +5 -5
- package/dist/MobileMenu-C6W37oJg.mjs.map +1 -0
- package/dist/MobileMenu-K0rNwrW1.mjs.map +1 -0
- package/dist/NewsletterModal-CFGXBtID.mjs.map +1 -0
- package/dist/NewsletterModal-CZNwpCK5.mjs.map +1 -0
- package/dist/{NewsletterModal-BurqHTFc.mjs → NewsletterModal-DZk0mSVC.mjs} +1 -1
- 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-Dx-OT7MW.mjs → OrganisationChooser-C48cWqbY.mjs} +3 -3
- package/dist/OrganisationChooser-PpO7MD7f.mjs.map +1 -0
- package/dist/OrganisationChooser-Y_jO6oXv.mjs.map +1 -0
- package/dist/{OrganisationChooserLight-BF5fT5pV.mjs → OrganisationChooserLight-Bcltbv-v.mjs} +1 -1
- package/dist/OrganisationChooserLight-Dh7wMH40.mjs.map +1 -0
- package/dist/OrganisationChooserLight-Dx_rkvpP.mjs.map +1 -0
- package/dist/PageNotFound-DeW-K_hL.mjs.map +1 -0
- package/dist/{PageNotFound-Cj-3Gv8T.mjs → PageNotFound-DogaoIFX.mjs} +2 -2
- package/dist/PageNotFound-gRuMWYCp.mjs.map +1 -0
- package/dist/ParticipantInlineList-CY_s6aJm.mjs.map +1 -0
- package/dist/{ParticipantInlineList-DEWqM1Io.mjs → ParticipantInlineList-D9pkOlvP.mjs} +4 -4
- package/dist/ParticipantInlineList-DSatB75C.mjs.map +1 -0
- package/dist/ParticipantItem-BG7yqRvD.mjs.map +1 -0
- package/dist/ParticipantItem-BTK25HID.mjs.map +1 -0
- package/dist/{ParticipantItem-BZAUIeSR.mjs → ParticipantItem-CbHOfVon.mjs} +3 -3
- package/dist/ParticipantPage-B4VnV8Yc.mjs.map +1 -0
- package/dist/ParticipantPage-B6Gzg6ul.mjs.map +1 -0
- package/dist/ParticipantPage-CNRNKTtC.mjs.map +1 -0
- package/dist/ParticipantPage-CpkhQjN2.mjs.map +1 -0
- package/dist/ParticipantPage-D61CCIqy.mjs.map +1 -0
- package/dist/ParticipantPage-Dh4JJCmJ.mjs.map +1 -0
- package/dist/{ParticipantPage-CzaHoWij.mjs → ParticipantPage-nTp2MbgB.mjs} +6 -6
- package/dist/{ParticipantsPage-goxJZQZZ.mjs → ParticipantsPage-Bbz9lQ_0.mjs} +6 -6
- package/dist/ParticipantsPage-COaQrVID.mjs.map +1 -0
- package/dist/ParticipantsPage-DRVVU7qp.mjs.map +1 -0
- package/dist/ParticipantsPage-DhKCWwKE.mjs.map +1 -0
- package/dist/{PlayerAnonymousModal-By96BtpA.mjs → PlayerAnonymousModal-B1iZ34O8.mjs} +2 -2
- package/dist/PlayerAnonymousModal-CBZStK-L.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-Cq6-Dn49.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-Cu2GGoAh.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-DiXWtNmM.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-DrQvDDym.mjs.map +1 -0
- package/dist/PlayerCompact-B9oeGx_g.mjs.map +1 -0
- package/dist/PlayerCompact-DtMginEc.mjs.map +1 -0
- package/dist/PlayerCompact-E8ydrdJ4.mjs.map +1 -0
- package/dist/{PlayerCompact-CjU8xxVH.mjs → PlayerCompact-_39FpkWo.mjs} +4 -4
- package/dist/PlayerComponent-4Wj5XlrS.mjs.map +1 -0
- package/dist/{PlayerComponent-B58O6U6i.mjs → PlayerComponent-B1RsmSf0.mjs} +47 -47
- 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/PlayerComponent-C222I0kT.mjs.map +1 -0
- package/dist/PlayerComponent-CjNZNKKz.mjs.map +1 -0
- package/dist/PlayerComponent-UG_c6_yr.mjs.map +1 -0
- package/dist/{PlayerLarge-CWL5SDzD.mjs → PlayerLarge-BxdyYLOt.mjs} +5 -5
- package/dist/PlayerLarge-CPUAoR9q.mjs.map +1 -0
- package/dist/PlayerLarge-DP7RsA83.mjs.map +1 -0
- package/dist/PlayerLarge-DpiFO7gk.mjs.map +1 -0
- package/dist/PlayerLarge-Dwtmu4gz.mjs.map +1 -0
- package/dist/PlayerLarge-HvRHSw4j.mjs.map +1 -0
- package/dist/PlayerLarge-X5uYCbyS.mjs.map +1 -0
- package/dist/PlayerLarge-qwr3iWSX.mjs.map +1 -0
- package/dist/{PlayerPlayButton-DmvV2YDi.mjs → PlayerPlayButton-BIsfgj0d.mjs} +4 -4
- package/dist/PlayerPlayButton-BQ4zJOrE.mjs.map +1 -0
- package/dist/PlayerPlayButton-kh4ZCdWh.mjs.map +1 -0
- package/dist/PlayerProgressBar-C-I3dk3l.mjs.map +1 -0
- package/dist/PlayerProgressBar-Dr-aFk7O.mjs.map +1 -0
- package/dist/{PlayerProgressBar-Cl_mF4nD.mjs → PlayerProgressBar-dSschgez.mjs} +2 -2
- package/dist/PlayerProgressBar-xc1ZFPJY.mjs.map +1 -0
- package/dist/PlayerStore-Aq_ukXXS.mjs.map +1 -0
- package/dist/PlayerStore-C_QCHbT3.mjs.map +1 -0
- package/dist/{PlayerStore-CKprkxa0.mjs → PlayerStore-DggKki80.mjs} +1 -1
- package/dist/PlayerVideo-BNfhaNUn.mjs.map +1 -0
- package/dist/{PlayerVideo-CVUU7nHT.mjs → PlayerVideo-BWyvKlJT.mjs} +3 -3
- package/dist/PlayerVideo-Bhok6qYS.mjs.map +1 -0
- package/dist/PlayerVideo-CN609whx.mjs.map +1 -0
- package/dist/PlayerVideo-DXG_PsWA.mjs.map +1 -0
- package/dist/PlayerVideo-DzUapxuZ.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-B1rRVLzy.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-B6qODy7b.mjs.map +1 -0
- package/dist/{PlayerVideoDigiteka-DZIqqN8a.mjs → PlayerVideoDigiteka-Dxx63XHI.mjs} +2 -2
- package/dist/PlayerVideoHls-BoAbvi2b.mjs.map +1 -0
- package/dist/PlayerVideoHls-BsHaaJB-.mjs.map +1 -0
- package/dist/PlayerVideoHls-C0ddorEn.mjs.map +1 -0
- package/dist/PlayerVideoHls-DBODDRmV.mjs.map +1 -0
- package/dist/PlayerVideoHls-DVNHm_O2.mjs.map +1 -0
- package/dist/{PlayerVideoHls-BirHOkZD.mjs → PlayerVideoHls-DzbyXZsQ.mjs} +9 -7
- package/dist/{PlaylistPage-DljbABur.mjs → PlaylistPage-BdbqXFwR.mjs} +35 -35
- package/dist/PlaylistPage-BgUaPJet.mjs.map +1 -0
- package/dist/PlaylistPage-BwF2VdGb.mjs.map +1 -0
- package/dist/PlaylistPage-CINwx3zE.mjs.map +1 -0
- package/dist/PlaylistPage-CPB647jC.mjs.map +1 -0
- package/dist/PlaylistPage-DDzE5GQs.mjs.map +1 -0
- package/dist/PlaylistPage-bm1nWKMg.mjs.map +1 -0
- package/dist/PlaylistsPage-BwkVSYIp.mjs.map +1 -0
- package/dist/PlaylistsPage-C62NUvz4.mjs.map +1 -0
- package/dist/{PlaylistsPage-BSW-uPWF.mjs → PlaylistsPage-D08i24b2.mjs} +13 -13
- package/dist/PlaylistsPage-Dvh77ql6.mjs.map +1 -0
- package/dist/PodcastFilterList-BBhzOM64.mjs.map +1 -0
- package/dist/PodcastFilterList-BKBjd36i.mjs.map +1 -0
- package/dist/{PodcastFilterList-YM90eN60.mjs → PodcastFilterList-CL5ebQ69.mjs} +3 -3
- package/dist/PodcastFilterList-D9NTYS1v.mjs.map +1 -0
- package/dist/{PodcastImage-BtiQlrb3.mjs → PodcastImage-BFA22TgZ.mjs} +6 -6
- package/dist/PodcastImage-BhQKB5te.mjs.map +1 -0
- package/dist/PodcastImage-CHx3bUzt.mjs.map +1 -0
- package/dist/PodcastInlineList-CcNd_Hbs.mjs.map +1 -0
- package/dist/{PodcastInlineList-B32BSFqN.mjs → PodcastInlineList-H6BxXx0A.mjs} +1 -1
- package/dist/PodcastInlineList-akLivgog.mjs.map +1 -0
- package/dist/PodcastInlineList-jI2EvXSo.mjs.map +1 -0
- package/dist/{PodcastInlineListTemplate-DTrS1UiG.mjs → PodcastInlineListTemplate-Chbi8aME.mjs} +3 -3
- package/dist/PodcastInlineListTemplate-DT9ZRs61.mjs.map +1 -0
- package/dist/PodcastInlineListTemplate-Dh1xF6xT.mjs.map +1 -0
- package/dist/PodcastIsPlaying-C0jcpBQd.mjs.map +1 -0
- package/dist/PodcastIsPlaying-H6P1CHAI.mjs.map +1 -0
- package/dist/{PodcastIsPlaying-BtmHnQi9.mjs → PodcastIsPlaying-ugHcefCy.mjs} +1 -1
- package/dist/{PodcastItem-TdtzApJ6.mjs → PodcastItem-Baki7W0q.mjs} +6 -6
- package/dist/PodcastItem-BfvK4ion.mjs.map +1 -0
- package/dist/PodcastItem-DEhA78z9.mjs.map +1 -0
- package/dist/PodcastItem-DwK_Yu1G.mjs.map +1 -0
- package/dist/PodcastList-B4ic6Cij.mjs.map +1 -0
- package/dist/PodcastList-C2R92m6S.mjs.map +1 -0
- package/dist/PodcastList-DWl6zz_z.mjs.map +1 -0
- package/dist/PodcastList-Dbt4nmKg.mjs.map +1 -0
- package/dist/PodcastList-KaQBRbR9.mjs.map +1 -0
- package/dist/{PodcastList-BAOJhQ7G.mjs → PodcastList-N_XOE-hI.mjs} +5 -5
- package/dist/PodcastList-d3SGLPvF.mjs.map +1 -0
- package/dist/{PodcastList-Bbe3yWiu.mjs → PodcastList-yjd_exFg.mjs} +4 -4
- package/dist/PodcastPage-B0pbZ5o_.mjs.map +1 -0
- package/dist/PodcastPage-BOA44Us4.mjs.map +1 -0
- package/dist/PodcastPage-Bs1wz-0E.mjs.map +1 -0
- package/dist/PodcastPage-C37Wa-qH.mjs.map +1 -0
- package/dist/PodcastPage-D0HYJxaK.mjs.map +1 -0
- package/dist/PodcastPage-D0U6-etV.mjs.map +1 -0
- package/dist/PodcastPage-DwMPY4po.mjs.map +1 -0
- package/dist/{PodcastPage-CAxub2do.mjs → PodcastPage-SUEm-Enm.mjs} +26 -26
- package/dist/PodcastPlayBar-Bo-W_dSK.mjs.map +1 -0
- package/dist/PodcastPlayBar-CBtMWlVc.mjs.map +1 -0
- package/dist/{PodcastPlayBar-gAEttclo.mjs → PodcastPlayBar-COU17bnm.mjs} +3 -3
- package/dist/PodcastPlayBar-Cpr3Ff7J.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-BvJPrxpI.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-CS5TNlmX.mjs.map +1 -0
- package/dist/{PodcastPlayBasicButton-7w91y2ow.mjs → PodcastPlayBasicButton-CVXhEUHB.mjs} +1 -1
- package/dist/{PodcastPlayButton-CQY0d6f-.mjs → PodcastPlayButton--gjzxW0o.mjs} +3 -3
- package/dist/PodcastPlayButton-BqvE4ZUl.mjs.map +1 -0
- package/dist/PodcastPlayButton-DW5Feest.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-BV31HaB2.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-C-WYs6aE.mjs.map +1 -0
- package/dist/{PodcastPlaylistInlineList-BE5L8pSP.mjs → PodcastPlaylistInlineList-DsEHaYGZ.mjs} +7 -7
- package/dist/PodcastPlaylistInlineList-HEdFAq1l.mjs.map +1 -0
- package/dist/{PodcastPresentationList-DH6Rq0Z4.mjs → PodcastPresentationList-B9vORr36.mjs} +4 -4
- package/dist/PodcastPresentationList-ChqvdXY0.mjs.map +1 -0
- package/dist/PodcastPresentationList-Dit6HvJr.mjs.map +1 -0
- package/dist/{PodcastProgressBar-DoeG7lDj.mjs → PodcastProgressBar-B0FwZOTT.mjs} +3 -3
- package/dist/PodcastProgressBar-B8ONWq-Z.mjs.map +1 -0
- package/dist/PodcastProgressBar-BoGtJPAa.mjs.map +1 -0
- package/dist/PodcastProgressBar-DTRhKzW-.mjs.map +1 -0
- package/dist/{PodcastRawTranscript-Cktqtbcg.mjs → PodcastRawTranscript-BiuftXu-.mjs} +2 -2
- package/dist/PodcastRawTranscript-C8SJcaQE.mjs.map +1 -0
- package/dist/PodcastRawTranscript-nfzHM0k_.mjs.map +1 -0
- package/dist/PodcastRawTranscript-r5pRtZDg.mjs.map +1 -0
- package/dist/{PodcastSwiperList-DZ26-8xy.mjs → PodcastSwiperList-BKOYhrsH.mjs} +4 -4
- package/dist/PodcastSwiperList-Bsg0q89o.mjs.map +1 -0
- package/dist/PodcastSwiperList-BxsEv7_8.mjs.map +1 -0
- package/dist/PodcastSwiperList-Cju5VHcH.mjs.map +1 -0
- package/dist/PodcastmakerHeader-6fIwE70J.mjs.map +1 -0
- package/dist/PodcastmakerHeader-BBPEy__r.mjs.map +1 -0
- package/dist/{PodcastmakerHeader-MhdOrssb.mjs → PodcastmakerHeader-CIoJwm1L.mjs} +1 -1
- package/dist/PodcastsPage-967SI8kL.mjs.map +1 -0
- package/dist/{PodcastsPage-BXjTDNhn.mjs → PodcastsPage-B5NwPMyn.mjs} +5 -5
- 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-DKWHzNNA.mjs.map +1 -0
- package/dist/PodcastsPage-DONqoMkB.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/PodcastsPage-DhEMPqCT.mjs.map +1 -0
- package/dist/ProductorSearch-BgmV_RCq.mjs.map +1 -0
- package/dist/{ProductorSearch-Z36zTZK4.mjs → ProductorSearch-BiUEs7mG.mjs} +3 -3
- package/dist/ProductorSearch-C4Nv2HzS.mjs.map +1 -0
- package/dist/ProductorSearch-DtVe_rU9.mjs.map +1 -0
- package/dist/ProgressBar-BMeSiueh.mjs.map +1 -0
- package/dist/ProgressBar-C15ih0uL.mjs.map +1 -0
- package/dist/{ProgressBar-CTOa-MDz.mjs → ProgressBar-CXB5q3-H.mjs} +2 -2
- package/dist/ProgressBar-DAUOWol1.mjs.map +1 -0
- package/dist/QrCode-BYLxjhwi.mjs.map +1 -0
- package/dist/QrCode-CCigeTaZ.mjs +109 -0
- package/dist/QrCode-CaXoOjo-.mjs.map +1 -0
- package/dist/QrCode-CcQR60hB.mjs.map +1 -0
- package/dist/QrCode-S_eLVZoz.mjs.map +1 -0
- package/dist/QrCode-XZMMiaX5.mjs.map +1 -0
- package/dist/QrCodeModal-BJOu1pAV.mjs.map +1 -0
- package/dist/QrCodeModal-BjT-0P0w.mjs.map +1 -0
- package/dist/QrCodeModal-BrabSTzq.mjs.map +1 -0
- package/dist/QrCodeModal-CjvbRYLW.mjs.map +1 -0
- package/dist/{QrCodeModal-DE3juCsN.mjs → QrCodeModal-Dpw_tCQ6.mjs} +1 -1
- package/dist/QrCodeModal-N2fjbP4S.mjs.map +1 -0
- package/dist/RadioCurrently-B_b8DV2w.mjs.map +1 -0
- package/dist/RadioCurrently-DufvDqm1.mjs.map +1 -0
- package/dist/{RadioCurrently-BlAhcc9E.mjs → RadioCurrently-ysRKhxKU.mjs} +3 -3
- package/dist/RadioHistory-B03bYMxm.mjs.map +1 -0
- package/dist/{RadioHistory-C7S79sZD.mjs → RadioHistory-DjsqvRgH.mjs} +2 -2
- package/dist/RadioHistory-Dv4gt9TM.mjs.map +1 -0
- package/dist/RadioImage-BFdiGgi_.mjs.map +1 -0
- package/dist/{RadioImage-BTn2Lquc.mjs → RadioImage-CSseYIVb.mjs} +4 -4
- package/dist/RadioImage-CrtD33dM.mjs.map +1 -0
- package/dist/RadioList--f7RDhHJ.mjs.map +1 -0
- package/dist/{RadioList-BD3zNwmk.mjs → RadioList-BZFFAobk.mjs} +4 -4
- package/dist/RadioList-De9NQ23Q.mjs.map +1 -0
- package/dist/RadioPage-BK1N--Kr.mjs.map +1 -0
- package/dist/RadioPage-BTtNFJI2.mjs.map +1 -0
- package/dist/RadioPage-CcK0y_5s.mjs.map +1 -0
- package/dist/RadioPage-Cqas0JX6.mjs.map +1 -0
- package/dist/{RadioPage-Bv3oupa1.mjs → RadioPage-Cwooj0wF.mjs} +4 -4
- package/dist/RadioPage-DhSB0sX5.mjs.map +1 -0
- package/dist/RadioPage-DlahFXYC.mjs.map +1 -0
- package/dist/RadioPlanning-BU1E8i4t.mjs.map +1 -0
- package/dist/{RadioPlanning-nkv_Mb_t.mjs → RadioPlanning-BmIxuUBI.mjs} +2 -2
- package/dist/RadioPlanning-Bx-N-xqX.mjs.map +1 -0
- package/dist/RadioProgressBar-0XM3ZTGU.mjs.map +1 -0
- package/dist/{RadioProgressBar-B2EgCOrK.mjs → RadioProgressBar-CQRGuPpC.mjs} +1 -1
- package/dist/RadioProgressBar-oyeS56mV.mjs.map +1 -0
- package/dist/{RecaptchaModal-w-9MlZ45.mjs → RecaptchaModal-BdW4xNlX.mjs} +1 -1
- package/dist/RecaptchaModal-DFlFQcHs.mjs.map +1 -0
- package/dist/RecaptchaModal-iLQ4UYOL.mjs.map +1 -0
- package/dist/ReportAbuseModal-BaPt2DLK.mjs.map +1 -0
- package/dist/ReportAbuseModal-BdZRe29L.mjs.map +1 -0
- package/dist/ReportAbuseModal-CH7Y153n.mjs.map +1 -0
- package/dist/{ReportAbuseModal-O1K7j7NV.mjs → ReportAbuseModal-jjGeXbB9.mjs} +4 -4
- package/dist/RightsIndicator-4pUsBq5j.mjs.map +1 -0
- package/dist/RightsIndicator-BH3jm_1O.mjs.map +1 -0
- package/dist/{RightsIndicator-D0cSu8j2.mjs → RightsIndicator-CPzWpH5Z.mjs} +1 -1
- package/dist/RightsIndicator-d8ffUFIj.mjs.map +1 -0
- package/dist/{RightsWrapper-BUj_1bwR.mjs → RightsWrapper-BTQ8GGUi.mjs} +5 -5
- package/dist/RightsWrapper-C3BRHqqo.mjs.map +1 -0
- package/dist/RightsWrapper-DJG9Ds6c.mjs.map +1 -0
- 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-C9C_OiF5.mjs.map +1 -0
- package/dist/RubriqueFilter-DDI7DjMR.mjs.map +1 -0
- package/dist/RubriqueFilter-_8V1n9-x.mjs.map +1 -0
- package/dist/{RubriqueFilter-RgardNnQ.mjs → RubriqueFilter-rxiG8Wci.mjs} +3 -3
- package/dist/RubriqueList-99-nWSvq.mjs.map +1 -0
- package/dist/RubriqueList-BiRimk17.mjs.map +1 -0
- package/dist/RubriqueList-H_NHILuj.mjs.map +1 -0
- package/dist/{RubriqueList-DA9OYqUl.mjs → RubriqueList-rJj2IycY.mjs} +4 -4
- package/dist/RubriquePage-6KFPBPz8.mjs.map +1 -0
- package/dist/{RubriquePage-xgTOce7c.mjs → RubriquePage-BNEWnk3-.mjs} +4 -4
- package/dist/RubriquePage-Bpt-x7IK.mjs.map +1 -0
- package/dist/RubriquePage-Cwz9OqLO.mjs.map +1 -0
- package/dist/SearchPage-BtZnj3sA.mjs.map +1 -0
- package/dist/SearchPage-CbbbcXxs.mjs.map +1 -0
- package/dist/SearchPage-DMIV2AgJ.mjs.map +1 -0
- package/dist/{SearchPage-C3o5RPP0.mjs → SearchPage-DsZzPoEw.mjs} +2 -2
- package/dist/ShareAnonymous-BeSQozvM.mjs.map +1 -0
- package/dist/ShareAnonymous-BgsR6Ahp.mjs.map +1 -0
- package/dist/ShareAnonymous-CNWR1v6X.mjs.map +1 -0
- package/dist/{ShareAnonymous-bOwwEjPv.mjs → ShareAnonymous-DK2rnLl1.mjs} +3 -3
- package/dist/ShareAnonymous-DVpKBKbi.mjs.map +1 -0
- package/dist/ShareAnonymous-DWArDFT0.mjs.map +1 -0
- package/dist/ShareAnonymous-IaVbb-rp.mjs.map +1 -0
- package/dist/ShareModalPlayer-BHmsvxXF.mjs.map +1 -0
- package/dist/{ShareModalPlayer-D2oBrSly.mjs → ShareModalPlayer-Cfnk68-U.mjs} +1 -1
- package/dist/ShareModalPlayer-DLBU3lsU.mjs.map +1 -0
- package/dist/ShareModalPlayer-O-CmDObW.mjs.map +1 -0
- package/dist/ShareModalPlayer-QYu8Q9ks.mjs.map +1 -0
- package/dist/ShareModalPlayer-Vga-96DM.mjs.map +1 -0
- package/dist/{ShareNewsletter-CNw1LziN.mjs → ShareNewsletter-BWIAt47D.mjs} +1 -1
- package/dist/ShareNewsletter-BhFk6ARk.mjs.map +1 -0
- package/dist/ShareNewsletter-JCO4h7rk.mjs.map +1 -0
- package/dist/SharePlayer-C-RgIOh1.mjs.map +1 -0
- package/dist/{SharePlayer-CRri0YED.mjs → SharePlayer-C0aveOwy.mjs} +2 -2
- package/dist/SharePlayer-CNXrUj8M.mjs.map +1 -0
- package/dist/SharePlayer-D0-qY2dS.mjs.map +1 -0
- package/dist/SharePlayer-DQoFa7iv.mjs.map +1 -0
- package/dist/SharePlayer-DwNl3E7o.mjs.map +1 -0
- package/dist/{SharePlayerRadio-DVsegQMu.mjs → SharePlayerRadio-BqaeyEls.mjs} +2 -2
- package/dist/SharePlayerRadio-CHvCtKdZ.mjs.map +1 -0
- package/dist/SharePlayerRadio-CIsy-rCC.mjs.map +1 -0
- package/dist/SharePlayerRadio-ChfNulnf.mjs.map +1 -0
- package/dist/SharePlayerRadio-DA-W-306.mjs.map +1 -0
- package/dist/SharePlayerRadio-DwPeLUsk.mjs.map +1 -0
- package/dist/SharePlayerTypes-CeMV4n10.mjs.map +1 -0
- package/dist/SharePlayerTypes-DdyoQZDi.mjs.map +1 -0
- package/dist/{SharePlayerTypes-BxkEoBSL.mjs → SharePlayerTypes-DyrqFDVJ.mjs} +1 -1
- package/dist/ShareSocialsButtons-BHWzJVne.mjs.map +1 -0
- package/dist/ShareSocialsButtons-Bjx2ONvj.mjs.map +1 -0
- package/dist/{ShareSocialsButtons-BJ3DqvIO.mjs → ShareSocialsButtons-PqMXhFEk.mjs} +1 -1
- package/dist/{SimpleLayout-BJlcQjx9.mjs → SimpleLayout-9O9FZ69Q.mjs} +2 -2
- package/dist/SimpleLayout-B-QSfHeQ.mjs.map +1 -0
- package/dist/SimpleLayout-BauUacaf.mjs.map +1 -0
- package/dist/SimpleLayout-C29bPtbd.mjs.map +1 -0
- package/dist/SimpleLayout-Cjc3Q9Mb.mjs.map +1 -0
- package/dist/SimpleLayout-D4sVjQGu.mjs.map +1 -0
- package/dist/SimpleLayout-DaoXS--3.mjs.map +1 -0
- package/dist/SimpleLayout-vkWEZHLi.mjs.map +1 -0
- package/dist/{SmartLinkPage-DpD90wc7.mjs → SmartLinkPage-6HgX8LDv.mjs} +16 -16
- package/dist/SmartLinkPage-BcQmox7e.mjs.map +1 -0
- package/dist/SmartLinkPage-M_zB_Xp1.mjs.map +1 -0
- package/dist/SubscribeButtons-CyGYD1B1.mjs.map +1 -0
- package/dist/SubscribeButtons-DjjZQfOU.mjs.map +1 -0
- package/dist/{SubscribeButtons-zlRDGEzS.mjs → SubscribeButtons-IpzqDGIn.mjs} +3 -3
- package/dist/SubscribeButtons-yA2wowFc.mjs.map +1 -0
- package/dist/SwiperList-BNODHhLF.mjs.map +1 -0
- package/dist/SwiperList-Cqklwlg9.mjs.map +1 -0
- package/dist/{SwiperList-BlF3rPq5.mjs → SwiperList-O8nUg87R.mjs} +1 -1
- package/dist/TagList-4RDriU1J.mjs.map +1 -0
- package/dist/TagList-B5JPfT6j.mjs.map +1 -0
- package/dist/TagList-DVjqXiaA.mjs.map +1 -0
- package/dist/{TagList-BBHyaKp-.mjs → TagList-V9fAFATL.mjs} +2 -2
- package/dist/TagPage-BOsz6Bot.mjs.map +1 -0
- package/dist/TagPage-CALmJwxW.mjs.map +1 -0
- package/dist/{TagPage-DLpNBBjP.mjs → TagPage-CsFwN4sE.mjs} +3 -3
- package/dist/TagPage-DMuxYu6y.mjs.map +1 -0
- package/dist/{TopBar-CLWWRgr7.mjs → TopBar-0oG6YPlW.mjs} +37 -37
- package/dist/TopBar-CUCBss7X.mjs.map +1 -0
- package/dist/TopBar-CeQQ1hgH.mjs.map +1 -0
- package/dist/TopBar-DdxThCLR.mjs.map +1 -0
- package/dist/{UserButtonContent-BR3Rlqwp.mjs → UserButtonContent--VK68UsY.mjs} +6 -6
- package/dist/UserButtonContent-067qGenf.mjs.map +1 -0
- package/dist/UserButtonContent-Dqgyrgzv.mjs.map +1 -0
- package/dist/VideoModuleBox-9QgBI-Q-.mjs.map +1 -0
- package/dist/{VideoModuleBox-DxYJVwy3.mjs → VideoModuleBox-Bcqman6a.mjs} +1 -1
- package/dist/VideoModuleBox-BrVK2bDZ.mjs.map +1 -0
- package/dist/VideoModuleBox-DWO47_bZ.mjs.map +1 -0
- package/dist/VideoPage-4MB4zmnA.mjs.map +1 -0
- package/dist/VideoPage-BDGvtr1o.mjs.map +1 -0
- package/dist/{VideoPage-BaeTduNB.mjs → VideoPage-BjlaP2DU.mjs} +6 -6
- package/dist/VideoPage-C-yjvvhl.mjs.map +1 -0
- package/dist/VideoPage-C0_t7XMC.mjs.map +1 -0
- package/dist/VideoPage-CIDpzbkb.mjs.map +1 -0
- package/dist/VideoPage-D2V1oXGC.mjs.map +1 -0
- package/dist/VideoPage-DEJSfeFy.mjs.map +1 -0
- package/dist/{classicApi-pmODlqv5.mjs → classicApi-CGipMqf7.mjs} +267 -256
- package/dist/classicApi-CW1Z-HoF.mjs.map +1 -0
- package/dist/classicApi-OzToKuW1.mjs.map +1 -0
- package/dist/{downloadHelper-BAI-eqgA.mjs → downloadHelper-C3QooCxr.mjs} +1 -1
- package/dist/downloadHelper-D7dUpp5l.mjs.map +1 -0
- package/dist/downloadHelper-DwV3Mmd3.mjs.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.mjs +183 -183
- package/dist/src/components/form/ClassicDatePicker.vue.d.ts +24 -14
- package/dist/src/components/form/OctopusMultiselect.vue.d.ts +2 -0
- package/dist/src/i18n.d.ts +2 -0
- package/dist/tests.mjs +2 -2
- package/dist/useAdvancedParamInit-BKw9VZ53.mjs.map +1 -0
- package/dist/useAdvancedParamInit-CyRmbqqe.mjs.map +1 -0
- package/dist/{useAdvancedParamInit-Bgvt8758.mjs → useAdvancedParamInit-D5roUdHI.mjs} +10 -10
- package/dist/useDayjs-BKBB00TF.mjs.map +1 -0
- package/dist/useDayjs-UQLGUbw5.mjs.map +1 -0
- package/dist/{useDayjs-DGb3L4kJ.mjs → useDayjs-VUs19G9T.mjs} +1 -1
- package/dist/useErrorHandler-BKN3lhJ5.mjs.map +1 -0
- package/dist/useErrorHandler-C3XnRTmp.mjs.map +1 -0
- package/dist/{useErrorHandler-D9W2BURn.mjs → useErrorHandler-x9sjDYSz.mjs} +1 -1
- package/dist/useImageProxy-AEcmDpvW.mjs.map +1 -0
- package/dist/useImageProxy-BzTG_GCn.mjs.map +1 -0
- package/dist/{useImageProxy-8ndy_oTo.mjs → useImageProxy-CCpDzPmQ.mjs} +1 -1
- package/dist/useOrgaComputed-4PduqYTq.mjs.map +1 -0
- package/dist/useOrgaComputed-C2n0FBbv.mjs.map +1 -0
- package/dist/{useOrgaComputed-CBJ5sDOm.mjs → useOrgaComputed-D81Jihm-.mjs} +2 -2
- package/dist/{usePlayerLogicProgress-C2L7cMdd.mjs → usePlayerLogicProgress-BybmSAcs.mjs} +2 -2
- package/dist/usePlayerLogicProgress-CKoCod6g.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-DZaPRo6p.mjs.map +1 -0
- package/dist/usePodcastView-B-2HPFAo.mjs.map +1 -0
- package/dist/{usePodcastView-CoDJJr6Y.mjs → usePodcastView-CkM-n6iO.mjs} +3 -3
- package/dist/usePodcastView-jdYTK1cW.mjs.map +1 -0
- package/dist/{usePresentationItem-DZZVm3hh.mjs → usePresentationItem-CLEGZwI3.mjs} +3 -3
- package/dist/usePresentationItem-Com4i40U.mjs.map +1 -0
- package/dist/usePresentationItem-OpMean0v.mjs.map +1 -0
- package/dist/{useRights-DOXtpjv5.mjs → useRights-BI2tXXjR.mjs} +1 -1
- package/dist/useRights-Bsv9hr7w.mjs.map +1 -0
- package/dist/useRights-DfudFDI6.mjs.map +1 -0
- package/dist/{useRubriquesFilterComputed-DoUOqOrJ.mjs → useRubriquesFilterComputed-D1yqLnK4.mjs} +1 -1
- package/dist/useRubriquesFilterComputed-DGDJp2gc.mjs.map +1 -0
- package/dist/useRubriquesFilterComputed-NNE-FElk.mjs.map +1 -0
- package/dist/{useRubriquesFilterParam-BE8BbmAQ.mjs → useRubriquesFilterParam-2eMd5ND7.mjs} +1 -1
- package/dist/useRubriquesFilterParam-DE5dYl6c.mjs.map +1 -0
- package/dist/useRubriquesFilterParam-DXYD4G0D.mjs.map +1 -0
- package/dist/useSharePlatforms-CrQ8r5vT.mjs.map +1 -0
- package/dist/useSharePlatforms-D124fJ_v.mjs.map +1 -0
- package/dist/{useSharePlatforms-ZWYDJZBy.mjs → useSharePlatforms-sXgVxsL5.mjs} +5 -5
- package/dist/{useSimplePageParam-DFKSEyiE.mjs → useSimplePageParam-BrtYXOUt.mjs} +1 -1
- package/dist/useSimplePageParam-CruL7rLG.mjs.map +1 -0
- package/dist/useSimplePageParam-SaBaPhb8.mjs.map +1 -0
- package/dist/{useTranslation-Dr7KU7Y4.mjs → useTranslation-BVQwv02Q.mjs} +9 -9
- package/dist/useTranslation-Bf2zP_6C.mjs.map +1 -0
- package/dist/useTranslation-BuhzZoI8.mjs.map +1 -0
- package/dist/useTranslation-OWqckMEl.mjs.map +1 -0
- package/dist/usefetchRadioData-D01ws733.mjs.map +1 -0
- package/dist/usefetchRadioData-DDRPoD4s.mjs.map +1 -0
- package/dist/{usefetchRadioData-SLWfXkYt.mjs → usefetchRadioData-zyQNqiV3.mjs} +1 -1
- package/package.json +1 -1
- package/src/components/composable/useTranslation.ts +2 -2
- package/src/components/display/sharing/QrCode.vue +63 -64
- package/src/components/form/ClassicDatePicker.vue +32 -20
- 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 -159
- package/src/i18n.ts +38 -29
- package/tests/components/form/ClassicDatePicker.spec.ts +32 -0
- package/tests/components/form/OctopusMultiselect.spec.ts +5 -4
- package/dist/ClassicDatePicker-B7UA9CqR.mjs +0 -187
- package/dist/QrCode-DuScZ7PD.mjs +0 -105
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OctopusMultiselect-esu8BY0J.mjs","names":["_openBlock","_createElementBlock","_normalizeClass","_toDisplayString","_createCommentVNode","_createElementVNode","_withDirectives","_vShow","_withKeys","_vModelText","_withModifiers","_createVNode","_createBlock","_Teleport","_normalizeStyle","_Fragment","_renderList","_sfc_main"],"sources":["../src/components/composable/form/useOctopusDropdown.ts","../src/components/form/OctopusMultiselect.vue","../src/components/form/OctopusMultiselect.vue"],"sourcesContent":["import { computed, getCurrentInstance, nextTick, ref } from 'vue';\nimport { type MaybeElementRef, onClickOutside } from '@vueuse/core';\nimport { useI18n } from 'vue-i18n';\n\nexport interface OctopusDropdownProps<T> {\n options: T[];\n optionLabel?: keyof T & string;\n optionKey?: keyof T;\n isDisabled?: boolean;\n placeholder?: string;\n}\n\nexport function useOctopusDropdown<T>(\n props: OctopusDropdownProps<T>,\n emitSearch: (query: string) => void,\n idPrefix: string = 'octopus-dropdown',\n // Extra elements to exclude from the click-outside check.\n // Needed when the dropdown is teleported outside containerRef (e.g. to body):\n // without this, clicking inside the teleported dropdown triggers closeDropdown\n // because it is no longer a DOM descendant of containerRef.\n ignore?: MaybeElementRef[]\n) {\n const { t } = useI18n();\n const instance = getCurrentInstance();\n\n const searchQuery = ref('');\n const isOpen = ref(false);\n const isHovered = ref(false);\n const containerRef = ref<HTMLElement | null>(null);\n const inputRef = ref<HTMLInputElement | null>(null);\n // Where the dropdown/options list (teleported out of normal flow) should land. Defaults\n // to the app root, but when this component is used inside a ClassicPopover, teleporting\n // there instead keeps the dropdown a real DOM descendant of it — otherwise both end up as\n // siblings under the same teleport target, and ClassicPopover's outside-click/blur checks\n // (which rely on DOM containment) see clicks inside the dropdown as \"outside\" and close it.\n const teleportTarget = ref<string | HTMLElement>('.octopus-app');\n\n const computedId = computed(() => `${idPrefix}-${instance?.uid}`);\n\n // vnode.props contains the raw parent-provided props before defineEmits strips them\n // from attrs, so onSearch is present whenever the parent writes @search=\"...\".\n const hasSearchListener = computed(() => !!instance?.vnode.props?.onSearch);\n\n const displayedOptions = computed((): T[] => {\n if (hasSearchListener.value) {\n return props.options;\n }\n const query = searchQuery.value.toLowerCase();\n if (!query) {\n return props.options;\n }\n return props.options.filter((option) =>\n getLabel(option).toLowerCase().includes(query)\n );\n });\n\n const inputPlaceholder = computed(() => props.placeholder ?? t('Search'));\n\n function getLabel(option: T): string {\n if (props.optionLabel) {\n return option[props.optionLabel] as string;\n }\n return option as unknown as string;\n }\n\n function openDropdown(): void {\n if (props.isDisabled) {\n return;\n }\n teleportTarget.value = containerRef.value?.closest<HTMLElement>('.octopus-popover') ?? '.octopus-app';\n isOpen.value = true;\n nextTick(() => {\n inputRef.value?.focus();\n });\n }\n\n function closeDropdown(): void {\n isOpen.value = false;\n searchQuery.value = '';\n }\n\n function toggleDropdown(): void {\n if (isOpen.value) {\n closeDropdown();\n } else {\n openDropdown();\n }\n }\n\n function handleInput(): void {\n if (hasSearchListener.value) {\n emitSearch(searchQuery.value);\n }\n }\n\n onClickOutside(containerRef, closeDropdown, ignore?.length ? { ignore } : undefined);\n\n return {\n searchQuery,\n isOpen,\n isHovered,\n containerRef,\n inputRef,\n teleportTarget,\n computedId,\n hasSearchListener,\n displayedOptions,\n inputPlaceholder,\n getLabel,\n openDropdown,\n closeDropdown,\n toggleDropdown,\n handleInput,\n };\n}\n","<template>\n <div\n ref=\"containerRef\"\n class=\"octopus-multiselect\"\n :class=\"{ 'form-margin': label }\"\n >\n <label\n v-if=\"label\"\n :for=\"computedId\"\n class=\"form-label\"\n >\n {{ label }}\n </label>\n\n <div\n class=\"octopus-multiselect-field\"\n :class=\"{ disabled, open: isOpen, noBorder }\"\n @click=\"openDropdown\"\n @mouseenter=\"onFieldMouseEnter\"\n @mouseleave=\"isHovered = false\"\n >\n <div\n v-show=\"hasSelected && !isOpen\"\n ref=\"selectionRef\"\n class=\"octopus-multiselect-selection\"\n >\n <span class=\"octopus-multiselect-selection-text\">{{ selectionLabels }}</span>\n <span\n v-if=\"overflowCount > 0\"\n class=\"octopus-multiselect-selection-count\"\n >(+{{ overflowCount }})</span>\n </div>\n <input\n v-show=\"!hasSelected || isOpen\"\n :id=\"computedId\"\n ref=\"inputRef\"\n v-model=\"searchQuery\"\n type=\"text\"\n class=\"octopus-multiselect-input\"\n :placeholder=\"inputPlaceholder\"\n :disabled=\"disabled\"\n @focus=\"openDropdown\"\n @input=\"handleInput\"\n @keydown.enter=\"handleCustomValueEnter\"\n >\n <button\n class=\"btn-transparent octopus-multiselect-chevron\"\n :disabled=\"disabled\"\n @click.stop=\"toggleDropdown\"\n >\n <ChevronDownIcon />\n </button>\n </div>\n\n <Teleport :to=\"teleportTarget\">\n <div\n v-if=\"expandOnHover && isHovered && !isOpen && overflowCount > 0\"\n class=\"octopus-multiselect-hover-tooltip\"\n :style=\"dropdownStyle\"\n >\n {{ allLabelsText }}\n </div>\n\n <div\n v-if=\"isOpen\"\n ref=\"dropdownRef\"\n class=\"octopus-multiselect-dropdown\"\n :style=\"dropdownStyle\"\n >\n <ClassicCheckbox\n :text-init=\"allSelected\"\n :label=\"selectAllText ?? t('All')\"\n :is-disabled=\"disabled\"\n @update:text-init=\"toggleAll\"\n />\n\n <div class=\"octopus-multiselect-options\">\n <ClassicCheckbox\n v-for=\"(option, index) in visibleOptions\"\n :key=\"index\"\n :text-init=\"isSelected(option)\"\n :label=\"getLabel(option)\"\n :is-disabled=\"disabled\"\n @update:text-init=\"toggleOption(option)\"\n />\n <template v-if=\"allowCustomValue && searchQuery.trim()\">\n <hr v-if=\"visibleOptions.length > 0\">\n <span class=\"text-indic px-2\">\n {{ t('Press Enter to add this value') }}\n </span>\n </template>\n <span v-else-if=\"visibleOptions.length === 0\" class=\"text-indic px-2\">\n {{ t('No elements found. Consider changing the search query.') }}\n </span>\n </div>\n </div>\n </Teleport>\n </div>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport { type CSSProperties, computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport ChevronDownIcon from 'vue-material-design-icons/ChevronDown.vue';\nimport ClassicCheckbox from './ClassicCheckbox.vue';\nimport { useOctopusDropdown } from '../composable/form/useOctopusDropdown';\n\nconst props = defineProps<{\n /** Optional label displayed above the field. */\n label?: string;\n /** Currently selected items. Bind with `v-model:selected`. */\n selected?: T[];\n /** Full list of options to display or filter. */\n options: T[];\n /** Key of each option object to use as the ID */\n optionKey?: keyof T;\n /** Key of each option object to use as the display label. Omit when `options` is a\n * plain `string[]` — each string is used as its own label. Note: omitting this for\n * an object array is a runtime mistake (not caught at compile time) and will render\n * \"[object Object]\". */\n optionLabel?: keyof T & string;\n /** When true, pressing Enter in the search input adds the typed text as a new\n * selected value, even if it doesn't match any option. Intended for use when\n * options are plain strings (`optionLabel` omitted) — casting arbitrary typed\n * text into an object-shaped T would not produce a valid option. */\n allowCustomValue?: boolean;\n /** Disables the field and all checkboxes when true. */\n disabled?: boolean;\n /** Placeholder shown in the input when no items are selected. Defaults to the translated \"Search\" string. */\n placeholder?: string;\n /** Label for the \"select all\" checkbox. Defaults to the translated \"All\" string. */\n selectAllText?: string;\n /** Disable the border around the input */\n noBorder?: boolean;\n /** When true, hovering the closed field with overflow shows a tooltip listing all selected items. */\n expandOnHover?: boolean;\n /** When true, options selected at the moment the dropdown opens are moved to the\n * top of the list. This is a snapshot taken at open time — it does not live-reorder\n * while the dropdown stays open, only on the next closed→open transition. */\n pullSelectedToTop?: boolean;\n}>();\n\nconst emit = defineEmits<{\n /** Emitted when the selection changes. */\n (e: 'update:selected', value: T[]): void;\n /** Emitted on every input change. When listened to, the parent is responsible for\n * updating `options`; otherwise the component filters `options` client-side. */\n (e: 'search', query: string): void;\n /** Emitted when the user enters a custom value */\n (e: 'add-custom', value: string): void;\n}>();\n\nconst { t } = useI18n();\n\n// Ref on the teleported dropdown div — passed as ignored element to useOctopusDropdown\n// so clicks inside the dropdown don't trigger the click-outside handler.\nconst dropdownRef = ref<HTMLElement | null>(null);\n\nconst {\n searchQuery,\n isOpen,\n isHovered,\n containerRef,\n inputRef,\n teleportTarget,\n computedId,\n displayedOptions,\n inputPlaceholder,\n getLabel,\n openDropdown,\n toggleDropdown,\n handleInput,\n} = useOctopusDropdown(props, (query) => emit('search', query), 'multiselect', [dropdownRef]);\n\nconst selectionRef = ref<HTMLElement | null>(null);\n\n// Position of the teleported dropdown (position: fixed, anchored below the trigger field)\nconst dropdownStyle = ref<CSSProperties>({});\n\n// Also used to position the hover tooltip: both are teleported and anchored the same way\n// (fixed, directly below the field, same width), and are never shown at the same time.\nfunction updateDropdownPosition(): void {\n if (!containerRef.value) { return; }\n const rect = containerRef.value.getBoundingClientRect();\n dropdownStyle.value = {\n position: 'fixed',\n top: `${rect.bottom + 2}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n };\n}\n\nfunction onFieldMouseEnter(): void {\n isHovered.value = true;\n if (props.expandOnHover) {\n nextTick(updateDropdownPosition);\n }\n}\n\nconst visibleCount = ref(2);\n\n// Selection snapshot captured the instant the dropdown opens, used only to freeze the\n// sort order when pullSelectedToTop is set — does not react to later `selected` changes\n// while the dropdown stays open.\nconst pinnedSnapshot = ref<T[]>([]);\n\n// Selected values not present in `options` — only populated when allowCustomValue is set,\n// so a custom value typed via handleCustomValueEnter still shows (checked) in the dropdown.\nconst customSelectedOptions = computed<T[]>(() => {\n if (!props.allowCustomValue) { return []; }\n return (props.selected ?? []).filter((item) => !isInOptions(item));\n});\n\nconst visibleOptions = computed<T[]>(() => {\n const query = searchQuery.value.toLowerCase();\n const filteredCustom = query\n ? customSelectedOptions.value.filter((option) => getLabel(option).toLowerCase().includes(query))\n : customSelectedOptions.value;\n const combined = [...displayedOptions.value, ...filteredCustom];\n if (!props.pullSelectedToTop) {\n return combined;\n }\n return [...combined.filter(isPinned), ...combined.filter((option) => !isPinned(option))];\n});\n\nconst allSelected = computed(() => {\n if (visibleOptions.value.length === 0) {\n return false;\n }\n return visibleOptions.value.every((option) => isSelected(option));\n});\n\nconst hasSelected = computed(() => (props.selected?.length ?? 0) > 0);\n\nconst selectionLabels = computed(() =>\n (props.selected ?? []).slice(0, visibleCount.value).map(getLabel).join(', ')\n);\n\nconst overflowCount = computed(() =>\n Math.max(0, (props.selected?.length ?? 0) - visibleCount.value)\n);\n\nconst allLabelsText = computed(() =>\n (props.selected ?? []).map(getLabel).join(', ')\n);\n\nfunction isSelected(option: T): boolean {\n if (props.optionKey) {\n return props.selected?.find(s => s[props.optionKey] === option[props.optionKey]) !== undefined;\n } else {\n return props.selected?.includes(option) ?? false;\n }\n}\n\nfunction isInOptions(option: T): boolean {\n if (props.optionKey) {\n return props.options.some((opt) => opt[props.optionKey] === option[props.optionKey]);\n } else {\n return props.options.includes(option);\n }\n}\n\nfunction isPinned(option: T): boolean {\n if (props.optionKey) {\n return pinnedSnapshot.value.some((s) => s[props.optionKey] === option[props.optionKey]);\n } else {\n return pinnedSnapshot.value.includes(option);\n }\n}\n\nfunction toggleOption(option: T): void {\n const current = props.selected ?? [];\n if (isSelected(option)) {\n const key = props.optionKey;\n emit('update:selected', key\n ? current.filter((item) => item[key] !== option[key])\n : current.filter((item) => item !== option)\n );\n } else {\n emit('update:selected', [...current, option]);\n }\n}\n\nfunction handleCustomValueEnter(): void {\n if (!props.allowCustomValue) { return; }\n const value = searchQuery.value.trim();\n if (!value) { return; }\n emit('add-custom', value);\n searchQuery.value = '';\n}\n\nfunction toggleAll(val: boolean): void {\n const current = props.selected ?? [];\n if (val) {\n const toAdd = visibleOptions.value.filter((option: T) => !isSelected(option));\n emit('update:selected', [...current, ...toAdd]);\n } else {\n const key = props.optionKey;\n emit('update:selected', current.filter((item: T) => key\n ? !visibleOptions.value.some((opt) => opt[key] === item[key])\n : !visibleOptions.value.includes(item)\n ));\n }\n}\n\nfunction updateVisibleCount(): void {\n const container = selectionRef.value;\n const selected = props.selected ?? [];\n if (!container || selected.length < 2) {\n visibleCount.value = selected.length;\n return;\n }\n\n const availableWidth = container.offsetWidth;\n if (availableWidth === 0) {\n return;\n }\n\n const labels = selected.map(getLabel);\n const measurer = document.createElement('span');\n measurer.style.cssText = 'position:absolute;visibility:hidden;white-space:nowrap;pointer-events:none;';\n container.appendChild(measurer);\n\n measurer.textContent = labels.join(', ');\n if (measurer.offsetWidth <= availableWidth) {\n visibleCount.value = labels.length;\n container.removeChild(measurer);\n return;\n }\n\n measurer.textContent = `(+${labels.length})`;\n const badgeWidth = measurer.offsetWidth + 4;\n const textAvailable = availableWidth - badgeWidth;\n\n let count = 0;\n for (let i = 0; i < labels.length; i++) {\n measurer.textContent = labels.slice(0, i + 1).join(', ');\n if (measurer.offsetWidth > textAvailable) {\n break;\n }\n count = i + 1;\n }\n\n container.removeChild(measurer);\n visibleCount.value = Math.max(1, count);\n}\n\nlet resizeObserver: ResizeObserver | null = null;\n\nonMounted(() => {\n if (selectionRef.value) {\n resizeObserver = new ResizeObserver(updateVisibleCount);\n resizeObserver.observe(selectionRef.value);\n }\n updateVisibleCount();\n // Keep the teleported dropdown aligned when the page scrolls or the viewport resizes\n window.addEventListener('scroll', updateDropdownPosition, true);\n window.addEventListener('resize', updateDropdownPosition);\n});\n\nonUnmounted(() => {\n resizeObserver?.disconnect();\n window.removeEventListener('scroll', updateDropdownPosition, true);\n window.removeEventListener('resize', updateDropdownPosition);\n});\n\nwatch(() => props.selected, updateVisibleCount);\n\nwatch(isOpen, (val) => {\n if (val) {\n pinnedSnapshot.value = [...(props.selected ?? [])];\n nextTick(updateDropdownPosition);\n } else {\n nextTick(updateVisibleCount);\n }\n});\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-multiselect {\n position: relative;\n\n .octopus-multiselect-field {\n display: flex;\n align-items: center;\n border: 1px solid var(--octopus-border-default);\n border-radius: var(--octopus-border-radius);\n background: white;\n cursor: pointer;\n\n &.open {\n border-color: var(--octopus-primary);\n }\n\n &.disabled {\n background: var(--octopus-secondary-lighter);\n cursor: default;\n }\n\n &.noBorder {\n border: none;\n }\n }\n\n .octopus-multiselect-selection {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n padding: 0.4rem 0.5rem;\n height: 2rem;\n gap: 0.25rem;\n }\n\n .octopus-multiselect-selection-text {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .octopus-multiselect-selection-count {\n flex-shrink: 0;\n white-space: nowrap;\n color: var(--octopus-primary);\n }\n\n .octopus-multiselect-input {\n flex: 1;\n border: none;\n background: transparent;\n padding: 0.4rem 0.5rem;\n padding-right: 0;\n height: 2rem;\n outline: none;\n cursor: inherit;\n min-width: 0;\n }\n\n .octopus-multiselect-chevron {\n padding: 0.25rem 0.5rem;\n display: flex;\n align-items: center;\n }\n\n}\n\n// Dropdown/tooltip are teleported to body — scoped rules must be top-level so that\n// [data-v-xxxx] is matched directly on the element rather than via a descendant-of-.octopus-multiselect selector.\n.octopus-multiselect-hover-tooltip {\n z-index: 101;\n background: white;\n border: 1px solid var(--octopus-border-default);\n border-radius: var(--octopus-border-radius);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n padding: 0.5rem;\n word-break: break-word;\n pointer-events: none;\n}\n\n.octopus-multiselect-dropdown {\n z-index: 100;\n background: white;\n border: 1px solid var(--octopus-border-default);\n border-radius: var(--octopus-border-radius);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n padding: 0.25rem 0;\n\n > .octopus-form-item {\n padding: 0.25rem 0.5rem;\n border-bottom: 1px solid var(--octopus-secondary);\n }\n}\n\n.octopus-multiselect-options {\n max-height: 14rem;\n overflow-y: auto;\n\n .octopus-form-item {\n padding: 0.25rem 0.5rem;\n }\n}\n\nhr {\n border-top: 1px solid var(--octopus-secondary);\n border-bottom: none;\n margin: 0;\n}\n</style>\n","<template>\n <div\n ref=\"containerRef\"\n class=\"octopus-multiselect\"\n :class=\"{ 'form-margin': label }\"\n >\n <label\n v-if=\"label\"\n :for=\"computedId\"\n class=\"form-label\"\n >\n {{ label }}\n </label>\n\n <div\n class=\"octopus-multiselect-field\"\n :class=\"{ disabled, open: isOpen, noBorder }\"\n @click=\"openDropdown\"\n @mouseenter=\"onFieldMouseEnter\"\n @mouseleave=\"isHovered = false\"\n >\n <div\n v-show=\"hasSelected && !isOpen\"\n ref=\"selectionRef\"\n class=\"octopus-multiselect-selection\"\n >\n <span class=\"octopus-multiselect-selection-text\">{{ selectionLabels }}</span>\n <span\n v-if=\"overflowCount > 0\"\n class=\"octopus-multiselect-selection-count\"\n >(+{{ overflowCount }})</span>\n </div>\n <input\n v-show=\"!hasSelected || isOpen\"\n :id=\"computedId\"\n ref=\"inputRef\"\n v-model=\"searchQuery\"\n type=\"text\"\n class=\"octopus-multiselect-input\"\n :placeholder=\"inputPlaceholder\"\n :disabled=\"disabled\"\n @focus=\"openDropdown\"\n @input=\"handleInput\"\n @keydown.enter=\"handleCustomValueEnter\"\n >\n <button\n class=\"btn-transparent octopus-multiselect-chevron\"\n :disabled=\"disabled\"\n @click.stop=\"toggleDropdown\"\n >\n <ChevronDownIcon />\n </button>\n </div>\n\n <Teleport :to=\"teleportTarget\">\n <div\n v-if=\"expandOnHover && isHovered && !isOpen && overflowCount > 0\"\n class=\"octopus-multiselect-hover-tooltip\"\n :style=\"dropdownStyle\"\n >\n {{ allLabelsText }}\n </div>\n\n <div\n v-if=\"isOpen\"\n ref=\"dropdownRef\"\n class=\"octopus-multiselect-dropdown\"\n :style=\"dropdownStyle\"\n >\n <ClassicCheckbox\n :text-init=\"allSelected\"\n :label=\"selectAllText ?? t('All')\"\n :is-disabled=\"disabled\"\n @update:text-init=\"toggleAll\"\n />\n\n <div class=\"octopus-multiselect-options\">\n <ClassicCheckbox\n v-for=\"(option, index) in visibleOptions\"\n :key=\"index\"\n :text-init=\"isSelected(option)\"\n :label=\"getLabel(option)\"\n :is-disabled=\"disabled\"\n @update:text-init=\"toggleOption(option)\"\n />\n <template v-if=\"allowCustomValue && searchQuery.trim()\">\n <hr v-if=\"visibleOptions.length > 0\">\n <span class=\"text-indic px-2\">\n {{ t('Press Enter to add this value') }}\n </span>\n </template>\n <span v-else-if=\"visibleOptions.length === 0\" class=\"text-indic px-2\">\n {{ t('No elements found. Consider changing the search query.') }}\n </span>\n </div>\n </div>\n </Teleport>\n </div>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport { type CSSProperties, computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport ChevronDownIcon from 'vue-material-design-icons/ChevronDown.vue';\nimport ClassicCheckbox from './ClassicCheckbox.vue';\nimport { useOctopusDropdown } from '../composable/form/useOctopusDropdown';\n\nconst props = defineProps<{\n /** Optional label displayed above the field. */\n label?: string;\n /** Currently selected items. Bind with `v-model:selected`. */\n selected?: T[];\n /** Full list of options to display or filter. */\n options: T[];\n /** Key of each option object to use as the ID */\n optionKey?: keyof T;\n /** Key of each option object to use as the display label. Omit when `options` is a\n * plain `string[]` — each string is used as its own label. Note: omitting this for\n * an object array is a runtime mistake (not caught at compile time) and will render\n * \"[object Object]\". */\n optionLabel?: keyof T & string;\n /** When true, pressing Enter in the search input adds the typed text as a new\n * selected value, even if it doesn't match any option. Intended for use when\n * options are plain strings (`optionLabel` omitted) — casting arbitrary typed\n * text into an object-shaped T would not produce a valid option. */\n allowCustomValue?: boolean;\n /** Disables the field and all checkboxes when true. */\n disabled?: boolean;\n /** Placeholder shown in the input when no items are selected. Defaults to the translated \"Search\" string. */\n placeholder?: string;\n /** Label for the \"select all\" checkbox. Defaults to the translated \"All\" string. */\n selectAllText?: string;\n /** Disable the border around the input */\n noBorder?: boolean;\n /** When true, hovering the closed field with overflow shows a tooltip listing all selected items. */\n expandOnHover?: boolean;\n /** When true, options selected at the moment the dropdown opens are moved to the\n * top of the list. This is a snapshot taken at open time — it does not live-reorder\n * while the dropdown stays open, only on the next closed→open transition. */\n pullSelectedToTop?: boolean;\n}>();\n\nconst emit = defineEmits<{\n /** Emitted when the selection changes. */\n (e: 'update:selected', value: T[]): void;\n /** Emitted on every input change. When listened to, the parent is responsible for\n * updating `options`; otherwise the component filters `options` client-side. */\n (e: 'search', query: string): void;\n /** Emitted when the user enters a custom value */\n (e: 'add-custom', value: string): void;\n}>();\n\nconst { t } = useI18n();\n\n// Ref on the teleported dropdown div — passed as ignored element to useOctopusDropdown\n// so clicks inside the dropdown don't trigger the click-outside handler.\nconst dropdownRef = ref<HTMLElement | null>(null);\n\nconst {\n searchQuery,\n isOpen,\n isHovered,\n containerRef,\n inputRef,\n teleportTarget,\n computedId,\n displayedOptions,\n inputPlaceholder,\n getLabel,\n openDropdown,\n toggleDropdown,\n handleInput,\n} = useOctopusDropdown(props, (query) => emit('search', query), 'multiselect', [dropdownRef]);\n\nconst selectionRef = ref<HTMLElement | null>(null);\n\n// Position of the teleported dropdown (position: fixed, anchored below the trigger field)\nconst dropdownStyle = ref<CSSProperties>({});\n\n// Also used to position the hover tooltip: both are teleported and anchored the same way\n// (fixed, directly below the field, same width), and are never shown at the same time.\nfunction updateDropdownPosition(): void {\n if (!containerRef.value) { return; }\n const rect = containerRef.value.getBoundingClientRect();\n dropdownStyle.value = {\n position: 'fixed',\n top: `${rect.bottom + 2}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n };\n}\n\nfunction onFieldMouseEnter(): void {\n isHovered.value = true;\n if (props.expandOnHover) {\n nextTick(updateDropdownPosition);\n }\n}\n\nconst visibleCount = ref(2);\n\n// Selection snapshot captured the instant the dropdown opens, used only to freeze the\n// sort order when pullSelectedToTop is set — does not react to later `selected` changes\n// while the dropdown stays open.\nconst pinnedSnapshot = ref<T[]>([]);\n\n// Selected values not present in `options` — only populated when allowCustomValue is set,\n// so a custom value typed via handleCustomValueEnter still shows (checked) in the dropdown.\nconst customSelectedOptions = computed<T[]>(() => {\n if (!props.allowCustomValue) { return []; }\n return (props.selected ?? []).filter((item) => !isInOptions(item));\n});\n\nconst visibleOptions = computed<T[]>(() => {\n const query = searchQuery.value.toLowerCase();\n const filteredCustom = query\n ? customSelectedOptions.value.filter((option) => getLabel(option).toLowerCase().includes(query))\n : customSelectedOptions.value;\n const combined = [...displayedOptions.value, ...filteredCustom];\n if (!props.pullSelectedToTop) {\n return combined;\n }\n return [...combined.filter(isPinned), ...combined.filter((option) => !isPinned(option))];\n});\n\nconst allSelected = computed(() => {\n if (visibleOptions.value.length === 0) {\n return false;\n }\n return visibleOptions.value.every((option) => isSelected(option));\n});\n\nconst hasSelected = computed(() => (props.selected?.length ?? 0) > 0);\n\nconst selectionLabels = computed(() =>\n (props.selected ?? []).slice(0, visibleCount.value).map(getLabel).join(', ')\n);\n\nconst overflowCount = computed(() =>\n Math.max(0, (props.selected?.length ?? 0) - visibleCount.value)\n);\n\nconst allLabelsText = computed(() =>\n (props.selected ?? []).map(getLabel).join(', ')\n);\n\nfunction isSelected(option: T): boolean {\n if (props.optionKey) {\n return props.selected?.find(s => s[props.optionKey] === option[props.optionKey]) !== undefined;\n } else {\n return props.selected?.includes(option) ?? false;\n }\n}\n\nfunction isInOptions(option: T): boolean {\n if (props.optionKey) {\n return props.options.some((opt) => opt[props.optionKey] === option[props.optionKey]);\n } else {\n return props.options.includes(option);\n }\n}\n\nfunction isPinned(option: T): boolean {\n if (props.optionKey) {\n return pinnedSnapshot.value.some((s) => s[props.optionKey] === option[props.optionKey]);\n } else {\n return pinnedSnapshot.value.includes(option);\n }\n}\n\nfunction toggleOption(option: T): void {\n const current = props.selected ?? [];\n if (isSelected(option)) {\n const key = props.optionKey;\n emit('update:selected', key\n ? current.filter((item) => item[key] !== option[key])\n : current.filter((item) => item !== option)\n );\n } else {\n emit('update:selected', [...current, option]);\n }\n}\n\nfunction handleCustomValueEnter(): void {\n if (!props.allowCustomValue) { return; }\n const value = searchQuery.value.trim();\n if (!value) { return; }\n emit('add-custom', value);\n searchQuery.value = '';\n}\n\nfunction toggleAll(val: boolean): void {\n const current = props.selected ?? [];\n if (val) {\n const toAdd = visibleOptions.value.filter((option: T) => !isSelected(option));\n emit('update:selected', [...current, ...toAdd]);\n } else {\n const key = props.optionKey;\n emit('update:selected', current.filter((item: T) => key\n ? !visibleOptions.value.some((opt) => opt[key] === item[key])\n : !visibleOptions.value.includes(item)\n ));\n }\n}\n\nfunction updateVisibleCount(): void {\n const container = selectionRef.value;\n const selected = props.selected ?? [];\n if (!container || selected.length < 2) {\n visibleCount.value = selected.length;\n return;\n }\n\n const availableWidth = container.offsetWidth;\n if (availableWidth === 0) {\n return;\n }\n\n const labels = selected.map(getLabel);\n const measurer = document.createElement('span');\n measurer.style.cssText = 'position:absolute;visibility:hidden;white-space:nowrap;pointer-events:none;';\n container.appendChild(measurer);\n\n measurer.textContent = labels.join(', ');\n if (measurer.offsetWidth <= availableWidth) {\n visibleCount.value = labels.length;\n container.removeChild(measurer);\n return;\n }\n\n measurer.textContent = `(+${labels.length})`;\n const badgeWidth = measurer.offsetWidth + 4;\n const textAvailable = availableWidth - badgeWidth;\n\n let count = 0;\n for (let i = 0; i < labels.length; i++) {\n measurer.textContent = labels.slice(0, i + 1).join(', ');\n if (measurer.offsetWidth > textAvailable) {\n break;\n }\n count = i + 1;\n }\n\n container.removeChild(measurer);\n visibleCount.value = Math.max(1, count);\n}\n\nlet resizeObserver: ResizeObserver | null = null;\n\nonMounted(() => {\n if (selectionRef.value) {\n resizeObserver = new ResizeObserver(updateVisibleCount);\n resizeObserver.observe(selectionRef.value);\n }\n updateVisibleCount();\n // Keep the teleported dropdown aligned when the page scrolls or the viewport resizes\n window.addEventListener('scroll', updateDropdownPosition, true);\n window.addEventListener('resize', updateDropdownPosition);\n});\n\nonUnmounted(() => {\n resizeObserver?.disconnect();\n window.removeEventListener('scroll', updateDropdownPosition, true);\n window.removeEventListener('resize', updateDropdownPosition);\n});\n\nwatch(() => props.selected, updateVisibleCount);\n\nwatch(isOpen, (val) => {\n if (val) {\n pinnedSnapshot.value = [...(props.selected ?? [])];\n nextTick(updateDropdownPosition);\n } else {\n nextTick(updateVisibleCount);\n }\n});\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-multiselect {\n position: relative;\n\n .octopus-multiselect-field {\n display: flex;\n align-items: center;\n border: 1px solid var(--octopus-border-default);\n border-radius: var(--octopus-border-radius);\n background: white;\n cursor: pointer;\n\n &.open {\n border-color: var(--octopus-primary);\n }\n\n &.disabled {\n background: var(--octopus-secondary-lighter);\n cursor: default;\n }\n\n &.noBorder {\n border: none;\n }\n }\n\n .octopus-multiselect-selection {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n padding: 0.4rem 0.5rem;\n height: 2rem;\n gap: 0.25rem;\n }\n\n .octopus-multiselect-selection-text {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .octopus-multiselect-selection-count {\n flex-shrink: 0;\n white-space: nowrap;\n color: var(--octopus-primary);\n }\n\n .octopus-multiselect-input {\n flex: 1;\n border: none;\n background: transparent;\n padding: 0.4rem 0.5rem;\n padding-right: 0;\n height: 2rem;\n outline: none;\n cursor: inherit;\n min-width: 0;\n }\n\n .octopus-multiselect-chevron {\n padding: 0.25rem 0.5rem;\n display: flex;\n align-items: center;\n }\n\n}\n\n// Dropdown/tooltip are teleported to body — scoped rules must be top-level so that\n// [data-v-xxxx] is matched directly on the element rather than via a descendant-of-.octopus-multiselect selector.\n.octopus-multiselect-hover-tooltip {\n z-index: 101;\n background: white;\n border: 1px solid var(--octopus-border-default);\n border-radius: var(--octopus-border-radius);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n padding: 0.5rem;\n word-break: break-word;\n pointer-events: none;\n}\n\n.octopus-multiselect-dropdown {\n z-index: 100;\n background: white;\n border: 1px solid var(--octopus-border-default);\n border-radius: var(--octopus-border-radius);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n padding: 0.25rem 0;\n\n > .octopus-form-item {\n padding: 0.25rem 0.5rem;\n border-bottom: 1px solid var(--octopus-secondary);\n }\n}\n\n.octopus-multiselect-options {\n max-height: 14rem;\n overflow-y: auto;\n\n .octopus-form-item {\n padding: 0.25rem 0.5rem;\n }\n}\n\nhr {\n border-top: 1px solid var(--octopus-secondary);\n border-bottom: none;\n margin: 0;\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -74,7 +74,11 @@ var re = ["for"], ie = { class: "octopus-multiselect-selection-text" }, ae = {
|
|
|
74
74
|
expandOnHover: { type: Boolean },
|
|
75
75
|
pullSelectedToTop: { type: Boolean }
|
|
76
76
|
},
|
|
77
|
-
emits: [
|
|
77
|
+
emits: [
|
|
78
|
+
"update:selected",
|
|
79
|
+
"search",
|
|
80
|
+
"add-custom"
|
|
81
|
+
],
|
|
78
82
|
setup(t, { emit: u }) {
|
|
79
83
|
let d = t, O = u, { t: A } = D(), j = y(null), { searchQuery: M, isOpen: N, isHovered: P, containerRef: F, inputRef: fe, teleportTarget: pe, computedId: I, displayedOptions: me, inputPlaceholder: he, getLabel: L, openDropdown: R, toggleDropdown: z, handleInput: B } = k(d, (e) => O("search", e), "multiselect", [j]), V = y(null), H = y({});
|
|
80
84
|
function U() {
|
|
@@ -113,9 +117,7 @@ var re = ["for"], ie = { class: "octopus-multiselect-selection-text" }, ae = {
|
|
|
113
117
|
function Se() {
|
|
114
118
|
if (!d.allowCustomValue) return;
|
|
115
119
|
let e = M.value.trim();
|
|
116
|
-
|
|
117
|
-
let t = e;
|
|
118
|
-
X(t) || O("update:selected", [...d.selected ?? [], t]), M.value = "";
|
|
120
|
+
e && (O("add-custom", e), M.value = "");
|
|
119
121
|
}
|
|
120
122
|
function Ce(e) {
|
|
121
123
|
let t = d.selected ?? [];
|
|
@@ -229,6 +231,6 @@ var re = ["for"], ie = { class: "octopus-multiselect-selection-text" }, ae = {
|
|
|
229
231
|
]))), 128)), t.allowCustomValue && S(M).trim() ? (v(), s(n, { key: 0 }, [q.value.length > 0 ? (v(), s("hr", le)) : o("", !0), c("span", ue, x(S(A)("Press Enter to add this value")), 1)], 64)) : q.value.length === 0 ? (v(), s("span", de, x(S(A)("No elements found. Consider changing the search query.")), 1)) : o("", !0)])], 4)) : o("", !0)], 8, ["to"]))
|
|
230
232
|
], 2));
|
|
231
233
|
}
|
|
232
|
-
}), [["__scopeId", "data-v-
|
|
234
|
+
}), [["__scopeId", "data-v-04ff1a0e"]]);
|
|
233
235
|
//#endregion
|
|
234
236
|
export { k as n, A as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrganisationChooser-BKfXLT4G.mjs","names":["classicApi","_resolveDirective","_openBlock","_createBlock","_createSlots","_withCtx","_createElementVNode","_withDirectives","_toDisplayString","_createCommentVNode","_sfc_main"],"sources":["../src/components/display/organisation/OrganisationChooser.vue","../src/components/display/organisation/OrganisationChooser.vue"],"sourcesContent":["<template>\n <ClassicMultiselect\n v-if=\"!orgaIdSelected || initLoaded\"\n id=\"organisation-chooser\"\n ref=\"selectOrganisation\"\n option-label=\"name\"\n :label=\"label ??t('select productor')\"\n :display-label=\"displayLabel\"\n :max-element=\"maxElement\"\n :width=\"width\"\n :in-modal=\"inModal\"\n :option-chosen=\"organisationChosen\"\n option-custom-templating=\"optionTemplating\"\n option-selected-custom-templating=\"optionTemplating\"\n :no-deselect=\"noDeselect\"\n @on-search=\"onSearchOrganisation\"\n @selected=\"emit('selected', $event)\"\n >\n <template v-if=\"isImage\" #optionTemplating=\"{ option }\">\n <div\n class=\"d-flex align-items-center\"\n :data-selenium=\"'organisation-chooser-' + seleniumFormat(option.name)\"\n >\n <img\n v-lazy=\"useProxyImageUrl(option.imageUrl, '32')\"\n width=\"32\"\n height=\"32\"\n class=\"me-2\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Organisation name image', { name: option.name })\"\n />\n <span>\n {{ option.name }}\n </span>\n </div>\n </template>\n </ClassicMultiselect>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport {useSelenium} from \"../../composable/useSelenium\";\nimport classicApi from \"../../../api/classicApi\";\nimport ClassicMultiselect from \"../../form/ClassicMultiselect.vue\";\nimport { computed, onBeforeMount, ref, Ref, useTemplateRef, watch } from \"vue\";\nimport {\n emptyOrgaData,\n Organisation,\n} from \"../../../stores/class/general/organisation\";\nimport { useSaveFetchStore } from \"../../../stores/SaveFetchStore\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n defaultanswer: { default: \"\", type: String },\n orgaIdSelected: { default: undefined, type: String },\n reset: { default: false, type: Boolean },\n width: { default: \"100%\", type: String },\n isImage: { default: true, type: Boolean },\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})\n\n//Emits\nconst emit = defineEmits([\"selected\"]);\n \n//Data \nconst maxElement = ref(50);\nconst organisationChosen: Ref<Organisation | undefined> = ref(undefined);\nconst initLoaded = ref(false);\nconst selectOrganisationRef = useTemplateRef('selectOrganisation');\n\n//Composables\nconst { t } = useI18n();\nconst { seleniumFormat } = useSelenium();\nconst { useProxyImageUrl } = useImageProxy();\nconst authStore = useAuthStore();\nconst saveFetchStore = useSaveFetchStore();\n\n\n//Computed\nconst getDefaultOrganisation = computed(() => {\n if (\"\" === props.defaultanswer) {\n return undefined;\n }\n return emptyOrgaData(props.defaultanswer);\n});\nconst myOrganisation = computed(() => {\n if (!authStore.authOrgaId) return undefined;\n return {\n ...authStore.authOrganisation,\n ...{\n name: `${t(\"Edit my organisation\")} (${\n authStore.authOrganisation.name\n })`,\n },\n };\n});\n\n\n//Watch\nwatch(()=>props.orgaIdSelected, () => {\n if (!props.orgaIdSelected) {\n organisationChosen.value = getDefaultOrganisation.value;\n return;\n }\n if (\n props.orgaIdSelected &&\n organisationChosen.value?.id !== props.orgaIdSelected\n ) {\n fetchOrganisation();\n }\n}, {immediate: true});\nwatch(()=>props.reset, () => {\n organisationChosen.value = getDefaultOrganisation.value;\n});\n\nonBeforeMount(()=>organisationChosen.value = getDefaultOrganisation.value)\n\n\n//Methods\nasync function onSearchOrganisation(query?: string): Promise<void> {\n const response = await classicApi.fetchData<\n ListClassicReturn<Organisation>\n >({\n api: 0,\n path: \"organisation/search\",\n parameters: {\n query: query,\n first: 0,\n size: maxElement.value,\n },\n });\n let notNullOrga = response.result.filter((o: Organisation | null) => {\n return null !== o;\n });\n if (getDefaultOrganisation.value) {\n notNullOrga.unshift(getDefaultOrganisation.value);\n }\n if (myOrganisation.value) {\n if (undefined === query) {\n notNullOrga = notNullOrga.filter((obj: Organisation) => {\n return obj.id !== authStore.authOrgaId;\n });\n notNullOrga.splice(1, 0, myOrganisation.value);\n } else {\n const foundIndex = notNullOrga.findIndex(\n (obj: Organisation) => obj.id === authStore.authOrgaId,\n );\n if (foundIndex) {\n notNullOrga[foundIndex] = myOrganisation.value;\n }\n }\n }\n (selectOrganisationRef?.value as InstanceType<typeof ClassicMultiselect>).afterSearch(notNullOrga, response.count);\n}\nasync function fetchOrganisation(): Promise<void> {\n organisationChosen.value = await saveFetchStore.getOrgaData(\n props.orgaIdSelected ?? \"\",\n );\n initLoaded.value = true;\n}\n</script>\n","<template>\n <ClassicMultiselect\n v-if=\"!orgaIdSelected || initLoaded\"\n id=\"organisation-chooser\"\n ref=\"selectOrganisation\"\n option-label=\"name\"\n :label=\"label ??t('select productor')\"\n :display-label=\"displayLabel\"\n :max-element=\"maxElement\"\n :width=\"width\"\n :in-modal=\"inModal\"\n :option-chosen=\"organisationChosen\"\n option-custom-templating=\"optionTemplating\"\n option-selected-custom-templating=\"optionTemplating\"\n :no-deselect=\"noDeselect\"\n @on-search=\"onSearchOrganisation\"\n @selected=\"emit('selected', $event)\"\n >\n <template v-if=\"isImage\" #optionTemplating=\"{ option }\">\n <div\n class=\"d-flex align-items-center\"\n :data-selenium=\"'organisation-chooser-' + seleniumFormat(option.name)\"\n >\n <img\n v-lazy=\"useProxyImageUrl(option.imageUrl, '32')\"\n width=\"32\"\n height=\"32\"\n class=\"me-2\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Organisation name image', { name: option.name })\"\n />\n <span>\n {{ option.name }}\n </span>\n </div>\n </template>\n </ClassicMultiselect>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport {useSelenium} from \"../../composable/useSelenium\";\nimport classicApi from \"../../../api/classicApi\";\nimport ClassicMultiselect from \"../../form/ClassicMultiselect.vue\";\nimport { computed, onBeforeMount, ref, Ref, useTemplateRef, watch } from \"vue\";\nimport {\n emptyOrgaData,\n Organisation,\n} from \"../../../stores/class/general/organisation\";\nimport { useSaveFetchStore } from \"../../../stores/SaveFetchStore\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n defaultanswer: { default: \"\", type: String },\n orgaIdSelected: { default: undefined, type: String },\n reset: { default: false, type: Boolean },\n width: { default: \"100%\", type: String },\n isImage: { default: true, type: Boolean },\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})\n\n//Emits\nconst emit = defineEmits([\"selected\"]);\n \n//Data \nconst maxElement = ref(50);\nconst organisationChosen: Ref<Organisation | undefined> = ref(undefined);\nconst initLoaded = ref(false);\nconst selectOrganisationRef = useTemplateRef('selectOrganisation');\n\n//Composables\nconst { t } = useI18n();\nconst { seleniumFormat } = useSelenium();\nconst { useProxyImageUrl } = useImageProxy();\nconst authStore = useAuthStore();\nconst saveFetchStore = useSaveFetchStore();\n\n\n//Computed\nconst getDefaultOrganisation = computed(() => {\n if (\"\" === props.defaultanswer) {\n return undefined;\n }\n return emptyOrgaData(props.defaultanswer);\n});\nconst myOrganisation = computed(() => {\n if (!authStore.authOrgaId) return undefined;\n return {\n ...authStore.authOrganisation,\n ...{\n name: `${t(\"Edit my organisation\")} (${\n authStore.authOrganisation.name\n })`,\n },\n };\n});\n\n\n//Watch\nwatch(()=>props.orgaIdSelected, () => {\n if (!props.orgaIdSelected) {\n organisationChosen.value = getDefaultOrganisation.value;\n return;\n }\n if (\n props.orgaIdSelected &&\n organisationChosen.value?.id !== props.orgaIdSelected\n ) {\n fetchOrganisation();\n }\n}, {immediate: true});\nwatch(()=>props.reset, () => {\n organisationChosen.value = getDefaultOrganisation.value;\n});\n\nonBeforeMount(()=>organisationChosen.value = getDefaultOrganisation.value)\n\n\n//Methods\nasync function onSearchOrganisation(query?: string): Promise<void> {\n const response = await classicApi.fetchData<\n ListClassicReturn<Organisation>\n >({\n api: 0,\n path: \"organisation/search\",\n parameters: {\n query: query,\n first: 0,\n size: maxElement.value,\n },\n });\n let notNullOrga = response.result.filter((o: Organisation | null) => {\n return null !== o;\n });\n if (getDefaultOrganisation.value) {\n notNullOrga.unshift(getDefaultOrganisation.value);\n }\n if (myOrganisation.value) {\n if (undefined === query) {\n notNullOrga = notNullOrga.filter((obj: Organisation) => {\n return obj.id !== authStore.authOrgaId;\n });\n notNullOrga.splice(1, 0, myOrganisation.value);\n } else {\n const foundIndex = notNullOrga.findIndex(\n (obj: Organisation) => obj.id === authStore.authOrgaId,\n );\n if (foundIndex) {\n notNullOrga[foundIndex] = myOrganisation.value;\n }\n }\n }\n (selectOrganisationRef?.value as InstanceType<typeof ClassicMultiselect>).afterSearch(notNullOrga, response.count);\n}\nasync function fetchOrganisation(): Promise<void> {\n organisationChosen.value = await saveFetchStore.getOrgaData(\n props.orgaIdSelected ?? \"\",\n );\n initLoaded.value = true;\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { E as e, i as t, t as n } from "./classicApi-CGipMqf7.mjs";
|
|
2
2
|
import { t as r } from "./useSelenium-DAM6EF3J.mjs";
|
|
3
|
-
import { t as i } from "./useImageProxy-
|
|
3
|
+
import { t as i } from "./useImageProxy-CCpDzPmQ.mjs";
|
|
4
4
|
import { t as a } from "./organisation-JgfYj1Jp.mjs";
|
|
5
|
-
import { t as o } from "./ClassicMultiselect-
|
|
5
|
+
import { t as o } from "./ClassicMultiselect-C0yzVQ8Y.mjs";
|
|
6
6
|
import { computed as s, createBlock as c, createCommentVNode as l, createElementVNode as u, createSlots as d, defineComponent as f, onBeforeMount as p, openBlock as m, ref as h, resolveDirective as g, toDisplayString as _, unref as v, useTemplateRef as y, watch as b, withCtx as x, withDirectives as S } from "vue";
|
|
7
7
|
import { useI18n as C } from "vue-i18n";
|
|
8
8
|
//#region src/components/display/organisation/OrganisationChooser.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrganisationChooser-PpO7MD7f.mjs","names":["classicApi","_resolveDirective","_openBlock","_createBlock","_createSlots","_withCtx","_createElementVNode","_withDirectives","_toDisplayString","_createCommentVNode","_sfc_main"],"sources":["../src/components/display/organisation/OrganisationChooser.vue","../src/components/display/organisation/OrganisationChooser.vue"],"sourcesContent":["<template>\n <ClassicMultiselect\n v-if=\"!orgaIdSelected || initLoaded\"\n id=\"organisation-chooser\"\n ref=\"selectOrganisation\"\n option-label=\"name\"\n :label=\"label ??t('select productor')\"\n :display-label=\"displayLabel\"\n :max-element=\"maxElement\"\n :width=\"width\"\n :in-modal=\"inModal\"\n :option-chosen=\"organisationChosen\"\n option-custom-templating=\"optionTemplating\"\n option-selected-custom-templating=\"optionTemplating\"\n :no-deselect=\"noDeselect\"\n @on-search=\"onSearchOrganisation\"\n @selected=\"emit('selected', $event)\"\n >\n <template v-if=\"isImage\" #optionTemplating=\"{ option }\">\n <div\n class=\"d-flex align-items-center\"\n :data-selenium=\"'organisation-chooser-' + seleniumFormat(option.name)\"\n >\n <img\n v-lazy=\"useProxyImageUrl(option.imageUrl, '32')\"\n width=\"32\"\n height=\"32\"\n class=\"me-2\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Organisation name image', { name: option.name })\"\n />\n <span>\n {{ option.name }}\n </span>\n </div>\n </template>\n </ClassicMultiselect>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport {useSelenium} from \"../../composable/useSelenium\";\nimport classicApi from \"../../../api/classicApi\";\nimport ClassicMultiselect from \"../../form/ClassicMultiselect.vue\";\nimport { computed, onBeforeMount, ref, Ref, useTemplateRef, watch } from \"vue\";\nimport {\n emptyOrgaData,\n Organisation,\n} from \"../../../stores/class/general/organisation\";\nimport { useSaveFetchStore } from \"../../../stores/SaveFetchStore\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n defaultanswer: { default: \"\", type: String },\n orgaIdSelected: { default: undefined, type: String },\n reset: { default: false, type: Boolean },\n width: { default: \"100%\", type: String },\n isImage: { default: true, type: Boolean },\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})\n\n//Emits\nconst emit = defineEmits([\"selected\"]);\n \n//Data \nconst maxElement = ref(50);\nconst organisationChosen: Ref<Organisation | undefined> = ref(undefined);\nconst initLoaded = ref(false);\nconst selectOrganisationRef = useTemplateRef('selectOrganisation');\n\n//Composables\nconst { t } = useI18n();\nconst { seleniumFormat } = useSelenium();\nconst { useProxyImageUrl } = useImageProxy();\nconst authStore = useAuthStore();\nconst saveFetchStore = useSaveFetchStore();\n\n\n//Computed\nconst getDefaultOrganisation = computed(() => {\n if (\"\" === props.defaultanswer) {\n return undefined;\n }\n return emptyOrgaData(props.defaultanswer);\n});\nconst myOrganisation = computed(() => {\n if (!authStore.authOrgaId) return undefined;\n return {\n ...authStore.authOrganisation,\n ...{\n name: `${t(\"Edit my organisation\")} (${\n authStore.authOrganisation.name\n })`,\n },\n };\n});\n\n\n//Watch\nwatch(()=>props.orgaIdSelected, () => {\n if (!props.orgaIdSelected) {\n organisationChosen.value = getDefaultOrganisation.value;\n return;\n }\n if (\n props.orgaIdSelected &&\n organisationChosen.value?.id !== props.orgaIdSelected\n ) {\n fetchOrganisation();\n }\n}, {immediate: true});\nwatch(()=>props.reset, () => {\n organisationChosen.value = getDefaultOrganisation.value;\n});\n\nonBeforeMount(()=>organisationChosen.value = getDefaultOrganisation.value)\n\n\n//Methods\nasync function onSearchOrganisation(query?: string): Promise<void> {\n const response = await classicApi.fetchData<\n ListClassicReturn<Organisation>\n >({\n api: 0,\n path: \"organisation/search\",\n parameters: {\n query: query,\n first: 0,\n size: maxElement.value,\n },\n });\n let notNullOrga = response.result.filter((o: Organisation | null) => {\n return null !== o;\n });\n if (getDefaultOrganisation.value) {\n notNullOrga.unshift(getDefaultOrganisation.value);\n }\n if (myOrganisation.value) {\n if (undefined === query) {\n notNullOrga = notNullOrga.filter((obj: Organisation) => {\n return obj.id !== authStore.authOrgaId;\n });\n notNullOrga.splice(1, 0, myOrganisation.value);\n } else {\n const foundIndex = notNullOrga.findIndex(\n (obj: Organisation) => obj.id === authStore.authOrgaId,\n );\n if (foundIndex) {\n notNullOrga[foundIndex] = myOrganisation.value;\n }\n }\n }\n (selectOrganisationRef?.value as InstanceType<typeof ClassicMultiselect>).afterSearch(notNullOrga, response.count);\n}\nasync function fetchOrganisation(): Promise<void> {\n organisationChosen.value = await saveFetchStore.getOrgaData(\n props.orgaIdSelected ?? \"\",\n );\n initLoaded.value = true;\n}\n</script>\n","<template>\n <ClassicMultiselect\n v-if=\"!orgaIdSelected || initLoaded\"\n id=\"organisation-chooser\"\n ref=\"selectOrganisation\"\n option-label=\"name\"\n :label=\"label ??t('select productor')\"\n :display-label=\"displayLabel\"\n :max-element=\"maxElement\"\n :width=\"width\"\n :in-modal=\"inModal\"\n :option-chosen=\"organisationChosen\"\n option-custom-templating=\"optionTemplating\"\n option-selected-custom-templating=\"optionTemplating\"\n :no-deselect=\"noDeselect\"\n @on-search=\"onSearchOrganisation\"\n @selected=\"emit('selected', $event)\"\n >\n <template v-if=\"isImage\" #optionTemplating=\"{ option }\">\n <div\n class=\"d-flex align-items-center\"\n :data-selenium=\"'organisation-chooser-' + seleniumFormat(option.name)\"\n >\n <img\n v-lazy=\"useProxyImageUrl(option.imageUrl, '32')\"\n width=\"32\"\n height=\"32\"\n class=\"me-2\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Organisation name image', { name: option.name })\"\n />\n <span>\n {{ option.name }}\n </span>\n </div>\n </template>\n </ClassicMultiselect>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport {useSelenium} from \"../../composable/useSelenium\";\nimport classicApi from \"../../../api/classicApi\";\nimport ClassicMultiselect from \"../../form/ClassicMultiselect.vue\";\nimport { computed, onBeforeMount, ref, Ref, useTemplateRef, watch } from \"vue\";\nimport {\n emptyOrgaData,\n Organisation,\n} from \"../../../stores/class/general/organisation\";\nimport { useSaveFetchStore } from \"../../../stores/SaveFetchStore\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n defaultanswer: { default: \"\", type: String },\n orgaIdSelected: { default: undefined, type: String },\n reset: { default: false, type: Boolean },\n width: { default: \"100%\", type: String },\n isImage: { default: true, type: Boolean },\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})\n\n//Emits\nconst emit = defineEmits([\"selected\"]);\n \n//Data \nconst maxElement = ref(50);\nconst organisationChosen: Ref<Organisation | undefined> = ref(undefined);\nconst initLoaded = ref(false);\nconst selectOrganisationRef = useTemplateRef('selectOrganisation');\n\n//Composables\nconst { t } = useI18n();\nconst { seleniumFormat } = useSelenium();\nconst { useProxyImageUrl } = useImageProxy();\nconst authStore = useAuthStore();\nconst saveFetchStore = useSaveFetchStore();\n\n\n//Computed\nconst getDefaultOrganisation = computed(() => {\n if (\"\" === props.defaultanswer) {\n return undefined;\n }\n return emptyOrgaData(props.defaultanswer);\n});\nconst myOrganisation = computed(() => {\n if (!authStore.authOrgaId) return undefined;\n return {\n ...authStore.authOrganisation,\n ...{\n name: `${t(\"Edit my organisation\")} (${\n authStore.authOrganisation.name\n })`,\n },\n };\n});\n\n\n//Watch\nwatch(()=>props.orgaIdSelected, () => {\n if (!props.orgaIdSelected) {\n organisationChosen.value = getDefaultOrganisation.value;\n return;\n }\n if (\n props.orgaIdSelected &&\n organisationChosen.value?.id !== props.orgaIdSelected\n ) {\n fetchOrganisation();\n }\n}, {immediate: true});\nwatch(()=>props.reset, () => {\n organisationChosen.value = getDefaultOrganisation.value;\n});\n\nonBeforeMount(()=>organisationChosen.value = getDefaultOrganisation.value)\n\n\n//Methods\nasync function onSearchOrganisation(query?: string): Promise<void> {\n const response = await classicApi.fetchData<\n ListClassicReturn<Organisation>\n >({\n api: 0,\n path: \"organisation/search\",\n parameters: {\n query: query,\n first: 0,\n size: maxElement.value,\n },\n });\n let notNullOrga = response.result.filter((o: Organisation | null) => {\n return null !== o;\n });\n if (getDefaultOrganisation.value) {\n notNullOrga.unshift(getDefaultOrganisation.value);\n }\n if (myOrganisation.value) {\n if (undefined === query) {\n notNullOrga = notNullOrga.filter((obj: Organisation) => {\n return obj.id !== authStore.authOrgaId;\n });\n notNullOrga.splice(1, 0, myOrganisation.value);\n } else {\n const foundIndex = notNullOrga.findIndex(\n (obj: Organisation) => obj.id === authStore.authOrgaId,\n );\n if (foundIndex) {\n notNullOrga[foundIndex] = myOrganisation.value;\n }\n }\n }\n (selectOrganisationRef?.value as InstanceType<typeof ClassicMultiselect>).afterSearch(notNullOrga, response.count);\n}\nasync function fetchOrganisation(): Promise<void> {\n organisationChosen.value = await saveFetchStore.getOrgaData(\n props.orgaIdSelected ?? \"\",\n );\n initLoaded.value = true;\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrganisationChooser-Y_jO6oXv.mjs","names":["classicApi","_resolveDirective","_openBlock","_createBlock","_createSlots","_withCtx","_createElementVNode","_withDirectives","_toDisplayString","_createCommentVNode","_sfc_main"],"sources":["../src/components/display/organisation/OrganisationChooser.vue","../src/components/display/organisation/OrganisationChooser.vue"],"sourcesContent":["<template>\n <ClassicMultiselect\n v-if=\"!orgaIdSelected || initLoaded\"\n id=\"organisation-chooser\"\n ref=\"selectOrganisation\"\n option-label=\"name\"\n :label=\"label ??t('select productor')\"\n :display-label=\"displayLabel\"\n :max-element=\"maxElement\"\n :width=\"width\"\n :in-modal=\"inModal\"\n :option-chosen=\"organisationChosen\"\n option-custom-templating=\"optionTemplating\"\n option-selected-custom-templating=\"optionTemplating\"\n :no-deselect=\"noDeselect\"\n @on-search=\"onSearchOrganisation\"\n @selected=\"emit('selected', $event)\"\n >\n <template v-if=\"isImage\" #optionTemplating=\"{ option }\">\n <div\n class=\"d-flex align-items-center\"\n :data-selenium=\"'organisation-chooser-' + seleniumFormat(option.name)\"\n >\n <img\n v-lazy=\"useProxyImageUrl(option.imageUrl, '32')\"\n width=\"32\"\n height=\"32\"\n class=\"me-2\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Organisation name image', { name: option.name })\"\n />\n <span>\n {{ option.name }}\n </span>\n </div>\n </template>\n </ClassicMultiselect>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport {useSelenium} from \"../../composable/useSelenium\";\nimport classicApi from \"../../../api/classicApi\";\nimport ClassicMultiselect from \"../../form/ClassicMultiselect.vue\";\nimport { computed, onBeforeMount, ref, Ref, useTemplateRef, watch } from \"vue\";\nimport {\n emptyOrgaData,\n Organisation,\n} from \"../../../stores/class/general/organisation\";\nimport { useSaveFetchStore } from \"../../../stores/SaveFetchStore\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n defaultanswer: { default: \"\", type: String },\n orgaIdSelected: { default: undefined, type: String },\n reset: { default: false, type: Boolean },\n width: { default: \"100%\", type: String },\n isImage: { default: true, type: Boolean },\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})\n\n//Emits\nconst emit = defineEmits([\"selected\"]);\n \n//Data \nconst maxElement = ref(50);\nconst organisationChosen: Ref<Organisation | undefined> = ref(undefined);\nconst initLoaded = ref(false);\nconst selectOrganisationRef = useTemplateRef('selectOrganisation');\n\n//Composables\nconst { t } = useI18n();\nconst { seleniumFormat } = useSelenium();\nconst { useProxyImageUrl } = useImageProxy();\nconst authStore = useAuthStore();\nconst saveFetchStore = useSaveFetchStore();\n\n\n//Computed\nconst getDefaultOrganisation = computed(() => {\n if (\"\" === props.defaultanswer) {\n return undefined;\n }\n return emptyOrgaData(props.defaultanswer);\n});\nconst myOrganisation = computed(() => {\n if (!authStore.authOrgaId) return undefined;\n return {\n ...authStore.authOrganisation,\n ...{\n name: `${t(\"Edit my organisation\")} (${\n authStore.authOrganisation.name\n })`,\n },\n };\n});\n\n\n//Watch\nwatch(()=>props.orgaIdSelected, () => {\n if (!props.orgaIdSelected) {\n organisationChosen.value = getDefaultOrganisation.value;\n return;\n }\n if (\n props.orgaIdSelected &&\n organisationChosen.value?.id !== props.orgaIdSelected\n ) {\n fetchOrganisation();\n }\n}, {immediate: true});\nwatch(()=>props.reset, () => {\n organisationChosen.value = getDefaultOrganisation.value;\n});\n\nonBeforeMount(()=>organisationChosen.value = getDefaultOrganisation.value)\n\n\n//Methods\nasync function onSearchOrganisation(query?: string): Promise<void> {\n const response = await classicApi.fetchData<\n ListClassicReturn<Organisation>\n >({\n api: 0,\n path: \"organisation/search\",\n parameters: {\n query: query,\n first: 0,\n size: maxElement.value,\n },\n });\n let notNullOrga = response.result.filter((o: Organisation | null) => {\n return null !== o;\n });\n if (getDefaultOrganisation.value) {\n notNullOrga.unshift(getDefaultOrganisation.value);\n }\n if (myOrganisation.value) {\n if (undefined === query) {\n notNullOrga = notNullOrga.filter((obj: Organisation) => {\n return obj.id !== authStore.authOrgaId;\n });\n notNullOrga.splice(1, 0, myOrganisation.value);\n } else {\n const foundIndex = notNullOrga.findIndex(\n (obj: Organisation) => obj.id === authStore.authOrgaId,\n );\n if (foundIndex) {\n notNullOrga[foundIndex] = myOrganisation.value;\n }\n }\n }\n (selectOrganisationRef?.value as InstanceType<typeof ClassicMultiselect>).afterSearch(notNullOrga, response.count);\n}\nasync function fetchOrganisation(): Promise<void> {\n organisationChosen.value = await saveFetchStore.getOrgaData(\n props.orgaIdSelected ?? \"\",\n );\n initLoaded.value = true;\n}\n</script>\n","<template>\n <ClassicMultiselect\n v-if=\"!orgaIdSelected || initLoaded\"\n id=\"organisation-chooser\"\n ref=\"selectOrganisation\"\n option-label=\"name\"\n :label=\"label ??t('select productor')\"\n :display-label=\"displayLabel\"\n :max-element=\"maxElement\"\n :width=\"width\"\n :in-modal=\"inModal\"\n :option-chosen=\"organisationChosen\"\n option-custom-templating=\"optionTemplating\"\n option-selected-custom-templating=\"optionTemplating\"\n :no-deselect=\"noDeselect\"\n @on-search=\"onSearchOrganisation\"\n @selected=\"emit('selected', $event)\"\n >\n <template v-if=\"isImage\" #optionTemplating=\"{ option }\">\n <div\n class=\"d-flex align-items-center\"\n :data-selenium=\"'organisation-chooser-' + seleniumFormat(option.name)\"\n >\n <img\n v-lazy=\"useProxyImageUrl(option.imageUrl, '32')\"\n width=\"32\"\n height=\"32\"\n class=\"me-2\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Organisation name image', { name: option.name })\"\n />\n <span>\n {{ option.name }}\n </span>\n </div>\n </template>\n </ClassicMultiselect>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport {useSelenium} from \"../../composable/useSelenium\";\nimport classicApi from \"../../../api/classicApi\";\nimport ClassicMultiselect from \"../../form/ClassicMultiselect.vue\";\nimport { computed, onBeforeMount, ref, Ref, useTemplateRef, watch } from \"vue\";\nimport {\n emptyOrgaData,\n Organisation,\n} from \"../../../stores/class/general/organisation\";\nimport { useSaveFetchStore } from \"../../../stores/SaveFetchStore\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n defaultanswer: { default: \"\", type: String },\n orgaIdSelected: { default: undefined, type: String },\n reset: { default: false, type: Boolean },\n width: { default: \"100%\", type: String },\n isImage: { default: true, type: Boolean },\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})\n\n//Emits\nconst emit = defineEmits([\"selected\"]);\n \n//Data \nconst maxElement = ref(50);\nconst organisationChosen: Ref<Organisation | undefined> = ref(undefined);\nconst initLoaded = ref(false);\nconst selectOrganisationRef = useTemplateRef('selectOrganisation');\n\n//Composables\nconst { t } = useI18n();\nconst { seleniumFormat } = useSelenium();\nconst { useProxyImageUrl } = useImageProxy();\nconst authStore = useAuthStore();\nconst saveFetchStore = useSaveFetchStore();\n\n\n//Computed\nconst getDefaultOrganisation = computed(() => {\n if (\"\" === props.defaultanswer) {\n return undefined;\n }\n return emptyOrgaData(props.defaultanswer);\n});\nconst myOrganisation = computed(() => {\n if (!authStore.authOrgaId) return undefined;\n return {\n ...authStore.authOrganisation,\n ...{\n name: `${t(\"Edit my organisation\")} (${\n authStore.authOrganisation.name\n })`,\n },\n };\n});\n\n\n//Watch\nwatch(()=>props.orgaIdSelected, () => {\n if (!props.orgaIdSelected) {\n organisationChosen.value = getDefaultOrganisation.value;\n return;\n }\n if (\n props.orgaIdSelected &&\n organisationChosen.value?.id !== props.orgaIdSelected\n ) {\n fetchOrganisation();\n }\n}, {immediate: true});\nwatch(()=>props.reset, () => {\n organisationChosen.value = getDefaultOrganisation.value;\n});\n\nonBeforeMount(()=>organisationChosen.value = getDefaultOrganisation.value)\n\n\n//Methods\nasync function onSearchOrganisation(query?: string): Promise<void> {\n const response = await classicApi.fetchData<\n ListClassicReturn<Organisation>\n >({\n api: 0,\n path: \"organisation/search\",\n parameters: {\n query: query,\n first: 0,\n size: maxElement.value,\n },\n });\n let notNullOrga = response.result.filter((o: Organisation | null) => {\n return null !== o;\n });\n if (getDefaultOrganisation.value) {\n notNullOrga.unshift(getDefaultOrganisation.value);\n }\n if (myOrganisation.value) {\n if (undefined === query) {\n notNullOrga = notNullOrga.filter((obj: Organisation) => {\n return obj.id !== authStore.authOrgaId;\n });\n notNullOrga.splice(1, 0, myOrganisation.value);\n } else {\n const foundIndex = notNullOrga.findIndex(\n (obj: Organisation) => obj.id === authStore.authOrgaId,\n );\n if (foundIndex) {\n notNullOrga[foundIndex] = myOrganisation.value;\n }\n }\n }\n (selectOrganisationRef?.value as InstanceType<typeof ClassicMultiselect>).afterSearch(notNullOrga, response.count);\n}\nasync function fetchOrganisation(): Promise<void> {\n organisationChosen.value = await saveFetchStore.getOrgaData(\n props.orgaIdSelected ?? \"\",\n );\n initLoaded.value = true;\n}\n</script>\n"],"mappings":"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"}
|
package/dist/{OrganisationChooserLight-BF5fT5pV.mjs → OrganisationChooserLight-Bcltbv-v.mjs}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { E as e, r as t } from "./classicApi-CGipMqf7.mjs";
|
|
2
2
|
import { t as n } from "./ClassicSelect-BpA0jKN6.mjs";
|
|
3
3
|
import { computed as r, createBlock as i, createCommentVNode as a, defineComponent as o, openBlock as s, ref as c, unref as l, watch as u } from "vue";
|
|
4
4
|
import { useI18n as d } from "vue-i18n";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrganisationChooserLight-Dh7wMH40.mjs","names":["_openBlock","_createBlock","_createCommentVNode","_sfc_main"],"sources":["../src/components/display/organisation/OrganisationChooserLight.vue","../src/components/display/organisation/OrganisationChooserLight.vue"],"sourcesContent":["<template>\n <ClassicSelect\n v-if=\"init && organisation\"\n :text-init=\"actual\"\n :display-label=\"false\"\n id-select=\"organisation-chooser-footer\"\n :label=\"t('select productor')\"\n :transparent=\"true\"\n :options=\"[\n { title: organisation.name, value: organisation.id },\n { title: t('No organisation filter'), value: 'NONE' },\n ]\"\n class=\"my-1\"\n @update:text-init=\"updateOrganisation\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicSelect from \"../../form/ClassicSelect.vue\";\nimport { Organisation } from \"../../../stores/class/general/organisation\";\nimport { useSaveFetchStore } from \"../../../stores/SaveFetchStore\";\nimport { computed, ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\n\n//Emits\nconst emit = defineEmits([\"selected\"]);\n\n//Data \nconst organisation = ref<Organisation|undefined>(undefined);\nconst init = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst SaveFetchStore = useSaveFetchStore();\nconst filterStore = useFilterStore();\n\n// Computed\nconst actual = computed(() => {\n if (filterStore.filterOrgaId) {\n return filterStore.filterOrgaId;\n } else {\n return 'NONE';\n }\n});\n\n//Watch\nwatch(()=>filterStore.realOrgaId, async () => {\n fetchOrganisation();\n}, {deep: true, immediate: true});\n \n//Methods\nasync function fetchOrganisation(): Promise<void> {\n if (!filterStore.realOrgaId) {\n return;\n }\n organisation.value = await SaveFetchStore.getOrgaData(filterStore.realOrgaId);\n init.value = true;\n}\n\nfunction updateOrganisation(value: string): void {\n emit(\"selected\", \"NONE\" === value ? undefined : organisation.value);\n}\n</script>","<template>\n <ClassicSelect\n v-if=\"init && organisation\"\n :text-init=\"actual\"\n :display-label=\"false\"\n id-select=\"organisation-chooser-footer\"\n :label=\"t('select productor')\"\n :transparent=\"true\"\n :options=\"[\n { title: organisation.name, value: organisation.id },\n { title: t('No organisation filter'), value: 'NONE' },\n ]\"\n class=\"my-1\"\n @update:text-init=\"updateOrganisation\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicSelect from \"../../form/ClassicSelect.vue\";\nimport { Organisation } from \"../../../stores/class/general/organisation\";\nimport { useSaveFetchStore } from \"../../../stores/SaveFetchStore\";\nimport { computed, ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\n\n//Emits\nconst emit = defineEmits([\"selected\"]);\n\n//Data \nconst organisation = ref<Organisation|undefined>(undefined);\nconst init = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst SaveFetchStore = useSaveFetchStore();\nconst filterStore = useFilterStore();\n\n// Computed\nconst actual = computed(() => {\n if (filterStore.filterOrgaId) {\n return filterStore.filterOrgaId;\n } else {\n return 'NONE';\n }\n});\n\n//Watch\nwatch(()=>filterStore.realOrgaId, async () => {\n fetchOrganisation();\n}, {deep: true, immediate: true});\n \n//Methods\nasync function fetchOrganisation(): Promise<void> {\n if (!filterStore.realOrgaId) {\n return;\n }\n organisation.value = await SaveFetchStore.getOrgaData(filterStore.realOrgaId);\n init.value = true;\n}\n\nfunction updateOrganisation(value: string): void {\n emit(\"selected\", \"NONE\" === value ? undefined : organisation.value);\n}\n</script>"],"mappings":";;;;;;;;;;;EA0BA,MAAM,OAAO;EAGb,MAAM,eAAe,IAA4B,KAAA,CAAS;EAC1D,MAAM,OAAO,IAAI,KAAK;EAGtB,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,iBAAiB,kBAAkB;EACzC,MAAM,cAAc,eAAe;EAGnC,MAAM,SAAS,eAAe;GAC5B,IAAI,YAAY,cACd,OAAO,YAAY;QAEnB,OAAO;EAEX,CAAC;EAGD,YAAU,YAAY,YAAY,YAAY;GAC5C,kBAAkB;EACpB,GAAG;GAAC,MAAM;GAAM,WAAW;EAAI,CAAC;EAGhC,eAAe,oBAAmC;GAChD,IAAI,CAAC,YAAY,YACf;GAEF,aAAa,QAAQ,MAAM,eAAe,YAAY,YAAY,UAAU;GAC5E,KAAK,QAAQ;EACf;EAEA,SAAS,mBAAmB,OAAqB;GAC/C,KAAK,YAAY,WAAW,QAAQ,KAAA,IAAY,aAAa,KAAK;EACpE;;;;;;;;;;;;;;;;;;;;;;;CC5DU,OAAA,OAAA,QAAQ,OAAA,gBADhBA,UAAA,GAAAC,YAaE,OAAA,kBAAA;;EAXC,aAAW,OAAA;EACX,iBAAe;EAChB,aAAU;EACT,OAAO,OAAA,EAAC,kBAAA;EACR,aAAa;EACb,SAAO,CAAmB;GAAA,OAAA,OAAA,aAAa;GAAI,OAAS,OAAA,aAAa;EAAE,GAAmB;GAAA,OAAA,OAAA,EAAC,wBAAA;GAAA,OAAA;EAAA,CAAA;EAIxF,OAAM;EACL,qBAAkB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrganisationChooserLight-Dx_rkvpP.mjs","names":["_openBlock","_createBlock","_createCommentVNode","_sfc_main"],"sources":["../src/components/display/organisation/OrganisationChooserLight.vue","../src/components/display/organisation/OrganisationChooserLight.vue"],"sourcesContent":["<template>\n <ClassicSelect\n v-if=\"init && organisation\"\n :text-init=\"actual\"\n :display-label=\"false\"\n id-select=\"organisation-chooser-footer\"\n :label=\"t('select productor')\"\n :transparent=\"true\"\n :options=\"[\n { title: organisation.name, value: organisation.id },\n { title: t('No organisation filter'), value: 'NONE' },\n ]\"\n class=\"my-1\"\n @update:text-init=\"updateOrganisation\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicSelect from \"../../form/ClassicSelect.vue\";\nimport { Organisation } from \"../../../stores/class/general/organisation\";\nimport { useSaveFetchStore } from \"../../../stores/SaveFetchStore\";\nimport { computed, ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\n\n//Emits\nconst emit = defineEmits([\"selected\"]);\n\n//Data \nconst organisation = ref<Organisation|undefined>(undefined);\nconst init = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst SaveFetchStore = useSaveFetchStore();\nconst filterStore = useFilterStore();\n\n// Computed\nconst actual = computed(() => {\n if (filterStore.filterOrgaId) {\n return filterStore.filterOrgaId;\n } else {\n return 'NONE';\n }\n});\n\n//Watch\nwatch(()=>filterStore.realOrgaId, async () => {\n fetchOrganisation();\n}, {deep: true, immediate: true});\n \n//Methods\nasync function fetchOrganisation(): Promise<void> {\n if (!filterStore.realOrgaId) {\n return;\n }\n organisation.value = await SaveFetchStore.getOrgaData(filterStore.realOrgaId);\n init.value = true;\n}\n\nfunction updateOrganisation(value: string): void {\n emit(\"selected\", \"NONE\" === value ? undefined : organisation.value);\n}\n</script>","<template>\n <ClassicSelect\n v-if=\"init && organisation\"\n :text-init=\"actual\"\n :display-label=\"false\"\n id-select=\"organisation-chooser-footer\"\n :label=\"t('select productor')\"\n :transparent=\"true\"\n :options=\"[\n { title: organisation.name, value: organisation.id },\n { title: t('No organisation filter'), value: 'NONE' },\n ]\"\n class=\"my-1\"\n @update:text-init=\"updateOrganisation\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicSelect from \"../../form/ClassicSelect.vue\";\nimport { Organisation } from \"../../../stores/class/general/organisation\";\nimport { useSaveFetchStore } from \"../../../stores/SaveFetchStore\";\nimport { computed, ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\n\n//Emits\nconst emit = defineEmits([\"selected\"]);\n\n//Data \nconst organisation = ref<Organisation|undefined>(undefined);\nconst init = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst SaveFetchStore = useSaveFetchStore();\nconst filterStore = useFilterStore();\n\n// Computed\nconst actual = computed(() => {\n if (filterStore.filterOrgaId) {\n return filterStore.filterOrgaId;\n } else {\n return 'NONE';\n }\n});\n\n//Watch\nwatch(()=>filterStore.realOrgaId, async () => {\n fetchOrganisation();\n}, {deep: true, immediate: true});\n \n//Methods\nasync function fetchOrganisation(): Promise<void> {\n if (!filterStore.realOrgaId) {\n return;\n }\n organisation.value = await SaveFetchStore.getOrgaData(filterStore.realOrgaId);\n init.value = true;\n}\n\nfunction updateOrganisation(value: string): void {\n emit(\"selected\", \"NONE\" === value ? undefined : organisation.value);\n}\n</script>"],"mappings":";;;;;;;;;;;EA0BA,MAAM,OAAO;EAGb,MAAM,eAAe,IAA4B,KAAA,CAAS;EAC1D,MAAM,OAAO,IAAI,KAAK;EAGtB,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,iBAAiB,kBAAkB;EACzC,MAAM,cAAc,eAAe;EAGnC,MAAM,SAAS,eAAe;GAC5B,IAAI,YAAY,cACd,OAAO,YAAY;QAEnB,OAAO;EAEX,CAAC;EAGD,YAAU,YAAY,YAAY,YAAY;GAC5C,kBAAkB;EACpB,GAAG;GAAC,MAAM;GAAM,WAAW;EAAI,CAAC;EAGhC,eAAe,oBAAmC;GAChD,IAAI,CAAC,YAAY,YACf;GAEF,aAAa,QAAQ,MAAM,eAAe,YAAY,YAAY,UAAU;GAC5E,KAAK,QAAQ;EACf;EAEA,SAAS,mBAAmB,OAAqB;GAC/C,KAAK,YAAY,WAAW,QAAQ,KAAA,IAAY,aAAa,KAAK;EACpE;;;;;;;;;;;;;;;;;;;;;;;CC5DU,OAAA,OAAA,QAAQ,OAAA,gBADhBA,UAAA,GAAAC,YAaE,OAAA,kBAAA;;EAXC,aAAW,OAAA;EACX,iBAAe;EAChB,aAAU;EACT,OAAO,OAAA,EAAC,kBAAA;EACR,aAAa;EACb,SAAO,CAAmB;GAAA,OAAA,OAAA,aAAa;GAAI,OAAS,OAAA,aAAa;EAAE,GAAmB;GAAA,OAAA,OAAA,EAAC,wBAAA;GAAA,OAAA;EAAA,CAAA;EAIxF,OAAM;EACL,qBAAkB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageNotFound-DeW-K_hL.mjs","names":["_resolveComponent","_openBlock","_createElementBlock","_normalizeStyle","_createElementVNode","_toDisplayString","_createVNode","_withCtx","_createTextVNode","_sfc_main"],"sources":["../src/components/pages/PageNotFound.vue","../src/components/pages/PageNotFound.vue"],"sourcesContent":["<template>\n <section\n class=\"page-box page-box-absolute page-not-found\"\n :style=\"backgroundStyle\"\n >\n <div class=\"position-absolute module-box\">\n <h1>{{ t(\"Oops\") }}</h1>\n <h2>{{ t(\"The page you are looking for cannot be found\") }}</h2>\n <router-link\n class=\"btn btn-primary\"\n :to=\"{\n name: 'home',\n query: {\n iabId: filterStore.filterIab?.id,\n rubriquesId: rubriqueQueryParam,\n productor: filterStore.filterOrgaId\n },\n }\"\n >\n {{ t(\"Back to home\") }}\n </router-link>\n </div>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useRubriquesFilterComputed } from \"../composable/route/useRubriquesFilterComputed\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { computed } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Composables\nconst { rubriqueQueryParam } = useRubriquesFilterComputed();\nconst filterStore = useFilterStore();\nconst { t } = useI18n();\n\n//Computed\nconst backgroundStyle = computed(() => \"background-image: url('/img/404.svg');\");\n</script>\n\n<style lang=\"scss\">\n.octopus-app .page-not-found {\n background-size: cover;\n background-position: center;\n background-color: var(--octopus-background);\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 0;\n}\n</style>\n","<template>\n <section\n class=\"page-box page-box-absolute page-not-found\"\n :style=\"backgroundStyle\"\n >\n <div class=\"position-absolute module-box\">\n <h1>{{ t(\"Oops\") }}</h1>\n <h2>{{ t(\"The page you are looking for cannot be found\") }}</h2>\n <router-link\n class=\"btn btn-primary\"\n :to=\"{\n name: 'home',\n query: {\n iabId: filterStore.filterIab?.id,\n rubriquesId: rubriqueQueryParam,\n productor: filterStore.filterOrgaId\n },\n }\"\n >\n {{ t(\"Back to home\") }}\n </router-link>\n </div>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useRubriquesFilterComputed } from \"../composable/route/useRubriquesFilterComputed\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { computed } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Composables\nconst { rubriqueQueryParam } = useRubriquesFilterComputed();\nconst filterStore = useFilterStore();\nconst { t } = useI18n();\n\n//Computed\nconst backgroundStyle = computed(() => \"background-image: url('/img/404.svg');\");\n</script>\n\n<style lang=\"scss\">\n.octopus-app .page-not-found {\n background-size: cover;\n background-position: center;\n background-color: var(--octopus-background);\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 0;\n}\n</style>\n"],"mappings":";;;;;;;;;;EAgCA,MAAM,EAAE,uBAAuB,2BAA2B;EAC1D,MAAM,cAAc,eAAe;EACnC,MAAM,EAAE,MAAM,QAAQ;;;;;GAGE,iBAAA,eAAe,wCAAA;;;;;;;;;;;AChC9B,IAAA,aAAA,EAAA,OAAM,+BAA8B;;;CAJ3C,OAAAC,UAAA,GAAAC,mBAqBU,WAAA;EApBR,OAAM;EACL,OAAKC,eAAE,OAAA,eAAe;CAEvB,GAAA,CAAAC,mBAgBM,OAhBN,YAgBM;EAfJA,mBAAwB,MAAA,MAAAC,gBAAjB,OAAA,EAAC,MAAA,CAAA,GAAA,CAAA;EACRD,mBAAgE,MAAA,MAAAC,gBAAzD,OAAA,EAAC,8CAAA,CAAA,GAAA,CAAA;EACRC,YAYc,wBAAA;GAXZ,OAAM;GACL,IAAE;;;KAAkE,OAAA,OAAA,YAAY,WAAW;KAA6B,aAAA,OAAA;KAA2C,WAAA,OAAA,YAAY;;;;GAShL,SAAAC,cAAuB,CAApBC,gBAAAH,gBAAA,OAAA,EAAC,cAAA,CAAA,GAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as e } from "./classicApi-
|
|
2
|
-
import { t } from "./useRubriquesFilterComputed-
|
|
1
|
+
import { r as e } from "./classicApi-CGipMqf7.mjs";
|
|
2
|
+
import { t } from "./useRubriquesFilterComputed-D1yqLnK4.mjs";
|
|
3
3
|
import { computed as n, createElementBlock as r, createElementVNode as i, createTextVNode as a, createVNode as o, defineComponent as s, normalizeStyle as c, openBlock as l, resolveComponent as u, toDisplayString as d, unref as f, withCtx as p } from "vue";
|
|
4
4
|
import { useI18n as m } from "vue-i18n";
|
|
5
5
|
//#region src/components/pages/PageNotFound.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageNotFound-gRuMWYCp.mjs","names":["_resolveComponent","_openBlock","_createElementBlock","_normalizeStyle","_createElementVNode","_toDisplayString","_createVNode","_withCtx","_createTextVNode","_sfc_main"],"sources":["../src/components/pages/PageNotFound.vue","../src/components/pages/PageNotFound.vue"],"sourcesContent":["<template>\n <section\n class=\"page-box page-box-absolute page-not-found\"\n :style=\"backgroundStyle\"\n >\n <div class=\"position-absolute module-box\">\n <h1>{{ t(\"Oops\") }}</h1>\n <h2>{{ t(\"The page you are looking for cannot be found\") }}</h2>\n <router-link\n class=\"btn btn-primary\"\n :to=\"{\n name: 'home',\n query: {\n iabId: filterStore.filterIab?.id,\n rubriquesId: rubriqueQueryParam,\n productor: filterStore.filterOrgaId\n },\n }\"\n >\n {{ t(\"Back to home\") }}\n </router-link>\n </div>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useRubriquesFilterComputed } from \"../composable/route/useRubriquesFilterComputed\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { computed } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Composables\nconst { rubriqueQueryParam } = useRubriquesFilterComputed();\nconst filterStore = useFilterStore();\nconst { t } = useI18n();\n\n//Computed\nconst backgroundStyle = computed(() => \"background-image: url('/img/404.svg');\");\n</script>\n\n<style lang=\"scss\">\n.octopus-app .page-not-found {\n background-size: cover;\n background-position: center;\n background-color: var(--octopus-background);\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 0;\n}\n</style>\n","<template>\n <section\n class=\"page-box page-box-absolute page-not-found\"\n :style=\"backgroundStyle\"\n >\n <div class=\"position-absolute module-box\">\n <h1>{{ t(\"Oops\") }}</h1>\n <h2>{{ t(\"The page you are looking for cannot be found\") }}</h2>\n <router-link\n class=\"btn btn-primary\"\n :to=\"{\n name: 'home',\n query: {\n iabId: filterStore.filterIab?.id,\n rubriquesId: rubriqueQueryParam,\n productor: filterStore.filterOrgaId\n },\n }\"\n >\n {{ t(\"Back to home\") }}\n </router-link>\n </div>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useRubriquesFilterComputed } from \"../composable/route/useRubriquesFilterComputed\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { computed } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Composables\nconst { rubriqueQueryParam } = useRubriquesFilterComputed();\nconst filterStore = useFilterStore();\nconst { t } = useI18n();\n\n//Computed\nconst backgroundStyle = computed(() => \"background-image: url('/img/404.svg');\");\n</script>\n\n<style lang=\"scss\">\n.octopus-app .page-not-found {\n background-size: cover;\n background-position: center;\n background-color: var(--octopus-background);\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 0;\n}\n</style>\n"],"mappings":";;;;;;;;;;EAgCA,MAAM,EAAE,uBAAuB,2BAA2B;EAC1D,MAAM,cAAc,eAAe;EACnC,MAAM,EAAE,MAAM,QAAQ;;;;;GAGE,iBAAA,eAAe,wCAAA;;;;;;;;;;;AChC9B,IAAA,aAAA,EAAA,OAAM,+BAA8B;;;CAJ3C,OAAAC,UAAA,GAAAC,mBAqBU,WAAA;EApBR,OAAM;EACL,OAAKC,eAAE,OAAA,eAAe;CAEvB,GAAA,CAAAC,mBAgBM,OAhBN,YAgBM;EAfJA,mBAAwB,MAAA,MAAAC,gBAAjB,OAAA,EAAC,MAAA,CAAA,GAAA,CAAA;EACRD,mBAAgE,MAAA,MAAAC,gBAAzD,OAAA,EAAC,8CAAA,CAAA,GAAA,CAAA;EACRC,YAYc,wBAAA;GAXZ,OAAM;GACL,IAAE;;;KAAkE,OAAA,OAAA,YAAY,WAAW;KAA6B,aAAA,OAAA;KAA2C,WAAA,OAAA,YAAY;;;;GAShL,SAAAC,cAAuB,CAApBC,gBAAAH,gBAAA,OAAA,EAAC,cAAA,CAAA,GAAA,CAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParticipantInlineList-CY_s6aJm.mjs","names":["classicApi","_resolveComponent","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_createVNode","_createBlock","_withCtx","_createCommentVNode","_createTextVNode","_sfc_main"],"sources":["../src/components/display/participant/ParticipantInlineList.vue","../src/components/display/participant/ParticipantInlineList.vue"],"sourcesContent":["<template>\n <div class=\"d-flex flex-column p-3 list-participants\">\n <h2 class=\"mb-3\">{{ title }}</h2>\n <ClassicLoading\n :loading-text=\"loading ? t('Loading participants ...') : undefined\"\n />\n <SwiperList\n v-if=\"!loading && allParticipants.length\"\n :size-item-overload=\"itemSize\"\n :list-object=\"allParticipants\"\n >\n <template #octopusSlide=\"{ option }\">\n <ParticipantItem\n v-if=\"0 !== option.participantId\" \n :participant=\"option\"\n />\n </template>\n </SwiperList>\n\n <router-link\n v-if=\"buttonText\"\n :to=\"href ?? { name: 'participants' }\"\n class=\"btn btn-primary align-self-center w-fit-content m-4\"\n >\n {{ buttonText }}\n </router-link>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ParticipantItem from \"./ParticipantItem.vue\";\nimport SwiperList from \"../list/SwiperList.vue\";\nimport classicApi from \"../../../api/classicApi\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { onMounted, Ref, ref } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { Participant } from \"@/stores/class/general/participant\";\nimport { useI18n } from \"vue-i18n\";\n\n\n//Props \nconst props = defineProps({\n organisationId: { default: undefined, type: String },\n href: { default: undefined, type: String },\n buttonText: { default: undefined, type: String },\n itemSize: { default: undefined, type: Number },\n title: { default: \"\", type: String },\n})\n\n//Data \nconst loading = ref(true);\nconst allParticipants: Ref<Array<Participant>> = ref([]);\n \n//Composables\nconst { t } = useI18n();\nconst { handle403 } = useErrorHandler();\n\nonMounted(()=>fetchNext())\n\n//Methods\nasync function fetchNext(): Promise<void> {\n try {\n const data = await classicApi.fetchData<ListClassicReturn<Participant>>({\n api: 0,\n path: \"participant/search\",\n parameters: {\n first: 0,\n size: 12,\n organisationId: props.organisationId,\n order: \"LAST_PODCAST_DESC\",\n },\n specialTreatement: true,\n });\n allParticipants.value = allParticipants.value.concat(\n data.result.filter((part: Participant | null) => null !== part),\n );\n loading.value = false;\n } catch (error) {\n handle403(error as AxiosError);\n }\n}\n</script>\n\n<style scoped lang=\"scss\">\n.list-participants{\n .element-list-inline{\n @media (width <= 960px) {\n > div{\n margin: 0 0.5rem 0 0;\n }\n }\n }\n\n .participant-item-container{\n margin:0;\n }\n}\n</style>\n","<template>\n <div class=\"d-flex flex-column p-3 list-participants\">\n <h2 class=\"mb-3\">{{ title }}</h2>\n <ClassicLoading\n :loading-text=\"loading ? t('Loading participants ...') : undefined\"\n />\n <SwiperList\n v-if=\"!loading && allParticipants.length\"\n :size-item-overload=\"itemSize\"\n :list-object=\"allParticipants\"\n >\n <template #octopusSlide=\"{ option }\">\n <ParticipantItem\n v-if=\"0 !== option.participantId\" \n :participant=\"option\"\n />\n </template>\n </SwiperList>\n\n <router-link\n v-if=\"buttonText\"\n :to=\"href ?? { name: 'participants' }\"\n class=\"btn btn-primary align-self-center w-fit-content m-4\"\n >\n {{ buttonText }}\n </router-link>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ParticipantItem from \"./ParticipantItem.vue\";\nimport SwiperList from \"../list/SwiperList.vue\";\nimport classicApi from \"../../../api/classicApi\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { onMounted, Ref, ref } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { Participant } from \"@/stores/class/general/participant\";\nimport { useI18n } from \"vue-i18n\";\n\n\n//Props \nconst props = defineProps({\n organisationId: { default: undefined, type: String },\n href: { default: undefined, type: String },\n buttonText: { default: undefined, type: String },\n itemSize: { default: undefined, type: Number },\n title: { default: \"\", type: String },\n})\n\n//Data \nconst loading = ref(true);\nconst allParticipants: Ref<Array<Participant>> = ref([]);\n \n//Composables\nconst { t } = useI18n();\nconst { handle403 } = useErrorHandler();\n\nonMounted(()=>fetchNext())\n\n//Methods\nasync function fetchNext(): Promise<void> {\n try {\n const data = await classicApi.fetchData<ListClassicReturn<Participant>>({\n api: 0,\n path: \"participant/search\",\n parameters: {\n first: 0,\n size: 12,\n organisationId: props.organisationId,\n order: \"LAST_PODCAST_DESC\",\n },\n specialTreatement: true,\n });\n allParticipants.value = allParticipants.value.concat(\n data.result.filter((part: Participant | null) => null !== part),\n );\n loading.value = false;\n } catch (error) {\n handle403(error as AxiosError);\n }\n}\n</script>\n\n<style scoped lang=\"scss\">\n.list-participants{\n .element-list-inline{\n @media (width <= 960px) {\n > div{\n margin: 0 0.5rem 0 0;\n }\n }\n }\n\n .participant-item-container{\n margin:0;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,QAAQ;EASd,MAAM,UAAU,IAAI,IAAI;EACxB,MAAM,kBAA2C,IAAI,CAAC,CAAC;EAGvD,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,cAAc,gBAAgB;EAEtC,gBAAc,UAAU,CAAC;EAGzB,eAAe,YAA2B;GACxC,IAAI;IACF,MAAM,OAAO,MAAMA,mBAAW,UAA0C;KACtE,KAAK;KACL,MAAM;KACN,YAAY;MACV,OAAO;MACP,MAAM;MACN,gBAAgB,MAAM;MACtB,OAAO;KACT;KACA,mBAAmB;IACrB,CAAC;IACD,gBAAgB,QAAQ,gBAAgB,MAAM,OAC5C,KAAK,OAAO,QAAQ,SAA6B,SAAS,IAAI,CAChE;IACA,QAAQ,QAAQ;GAClB,SAAS,OAAO;IACd,UAAU,KAAmB;GAC/B;EACF;;;;;;;;;;;;;;;;;;;;;ACjFO,IAAA,aAAA,EAAA,OAAM,2CAA0C;AAC/C,IAAA,aAAA,EAAA,OAAM,OAAM;;;CADlB,OAAAE,UAAA,GAAAC,mBAyBM,OAzBN,YAyBM;EAxBJC,mBAAiC,MAAjC,YAAiCC,gBAAb,OAAA,KAAK,GAAA,CAAA;EACzBC,YAEE,OAAA,mBAAA,EADC,gBAAc,OAAA,UAAU,OAAA,EAAC,0BAAA,IAA+B,KAAA,EAAA,GAAA,MAAA,GAAA,CAAA,cAAA,CAAA;EAGlD,CAAA,OAAA,WAAW,OAAA,gBAAgB,UADpCJ,UAAA,GAAAK,YAWa,OAAA,eAAA;;GATV,sBAAoB,OAAA;GACpB,eAAa,OAAA;;GAEH,cAAYC,SAInB,EAJuB,aAAM,CAEjB,MAAA,OAAO,iBADrBN,UAAA,GAAAK,YAGE,OAAA,oBAAA;;IADC,aAAa;;;;EAMZ,OAAA,cADRL,UAAA,GAAAK,YAMc,wBAAA;;GAJX,IAAI,OAAA,QAAI,EAAA,MAAA,eAAA;GACT,OAAM;;GAEN,SAAAC,cAAgB,CAAbE,gBAAAL,gBAAA,OAAA,UAAU,GAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as e } from "./ClassicLoading-CXfMjpyl.mjs";
|
|
2
|
-
import { t } from "./classicApi-
|
|
2
|
+
import { t } from "./classicApi-CGipMqf7.mjs";
|
|
3
3
|
import { t as n } from "./_plugin-vue_export-helper-B3ysoDQm.mjs";
|
|
4
|
-
import { t as r } from "./useErrorHandler-
|
|
5
|
-
import { t as i } from "./SwiperList-
|
|
6
|
-
import { t as a } from "./ParticipantItem-
|
|
4
|
+
import { t as r } from "./useErrorHandler-x9sjDYSz.mjs";
|
|
5
|
+
import { t as i } from "./SwiperList-O8nUg87R.mjs";
|
|
6
|
+
import { t as a } from "./ParticipantItem-CbHOfVon.mjs";
|
|
7
7
|
import { createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createTextVNode as u, createVNode as d, defineComponent as f, onMounted as p, openBlock as m, ref as h, resolveComponent as g, toDisplayString as _, unref as v, withCtx as y } from "vue";
|
|
8
8
|
import { useI18n as b } from "vue-i18n";
|
|
9
9
|
//#region src/components/display/participant/ParticipantInlineList.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParticipantInlineList-DSatB75C.mjs","names":["classicApi","_resolveComponent","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_createVNode","_createBlock","_withCtx","_createCommentVNode","_createTextVNode","_sfc_main"],"sources":["../src/components/display/participant/ParticipantInlineList.vue","../src/components/display/participant/ParticipantInlineList.vue"],"sourcesContent":["<template>\n <div class=\"d-flex flex-column p-3 list-participants\">\n <h2 class=\"mb-3\">{{ title }}</h2>\n <ClassicLoading\n :loading-text=\"loading ? t('Loading participants ...') : undefined\"\n />\n <SwiperList\n v-if=\"!loading && allParticipants.length\"\n :size-item-overload=\"itemSize\"\n :list-object=\"allParticipants\"\n >\n <template #octopusSlide=\"{ option }\">\n <ParticipantItem\n v-if=\"0 !== option.participantId\" \n :participant=\"option\"\n />\n </template>\n </SwiperList>\n\n <router-link\n v-if=\"buttonText\"\n :to=\"href ?? { name: 'participants' }\"\n class=\"btn btn-primary align-self-center w-fit-content m-4\"\n >\n {{ buttonText }}\n </router-link>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ParticipantItem from \"./ParticipantItem.vue\";\nimport SwiperList from \"../list/SwiperList.vue\";\nimport classicApi from \"../../../api/classicApi\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { onMounted, Ref, ref } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { Participant } from \"@/stores/class/general/participant\";\nimport { useI18n } from \"vue-i18n\";\n\n\n//Props \nconst props = defineProps({\n organisationId: { default: undefined, type: String },\n href: { default: undefined, type: String },\n buttonText: { default: undefined, type: String },\n itemSize: { default: undefined, type: Number },\n title: { default: \"\", type: String },\n})\n\n//Data \nconst loading = ref(true);\nconst allParticipants: Ref<Array<Participant>> = ref([]);\n \n//Composables\nconst { t } = useI18n();\nconst { handle403 } = useErrorHandler();\n\nonMounted(()=>fetchNext())\n\n//Methods\nasync function fetchNext(): Promise<void> {\n try {\n const data = await classicApi.fetchData<ListClassicReturn<Participant>>({\n api: 0,\n path: \"participant/search\",\n parameters: {\n first: 0,\n size: 12,\n organisationId: props.organisationId,\n order: \"LAST_PODCAST_DESC\",\n },\n specialTreatement: true,\n });\n allParticipants.value = allParticipants.value.concat(\n data.result.filter((part: Participant | null) => null !== part),\n );\n loading.value = false;\n } catch (error) {\n handle403(error as AxiosError);\n }\n}\n</script>\n\n<style scoped lang=\"scss\">\n.list-participants{\n .element-list-inline{\n @media (width <= 960px) {\n > div{\n margin: 0 0.5rem 0 0;\n }\n }\n }\n\n .participant-item-container{\n margin:0;\n }\n}\n</style>\n","<template>\n <div class=\"d-flex flex-column p-3 list-participants\">\n <h2 class=\"mb-3\">{{ title }}</h2>\n <ClassicLoading\n :loading-text=\"loading ? t('Loading participants ...') : undefined\"\n />\n <SwiperList\n v-if=\"!loading && allParticipants.length\"\n :size-item-overload=\"itemSize\"\n :list-object=\"allParticipants\"\n >\n <template #octopusSlide=\"{ option }\">\n <ParticipantItem\n v-if=\"0 !== option.participantId\" \n :participant=\"option\"\n />\n </template>\n </SwiperList>\n\n <router-link\n v-if=\"buttonText\"\n :to=\"href ?? { name: 'participants' }\"\n class=\"btn btn-primary align-self-center w-fit-content m-4\"\n >\n {{ buttonText }}\n </router-link>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ParticipantItem from \"./ParticipantItem.vue\";\nimport SwiperList from \"../list/SwiperList.vue\";\nimport classicApi from \"../../../api/classicApi\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { onMounted, Ref, ref } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { Participant } from \"@/stores/class/general/participant\";\nimport { useI18n } from \"vue-i18n\";\n\n\n//Props \nconst props = defineProps({\n organisationId: { default: undefined, type: String },\n href: { default: undefined, type: String },\n buttonText: { default: undefined, type: String },\n itemSize: { default: undefined, type: Number },\n title: { default: \"\", type: String },\n})\n\n//Data \nconst loading = ref(true);\nconst allParticipants: Ref<Array<Participant>> = ref([]);\n \n//Composables\nconst { t } = useI18n();\nconst { handle403 } = useErrorHandler();\n\nonMounted(()=>fetchNext())\n\n//Methods\nasync function fetchNext(): Promise<void> {\n try {\n const data = await classicApi.fetchData<ListClassicReturn<Participant>>({\n api: 0,\n path: \"participant/search\",\n parameters: {\n first: 0,\n size: 12,\n organisationId: props.organisationId,\n order: \"LAST_PODCAST_DESC\",\n },\n specialTreatement: true,\n });\n allParticipants.value = allParticipants.value.concat(\n data.result.filter((part: Participant | null) => null !== part),\n );\n loading.value = false;\n } catch (error) {\n handle403(error as AxiosError);\n }\n}\n</script>\n\n<style scoped lang=\"scss\">\n.list-participants{\n .element-list-inline{\n @media (width <= 960px) {\n > div{\n margin: 0 0.5rem 0 0;\n }\n }\n }\n\n .participant-item-container{\n margin:0;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,QAAQ;EASd,MAAM,UAAU,IAAI,IAAI;EACxB,MAAM,kBAA2C,IAAI,CAAC,CAAC;EAGvD,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,cAAc,gBAAgB;EAEtC,gBAAc,UAAU,CAAC;EAGzB,eAAe,YAA2B;GACxC,IAAI;IACF,MAAM,OAAO,MAAMA,mBAAW,UAA0C;KACtE,KAAK;KACL,MAAM;KACN,YAAY;MACV,OAAO;MACP,MAAM;MACN,gBAAgB,MAAM;MACtB,OAAO;KACT;KACA,mBAAmB;IACrB,CAAC;IACD,gBAAgB,QAAQ,gBAAgB,MAAM,OAC5C,KAAK,OAAO,QAAQ,SAA6B,SAAS,IAAI,CAChE;IACA,QAAQ,QAAQ;GAClB,SAAS,OAAO;IACd,UAAU,KAAmB;GAC/B;EACF;;;;;;;;;;;;;;;;;;;;;ACjFO,IAAA,aAAA,EAAA,OAAM,2CAA0C;AAC/C,IAAA,aAAA,EAAA,OAAM,OAAM;;;CADlB,OAAAE,UAAA,GAAAC,mBAyBM,OAzBN,YAyBM;EAxBJC,mBAAiC,MAAjC,YAAiCC,gBAAb,OAAA,KAAK,GAAA,CAAA;EACzBC,YAEE,OAAA,mBAAA,EADC,gBAAc,OAAA,UAAU,OAAA,EAAC,0BAAA,IAA+B,KAAA,EAAA,GAAA,MAAA,GAAA,CAAA,cAAA,CAAA;EAGlD,CAAA,OAAA,WAAW,OAAA,gBAAgB,UADpCJ,UAAA,GAAAK,YAWa,OAAA,eAAA;;GATV,sBAAoB,OAAA;GACpB,eAAa,OAAA;;GAEH,cAAYC,SAInB,EAJuB,aAAM,CAEjB,MAAA,OAAO,iBADrBN,UAAA,GAAAK,YAGE,OAAA,oBAAA;;IADC,aAAa;;;;EAMZ,OAAA,cADRL,UAAA,GAAAK,YAMc,wBAAA;;GAJX,IAAI,OAAA,QAAI,EAAA,MAAA,eAAA;GACT,OAAM;;GAEN,SAAAC,cAAgB,CAAbE,gBAAAL,gBAAA,OAAA,UAAU,GAAA,CAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParticipantItem-BG7yqRvD.mjs","names":["displayHelper","classicApi","_resolveComponent","_resolveDirective","_openBlock","_createElementBlock","_createVNode","_withCtx","_withDirectives","_createElementVNode","_createBlock","_createCommentVNode","_createTextVNode","_toDisplayString","_sfc_main"],"sources":["../src/components/display/participant/ParticipantItem.vue","../src/components/display/participant/ParticipantItem.vue"],"sourcesContent":["<template>\n <article v-if=\"participant\" class=\"participant-item-container\">\n <router-link\n :to=\"{\n name: 'participant',\n params: { participantId: participant.participantId },\n }\"\n class=\"mt-3 text-dark\"\n :title=\"t('Participant name page', { name: name })\"\n >\n <img\n v-lazy=\"useProxyImageUrl(participant.imageUrl, '200')\"\n width=\"200\"\n height=\"200\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Animator image', { name: name })\"\n class=\"img-box border\"\n />\n <div class=\"d-flex align-items-center h4 justify-content-center mt-2\">\n <AlertIcon\n v-if=\"!activeParticipant && !isPodcastmaker && editRight\"\n :size=\"16\"\n class=\"text-danger me-1\"\n :title=\"t('Participant have not podcasts')\"\n />\n {{ name }}\n </div>\n <div\n ref=\"descriptionParticipantContainer\"\n class=\"element-description small-description html-wysiwyg-content\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div\n ref=\"descriptionParticipant\"\n v-html=\"urlify(participant.description || '')\"\n />\n <!-- eslint-enable -->\n </div>\n </router-link>\n <router-link\n v-if=\"!isPodcastmaker\"\n :to=\"{\n name: 'productor',\n params: { productorId: participant.orga.id },\n }\"\n class=\"small-text mt-1\"\n >\n © {{ participant.orga.name }}\n </router-link>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport AlertIcon from \"vue-material-design-icons/Alert.vue\";\nimport classicApi from \"../../../api/classicApi\";\nimport { Participant } from \"@/stores/class/general/participant\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport { computed, onBeforeMount, onMounted, ref, useTemplateRef } from \"vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n participant: { default: () => ({}), type: Object as () => Participant },\n})\n \n//Data \nconst activeParticipant = ref(true);\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights } = useOrgaComputed();\n\n//Computed\nconst name = computed(() => `${props.participant.firstName ?? \"\"} ${props.participant.lastName ?? \"\"}`.trim());\nconst editRight = computed(() => {\n if (!props.participant?.orga) {\n return false;\n }\n return isEditRights(props.participant.orga.id);\n});\n\nonBeforeMount(()=>{\n if (!editRight.value) return;\n hasPodcast();\n})\n\nonMounted(()=>{\n const participantDesc = useTemplateRef('descriptionParticipant')?.value as HTMLElement;\n const participantDescContainer = useTemplateRef('descriptionParticipantContainer')?.value as HTMLElement;\n\n if (\n null !== participantDesc &&\n null !== participantDescContainer &&\n participantDesc.clientHeight > participantDescContainer.clientHeight\n ) {\n participantDescContainer.classList.add(\"after-element-description\");\n }\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nasync function hasPodcast(): Promise<void> {\n const data = await classicApi.fetchData<ListClassicReturn<Podcast>>({\n api: 0,\n path: \"podcast/search\",\n parameters: {\n participantId: props.participant.participantId,\n first: 0,\n size: 0,\n includeStatus: [\"READY\", \"PROCESSING\"],\n },\n specialTreatement: true,\n });\n if (0 === data.count) {\n activeParticipant.value = false;\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .participant-item-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n border-radius: var(--octopus-border-radius);\n width: var(--octopus-image-size);\n}\n</style>\n","<template>\n <article v-if=\"participant\" class=\"participant-item-container\">\n <router-link\n :to=\"{\n name: 'participant',\n params: { participantId: participant.participantId },\n }\"\n class=\"mt-3 text-dark\"\n :title=\"t('Participant name page', { name: name })\"\n >\n <img\n v-lazy=\"useProxyImageUrl(participant.imageUrl, '200')\"\n width=\"200\"\n height=\"200\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Animator image', { name: name })\"\n class=\"img-box border\"\n />\n <div class=\"d-flex align-items-center h4 justify-content-center mt-2\">\n <AlertIcon\n v-if=\"!activeParticipant && !isPodcastmaker && editRight\"\n :size=\"16\"\n class=\"text-danger me-1\"\n :title=\"t('Participant have not podcasts')\"\n />\n {{ name }}\n </div>\n <div\n ref=\"descriptionParticipantContainer\"\n class=\"element-description small-description html-wysiwyg-content\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div\n ref=\"descriptionParticipant\"\n v-html=\"urlify(participant.description || '')\"\n />\n <!-- eslint-enable -->\n </div>\n </router-link>\n <router-link\n v-if=\"!isPodcastmaker\"\n :to=\"{\n name: 'productor',\n params: { productorId: participant.orga.id },\n }\"\n class=\"small-text mt-1\"\n >\n © {{ participant.orga.name }}\n </router-link>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport AlertIcon from \"vue-material-design-icons/Alert.vue\";\nimport classicApi from \"../../../api/classicApi\";\nimport { Participant } from \"@/stores/class/general/participant\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport { computed, onBeforeMount, onMounted, ref, useTemplateRef } from \"vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n participant: { default: () => ({}), type: Object as () => Participant },\n})\n \n//Data \nconst activeParticipant = ref(true);\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights } = useOrgaComputed();\n\n//Computed\nconst name = computed(() => `${props.participant.firstName ?? \"\"} ${props.participant.lastName ?? \"\"}`.trim());\nconst editRight = computed(() => {\n if (!props.participant?.orga) {\n return false;\n }\n return isEditRights(props.participant.orga.id);\n});\n\nonBeforeMount(()=>{\n if (!editRight.value) return;\n hasPodcast();\n})\n\nonMounted(()=>{\n const participantDesc = useTemplateRef('descriptionParticipant')?.value as HTMLElement;\n const participantDescContainer = useTemplateRef('descriptionParticipantContainer')?.value as HTMLElement;\n\n if (\n null !== participantDesc &&\n null !== participantDescContainer &&\n participantDesc.clientHeight > participantDescContainer.clientHeight\n ) {\n participantDescContainer.classList.add(\"after-element-description\");\n }\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nasync function hasPodcast(): Promise<void> {\n const data = await classicApi.fetchData<ListClassicReturn<Podcast>>({\n api: 0,\n path: \"podcast/search\",\n parameters: {\n participantId: props.participant.participantId,\n first: 0,\n size: 0,\n includeStatus: [\"READY\", \"PROCESSING\"],\n },\n specialTreatement: true,\n });\n if (0 === data.count) {\n activeParticipant.value = false;\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .participant-item-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n border-radius: var(--octopus-border-radius);\n width: var(--octopus-image-size);\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;EAmEA,MAAM,QAAQ;EAKd,MAAM,oBAAoB,IAAI,IAAI;EAGlC,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,qBAAqB,cAAc;EAC3C,MAAM,EAAE,gBAAgB,iBAAiB,gBAAgB;EAGzD,MAAM,OAAO,eAAe,GAAG,MAAM,YAAY,aAAa,GAAG,GAAG,MAAM,YAAY,YAAY,KAAK,KAAK,CAAC;EAC7G,MAAM,YAAY,eAAe;GAC/B,IAAI,CAAC,MAAM,aAAa,MACtB,OAAO;GAET,OAAO,aAAa,MAAM,YAAY,KAAK,EAAE;EAC/C,CAAC;EAED,oBAAkB;GAChB,IAAI,CAAC,UAAU,OAAO;GACtB,WAAW;EACb,CAAC;EAED,gBAAc;GACZ,MAAM,kBAAkB,eAAe,wBAAwB,CAAC,EAAE;GAClE,MAAM,2BAA2B,eAAe,iCAAiC,CAAC,EAAE;GAEpF,IACE,SAAS,mBACT,SAAS,4BACT,gBAAgB,eAAe,yBAAyB,cAExD,yBAAyB,UAAU,IAAI,2BAA2B;EAEtE,CAAC;EAGD,SAAS,OAAO,MAAsB;GACpC,OAAOA,sBAAc,OAAO,IAAI;EAClC;EACA,eAAe,aAA4B;GAYzC,IAAI,OAAM,MAXSC,mBAAW,UAAsC;IAClE,KAAK;IACL,MAAM;IACN,YAAY;KACV,eAAe,MAAM,YAAY;KACjC,OAAO;KACP,MAAM;KACN,eAAe,CAAC,SAAS,YAAY;IACvC;IACA,mBAAmB;GACrB,CAAC,EAAA,CACc,OACb,kBAAkB,QAAQ;EAE9B;;;;;;;;;;;;;;;;;;;;;;;;;CC5H8B,OAAM;;;AAmBzB,IAAA,aAAA,EAAA,OAAM,2DAA0D;;CAUnE,KAAI;CACJ,OAAM;;;;;;CA9BG,OAAA,OAAA,eAAfG,UAAA,GAAAC,mBAkDU,WAlDV,YAkDU,CAjDRC,YAsCc,wBAAA;EArCX,IAAE;;GAAkE,QAAA,EAAA,eAAA,OAAA,YAAY,cAAa;;EAI9F,OAAM;EACL,OAAO,OAAA,EAAC,yBAAA,EAAA,MAAkC,OAAA,KAAI,CAAA;;EAE/C,SAAAC,cASE;GATFC,eAAAC,mBASE,OAAA;IAPA,OAAM;IACN,QAAO;IACP,eAAY;IACZ,KAAI;IAEH,OAAO,OAAA,EAAC,kBAAA,EAAA,MAA2B,OAAA,KAAI,CAAA;IACxC,OAAM;GAPE,GAAA,MAAA,GAAA,UAAA,GAAA,CAAA,CAAA,iBAAA,OAAA,iBAAiB,OAAA,YAAY,UAAQ,KAAA,CAAA,CAAA,CAAA;GAS/CA,mBAQM,OARN,YAQM,CANK,CAAA,OAAA,qBAAiB,CAAK,OAAA,kBAAkB,OAAA,aADjDL,UAAA,GAAAM,YAKE,OAAA,cAAA;;IAHC,MAAM;IACP,OAAM;IACL,OAAO,OAAA,EAAC,+BAAA;GACT,GAAA,MAAA,GAAA,CAAA,OAAA,CAAA,KAAAC,mBAAA,QAAA,IAAA,GAAAC,gBAAA,MACFC,gBAAG,OAAA,IAAI,GAAA,CAAA,CAAA,CAAA;GAETJ,mBAUM,OAVN,YAUM;IANJE,mBAAA,gCAAA;IACAF,mBAGE,OAAA;KAFA,KAAI;KACJ,WAAQ,OAAA,OAAO,OAAA,YAAY,eAAW,EAAA;;IAExCE,mBAAA,iBAAA;;;;CAIK,GAAA,GAAA,CAAA,MAAA,OAAA,CAAA,GAAA,CAAA,OAAA,kBADTP,UAAA,GAAAM,YASc,wBAAA;;EAPX,IAAE;;GAA8D,QAAA,EAAA,aAAA,OAAA,YAAY,KAAK,GAAE;;EAIpF,OAAM;;EACP,SAAAH,cACG,CADHK,gBAAA,QACGC,gBAAG,OAAA,YAAY,KAAK,IAAI,GAAA,CAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParticipantItem-BTK25HID.mjs","names":["displayHelper","classicApi","_resolveComponent","_resolveDirective","_openBlock","_createElementBlock","_createVNode","_withCtx","_withDirectives","_createElementVNode","_createBlock","_createCommentVNode","_createTextVNode","_toDisplayString","_sfc_main"],"sources":["../src/components/display/participant/ParticipantItem.vue","../src/components/display/participant/ParticipantItem.vue"],"sourcesContent":["<template>\n <article v-if=\"participant\" class=\"participant-item-container\">\n <router-link\n :to=\"{\n name: 'participant',\n params: { participantId: participant.participantId },\n }\"\n class=\"mt-3 text-dark\"\n :title=\"t('Participant name page', { name: name })\"\n >\n <img\n v-lazy=\"useProxyImageUrl(participant.imageUrl, '200')\"\n width=\"200\"\n height=\"200\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Animator image', { name: name })\"\n class=\"img-box border\"\n />\n <div class=\"d-flex align-items-center h4 justify-content-center mt-2\">\n <AlertIcon\n v-if=\"!activeParticipant && !isPodcastmaker && editRight\"\n :size=\"16\"\n class=\"text-danger me-1\"\n :title=\"t('Participant have not podcasts')\"\n />\n {{ name }}\n </div>\n <div\n ref=\"descriptionParticipantContainer\"\n class=\"element-description small-description html-wysiwyg-content\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div\n ref=\"descriptionParticipant\"\n v-html=\"urlify(participant.description || '')\"\n />\n <!-- eslint-enable -->\n </div>\n </router-link>\n <router-link\n v-if=\"!isPodcastmaker\"\n :to=\"{\n name: 'productor',\n params: { productorId: participant.orga.id },\n }\"\n class=\"small-text mt-1\"\n >\n © {{ participant.orga.name }}\n </router-link>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport AlertIcon from \"vue-material-design-icons/Alert.vue\";\nimport classicApi from \"../../../api/classicApi\";\nimport { Participant } from \"@/stores/class/general/participant\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport { computed, onBeforeMount, onMounted, ref, useTemplateRef } from \"vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n participant: { default: () => ({}), type: Object as () => Participant },\n})\n \n//Data \nconst activeParticipant = ref(true);\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights } = useOrgaComputed();\n\n//Computed\nconst name = computed(() => `${props.participant.firstName ?? \"\"} ${props.participant.lastName ?? \"\"}`.trim());\nconst editRight = computed(() => {\n if (!props.participant?.orga) {\n return false;\n }\n return isEditRights(props.participant.orga.id);\n});\n\nonBeforeMount(()=>{\n if (!editRight.value) return;\n hasPodcast();\n})\n\nonMounted(()=>{\n const participantDesc = useTemplateRef('descriptionParticipant')?.value as HTMLElement;\n const participantDescContainer = useTemplateRef('descriptionParticipantContainer')?.value as HTMLElement;\n\n if (\n null !== participantDesc &&\n null !== participantDescContainer &&\n participantDesc.clientHeight > participantDescContainer.clientHeight\n ) {\n participantDescContainer.classList.add(\"after-element-description\");\n }\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nasync function hasPodcast(): Promise<void> {\n const data = await classicApi.fetchData<ListClassicReturn<Podcast>>({\n api: 0,\n path: \"podcast/search\",\n parameters: {\n participantId: props.participant.participantId,\n first: 0,\n size: 0,\n includeStatus: [\"READY\", \"PROCESSING\"],\n },\n specialTreatement: true,\n });\n if (0 === data.count) {\n activeParticipant.value = false;\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .participant-item-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n border-radius: var(--octopus-border-radius);\n width: var(--octopus-image-size);\n}\n</style>\n","<template>\n <article v-if=\"participant\" class=\"participant-item-container\">\n <router-link\n :to=\"{\n name: 'participant',\n params: { participantId: participant.participantId },\n }\"\n class=\"mt-3 text-dark\"\n :title=\"t('Participant name page', { name: name })\"\n >\n <img\n v-lazy=\"useProxyImageUrl(participant.imageUrl, '200')\"\n width=\"200\"\n height=\"200\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Animator image', { name: name })\"\n class=\"img-box border\"\n />\n <div class=\"d-flex align-items-center h4 justify-content-center mt-2\">\n <AlertIcon\n v-if=\"!activeParticipant && !isPodcastmaker && editRight\"\n :size=\"16\"\n class=\"text-danger me-1\"\n :title=\"t('Participant have not podcasts')\"\n />\n {{ name }}\n </div>\n <div\n ref=\"descriptionParticipantContainer\"\n class=\"element-description small-description html-wysiwyg-content\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div\n ref=\"descriptionParticipant\"\n v-html=\"urlify(participant.description || '')\"\n />\n <!-- eslint-enable -->\n </div>\n </router-link>\n <router-link\n v-if=\"!isPodcastmaker\"\n :to=\"{\n name: 'productor',\n params: { productorId: participant.orga.id },\n }\"\n class=\"small-text mt-1\"\n >\n © {{ participant.orga.name }}\n </router-link>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport AlertIcon from \"vue-material-design-icons/Alert.vue\";\nimport classicApi from \"../../../api/classicApi\";\nimport { Participant } from \"@/stores/class/general/participant\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport { computed, onBeforeMount, onMounted, ref, useTemplateRef } from \"vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n participant: { default: () => ({}), type: Object as () => Participant },\n})\n \n//Data \nconst activeParticipant = ref(true);\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights } = useOrgaComputed();\n\n//Computed\nconst name = computed(() => `${props.participant.firstName ?? \"\"} ${props.participant.lastName ?? \"\"}`.trim());\nconst editRight = computed(() => {\n if (!props.participant?.orga) {\n return false;\n }\n return isEditRights(props.participant.orga.id);\n});\n\nonBeforeMount(()=>{\n if (!editRight.value) return;\n hasPodcast();\n})\n\nonMounted(()=>{\n const participantDesc = useTemplateRef('descriptionParticipant')?.value as HTMLElement;\n const participantDescContainer = useTemplateRef('descriptionParticipantContainer')?.value as HTMLElement;\n\n if (\n null !== participantDesc &&\n null !== participantDescContainer &&\n participantDesc.clientHeight > participantDescContainer.clientHeight\n ) {\n participantDescContainer.classList.add(\"after-element-description\");\n }\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nasync function hasPodcast(): Promise<void> {\n const data = await classicApi.fetchData<ListClassicReturn<Podcast>>({\n api: 0,\n path: \"podcast/search\",\n parameters: {\n participantId: props.participant.participantId,\n first: 0,\n size: 0,\n includeStatus: [\"READY\", \"PROCESSING\"],\n },\n specialTreatement: true,\n });\n if (0 === data.count) {\n activeParticipant.value = false;\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .participant-item-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n border-radius: var(--octopus-border-radius);\n width: var(--octopus-image-size);\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;EAmEA,MAAM,QAAQ;EAKd,MAAM,oBAAoB,IAAI,IAAI;EAGlC,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,qBAAqB,cAAc;EAC3C,MAAM,EAAE,gBAAgB,iBAAiB,gBAAgB;EAGzD,MAAM,OAAO,eAAe,GAAG,MAAM,YAAY,aAAa,GAAG,GAAG,MAAM,YAAY,YAAY,KAAK,KAAK,CAAC;EAC7G,MAAM,YAAY,eAAe;GAC/B,IAAI,CAAC,MAAM,aAAa,MACtB,OAAO;GAET,OAAO,aAAa,MAAM,YAAY,KAAK,EAAE;EAC/C,CAAC;EAED,oBAAkB;GAChB,IAAI,CAAC,UAAU,OAAO;GACtB,WAAW;EACb,CAAC;EAED,gBAAc;GACZ,MAAM,kBAAkB,eAAe,wBAAwB,CAAC,EAAE;GAClE,MAAM,2BAA2B,eAAe,iCAAiC,CAAC,EAAE;GAEpF,IACE,SAAS,mBACT,SAAS,4BACT,gBAAgB,eAAe,yBAAyB,cAExD,yBAAyB,UAAU,IAAI,2BAA2B;EAEtE,CAAC;EAGD,SAAS,OAAO,MAAsB;GACpC,OAAOA,sBAAc,OAAO,IAAI;EAClC;EACA,eAAe,aAA4B;GAYzC,IAAI,OAAM,MAXSC,mBAAW,UAAsC;IAClE,KAAK;IACL,MAAM;IACN,YAAY;KACV,eAAe,MAAM,YAAY;KACjC,OAAO;KACP,MAAM;KACN,eAAe,CAAC,SAAS,YAAY;IACvC;IACA,mBAAmB;GACrB,CAAC,EAAA,CACc,OACb,kBAAkB,QAAQ;EAE9B;;;;;;;;;;;;;;;;;;;;;;;;;CC5H8B,OAAM;;;AAmBzB,IAAA,aAAA,EAAA,OAAM,2DAA0D;;CAUnE,KAAI;CACJ,OAAM;;;;;;CA9BG,OAAA,OAAA,eAAfG,UAAA,GAAAC,mBAkDU,WAlDV,YAkDU,CAjDRC,YAsCc,wBAAA;EArCX,IAAE;;GAAkE,QAAA,EAAA,eAAA,OAAA,YAAY,cAAa;;EAI9F,OAAM;EACL,OAAO,OAAA,EAAC,yBAAA,EAAA,MAAkC,OAAA,KAAI,CAAA;;EAE/C,SAAAC,cASE;GATFC,eAAAC,mBASE,OAAA;IAPA,OAAM;IACN,QAAO;IACP,eAAY;IACZ,KAAI;IAEH,OAAO,OAAA,EAAC,kBAAA,EAAA,MAA2B,OAAA,KAAI,CAAA;IACxC,OAAM;GAPE,GAAA,MAAA,GAAA,UAAA,GAAA,CAAA,CAAA,iBAAA,OAAA,iBAAiB,OAAA,YAAY,UAAQ,KAAA,CAAA,CAAA,CAAA;GAS/CA,mBAQM,OARN,YAQM,CANK,CAAA,OAAA,qBAAiB,CAAK,OAAA,kBAAkB,OAAA,aADjDL,UAAA,GAAAM,YAKE,OAAA,cAAA;;IAHC,MAAM;IACP,OAAM;IACL,OAAO,OAAA,EAAC,+BAAA;GACT,GAAA,MAAA,GAAA,CAAA,OAAA,CAAA,KAAAC,mBAAA,QAAA,IAAA,GAAAC,gBAAA,MACFC,gBAAG,OAAA,IAAI,GAAA,CAAA,CAAA,CAAA;GAETJ,mBAUM,OAVN,YAUM;IANJE,mBAAA,gCAAA;IACAF,mBAGE,OAAA;KAFA,KAAI;KACJ,WAAQ,OAAA,OAAO,OAAA,YAAY,eAAW,EAAA;;IAExCE,mBAAA,iBAAA;;;;CAIK,GAAA,GAAA,CAAA,MAAA,OAAA,CAAA,GAAA,CAAA,OAAA,kBADTP,UAAA,GAAAM,YASc,wBAAA;;EAPX,IAAE;;GAA8D,QAAA,EAAA,aAAA,OAAA,YAAY,KAAK,GAAE;;EAIpF,OAAM;;EACP,SAAAH,cACG,CADHK,gBAAA,QACGC,gBAAG,OAAA,YAAY,KAAK,IAAI,GAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as e } from "./classicApi-
|
|
1
|
+
import { t as e } from "./classicApi-CGipMqf7.mjs";
|
|
2
2
|
import { t } from "./displayHelper-DQtoqc_6.mjs";
|
|
3
|
-
import { t as n } from "./useImageProxy-
|
|
4
|
-
import { t as r } from "./useOrgaComputed-
|
|
3
|
+
import { t as n } from "./useImageProxy-CCpDzPmQ.mjs";
|
|
4
|
+
import { t as r } from "./useOrgaComputed-D81Jihm-.mjs";
|
|
5
5
|
import { computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createTextVNode as l, createVNode as u, defineComponent as d, onBeforeMount as f, onMounted as p, openBlock as m, ref as h, resolveComponent as g, resolveDirective as _, toDisplayString as v, unref as y, useTemplateRef as b, withCtx as x, withDirectives as S } from "vue";
|
|
6
6
|
import { useI18n as C } from "vue-i18n";
|
|
7
7
|
import w from "vue-material-design-icons/Alert.vue";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParticipantPage-B4VnV8Yc.mjs","names":["displayHelper","classicApi","_resolveDirective","_openBlock","_createElementBlock","_Fragment","_createElementVNode","_toDisplayString","_withDirectives","_createCommentVNode","_renderSlot","_createBlock","_withCtx","_createVNode","_sfc_main"],"sources":["../src/components/pages/ParticipantPage.vue","../src/components/pages/ParticipantPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && participant\">\n <h1>\n {{ t(\"Animator\") }}\n </h1>\n <section class=\"d-flex flex-column align-items-center mb-3\">\n <img\n v-lazy=\"useProxyImageUrl(participant.imageUrl, '200')\"\n width=\"200\"\n height=\"200\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Animator image', { name: name })\"\n class=\"img-box mb-3\"\n />\n <h2 class=\"text-capitalize\">\n {{ name }}\n </h2>\n <!-- eslint-disable vue/no-v-html -->\n <div\n class=\"participant-desc html-wysiwyg-content\"\n v-html=\"urlify(description)\"\n />\n <!-- eslint-enable -->\n <slot\n v-if=\"editRight && !state.generalParameters.podcastmaker\"\n name=\"edit-box\"\n :participant=\"participant\"\n :on-updated=\"updateParticipant\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n class=\"w-100\"\n :organisation-id=\"participant.orga.id\"\n >\n <template #additional-buttons>\n <ShareAnonymous \n :participant-id=\"participant.participantId\" \n :organisation-id=\"participant.orga.id\"\n relative-class=\"\"\n btn-class=\"btn share-btn mb-2 text-dark me-2\"\n />\n </template>\n </ShareSocialsButtons>\n </section>\n <!-- productorId define to avoid overwrite #12817 -->\n <PodcastFilterList\n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :participant-id=\"participantId\"\n :name=\"name\"\n :category-filter=\"true\"\n :productor-id=\"['']\"\n :reload=\"reload\"\n :show-count=\"true\"\n :force-update-parameters=\"true\"\n />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Animator doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../api/classicApi\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Participant } from \"@/stores/class/general/participant\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport { computed, defineAsyncComponent, ref, Ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst PodcastFilterList = defineAsyncComponent(\n () => import(\"../display/podcasts/PodcastFilterList.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n participantId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data\nconst loaded = ref(false);\nconst error = ref(false);\nconst reload = ref(false);\nconst participant: Ref<Participant | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isEditRights } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst description = computed(() =>participant.value?.description ?? \"\");\nconst name = computed(() =>`${participant.value?.firstName ?? \"\"} ${participant.value?.lastName ?? \"\"}`.trim());\nconst editRight = computed(() =>isEditRights(participant.value?.orga?.id));\n\n\n//Watch\nwatch(participant, () => {reload.value = !reload.value}, {deep: true});\nwatch(()=>props.participantId, () =>getParticipantDetails(), {immediate: true});\n\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getParticipantDetails(): Promise<void> {\n loaded.value = false;\n try {\n const data = await classicApi.fetchData<Participant>({\n api: 0,\n path: \"participant/\" + props.participantId,\n });\n if (\n \"PUBLIC\" !== data?.orga?.privacy &&\n filterStore.filterOrgaId !== data?.orga?.id &&\n route.query.productor !== data?.orga?.id\n ) {\n initError();\n return;\n }\n updateParticipant(data);\n loaded.value = true;\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n}\nfunction updateParticipant(participantUpdated: Participant): void {\n participant.value = participantUpdated;\n updatePathParams(name.value);\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n @media (width >= 950px) {\n .participant-desc {\n max-width: 50%;\n line-height: 1.5em;\n }\n }\n}\n</style>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && participant\">\n <h1>\n {{ t(\"Animator\") }}\n </h1>\n <section class=\"d-flex flex-column align-items-center mb-3\">\n <img\n v-lazy=\"useProxyImageUrl(participant.imageUrl, '200')\"\n width=\"200\"\n height=\"200\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Animator image', { name: name })\"\n class=\"img-box mb-3\"\n />\n <h2 class=\"text-capitalize\">\n {{ name }}\n </h2>\n <!-- eslint-disable vue/no-v-html -->\n <div\n class=\"participant-desc html-wysiwyg-content\"\n v-html=\"urlify(description)\"\n />\n <!-- eslint-enable -->\n <slot\n v-if=\"editRight && !state.generalParameters.podcastmaker\"\n name=\"edit-box\"\n :participant=\"participant\"\n :on-updated=\"updateParticipant\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n class=\"w-100\"\n :organisation-id=\"participant.orga.id\"\n >\n <template #additional-buttons>\n <ShareAnonymous \n :participant-id=\"participant.participantId\" \n :organisation-id=\"participant.orga.id\"\n relative-class=\"\"\n btn-class=\"btn share-btn mb-2 text-dark me-2\"\n />\n </template>\n </ShareSocialsButtons>\n </section>\n <!-- productorId define to avoid overwrite #12817 -->\n <PodcastFilterList\n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :participant-id=\"participantId\"\n :name=\"name\"\n :category-filter=\"true\"\n :productor-id=\"['']\"\n :reload=\"reload\"\n :show-count=\"true\"\n :force-update-parameters=\"true\"\n />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Animator doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../api/classicApi\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Participant } from \"@/stores/class/general/participant\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport { computed, defineAsyncComponent, ref, Ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst PodcastFilterList = defineAsyncComponent(\n () => import(\"../display/podcasts/PodcastFilterList.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n participantId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data\nconst loaded = ref(false);\nconst error = ref(false);\nconst reload = ref(false);\nconst participant: Ref<Participant | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isEditRights } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst description = computed(() =>participant.value?.description ?? \"\");\nconst name = computed(() =>`${participant.value?.firstName ?? \"\"} ${participant.value?.lastName ?? \"\"}`.trim());\nconst editRight = computed(() =>isEditRights(participant.value?.orga?.id));\n\n\n//Watch\nwatch(participant, () => {reload.value = !reload.value}, {deep: true});\nwatch(()=>props.participantId, () =>getParticipantDetails(), {immediate: true});\n\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getParticipantDetails(): Promise<void> {\n loaded.value = false;\n try {\n const data = await classicApi.fetchData<Participant>({\n api: 0,\n path: \"participant/\" + props.participantId,\n });\n if (\n \"PUBLIC\" !== data?.orga?.privacy &&\n filterStore.filterOrgaId !== data?.orga?.id &&\n route.query.productor !== data?.orga?.id\n ) {\n initError();\n return;\n }\n updateParticipant(data);\n loaded.value = true;\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n}\nfunction updateParticipant(participantUpdated: Participant): void {\n participant.value = participantUpdated;\n updatePathParams(name.value);\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n @media (width >= 950px) {\n .participant-desc {\n max-width: 50%;\n line-height: 1.5em;\n }\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParticipantPage-B6Gzg6ul.mjs","names":["displayHelper","classicApi","_resolveDirective","_openBlock","_createElementBlock","_Fragment","_createElementVNode","_toDisplayString","_withDirectives","_createCommentVNode","_renderSlot","_createBlock","_withCtx","_createVNode","_sfc_main"],"sources":["../src/components/pages/ParticipantPage.vue","../src/components/pages/ParticipantPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && participant\">\n <h1>\n {{ t(\"Animator\") }}\n </h1>\n <section class=\"d-flex flex-column align-items-center mb-3\">\n <img\n v-lazy=\"useProxyImageUrl(participant.imageUrl, '200')\"\n width=\"200\"\n height=\"200\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Animator image', { name: name })\"\n class=\"img-box mb-3\"\n />\n <h2 class=\"text-capitalize\">\n {{ name }}\n </h2>\n <!-- eslint-disable vue/no-v-html -->\n <div\n class=\"participant-desc html-wysiwyg-content\"\n v-html=\"urlify(description)\"\n />\n <!-- eslint-enable -->\n <slot\n v-if=\"editRight && !state.generalParameters.podcastmaker\"\n name=\"edit-box\"\n :participant=\"participant\"\n :on-updated=\"updateParticipant\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n class=\"w-100\"\n :organisation-id=\"participant.orga.id\"\n >\n <template #additional-buttons>\n <ShareAnonymous \n :participant-id=\"participant.participantId\" \n :organisation-id=\"participant.orga.id\"\n relative-class=\"\"\n btn-class=\"btn share-btn mb-2 text-dark me-2\"\n />\n </template>\n </ShareSocialsButtons>\n </section>\n <!-- productorId define to avoid overwrite #12817 -->\n <PodcastFilterList\n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :participant-id=\"participantId\"\n :name=\"name\"\n :category-filter=\"true\"\n :productor-id=\"['']\"\n :reload=\"reload\"\n :show-count=\"true\"\n :force-update-parameters=\"true\"\n />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Animator doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../api/classicApi\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Participant } from \"@/stores/class/general/participant\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport { computed, defineAsyncComponent, ref, Ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst PodcastFilterList = defineAsyncComponent(\n () => import(\"../display/podcasts/PodcastFilterList.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n participantId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data\nconst loaded = ref(false);\nconst error = ref(false);\nconst reload = ref(false);\nconst participant: Ref<Participant | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isEditRights } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst description = computed(() =>participant.value?.description ?? \"\");\nconst name = computed(() =>`${participant.value?.firstName ?? \"\"} ${participant.value?.lastName ?? \"\"}`.trim());\nconst editRight = computed(() =>isEditRights(participant.value?.orga?.id));\n\n\n//Watch\nwatch(participant, () => {reload.value = !reload.value}, {deep: true});\nwatch(()=>props.participantId, () =>getParticipantDetails(), {immediate: true});\n\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getParticipantDetails(): Promise<void> {\n loaded.value = false;\n try {\n const data = await classicApi.fetchData<Participant>({\n api: 0,\n path: \"participant/\" + props.participantId,\n });\n if (\n \"PUBLIC\" !== data?.orga?.privacy &&\n filterStore.filterOrgaId !== data?.orga?.id &&\n route.query.productor !== data?.orga?.id\n ) {\n initError();\n return;\n }\n updateParticipant(data);\n loaded.value = true;\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n}\nfunction updateParticipant(participantUpdated: Participant): void {\n participant.value = participantUpdated;\n updatePathParams(name.value);\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n @media (width >= 950px) {\n .participant-desc {\n max-width: 50%;\n line-height: 1.5em;\n }\n }\n}\n</style>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && participant\">\n <h1>\n {{ t(\"Animator\") }}\n </h1>\n <section class=\"d-flex flex-column align-items-center mb-3\">\n <img\n v-lazy=\"useProxyImageUrl(participant.imageUrl, '200')\"\n width=\"200\"\n height=\"200\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Animator image', { name: name })\"\n class=\"img-box mb-3\"\n />\n <h2 class=\"text-capitalize\">\n {{ name }}\n </h2>\n <!-- eslint-disable vue/no-v-html -->\n <div\n class=\"participant-desc html-wysiwyg-content\"\n v-html=\"urlify(description)\"\n />\n <!-- eslint-enable -->\n <slot\n v-if=\"editRight && !state.generalParameters.podcastmaker\"\n name=\"edit-box\"\n :participant=\"participant\"\n :on-updated=\"updateParticipant\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n class=\"w-100\"\n :organisation-id=\"participant.orga.id\"\n >\n <template #additional-buttons>\n <ShareAnonymous \n :participant-id=\"participant.participantId\" \n :organisation-id=\"participant.orga.id\"\n relative-class=\"\"\n btn-class=\"btn share-btn mb-2 text-dark me-2\"\n />\n </template>\n </ShareSocialsButtons>\n </section>\n <!-- productorId define to avoid overwrite #12817 -->\n <PodcastFilterList\n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :participant-id=\"participantId\"\n :name=\"name\"\n :category-filter=\"true\"\n :productor-id=\"['']\"\n :reload=\"reload\"\n :show-count=\"true\"\n :force-update-parameters=\"true\"\n />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Animator doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../api/classicApi\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Participant } from \"@/stores/class/general/participant\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport { computed, defineAsyncComponent, ref, Ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst PodcastFilterList = defineAsyncComponent(\n () => import(\"../display/podcasts/PodcastFilterList.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n participantId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data\nconst loaded = ref(false);\nconst error = ref(false);\nconst reload = ref(false);\nconst participant: Ref<Participant | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isEditRights } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst description = computed(() =>participant.value?.description ?? \"\");\nconst name = computed(() =>`${participant.value?.firstName ?? \"\"} ${participant.value?.lastName ?? \"\"}`.trim());\nconst editRight = computed(() =>isEditRights(participant.value?.orga?.id));\n\n\n//Watch\nwatch(participant, () => {reload.value = !reload.value}, {deep: true});\nwatch(()=>props.participantId, () =>getParticipantDetails(), {immediate: true});\n\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getParticipantDetails(): Promise<void> {\n loaded.value = false;\n try {\n const data = await classicApi.fetchData<Participant>({\n api: 0,\n path: \"participant/\" + props.participantId,\n });\n if (\n \"PUBLIC\" !== data?.orga?.privacy &&\n filterStore.filterOrgaId !== data?.orga?.id &&\n route.query.productor !== data?.orga?.id\n ) {\n initError();\n return;\n }\n updateParticipant(data);\n loaded.value = true;\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n}\nfunction updateParticipant(participantUpdated: Participant): void {\n participant.value = participantUpdated;\n updatePathParams(name.value);\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n @media (width >= 950px) {\n .participant-desc {\n max-width: 50%;\n line-height: 1.5em;\n }\n }\n}\n</style>\n"],"mappings":"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"}
|