@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":"ClassicDatePicker-DgcJCevR.mjs","names":["_openBlock","_createElementBlock","_normalizeClass","_toDisplayString","_createCommentVNode","_createVNode","_createSlots","_withCtx","_sfc_main"],"sources":["../src/components/form/ClassicDatePicker.vue","../src/components/form/ClassicDatePicker.vue"],"sourcesContent":["<template>\n <div ref=\"divContainer\" tabindex=\"0\">\n <label\n v-if=\"label && !range\"\n class=\"form-label\"\n :for=\"'dp-input-'+id\"\n :class=\"displayLabel ? '' : 'd-none'\"\n >\n {{ label }}\n </label>\n <VueDatePicker\n :model-value=\"modelVal\"\n :time-picker=\"isTimePicker\"\n :time-config=\"timeConfig\"\n :ui=\"templateClass ? { input: templateClass } : {}\"\n :input-attrs=\"{ clearable: false, id: id ? 'dp-input-' + id : undefined }\"\n :text-input=\"true\"\n :readonly=\"readonly\"\n :teleport=\"useTeleport\"\n :locale=\"getLocale(locale)\"\n :formats=\"{ input: format }\"\n :auto-apply=\"true\"\n :max-date=\"isMaxDate && !isTimePicker ? limit : undefined\"\n :min-date=\"isMinDate && !isTimePicker ? limit : undefined\"\n :range=\"undefined !== range\"\n :multi-calendars=\"columnNumber > 1 ? columnNumber : false\"\n :inline=\"isInline\"\n :aria-labels=\"ariaLabels\"\n :max-time=\"maxTime\"\n :month-picker=\"monthPicker\"\n @update:model-value=\"updateValue($event)\"\n >\n <template v-if=\"isTimePicker\" #input-icon>\n <ClockOutlineIcon :size=\"16\" class=\"ms-2\" />\n </template>\n </VueDatePicker>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClockOutlineIcon from \"vue-material-design-icons/ClockOutline.vue\";\nimport dayjs from \"dayjs\";\nimport { VueDatePicker } from \"@vuepic/vue-datepicker\";\nimport { computed, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { getLocale } from \"@/i18n\";\n\n//Props \nconst props = defineProps({\n id:{ default: undefined, type: String },\n time: {\n default: undefined,\n type: Object as () => { hours: number; minutes: number; seconds: number },\n },\n date: { default: undefined, type: Date },\n range: { default: undefined, type: Array as () => Array<Date> },\n /**\n * Enable maximum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMaxDate: { default: false, type: Boolean },\n /** Date limit when `isMaxDate` or `isMinDate` are set */\n dateLimit: { default: undefined, type: Date },\n /**\n * Enable minimum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMinDate: { default: false, type: Boolean },\n columnNumber: { default: 1, type: Number },\n displaySeconds: { default: false, type: Boolean },\n displayTimePicker: { default: true, type: Boolean },\n isTimePicker: { default: false, type: Boolean },\n useTeleport: { default: false, type: Boolean },\n templateClass: { default: undefined, type: String },\n readonly: { default: false, type: Boolean },\n maxTime: {\n default: null,\n type: Object as () => {\n hours: number | string;\n minutes: number | string;\n seconds?: number | string;\n },\n },\n forceFormat: { default: undefined, type: String },\n monthPicker: { default: false, type: Boolean },\n /** @deprecated No longer supported since vue-datepicker v14 */\n customPosition: { default: null, type: Function },\n isInline: { default: false, type: Boolean },\n timePickerInline: { default: false, type: Boolean },\n label: { default: undefined, type: String },\n displayLabel: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits<{\n /**\n * Update the date\n * @param value The new date\n * @deprecated\n */\n (e: \"updateDate\", value: Date): void;\n /**\n * Update the date\n * @param value The new date\n */\n (e: \"update:date\", value: Date): void;\n}>();\n\n//Data\nconst divContainerRef = useTemplateRef('divContainer');\n\n//Composables\nconst { locale } = useI18n();\n\n//Computed\nconst ariaLabels = computed(() => {\n return {\n input: props.date ? formatDate(props.date) : undefined,\n day: (value: { value: Date }) => {\n return formatDate(value.value);\n },\n };\n});\nconst modelVal = computed(() => {\n if (props.time) {\n return props.time;\n }\n if (props.range) {\n return props.range;\n }\n if (props.date && props.monthPicker) {\n return {\n month: props.date.getMonth(),\n year: props.date.getFullYear(),\n };\n }\n return props.date;\n});\nconst format = computed(() => {\n if (props.forceFormat) {\n return props.forceFormat;\n }\n if (props.monthPicker) {\n return \"MM/yyyy\";\n }\n let timeString = \"\";\n if (props.displayTimePicker || props.isTimePicker) {\n timeString = \"HH:mm\";\n if (props.displaySeconds) {\n timeString = \"HH:mm:ss\";\n }\n }\n // For ranges, vue-datepicker applies the format to each date and joins\n // them with its own separator\n return props.isTimePicker\n ? timeString\n : \"dd/MM/yyyy \" + timeString;\n});\nconst timeConfig = computed(() => {\n return {\n enableSeconds: props.displaySeconds,\n timePickerInline: props.isTimePicker && props.timePickerInline,\n ...(!props.isTimePicker && { enableTimePicker: props.displayTimePicker })\n };\n});\nconst limit = computed(() => {\n if (props.dateLimit) {\n return props.dateLimit;\n }\n return dayjs().toDate();\n});\n\n\n//Methods\nfunction updateValue(date: Date) {\n if (!props.isInline) {\n (divContainerRef?.value as HTMLElement)?.focus();\n }\n emit(\"updateDate\", date);\n emit(\"update:date\", date);\n}\n\nfunction formatDate(value: Date): string {\n const realMonth = value.getMonth() + 1;\n return (\n value.getDate() +\n \"/\" +\n (realMonth < 10 ? \"0\" : \"\") +\n realMonth +\n \"/\" +\n value.getFullYear()\n );\n}\n</script>\n<style lang=\"scss\">\n@use \"@vuepic/vue-datepicker/dist/main.css\";\n\n/* stylelint-disable-next-line */\n.dp--theme-light {\n --dp-primary-color: var(--octopus-primary);\n --dp-time-font-size: 1rem;\n}\n</style>\n","<template>\n <div ref=\"divContainer\" tabindex=\"0\">\n <label\n v-if=\"label && !range\"\n class=\"form-label\"\n :for=\"'dp-input-'+id\"\n :class=\"displayLabel ? '' : 'd-none'\"\n >\n {{ label }}\n </label>\n <VueDatePicker\n :model-value=\"modelVal\"\n :time-picker=\"isTimePicker\"\n :time-config=\"timeConfig\"\n :ui=\"templateClass ? { input: templateClass } : {}\"\n :input-attrs=\"{ clearable: false, id: id ? 'dp-input-' + id : undefined }\"\n :text-input=\"true\"\n :readonly=\"readonly\"\n :teleport=\"useTeleport\"\n :locale=\"getLocale(locale)\"\n :formats=\"{ input: format }\"\n :auto-apply=\"true\"\n :max-date=\"isMaxDate && !isTimePicker ? limit : undefined\"\n :min-date=\"isMinDate && !isTimePicker ? limit : undefined\"\n :range=\"undefined !== range\"\n :multi-calendars=\"columnNumber > 1 ? columnNumber : false\"\n :inline=\"isInline\"\n :aria-labels=\"ariaLabels\"\n :max-time=\"maxTime\"\n :month-picker=\"monthPicker\"\n @update:model-value=\"updateValue($event)\"\n >\n <template v-if=\"isTimePicker\" #input-icon>\n <ClockOutlineIcon :size=\"16\" class=\"ms-2\" />\n </template>\n </VueDatePicker>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClockOutlineIcon from \"vue-material-design-icons/ClockOutline.vue\";\nimport dayjs from \"dayjs\";\nimport { VueDatePicker } from \"@vuepic/vue-datepicker\";\nimport { computed, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { getLocale } from \"@/i18n\";\n\n//Props \nconst props = defineProps({\n id:{ default: undefined, type: String },\n time: {\n default: undefined,\n type: Object as () => { hours: number; minutes: number; seconds: number },\n },\n date: { default: undefined, type: Date },\n range: { default: undefined, type: Array as () => Array<Date> },\n /**\n * Enable maximum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMaxDate: { default: false, type: Boolean },\n /** Date limit when `isMaxDate` or `isMinDate` are set */\n dateLimit: { default: undefined, type: Date },\n /**\n * Enable minimum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMinDate: { default: false, type: Boolean },\n columnNumber: { default: 1, type: Number },\n displaySeconds: { default: false, type: Boolean },\n displayTimePicker: { default: true, type: Boolean },\n isTimePicker: { default: false, type: Boolean },\n useTeleport: { default: false, type: Boolean },\n templateClass: { default: undefined, type: String },\n readonly: { default: false, type: Boolean },\n maxTime: {\n default: null,\n type: Object as () => {\n hours: number | string;\n minutes: number | string;\n seconds?: number | string;\n },\n },\n forceFormat: { default: undefined, type: String },\n monthPicker: { default: false, type: Boolean },\n /** @deprecated No longer supported since vue-datepicker v14 */\n customPosition: { default: null, type: Function },\n isInline: { default: false, type: Boolean },\n timePickerInline: { default: false, type: Boolean },\n label: { default: undefined, type: String },\n displayLabel: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits<{\n /**\n * Update the date\n * @param value The new date\n * @deprecated\n */\n (e: \"updateDate\", value: Date): void;\n /**\n * Update the date\n * @param value The new date\n */\n (e: \"update:date\", value: Date): void;\n}>();\n\n//Data\nconst divContainerRef = useTemplateRef('divContainer');\n\n//Composables\nconst { locale } = useI18n();\n\n//Computed\nconst ariaLabels = computed(() => {\n return {\n input: props.date ? formatDate(props.date) : undefined,\n day: (value: { value: Date }) => {\n return formatDate(value.value);\n },\n };\n});\nconst modelVal = computed(() => {\n if (props.time) {\n return props.time;\n }\n if (props.range) {\n return props.range;\n }\n if (props.date && props.monthPicker) {\n return {\n month: props.date.getMonth(),\n year: props.date.getFullYear(),\n };\n }\n return props.date;\n});\nconst format = computed(() => {\n if (props.forceFormat) {\n return props.forceFormat;\n }\n if (props.monthPicker) {\n return \"MM/yyyy\";\n }\n let timeString = \"\";\n if (props.displayTimePicker || props.isTimePicker) {\n timeString = \"HH:mm\";\n if (props.displaySeconds) {\n timeString = \"HH:mm:ss\";\n }\n }\n // For ranges, vue-datepicker applies the format to each date and joins\n // them with its own separator\n return props.isTimePicker\n ? timeString\n : \"dd/MM/yyyy \" + timeString;\n});\nconst timeConfig = computed(() => {\n return {\n enableSeconds: props.displaySeconds,\n timePickerInline: props.isTimePicker && props.timePickerInline,\n ...(!props.isTimePicker && { enableTimePicker: props.displayTimePicker })\n };\n});\nconst limit = computed(() => {\n if (props.dateLimit) {\n return props.dateLimit;\n }\n return dayjs().toDate();\n});\n\n\n//Methods\nfunction updateValue(date: Date) {\n if (!props.isInline) {\n (divContainerRef?.value as HTMLElement)?.focus();\n }\n emit(\"updateDate\", date);\n emit(\"update:date\", date);\n}\n\nfunction formatDate(value: Date): string {\n const realMonth = value.getMonth() + 1;\n return (\n value.getDate() +\n \"/\" +\n (realMonth < 10 ? \"0\" : \"\") +\n realMonth +\n \"/\" +\n value.getFullYear()\n );\n}\n</script>\n<style lang=\"scss\">\n@use \"@vuepic/vue-datepicker/dist/main.css\";\n\n/* stylelint-disable-next-line */\n.dp--theme-light {\n --dp-primary-color: var(--octopus-primary);\n --dp-time-font-size: 1rem;\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassicDatePicker-NxGNQxHE.mjs","names":["_openBlock","_createElementBlock","_normalizeClass","_toDisplayString","_createCommentVNode","_createVNode","_createSlots","_withCtx","_sfc_main"],"sources":["../src/components/form/ClassicDatePicker.vue","../src/components/form/ClassicDatePicker.vue"],"sourcesContent":["<template>\n <div ref=\"divContainer\" tabindex=\"0\">\n <label\n v-if=\"label && !range\"\n class=\"form-label\"\n :for=\"'dp-input-'+id\"\n :class=\"displayLabel ? '' : 'd-none'\"\n >\n {{ label }}\n </label>\n <VueDatePicker\n :uid=\"id\"\n :model-value=\"modelVal\"\n :time-picker=\"isTimePicker\"\n :time-picker-inline=\"isTimePicker && timePickerInline\"\n :input-class-name=\"templateClass\"\n :clearable=\"false\"\n :text-input=\"true\"\n :readonly=\"readonly\"\n :teleport=\"useTeleport\"\n :locale=\"locales[locale] ?? fr\"\n :format=\"format\"\n :auto-apply=\"true\"\n :enable-seconds=\"displaySeconds\"\n :max-date=\"isMaxDate && !isTimePicker ? limit : undefined\"\n :min-date=\"isMinDate && !isTimePicker ? limit : undefined\"\n :range=\"undefined !== range\"\n :multi-calendars=\"columnNumber > 1 ? columnNumber : false\"\n :inline=\"isInline\"\n :enable-time-picker=\"!isTimePicker ? displayTimePicker : undefined\"\n :aria-labels=\"ariaLabels\"\n :max-time=\"maxTime\"\n :month-picker=\"monthPicker\"\n :alt-position=\"customPosition\"\n @update:model-value=\"updateValue($event)\"\n >\n <template v-if=\"isTimePicker\" #input-icon>\n <ClockOutlineIcon :size=\"16\" class=\"ms-2\" />\n </template>\n </VueDatePicker>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClockOutlineIcon from \"vue-material-design-icons/ClockOutline.vue\";\nimport dayjs from \"dayjs\";\nimport { VueDatePicker } from \"@vuepic/vue-datepicker\";\nimport { computed, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { de, enUS, es, fr, it, sl } from \"date-fns/locale\";\n\nconst locales = { de, enUS, es, fr, it, sl };\n\n//Props \nconst props = defineProps({\n id:{ default: undefined, type: String },\n time: {\n default: undefined,\n type: Object as () => { hours: number; minutes: number; seconds: number },\n },\n date: { default: undefined, type: Date },\n range: { default: undefined, type: Array as () => Array<Date> },\n /**\n * Enable maximum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMaxDate: { default: false, type: Boolean },\n /** Date limit when `isMaxDate` or `isMinDate` are set */\n dateLimit: { default: undefined, type: Date },\n /**\n * Enable minimum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMinDate: { default: false, type: Boolean },\n columnNumber: { default: 1, type: Number },\n displaySeconds: { default: false, type: Boolean },\n displayTimePicker: { default: true, type: Boolean },\n isTimePicker: { default: false, type: Boolean },\n useTeleport: { default: false, type: Boolean },\n templateClass: { default: undefined, type: String },\n readonly: { default: false, type: Boolean },\n maxTime: {\n default: null,\n type: Object as () => {\n hours?: number | string;\n minutes?: number | string;\n seconds?: number | string;\n },\n },\n forceFormat: { default: undefined, type: String },\n monthPicker: { default: false, type: Boolean },\n customPosition: { default: null, type: Function },\n isInline: { default: false, type: Boolean },\n timePickerInline: { default: false, type: Boolean },\n label: { default: undefined, type: String },\n displayLabel: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits<{\n /**\n * Update the date\n * @param value The new date\n * @deprecated\n */\n (e: \"updateDate\", value: Date): void;\n /**\n * Update the date\n * @param value The new date\n */\n (e: \"update:date\", value: Date): void;\n}>();\n\n//Data\nconst divContainerRef = useTemplateRef('divContainer');\n\n//Composables\nconst { locale } = useI18n();\n\n//Computed\nconst ariaLabels = computed(() => {\n return {\n input: props.date ? formatDate(props.date) : undefined,\n day: (value: { value: Date }) => {\n return formatDate(value.value);\n },\n };\n});\nconst modelVal = computed(() => {\n if (props.time) {\n return props.time;\n }\n if (props.range) {\n return props.range;\n }\n if (props.date && props.monthPicker) {\n return {\n month: props.date.getMonth(),\n year: props.date.getFullYear(),\n };\n }\n return props.date;\n});\nconst format = computed(() => {\n if (props.forceFormat) {\n return props.forceFormat;\n }\n if (props.monthPicker) {\n return \"MM/yyyy\";\n }\n let timeString = \"\";\n if (props.displayTimePicker || props.isTimePicker) {\n timeString = \"HH:mm\";\n if (props.displaySeconds) {\n timeString = \"HH:mm:ss\";\n }\n }\n const dayString = props.isTimePicker\n ? timeString\n : \"dd/MM/yyyy \" + timeString;\n return props.range ? dayString + \" - \" + dayString : dayString;\n});\nconst limit = computed(() => {\n if (props.dateLimit) {\n return props.dateLimit;\n }\n return dayjs().toDate();\n});\n\n\n//Methods\nfunction updateValue(date: Date) {\n if (!props.isInline) {\n (divContainerRef?.value as HTMLElement)?.focus();\n }\n emit(\"updateDate\", date);\n emit(\"update:date\", date);\n}\n\nfunction formatDate(value: Date): string {\n const realMonth = value.getMonth() + 1;\n return (\n value.getDate() +\n \"/\" +\n (realMonth < 10 ? \"0\" : \"\") +\n realMonth +\n \"/\" +\n value.getFullYear()\n );\n}\n</script>\n<style lang=\"scss\">\n@use \"@vuepic/vue-datepicker/dist/main.css\";\n\n/* stylelint-disable-next-line */\n.dp__theme_light {\n --dp-primary-color: var(--octopus-primary);\n --dp-time-font-size: 1rem;\n}\n</style>\n","<template>\n <div ref=\"divContainer\" tabindex=\"0\">\n <label\n v-if=\"label && !range\"\n class=\"form-label\"\n :for=\"'dp-input-'+id\"\n :class=\"displayLabel ? '' : 'd-none'\"\n >\n {{ label }}\n </label>\n <VueDatePicker\n :uid=\"id\"\n :model-value=\"modelVal\"\n :time-picker=\"isTimePicker\"\n :time-picker-inline=\"isTimePicker && timePickerInline\"\n :input-class-name=\"templateClass\"\n :clearable=\"false\"\n :text-input=\"true\"\n :readonly=\"readonly\"\n :teleport=\"useTeleport\"\n :locale=\"locales[locale] ?? fr\"\n :format=\"format\"\n :auto-apply=\"true\"\n :enable-seconds=\"displaySeconds\"\n :max-date=\"isMaxDate && !isTimePicker ? limit : undefined\"\n :min-date=\"isMinDate && !isTimePicker ? limit : undefined\"\n :range=\"undefined !== range\"\n :multi-calendars=\"columnNumber > 1 ? columnNumber : false\"\n :inline=\"isInline\"\n :enable-time-picker=\"!isTimePicker ? displayTimePicker : undefined\"\n :aria-labels=\"ariaLabels\"\n :max-time=\"maxTime\"\n :month-picker=\"monthPicker\"\n :alt-position=\"customPosition\"\n @update:model-value=\"updateValue($event)\"\n >\n <template v-if=\"isTimePicker\" #input-icon>\n <ClockOutlineIcon :size=\"16\" class=\"ms-2\" />\n </template>\n </VueDatePicker>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClockOutlineIcon from \"vue-material-design-icons/ClockOutline.vue\";\nimport dayjs from \"dayjs\";\nimport { VueDatePicker } from \"@vuepic/vue-datepicker\";\nimport { computed, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { de, enUS, es, fr, it, sl } from \"date-fns/locale\";\n\nconst locales = { de, enUS, es, fr, it, sl };\n\n//Props \nconst props = defineProps({\n id:{ default: undefined, type: String },\n time: {\n default: undefined,\n type: Object as () => { hours: number; minutes: number; seconds: number },\n },\n date: { default: undefined, type: Date },\n range: { default: undefined, type: Array as () => Array<Date> },\n /**\n * Enable maximum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMaxDate: { default: false, type: Boolean },\n /** Date limit when `isMaxDate` or `isMinDate` are set */\n dateLimit: { default: undefined, type: Date },\n /**\n * Enable minimum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMinDate: { default: false, type: Boolean },\n columnNumber: { default: 1, type: Number },\n displaySeconds: { default: false, type: Boolean },\n displayTimePicker: { default: true, type: Boolean },\n isTimePicker: { default: false, type: Boolean },\n useTeleport: { default: false, type: Boolean },\n templateClass: { default: undefined, type: String },\n readonly: { default: false, type: Boolean },\n maxTime: {\n default: null,\n type: Object as () => {\n hours?: number | string;\n minutes?: number | string;\n seconds?: number | string;\n },\n },\n forceFormat: { default: undefined, type: String },\n monthPicker: { default: false, type: Boolean },\n customPosition: { default: null, type: Function },\n isInline: { default: false, type: Boolean },\n timePickerInline: { default: false, type: Boolean },\n label: { default: undefined, type: String },\n displayLabel: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits<{\n /**\n * Update the date\n * @param value The new date\n * @deprecated\n */\n (e: \"updateDate\", value: Date): void;\n /**\n * Update the date\n * @param value The new date\n */\n (e: \"update:date\", value: Date): void;\n}>();\n\n//Data\nconst divContainerRef = useTemplateRef('divContainer');\n\n//Composables\nconst { locale } = useI18n();\n\n//Computed\nconst ariaLabels = computed(() => {\n return {\n input: props.date ? formatDate(props.date) : undefined,\n day: (value: { value: Date }) => {\n return formatDate(value.value);\n },\n };\n});\nconst modelVal = computed(() => {\n if (props.time) {\n return props.time;\n }\n if (props.range) {\n return props.range;\n }\n if (props.date && props.monthPicker) {\n return {\n month: props.date.getMonth(),\n year: props.date.getFullYear(),\n };\n }\n return props.date;\n});\nconst format = computed(() => {\n if (props.forceFormat) {\n return props.forceFormat;\n }\n if (props.monthPicker) {\n return \"MM/yyyy\";\n }\n let timeString = \"\";\n if (props.displayTimePicker || props.isTimePicker) {\n timeString = \"HH:mm\";\n if (props.displaySeconds) {\n timeString = \"HH:mm:ss\";\n }\n }\n const dayString = props.isTimePicker\n ? timeString\n : \"dd/MM/yyyy \" + timeString;\n return props.range ? dayString + \" - \" + dayString : dayString;\n});\nconst limit = computed(() => {\n if (props.dateLimit) {\n return props.dateLimit;\n }\n return dayjs().toDate();\n});\n\n\n//Methods\nfunction updateValue(date: Date) {\n if (!props.isInline) {\n (divContainerRef?.value as HTMLElement)?.focus();\n }\n emit(\"updateDate\", date);\n emit(\"update:date\", date);\n}\n\nfunction formatDate(value: Date): string {\n const realMonth = value.getMonth() + 1;\n return (\n value.getDate() +\n \"/\" +\n (realMonth < 10 ? \"0\" : \"\") +\n realMonth +\n \"/\" +\n value.getFullYear()\n );\n}\n</script>\n<style lang=\"scss\">\n@use \"@vuepic/vue-datepicker/dist/main.css\";\n\n/* stylelint-disable-next-line */\n.dp__theme_light {\n --dp-primary-color: var(--octopus-primary);\n --dp-time-font-size: 1rem;\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassicDatePicker-dgdGXcRk.mjs","names":["_openBlock","_createElementBlock","_normalizeClass","_toDisplayString","_createCommentVNode","_createVNode","_createSlots","_withCtx","_sfc_main"],"sources":["../src/components/form/ClassicDatePicker.vue","../src/components/form/ClassicDatePicker.vue"],"sourcesContent":["<template>\n <div ref=\"divContainer\" tabindex=\"0\">\n <label\n v-if=\"label && !range\"\n class=\"form-label\"\n :for=\"'dp-input-'+id\"\n :class=\"displayLabel ? '' : 'd-none'\"\n >\n {{ label }}\n </label>\n <VueDatePicker\n :model-value=\"modelVal\"\n :time-picker=\"isTimePicker\"\n :time-config=\"timeConfig\"\n :ui=\"{ input: templateClass }\"\n :input-attrs=\"{ clearable: false, id: 'dp-input-' + id }\"\n :text-input=\"true\"\n :readonly=\"readonly\"\n :teleport=\"useTeleport\"\n :locale=\"getLocale(locale)\"\n :formats=\"{ input: format }\"\n :auto-apply=\"true\"\n :max-date=\"isMaxDate && !isTimePicker ? limit : undefined\"\n :min-date=\"isMinDate && !isTimePicker ? limit : undefined\"\n :range=\"undefined !== range\"\n :multi-calendars=\"columnNumber > 1 ? columnNumber : false\"\n :inline=\"isInline\"\n :aria-labels=\"ariaLabels\"\n :max-time=\"maxTime\"\n :month-picker=\"monthPicker\"\n @update:model-value=\"updateValue($event)\"\n >\n <template v-if=\"isTimePicker\" #input-icon>\n <ClockOutlineIcon :size=\"16\" class=\"ms-2\" />\n </template>\n </VueDatePicker>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClockOutlineIcon from \"vue-material-design-icons/ClockOutline.vue\";\nimport dayjs from \"dayjs\";\nimport { VueDatePicker } from \"@vuepic/vue-datepicker\";\nimport { computed, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { getLocale } from \"@/i18n\";\n\n//Props \nconst props = defineProps({\n id:{ default: undefined, type: String },\n time: {\n default: undefined,\n type: Object as () => { hours: number; minutes: number; seconds: number },\n },\n date: { default: undefined, type: Date },\n range: { default: undefined, type: Array as () => Array<Date> },\n /**\n * Enable maximum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMaxDate: { default: false, type: Boolean },\n /** Date limit when `isMaxDate` or `isMinDate` are set */\n dateLimit: { default: undefined, type: Date },\n /**\n * Enable minimum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMinDate: { default: false, type: Boolean },\n columnNumber: { default: 1, type: Number },\n displaySeconds: { default: false, type: Boolean },\n displayTimePicker: { default: true, type: Boolean },\n isTimePicker: { default: false, type: Boolean },\n useTeleport: { default: false, type: Boolean },\n templateClass: { default: undefined, type: String },\n readonly: { default: false, type: Boolean },\n maxTime: {\n default: null,\n type: Object as () => {\n hours: number | string;\n minutes: number | string;\n seconds?: number | string;\n },\n },\n forceFormat: { default: undefined, type: String },\n monthPicker: { default: false, type: Boolean },\n /** @deprecated No longer supported since vue-datepicker v14 */\n customPosition: { default: null, type: Function },\n isInline: { default: false, type: Boolean },\n timePickerInline: { default: false, type: Boolean },\n label: { default: undefined, type: String },\n displayLabel: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits<{\n /**\n * Update the date\n * @param value The new date\n * @deprecated\n */\n (e: \"updateDate\", value: Date): void;\n /**\n * Update the date\n * @param value The new date\n */\n (e: \"update:date\", value: Date): void;\n}>();\n\n//Data\nconst divContainerRef = useTemplateRef('divContainer');\n\n//Composables\nconst { locale } = useI18n();\n\n//Computed\nconst ariaLabels = computed(() => {\n return {\n input: props.date ? formatDate(props.date) : undefined,\n day: (value: { value: Date }) => {\n return formatDate(value.value);\n },\n };\n});\nconst modelVal = computed(() => {\n if (props.time) {\n return props.time;\n }\n if (props.range) {\n return props.range;\n }\n if (props.date && props.monthPicker) {\n return {\n month: props.date.getMonth(),\n year: props.date.getFullYear(),\n };\n }\n return props.date;\n});\nconst format = computed(() => {\n if (props.forceFormat) {\n return props.forceFormat;\n }\n if (props.monthPicker) {\n return \"MM/yyyy\";\n }\n let timeString = \"\";\n if (props.displayTimePicker || props.isTimePicker) {\n timeString = \"HH:mm\";\n if (props.displaySeconds) {\n timeString = \"HH:mm:ss\";\n }\n }\n const dayString = props.isTimePicker\n ? timeString\n : \"dd/MM/yyyy \" + timeString;\n return props.range ? dayString + \" - \" + dayString : dayString;\n});\nconst timeConfig = computed(() => {\n return {\n enableSeconds: props.displaySeconds,\n timePickerInline: props.isTimePicker && props.timePickerInline,\n ...(!props.isTimePicker && { enableTimePicker: props.displayTimePicker })\n };\n});\nconst limit = computed(() => {\n if (props.dateLimit) {\n return props.dateLimit;\n }\n return dayjs().toDate();\n});\n\n\n//Methods\nfunction updateValue(date: Date) {\n if (!props.isInline) {\n (divContainerRef?.value as HTMLElement)?.focus();\n }\n emit(\"updateDate\", date);\n emit(\"update:date\", date);\n}\n\nfunction formatDate(value: Date): string {\n const realMonth = value.getMonth() + 1;\n return (\n value.getDate() +\n \"/\" +\n (realMonth < 10 ? \"0\" : \"\") +\n realMonth +\n \"/\" +\n value.getFullYear()\n );\n}\n</script>\n<style lang=\"scss\">\n@use \"@vuepic/vue-datepicker/dist/main.css\";\n\n/* stylelint-disable-next-line */\n.dp--theme-light {\n --dp-primary-color: var(--octopus-primary);\n --dp-time-font-size: 1rem;\n}\n</style>\n","<template>\n <div ref=\"divContainer\" tabindex=\"0\">\n <label\n v-if=\"label && !range\"\n class=\"form-label\"\n :for=\"'dp-input-'+id\"\n :class=\"displayLabel ? '' : 'd-none'\"\n >\n {{ label }}\n </label>\n <VueDatePicker\n :model-value=\"modelVal\"\n :time-picker=\"isTimePicker\"\n :time-config=\"timeConfig\"\n :ui=\"{ input: templateClass }\"\n :input-attrs=\"{ clearable: false, id: 'dp-input-' + id }\"\n :text-input=\"true\"\n :readonly=\"readonly\"\n :teleport=\"useTeleport\"\n :locale=\"getLocale(locale)\"\n :formats=\"{ input: format }\"\n :auto-apply=\"true\"\n :max-date=\"isMaxDate && !isTimePicker ? limit : undefined\"\n :min-date=\"isMinDate && !isTimePicker ? limit : undefined\"\n :range=\"undefined !== range\"\n :multi-calendars=\"columnNumber > 1 ? columnNumber : false\"\n :inline=\"isInline\"\n :aria-labels=\"ariaLabels\"\n :max-time=\"maxTime\"\n :month-picker=\"monthPicker\"\n @update:model-value=\"updateValue($event)\"\n >\n <template v-if=\"isTimePicker\" #input-icon>\n <ClockOutlineIcon :size=\"16\" class=\"ms-2\" />\n </template>\n </VueDatePicker>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClockOutlineIcon from \"vue-material-design-icons/ClockOutline.vue\";\nimport dayjs from \"dayjs\";\nimport { VueDatePicker } from \"@vuepic/vue-datepicker\";\nimport { computed, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { getLocale } from \"@/i18n\";\n\n//Props \nconst props = defineProps({\n id:{ default: undefined, type: String },\n time: {\n default: undefined,\n type: Object as () => { hours: number; minutes: number; seconds: number },\n },\n date: { default: undefined, type: Date },\n range: { default: undefined, type: Array as () => Array<Date> },\n /**\n * Enable maximum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMaxDate: { default: false, type: Boolean },\n /** Date limit when `isMaxDate` or `isMinDate` are set */\n dateLimit: { default: undefined, type: Date },\n /**\n * Enable minimum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMinDate: { default: false, type: Boolean },\n columnNumber: { default: 1, type: Number },\n displaySeconds: { default: false, type: Boolean },\n displayTimePicker: { default: true, type: Boolean },\n isTimePicker: { default: false, type: Boolean },\n useTeleport: { default: false, type: Boolean },\n templateClass: { default: undefined, type: String },\n readonly: { default: false, type: Boolean },\n maxTime: {\n default: null,\n type: Object as () => {\n hours: number | string;\n minutes: number | string;\n seconds?: number | string;\n },\n },\n forceFormat: { default: undefined, type: String },\n monthPicker: { default: false, type: Boolean },\n /** @deprecated No longer supported since vue-datepicker v14 */\n customPosition: { default: null, type: Function },\n isInline: { default: false, type: Boolean },\n timePickerInline: { default: false, type: Boolean },\n label: { default: undefined, type: String },\n displayLabel: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits<{\n /**\n * Update the date\n * @param value The new date\n * @deprecated\n */\n (e: \"updateDate\", value: Date): void;\n /**\n * Update the date\n * @param value The new date\n */\n (e: \"update:date\", value: Date): void;\n}>();\n\n//Data\nconst divContainerRef = useTemplateRef('divContainer');\n\n//Composables\nconst { locale } = useI18n();\n\n//Computed\nconst ariaLabels = computed(() => {\n return {\n input: props.date ? formatDate(props.date) : undefined,\n day: (value: { value: Date }) => {\n return formatDate(value.value);\n },\n };\n});\nconst modelVal = computed(() => {\n if (props.time) {\n return props.time;\n }\n if (props.range) {\n return props.range;\n }\n if (props.date && props.monthPicker) {\n return {\n month: props.date.getMonth(),\n year: props.date.getFullYear(),\n };\n }\n return props.date;\n});\nconst format = computed(() => {\n if (props.forceFormat) {\n return props.forceFormat;\n }\n if (props.monthPicker) {\n return \"MM/yyyy\";\n }\n let timeString = \"\";\n if (props.displayTimePicker || props.isTimePicker) {\n timeString = \"HH:mm\";\n if (props.displaySeconds) {\n timeString = \"HH:mm:ss\";\n }\n }\n const dayString = props.isTimePicker\n ? timeString\n : \"dd/MM/yyyy \" + timeString;\n return props.range ? dayString + \" - \" + dayString : dayString;\n});\nconst timeConfig = computed(() => {\n return {\n enableSeconds: props.displaySeconds,\n timePickerInline: props.isTimePicker && props.timePickerInline,\n ...(!props.isTimePicker && { enableTimePicker: props.displayTimePicker })\n };\n});\nconst limit = computed(() => {\n if (props.dateLimit) {\n return props.dateLimit;\n }\n return dayjs().toDate();\n});\n\n\n//Methods\nfunction updateValue(date: Date) {\n if (!props.isInline) {\n (divContainerRef?.value as HTMLElement)?.focus();\n }\n emit(\"updateDate\", date);\n emit(\"update:date\", date);\n}\n\nfunction formatDate(value: Date): string {\n const realMonth = value.getMonth() + 1;\n return (\n value.getDate() +\n \"/\" +\n (realMonth < 10 ? \"0\" : \"\") +\n realMonth +\n \"/\" +\n value.getFullYear()\n );\n}\n</script>\n<style lang=\"scss\">\n@use \"@vuepic/vue-datepicker/dist/main.css\";\n\n/* stylelint-disable-next-line */\n.dp--theme-light {\n --dp-primary-color: var(--octopus-primary);\n --dp-time-font-size: 1rem;\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as e } from "./useResizePhone-4hSkK5pa.mjs";
|
|
2
|
-
import { t } from "./ClassicPopover-
|
|
2
|
+
import { t } from "./ClassicPopover-BUb-1WMB.mjs";
|
|
3
3
|
import { createCommentVNode as n, createElementBlock as r, createElementVNode as i, createVNode as a, defineComponent as o, openBlock as s, unref as c, withCtx as l } from "vue";
|
|
4
4
|
import { useI18n as u } from "vue-i18n";
|
|
5
5
|
import d from "vue-material-design-icons/EmoticonExcitedOutline.vue";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassicEmojiPicker-CJZD8H7L.mjs","names":["_openBlock","_createElementBlock","_createElementVNode","_createVNode","_withCtx","_createCommentVNode","_sfc_main"],"sources":["../src/components/form/ClassicEmojiPicker.vue","../src/components/form/ClassicEmojiPicker.vue"],"sourcesContent":["<template>\n <div v-if=\"!isPhone\" class=\"classic-emoji-picker\">\n <button\n :id=\"'emoji-picker-dropdown'+id\"\n ref=\"emojiButton\"\n class=\"btn btn-transparent d-flex align-items-center justify-content-center\"\n :title=\"t('Pick your emoji')\"\n >\n <EmoticonExcitedOutlineIcon :size=\"34\" />\n </button>\n <ClassicPopover\n :target=\"'emoji-picker-dropdown'+id\"\n :only-click=\"true\"\n :is-fixed=\"true\"\n :is-top-layer=\"isTopPosition\"\n :top-pos=\"isTopPosition\"\n :relative-class=\"popoverRelativeClass\"\n :popover-class=\"isTopPosition?'popover-z-index':''\"\n >\n <Picker\n :data=\"emojiIndex\"\n :title=\"t('Pick your emoji')\"\n emoji=\"point_up\"\n @select=\"emit('emojiSelected', $event.native)\"\n />\n </ClassicPopover>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {useResizePhone} from \"../composable/useResizePhone\";\nimport EmoticonExcitedOutlineIcon from \"vue-material-design-icons/EmoticonExcitedOutline.vue\";\nimport ClassicPopover from \"../misc/ClassicPopover.vue\";\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nimport \"emoji-mart-vue-fast/css/emoji-mart.css\";\nimport { Picker, EmojiIndex } from \"emoji-mart-vue-fast/src\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n popoverRelativeClass: { default: undefined, type: String },\n isTopPosition: { default: false, type: Boolean },\n id: { default: \"\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"emojiSelected\"]);\n\n//Data \nconst emojiIndex = new EmojiIndex(data);\n\n//Composables\nconst { t } = useI18n();\nconst { isPhone } = useResizePhone();\n</script>\n\n","<template>\n <div v-if=\"!isPhone\" class=\"classic-emoji-picker\">\n <button\n :id=\"'emoji-picker-dropdown'+id\"\n ref=\"emojiButton\"\n class=\"btn btn-transparent d-flex align-items-center justify-content-center\"\n :title=\"t('Pick your emoji')\"\n >\n <EmoticonExcitedOutlineIcon :size=\"34\" />\n </button>\n <ClassicPopover\n :target=\"'emoji-picker-dropdown'+id\"\n :only-click=\"true\"\n :is-fixed=\"true\"\n :is-top-layer=\"isTopPosition\"\n :top-pos=\"isTopPosition\"\n :relative-class=\"popoverRelativeClass\"\n :popover-class=\"isTopPosition?'popover-z-index':''\"\n >\n <Picker\n :data=\"emojiIndex\"\n :title=\"t('Pick your emoji')\"\n emoji=\"point_up\"\n @select=\"emit('emojiSelected', $event.native)\"\n />\n </ClassicPopover>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {useResizePhone} from \"../composable/useResizePhone\";\nimport EmoticonExcitedOutlineIcon from \"vue-material-design-icons/EmoticonExcitedOutline.vue\";\nimport ClassicPopover from \"../misc/ClassicPopover.vue\";\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nimport \"emoji-mart-vue-fast/css/emoji-mart.css\";\nimport { Picker, EmojiIndex } from \"emoji-mart-vue-fast/src\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n popoverRelativeClass: { default: undefined, type: String },\n isTopPosition: { default: false, type: Boolean },\n id: { default: \"\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"emojiSelected\"]);\n\n//Data \nconst emojiIndex = new EmojiIndex(data);\n\n//Composables\nconst { t } = useI18n();\nconst { isPhone } = useResizePhone();\n</script>\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8CA,MAAM,OAAO;EAGb,MAAM,aAAa,IAAI,WAAW,IAAI;EAGtC,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,YAAY,eAAe;;;;;;;;;;;;;;;;;;;;;;;CCpDZ,OAAM;;;;CAAf,OAAA,CAAA,OAAA,WAAZA,UAAA,GAAAC,mBAyBM,OAzBN,YAyBM,CAxBJC,mBAOS,UAAA;EANN,IAAE,0BAA0B,OAAA;EAC7B,KAAI;EACJ,OAAM;EACL,OAAO,OAAA,EAAC,iBAAA;CAET,GAAA,CAAAC,YAAyC,OAAA,+BAAA,EAAZ,MAAM,GAAE,CAAA,CAAA,GAAA,GAAA,UAAA,GAEvCA,YAeiB,OAAA,mBAAA;EAdd,QAAM,0BAA0B,OAAA;EAChC,cAAY;EACZ,YAAU;EACV,gBAAc,OAAA;EACd,WAAS,OAAA;EACT,kBAAgB,OAAA;EAChB,iBAAe,OAAA,gBAAa,oBAAA;;EAE7B,SAAAC,cAKE,CALFD,YAKE,OAAA,WAAA;GAJC,MAAM,OAAA;GACN,OAAO,OAAA,EAAC,iBAAA;GACT,OAAM;GACL,UAAM,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,KAAI,iBAAkB,OAAO,MAAM"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./rolldown-runtime-Dy4uBu1J.mjs";
|
|
2
2
|
import { t } from "./_plugin-vue_export-helper-B3ysoDQm.mjs";
|
|
3
|
-
import { t as n } from "./ClassicPopover-
|
|
3
|
+
import { t as n } from "./ClassicPopover-BUb-1WMB.mjs";
|
|
4
4
|
import { computed as r, createElementBlock as i, createElementVNode as a, createVNode as o, defineComponent as s, getCurrentInstance as c, openBlock as l, renderSlot as u, withCtx as d } from "vue";
|
|
5
5
|
import f from "vue-material-design-icons/HelpCircle.vue";
|
|
6
6
|
//#region src/components/misc/ClassicHelpButton.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassicHelpButton-Qb4AwvWI.mjs","names":["_openBlock","_createElementBlock","_createCommentVNode","_createVNode","_withCtx","_createElementVNode","_renderSlot","_sfc_main"],"sources":["../src/components/misc/ClassicHelpButton.vue","../src/components/misc/ClassicHelpButton.vue"],"sourcesContent":["<!--\n A simple component to display a help button that shows its message when\n hovered.\n\n Usage: \n <ClassicHelpButton>This is my help message</ClassicHelpButton>\n-->\n<template>\n <button\n :id=\"computedId\"\n class=\"btn-transparent\"\n >\n <!-- Button icon -->\n <HelpCircleIcon :fill-color=\"color\" :size=\"iconSize\" />\n\n <!-- Tooltip -->\n <ClassicPopover\n :target=\"computedId\"\n popover-class=\"help-popover\"\n :relative-class=\"inModal ? 'octopus-modal' : relativeClass\"\n >\n <div class=\"content\">\n <slot />\n </div>\n </ClassicPopover>\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, getCurrentInstance } from 'vue';\n\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nimport ClassicPopover from './ClassicPopover.vue';\n\nconst { colored, small } = defineProps<{\n colored?: boolean;\n /** Automatically sets relative class to octopus-modal */\n inModal?: boolean;\n /** Make the popover relative (userful when in page-element) */\n relativeClass?: string;\n /** Make the icon smaller if true *(default: false)* */\n small?: boolean;\n}>();\n\n/** The color to use for the icon */\nconst color = computed(() => {\n if (colored) {\n return \"var(--octopus-primary-darker)\";\n } else {\n return \"black\";\n }\n});\n\n/** The internal ID for the elements */\nconst computedId = computed(() => {\n return 'popover-' + getCurrentInstance()?.uid;\n});\n\n/** The size of the icon, according to the props */\nconst iconSize = computed(() => {\n if (small) {\n return 24;\n } else {\n return 30;\n }\n});\n</script>\n\n<style lang=\"scss\" scoped>\n.content {\n font: revert;\n font-size: 18px !important;\n text-align: start;\n}\n\n.help-popover {\n background-color: var(--octopus-secondary-lighter);\n max-width: 60%;\n}\n</style>\n","<!--\n A simple component to display a help button that shows its message when\n hovered.\n\n Usage: \n <ClassicHelpButton>This is my help message</ClassicHelpButton>\n-->\n<template>\n <button\n :id=\"computedId\"\n class=\"btn-transparent\"\n >\n <!-- Button icon -->\n <HelpCircleIcon :fill-color=\"color\" :size=\"iconSize\" />\n\n <!-- Tooltip -->\n <ClassicPopover\n :target=\"computedId\"\n popover-class=\"help-popover\"\n :relative-class=\"inModal ? 'octopus-modal' : relativeClass\"\n >\n <div class=\"content\">\n <slot />\n </div>\n </ClassicPopover>\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, getCurrentInstance } from 'vue';\n\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nimport ClassicPopover from './ClassicPopover.vue';\n\nconst { colored, small } = defineProps<{\n colored?: boolean;\n /** Automatically sets relative class to octopus-modal */\n inModal?: boolean;\n /** Make the popover relative (userful when in page-element) */\n relativeClass?: string;\n /** Make the icon smaller if true *(default: false)* */\n small?: boolean;\n}>();\n\n/** The color to use for the icon */\nconst color = computed(() => {\n if (colored) {\n return \"var(--octopus-primary-darker)\";\n } else {\n return \"black\";\n }\n});\n\n/** The internal ID for the elements */\nconst computedId = computed(() => {\n return 'popover-' + getCurrentInstance()?.uid;\n});\n\n/** The size of the icon, according to the props */\nconst iconSize = computed(() => {\n if (small) {\n return 24;\n } else {\n return 30;\n }\n});\n</script>\n\n<style lang=\"scss\" scoped>\n.content {\n font: revert;\n font-size: 18px !important;\n text-align: start;\n}\n\n.help-popover {\n background-color: var(--octopus-secondary-lighter);\n max-width: 60%;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6Cc,OAAA,eAAe;IACzB,IAAI,QAAA,SACA,OAAO;SAEP,OAAO;GAEf,CAAA;GAGmB,YAAA,eAAe;IAC9B,OAAO,aAAa,mBAAmB,CAAC,EAAE;GAC9C,CAAA;GAGiB,UAAA,eAAe;IAC5B,IAAI,QAAA,OACA,OAAO;SAEP,OAAO;GAEf,CAAA;;;;;;;;;;;;;;;AC5CiB,IAAA,aAAA,EAAA,OAAM,UAAS;;CAb5B,OAAAA,UAAA,GAAAC,mBAiBS,UAAA;EAhBJ,IAAI,OAAA;EACL,OAAM;;EAENC,mBAAA,eAAA;EACAC,YAAuD,OAAA,mBAAA;GAAtC,cAAY,OAAA;GAAQ,MAAM,OAAA;;EAE3CD,mBAAA,WAAA;EACAC,YAQiB,OAAA,mBAAA;GAPZ,QAAQ,OAAA;GACT,iBAAc;GACb,kBAAgB,OAAA,UAAO,kBAAqB,OAAA;;GAE7C,SAAAC,cAEM,CAFNC,mBAEM,OAFN,YAEM,CADFC,WAAQ,KAAA,QAAA,WAAA,CAAA,GAAA,KAAA,GAAA,IAAA,CAAA,CAAA,CAAA,CAAA"}
|
|
@@ -158,7 +158,7 @@ var ee = { class: "d-flex align-items-center" }, j = ["id", "title"], M = ["inne
|
|
|
158
158
|
"blur"
|
|
159
159
|
],
|
|
160
160
|
setup(e, { emit: u }) {
|
|
161
|
-
let z = l(() => import("./ClassicPopover-
|
|
161
|
+
let z = l(() => import("./ClassicPopover-BUb-1WMB.mjs").then((e) => e.n)), B = l(() => import("./ClassicWysiwyg-cp3PQYAd.mjs")), V = l(() => import("./ClassicEmojiPicker-C0gm-DA2.mjs")), H = e, U = u, W = g(void 0), G = x("focusElement"), { t: K } = O(), q = n(() => H.inputId || "input-" + d()?.uid), J = n(() => !X.value || !Z.value || !Q.value), Y = n(() => W.value ? W.value.length : 0), X = n(() => H.canBeNull ? !0 : W.value ? W.value.trim().length !== 0 : !1), Z = n(() => H.maxLength === 0 || H.maxLength >= Y.value), Q = n(() => H.regex === void 0 ? !0 : !W.value || W.value === "" ? H.canBeNull : W.value.match(H.regex) !== null);
|
|
162
162
|
T(() => H.forceReload, () => {
|
|
163
163
|
H.textInit !== W.value && (W.value = H.textInit);
|
|
164
164
|
}), T(J, () => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassicInputText-npkVSUoH.mjs","names":["_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot","_createBlock","_resolveDynamicComponent","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","_Fragment","_createVNode","_withDirectives","_vShow","_vModelDynamic","_vModelText","_sfc_main"],"sources":["../src/components/form/ClassicInputText.vue","../src/components/form/ClassicInputText.vue"],"sourcesContent":["<template>\n <div\n class=\"d-flex flex-column classic-input-text\"\n :class=\"{ 'form-margin': displayLabel }\"\n >\n <div class=\"d-flex align-items-center\">\n <slot name=\"complementLabel\" />\n <component\n :is=\"isWysiwyg? 'div': 'label'\"\n :class=\"[classLabel, displayLabel ? '' : 'd-none']\"\n :for=\"isWysiwyg ? '': computedInputId\"\n >\n {{ label }}\n <AsteriskIcon\n v-if=\"displayRequired\"\n :size=\"10\"\n class=\"ms-1 mb-2\"\n :title=\"t('Mandatory input')\"\n />\n </component>\n <slot name=\"afterTitle\" />\n <template v-if=\"popover\">\n <button\n :id=\"'popover' + computedInputId\"\n :title=\"t('Help')\"\n class=\"btn-transparent\"\n >\n <HelpCircleIcon :size=\"30\" />\n </button>\n\n <ClassicPopover\n :target=\"'popover' + computedInputId\"\n popover-class=\"popover-z-index\"\n :relative-class=\"popoverRelativeClass\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div v-html=\"popover\" />\n <!-- eslint-enable -->\n </ClassicPopover>\n </template>\n <slot name=\"afterHelp\" />\n </div>\n <slot name=\"betweenTitleInput\" />\n <input\n v-if=\"!isWysiwyg && !isTextarea\"\n v-show=\"showField\"\n :id=\"computedInputId\"\n ref=\"focusElement\"\n v-model=\"textValue\"\n :type=\"typeInput\"\n class=\"form-input\"\n :placeholder=\"placeholder\"\n :data-selenium=\"dataSelenium\"\n :data-value=\"textValue\"\n :maxlength=\"inputMaxLengthField\"\n :readonly=\"readonly ? 'readonly' : undefined\"\n :class=\"{\n 'border border-danger':\n forceError || (isError && (undefined !== textValue || canBeNull)),\n }\"\n :disabled=\"isDisable || disabled\"\n :required=\"!canBeNull\"\n :aria-required=\"!canBeNull\"\n :autocomplete=\"autocompleteType\"\n @blur=\"emit('blur')\"\n >\n <textarea\n v-else-if=\"isTextarea\"\n v-show=\"showField\"\n :id=\"computedInputId\"\n ref=\"focusElement\"\n v-model=\"textValue\"\n :data-selenium=\"dataSelenium\"\n :placeholder=\"placeholder\"\n :readonly=\"readonly ? 'readonly' : undefined\"\n class=\"form-input\"\n :class=\"{\n 'border border-danger':\n forceError || (isError && (undefined !== textValue || canBeNull)),\n }\"\n :disabled=\"isDisable || disabled\"\n :required=\"!canBeNull\"\n />\n <ClassicWysiwyg\n v-else\n v-show=\"showField\"\n v-model:content=\"textValue\"\n :error-description=\"\n forceError || (isError && (undefined !== textValue || canBeNull))\n \"\n :is-disabled=\"isDisable || disabled\"\n />\n <div class=\"d-flex\">\n <ClassicEmojiPicker\n v-if=\"isEmojiPicker\"\n :popover-relative-class=\"popoverRelativeClass\"\n :is-top-position=\"true\"\n @emoji-selected=\"addEmojiSelected\"\n />\n <div\n v-if=\"isWysiwyg\"\n class=\"h6\"\n >\n {{ t(\"Characters number calculated over HTML code\") }}\n </div>\n <div\n v-else-if=\"'' !== indicText\"\n class=\"text-indic\"\n >\n {{ indicText }}\n </div>\n <div\n v-else-if=\"\n forceError || (isError && (undefined !== textValue || canBeNull))\n \"\n class=\"text-danger\"\n >\n {{ errorText }}\n </div>\n <p\n v-if=\"0 !== maxLength && showField\"\n class=\"counter-align-right\"\n :class=\"{ 'text-danger': !valueLengthValid }\"\n >\n {{ countValue + \" / \" + maxLength }}\n </p>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AsteriskIcon from \"vue-material-design-icons/Asterisk.vue\";\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nimport { computed, defineAsyncComponent, onMounted, onUnmounted, Ref, ref, useTemplateRef, watch, getCurrentInstance } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ClassicPopover = defineAsyncComponent(\n () => import(\"../misc/ClassicPopover.vue\"),\n);\nconst ClassicWysiwyg = defineAsyncComponent(\n () => import(\"./ClassicWysiwyg.vue\"),\n);\nconst ClassicEmojiPicker = defineAsyncComponent(\n () => import(\"./ClassicEmojiPicker.vue\"),\n);\n\n//Props \nconst props = defineProps({\n inputId: { default: \"\", type: String },\n label: { default: \"\", type: String },\n /** The input's value */\n textInit: { default: undefined, type: String },\n maxLength: { default: 0, type: Number },\n errorText: { default: \"\", type: String },\n isTextarea: { default: false, type: Boolean },\n isWysiwyg: { default: false, type: Boolean },\n /** A regex checked against the input, if the input doesn't match mark it with error */\n regex: { default: undefined, type: RegExp },\n canBeNull: { default: false, type: Boolean },\n inputMaxLengthField: { default: undefined, type: Number },\n errorVariable: { default: true, type: Boolean },\n /**\n * Disable the text input\n * @deprecated Use `disabled` instead\n */\n isDisable: { default: false, type: Boolean },\n /**\n * Disable the text input\n */\n disabled: { default: false, type: Boolean },\n indicText: { default: \"\", type: String },\n dataSelenium: { default: \"\", type: String },\n placeholder: { default: \"\", type: String },\n popover: { default: undefined, type: String },\n /**\n * Display content but do not allow changes\n */\n readonly: { default: false, type: Boolean },\n forceError: { default: false, type: Boolean },\n displayLabel: { default: true, type: Boolean },\n focus: { default: false, type: Boolean },\n isEmojiPicker: { default: false, type: Boolean },\n popoverRelativeClass: { default: undefined, type: String },\n forceReload: { default: false, type: Boolean },\n typeInput: { default: \"text\", type: String },\n displayRequired: { default: false, type: Boolean },\n classLabel: { default: \"form-label\", type: String },\n showField: { default: true, type: Boolean },\n autocompleteType: { default: \"off\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"update:textInit\", \"update:errorVariable\", \"blur\"]);\n\n//Data \nconst textValue : Ref<string | undefined>= ref(undefined);\nconst focusElementRef = useTemplateRef('focusElement');\n\n//Composables \nconst { t } = useI18n();\n\n//Computed\nconst computedInputId = computed(() => props.inputId || 'input-' + getCurrentInstance()?.uid);\nconst isError = computed(() => !valueTrimValid.value || !valueLengthValid.value || !valueRegexValid.value);\nconst countValue = computed(() => {\n if (textValue.value) {\n return textValue.value.length;\n }\n return 0;\n});\nconst valueTrimValid = computed(() => {\n if (!props.canBeNull) {\n if (!textValue.value) {\n return false;\n }\n return 0 !== textValue.value.trim().length;\n }\n return true;\n});\nconst valueLengthValid = computed(() => {\n if (0 === props.maxLength) {\n return true;\n }\n return props.maxLength >= countValue.value;\n});\nconst valueRegexValid = computed(() => {\n if (props.regex === undefined) {\n return true;\n }\n if (!textValue.value || \"\" === textValue.value) {\n return props.canBeNull;\n }\n return textValue.value.match(props.regex) !== null;\n});\n \n//Watch\nwatch(()=>props.forceReload, () => {\n if (props.textInit !== textValue.value) {\n textValue.value = props.textInit;\n }\n});\nwatch(isError, () => {\n emit(\"update:errorVariable\", isError.value);\n});\nwatch(textValue, () => {\n if (props.textInit !== textValue.value) {\n emit(\"update:textInit\", textValue.value);\n }\n});\nwatch(()=>props.textInit, () => {\n if (props.textInit !== textValue.value) {\n textValue.value = props.textInit;\n }\n});\n\n\nonMounted(()=>{\n if (props.focus) {\n (focusElementRef?.value as HTMLElement)?.focus();\n }\n textValue.value = props.textInit;\n if (props.errorVariable !== isError.value) {\n emit(\"update:errorVariable\", isError.value);\n }\n\n if (props.isTextarea) {\n // Delay a scroll back to the top of the text area\n scrollTimer = setTimeout(() => {\n const textArea = document.getElementById(computedInputId.value);\n if (textArea) {\n textArea.scrollTop = 0;\n }\n }, 100);\n }\n});\n\nlet scrollTimer: ReturnType<typeof setTimeout> | undefined;\nonUnmounted(() => {\n clearTimeout(scrollTimer);\n});\n \n//Methods\nfunction addEmojiSelected(emoji: string) {\n textValue.value = (textValue.value ?? \"\") + emoji;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app .classic-input-text {\n .text-indic {\n font-style: italic;\n font-size: 0.7rem;\n color: var(--octopus-gray-text);\n }\n\n textarea {\n height: auto;\n min-height: 120px;\n }\n}\n</style>\n","<template>\n <div\n class=\"d-flex flex-column classic-input-text\"\n :class=\"{ 'form-margin': displayLabel }\"\n >\n <div class=\"d-flex align-items-center\">\n <slot name=\"complementLabel\" />\n <component\n :is=\"isWysiwyg? 'div': 'label'\"\n :class=\"[classLabel, displayLabel ? '' : 'd-none']\"\n :for=\"isWysiwyg ? '': computedInputId\"\n >\n {{ label }}\n <AsteriskIcon\n v-if=\"displayRequired\"\n :size=\"10\"\n class=\"ms-1 mb-2\"\n :title=\"t('Mandatory input')\"\n />\n </component>\n <slot name=\"afterTitle\" />\n <template v-if=\"popover\">\n <button\n :id=\"'popover' + computedInputId\"\n :title=\"t('Help')\"\n class=\"btn-transparent\"\n >\n <HelpCircleIcon :size=\"30\" />\n </button>\n\n <ClassicPopover\n :target=\"'popover' + computedInputId\"\n popover-class=\"popover-z-index\"\n :relative-class=\"popoverRelativeClass\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div v-html=\"popover\" />\n <!-- eslint-enable -->\n </ClassicPopover>\n </template>\n <slot name=\"afterHelp\" />\n </div>\n <slot name=\"betweenTitleInput\" />\n <input\n v-if=\"!isWysiwyg && !isTextarea\"\n v-show=\"showField\"\n :id=\"computedInputId\"\n ref=\"focusElement\"\n v-model=\"textValue\"\n :type=\"typeInput\"\n class=\"form-input\"\n :placeholder=\"placeholder\"\n :data-selenium=\"dataSelenium\"\n :data-value=\"textValue\"\n :maxlength=\"inputMaxLengthField\"\n :readonly=\"readonly ? 'readonly' : undefined\"\n :class=\"{\n 'border border-danger':\n forceError || (isError && (undefined !== textValue || canBeNull)),\n }\"\n :disabled=\"isDisable || disabled\"\n :required=\"!canBeNull\"\n :aria-required=\"!canBeNull\"\n :autocomplete=\"autocompleteType\"\n @blur=\"emit('blur')\"\n >\n <textarea\n v-else-if=\"isTextarea\"\n v-show=\"showField\"\n :id=\"computedInputId\"\n ref=\"focusElement\"\n v-model=\"textValue\"\n :data-selenium=\"dataSelenium\"\n :placeholder=\"placeholder\"\n :readonly=\"readonly ? 'readonly' : undefined\"\n class=\"form-input\"\n :class=\"{\n 'border border-danger':\n forceError || (isError && (undefined !== textValue || canBeNull)),\n }\"\n :disabled=\"isDisable || disabled\"\n :required=\"!canBeNull\"\n />\n <ClassicWysiwyg\n v-else\n v-show=\"showField\"\n v-model:content=\"textValue\"\n :error-description=\"\n forceError || (isError && (undefined !== textValue || canBeNull))\n \"\n :is-disabled=\"isDisable || disabled\"\n />\n <div class=\"d-flex\">\n <ClassicEmojiPicker\n v-if=\"isEmojiPicker\"\n :popover-relative-class=\"popoverRelativeClass\"\n :is-top-position=\"true\"\n @emoji-selected=\"addEmojiSelected\"\n />\n <div\n v-if=\"isWysiwyg\"\n class=\"h6\"\n >\n {{ t(\"Characters number calculated over HTML code\") }}\n </div>\n <div\n v-else-if=\"'' !== indicText\"\n class=\"text-indic\"\n >\n {{ indicText }}\n </div>\n <div\n v-else-if=\"\n forceError || (isError && (undefined !== textValue || canBeNull))\n \"\n class=\"text-danger\"\n >\n {{ errorText }}\n </div>\n <p\n v-if=\"0 !== maxLength && showField\"\n class=\"counter-align-right\"\n :class=\"{ 'text-danger': !valueLengthValid }\"\n >\n {{ countValue + \" / \" + maxLength }}\n </p>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AsteriskIcon from \"vue-material-design-icons/Asterisk.vue\";\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nimport { computed, defineAsyncComponent, onMounted, onUnmounted, Ref, ref, useTemplateRef, watch, getCurrentInstance } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ClassicPopover = defineAsyncComponent(\n () => import(\"../misc/ClassicPopover.vue\"),\n);\nconst ClassicWysiwyg = defineAsyncComponent(\n () => import(\"./ClassicWysiwyg.vue\"),\n);\nconst ClassicEmojiPicker = defineAsyncComponent(\n () => import(\"./ClassicEmojiPicker.vue\"),\n);\n\n//Props \nconst props = defineProps({\n inputId: { default: \"\", type: String },\n label: { default: \"\", type: String },\n /** The input's value */\n textInit: { default: undefined, type: String },\n maxLength: { default: 0, type: Number },\n errorText: { default: \"\", type: String },\n isTextarea: { default: false, type: Boolean },\n isWysiwyg: { default: false, type: Boolean },\n /** A regex checked against the input, if the input doesn't match mark it with error */\n regex: { default: undefined, type: RegExp },\n canBeNull: { default: false, type: Boolean },\n inputMaxLengthField: { default: undefined, type: Number },\n errorVariable: { default: true, type: Boolean },\n /**\n * Disable the text input\n * @deprecated Use `disabled` instead\n */\n isDisable: { default: false, type: Boolean },\n /**\n * Disable the text input\n */\n disabled: { default: false, type: Boolean },\n indicText: { default: \"\", type: String },\n dataSelenium: { default: \"\", type: String },\n placeholder: { default: \"\", type: String },\n popover: { default: undefined, type: String },\n /**\n * Display content but do not allow changes\n */\n readonly: { default: false, type: Boolean },\n forceError: { default: false, type: Boolean },\n displayLabel: { default: true, type: Boolean },\n focus: { default: false, type: Boolean },\n isEmojiPicker: { default: false, type: Boolean },\n popoverRelativeClass: { default: undefined, type: String },\n forceReload: { default: false, type: Boolean },\n typeInput: { default: \"text\", type: String },\n displayRequired: { default: false, type: Boolean },\n classLabel: { default: \"form-label\", type: String },\n showField: { default: true, type: Boolean },\n autocompleteType: { default: \"off\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"update:textInit\", \"update:errorVariable\", \"blur\"]);\n\n//Data \nconst textValue : Ref<string | undefined>= ref(undefined);\nconst focusElementRef = useTemplateRef('focusElement');\n\n//Composables \nconst { t } = useI18n();\n\n//Computed\nconst computedInputId = computed(() => props.inputId || 'input-' + getCurrentInstance()?.uid);\nconst isError = computed(() => !valueTrimValid.value || !valueLengthValid.value || !valueRegexValid.value);\nconst countValue = computed(() => {\n if (textValue.value) {\n return textValue.value.length;\n }\n return 0;\n});\nconst valueTrimValid = computed(() => {\n if (!props.canBeNull) {\n if (!textValue.value) {\n return false;\n }\n return 0 !== textValue.value.trim().length;\n }\n return true;\n});\nconst valueLengthValid = computed(() => {\n if (0 === props.maxLength) {\n return true;\n }\n return props.maxLength >= countValue.value;\n});\nconst valueRegexValid = computed(() => {\n if (props.regex === undefined) {\n return true;\n }\n if (!textValue.value || \"\" === textValue.value) {\n return props.canBeNull;\n }\n return textValue.value.match(props.regex) !== null;\n});\n \n//Watch\nwatch(()=>props.forceReload, () => {\n if (props.textInit !== textValue.value) {\n textValue.value = props.textInit;\n }\n});\nwatch(isError, () => {\n emit(\"update:errorVariable\", isError.value);\n});\nwatch(textValue, () => {\n if (props.textInit !== textValue.value) {\n emit(\"update:textInit\", textValue.value);\n }\n});\nwatch(()=>props.textInit, () => {\n if (props.textInit !== textValue.value) {\n textValue.value = props.textInit;\n }\n});\n\n\nonMounted(()=>{\n if (props.focus) {\n (focusElementRef?.value as HTMLElement)?.focus();\n }\n textValue.value = props.textInit;\n if (props.errorVariable !== isError.value) {\n emit(\"update:errorVariable\", isError.value);\n }\n\n if (props.isTextarea) {\n // Delay a scroll back to the top of the text area\n scrollTimer = setTimeout(() => {\n const textArea = document.getElementById(computedInputId.value);\n if (textArea) {\n textArea.scrollTop = 0;\n }\n }, 100);\n }\n});\n\nlet scrollTimer: ReturnType<typeof setTimeout> | undefined;\nonUnmounted(() => {\n clearTimeout(scrollTimer);\n});\n \n//Methods\nfunction addEmojiSelected(emoji: string) {\n textValue.value = (textValue.value ?? \"\") + emoji;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app .classic-input-text {\n .text-indic {\n font-style: italic;\n font-size: 0.7rem;\n color: var(--octopus-gray-text);\n }\n\n textarea {\n height: auto;\n min-height: 120px;\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassicMultiselect-2I2K-o4R.mjs","names":["_openBlock","_createElementBlock","_normalizeClass","_normalizeStyle","_createElementVNode","_createTextVNode","_toDisplayString","_createBlock","_createCommentVNode","_Fragment","_createVNode","_withCtx","_createSlots","_renderSlot","_normalizeProps","_guardReactiveProps","_sfc_main"],"sources":["../src/components/form/ClassicMultiselect.vue","../src/components/form/ClassicMultiselect.vue"],"sourcesContent":["<template>\n <div\n :class=\"{\n 'multiselect-in-modal': inModal,\n 'multiselect-no-deselect': noDeselect,\n 'form-margin': displayLabel,\n }\"\n :style=\"{ width: width, height: height }\"\n >\n <div class=\"d-flex align-items-center\">\n <label :class=\"displayLabel ? '' : 'd-none'\" :for=\"id\" class=\"form-label\">{{\n label\n }}\n <AsteriskIcon v-if=\"displayRequired\" :size=\"10\" class=\"ms-1 mb-2\" :title=\"t('Mandatory input')\"/>\n </label>\n\n <template v-if=\"popover\">\n <button\n :id=\"'popover' + id\"\n :title=\"t('Help')\"\n class=\"btn-transparent\"\n >\n <HelpCircleIcon :size=\"30\" />\n </button>\n <ClassicPopover\n :target=\"'popover' + id\"\n popover-class=\"popover-z-index\"\n :relative-class=\"popoverRelativeClass\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div v-html=\"popover\" />\n <!-- eslint-enable -->\n </ClassicPopover>\n </template>\n </div>\n\n <vSelect\n v-model=\"optionSelected\"\n :input-id=\"id\"\n :label=\"optionLabel\"\n :multiple=\"multiple\"\n :options=\"options\"\n :disabled=\"isDisabled\"\n :loading=\"isLoading\"\n :placeholder=\"placeholder\"\n :clear-search-on-blur=\"\n () => {\n return true;\n }\n \"\n :filter=\"fakeSearch\"\n :selectable=\"() => !maxOptionsSelected\"\n :style=\"{height: height }\"\n :class=\"{ 'border border-danger': textDanger?.length }\"\n @open=\"onSearch\"\n @search=\"onSearch\"\n @close=\"onClose\"\n @option:selected=\"onOptionSelected\"\n @option:deselected=\"onOptionDeselect\"\n >\n \n <template v-if=\"optionCustomTemplating.length\" #option=\"option\">\n <slot :name=\"optionCustomTemplating\" :option=\"option\" />\n </template>\n\n <template v-else-if=\"withSelectAll\" #option=\"option\">\n <strong v-if=\"option.id === selectAll.id\">\n {{ option[optionLabel] }}\n </strong>\n <span v-else>\n {{ option[optionLabel] }}\n </span>\n </template>\n\n <template\n v-if=\"optionSelectedCustomTemplating.length\"\n #selected-option=\"option\"\n >\n <slot :name=\"optionSelectedCustomTemplating\" :option=\"option\" />\n </template>\n\n <template #selected-option-container=\"{ option, deselect, disabled, multiple: mul }\">\n <slot name=\"selected-option-container\" v-bind=\"{ option, deselect, disabled, multiple: mul }\" />\n </template>\n\n <template #no-options=\"{ searching }\">\n <span v-if=\"searching\">{{\n t(\"No elements found. Consider changing the search query.\")\n }}</span>\n <span v-else>{{ t(\"List is empty\") }}</span>\n </template>\n\n <template #list-footer>\n <div v-if=\"remainingElements\" class=\"vs__dropdown-option\">\n {{\n t(\n \"Count more elements matched your query, please make a more specific search.\",\n { count: remainingElements },\n )\n }}\n </div>\n </template>\n\n <template #list-header>\n <div v-if=\"maxOptionsSelected\" class=\"vs__dropdown-option\">\n {{ t(\"Multiselect max options\", { max: maxOptions }) }}\n </div>\n </template>\n\n <template #open-indicator=\"{ attributes }\">\n <ChevronDownIcon v-bind=\"attributes\" />\n </template>\n </vSelect>\n <div v-if=\"textDanger\" class=\"text-danger\">\n {{ textDanger }}\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport { computed, defineAsyncComponent, ref, Ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport AsteriskIcon from \"vue-material-design-icons/Asterisk.vue\";\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport vSelect from \"vue-select\";\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nconst ClassicPopover = defineAsyncComponent(\n () => import(\"../misc/ClassicPopover.vue\"),\n);\n\n//Props \nconst {\n inModal = false, multiple = false, isDisabled = false, width = \"100%\",\n maxElement = 50, minSearchLength = 3, noDeselect = true, displayLabel = false,\n allowEmpty = true, optionChosen, maxOptions = null,\n optionCustomTemplating = '', optionSelectedCustomTemplating = '',\n optionLabel,\n withSelectAll = false\n} = defineProps<{\n id?: string;\n label?: string;\n placeholder?: string;\n optionLabel?: keyof T;\n inModal?: boolean;\n multiple?: boolean;\n isDisabled?: boolean;\n width?: string;\n height?: string;\n maxElement?: number;\n minSearchLength?: number;\n /** Currently chosen option */\n optionChosen?: T|Array<T>;\n noDeselect?: boolean;\n optionCustomTemplating?: string;\n optionSelectedCustomTemplating?: string;\n displayLabel?: boolean;\n maxOptions?: number;\n allowEmpty?: boolean;\n textDanger ?:string;\n displayRequired?: boolean;\n popover?: string;\n popoverRelativeClass?: string;\n /**\n * Add an option to select everything at once\n * If set to a truthy string, the added option will have this value as its\n * label. If set to true, use a generic label.\n */\n withSelectAll?: boolean|string;\n}>();\n\n//Emits\nconst emit = defineEmits<{\n (e: \"onSearch\", query: string): void;\n (e: \"selected\", data: Array<T>|T): void;\n (e: \"onClose\", data: string): void;\n}>();\n\n//Composables\nconst { t } = useI18n();\n\n\n//Data \nconst optionSelected : Ref<T|T[]>= ref(undefined);\nconst options : Ref<Array<T>>= ref([]);\nconst remainingElements = ref(0);\nconst isLoading = ref(false);\nconst searchInput = ref(\"\");\nconst selectAll = {\n id: 'SELECT_ALL',\n [optionLabel]: withSelectAll && typeof withSelectAll === 'string' ? withSelectAll : t('All')\n} as unknown as T;\n\n//Computed\nconst maxOptionsSelected = computed(() => {\n if (maxOptions !== null && multiple) {\n return (\n (optionSelected.value as Array<T>).length >= maxOptions\n );\n }\n return false;\n});\n\n//Watch\nwatch(()=>optionChosen, () => {\n optionSelected.value = optionChosen;\n}, {deep: true, immediate: true});\nwatch(optionSelected, () => {\n if (noDeselect || null !== optionSelected.value) {\n return;\n }\n emit(\"selected\", undefined);\n}, {deep: true});\n\n//Methods\nfunction fakeSearch(): Array<unknown> {\n return options.value;\n}\n\nfunction onSearch(search?: string): void {\n if (search && search.length < minSearchLength) {\n return;\n } else if (search) {\n searchInput.value = search;\n }\n isLoading.value = true;\n emit(\"onSearch\", search);\n}\n\nfunction onClose() {\n emit(\"onClose\", searchInput.value);\n searchInput.value = \"\";\n}\n\nfunction afterSearch(optionsFetched: Array<T>, count: number): void {\n if (withSelectAll) {\n options.value = [selectAll, ...optionsFetched];\n count += 1;\n } else {\n options.value = optionsFetched;\n }\n remainingElements.value = Math.max(0, count - maxElement);\n isLoading.value = false;\n}\n\nfunction onOptionSelected(newValue: Array<T>|T): void {\n // Check if selectAll is included\n if (withSelectAll && Array.isArray(newValue) && newValue.find(o => o.id === selectAll.id)) {\n emit(\"selected\", options.value.slice(1));\n } else {\n emit(\"selected\", newValue);\n }\n}\n\nfunction onOptionDeselect(event: T): void {\n if (!multiple) {\n return;\n }\n if (\n !allowEmpty &&\n 0 === (optionSelected.value as Array<T>).length\n ) {\n (optionSelected.value as Array<T>).push(event);\n return;\n }\n emit(\"selected\", (optionSelected.value as Array<T>));\n}\n\n//Expose\ndefineExpose({\n afterSearch\n});\n</script>\n\n<style lang=\"scss\">\n@use \"vue-select/dist/vue-select.css\";\n/* stylelint-disable */\n:root {\n --vs-dropdown-z-index: 1405;\n --vs-border-radius: 0.2rem;\n --vs-dropdown-option--active-bg: var(--octopus-secondary);\n --vs-dropdown-option--active-color: black;\n --vs-font-size: 0.8rem;\n --vs-border-width: 2px;\n --vs-border-color: var(--octopus-border-default);\n}\n\n.octopus-app {\n .vs__dropdown-option {\n white-space: initial;\n }\n\n .vs--searchable .vs__dropdown-toggle {\n cursor: pointer;\n }\n\n .vs__dropdown-toggle {\n padding: 0;\n height: 100%;\n }\n\n .vs__search, .vs__search:focus{\n border: var(--vs-selected-border-width) solid transparent;\n }\n .vs__search:focus {\n min-width: 150px;\n }\n\n .multiselect-no-deselect .vs__clear {\n display: none;\n }\n\n .multiselect-transparent {\n --vs-border-color: transparent;\n }\n\n .multiselect-white {\n --vs-selected-color: white;\n --vs-selected-bg: transparent;\n --vs-dropdown-bg: black;\n --vs-controls-color: white;\n\n .vs__actions path {\n fill: white;\n }\n }\n\n .multiselect-in-modal{\n .vs__dropdown-menu{\n position: relative !important;\n }\n }\n}\n/* stylelint-enable */\n</style>\n","<template>\n <div\n :class=\"{\n 'multiselect-in-modal': inModal,\n 'multiselect-no-deselect': noDeselect,\n 'form-margin': displayLabel,\n }\"\n :style=\"{ width: width, height: height }\"\n >\n <div class=\"d-flex align-items-center\">\n <label :class=\"displayLabel ? '' : 'd-none'\" :for=\"id\" class=\"form-label\">{{\n label\n }}\n <AsteriskIcon v-if=\"displayRequired\" :size=\"10\" class=\"ms-1 mb-2\" :title=\"t('Mandatory input')\"/>\n </label>\n\n <template v-if=\"popover\">\n <button\n :id=\"'popover' + id\"\n :title=\"t('Help')\"\n class=\"btn-transparent\"\n >\n <HelpCircleIcon :size=\"30\" />\n </button>\n <ClassicPopover\n :target=\"'popover' + id\"\n popover-class=\"popover-z-index\"\n :relative-class=\"popoverRelativeClass\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div v-html=\"popover\" />\n <!-- eslint-enable -->\n </ClassicPopover>\n </template>\n </div>\n\n <vSelect\n v-model=\"optionSelected\"\n :input-id=\"id\"\n :label=\"optionLabel\"\n :multiple=\"multiple\"\n :options=\"options\"\n :disabled=\"isDisabled\"\n :loading=\"isLoading\"\n :placeholder=\"placeholder\"\n :clear-search-on-blur=\"\n () => {\n return true;\n }\n \"\n :filter=\"fakeSearch\"\n :selectable=\"() => !maxOptionsSelected\"\n :style=\"{height: height }\"\n :class=\"{ 'border border-danger': textDanger?.length }\"\n @open=\"onSearch\"\n @search=\"onSearch\"\n @close=\"onClose\"\n @option:selected=\"onOptionSelected\"\n @option:deselected=\"onOptionDeselect\"\n >\n \n <template v-if=\"optionCustomTemplating.length\" #option=\"option\">\n <slot :name=\"optionCustomTemplating\" :option=\"option\" />\n </template>\n\n <template v-else-if=\"withSelectAll\" #option=\"option\">\n <strong v-if=\"option.id === selectAll.id\">\n {{ option[optionLabel] }}\n </strong>\n <span v-else>\n {{ option[optionLabel] }}\n </span>\n </template>\n\n <template\n v-if=\"optionSelectedCustomTemplating.length\"\n #selected-option=\"option\"\n >\n <slot :name=\"optionSelectedCustomTemplating\" :option=\"option\" />\n </template>\n\n <template #selected-option-container=\"{ option, deselect, disabled, multiple: mul }\">\n <slot name=\"selected-option-container\" v-bind=\"{ option, deselect, disabled, multiple: mul }\" />\n </template>\n\n <template #no-options=\"{ searching }\">\n <span v-if=\"searching\">{{\n t(\"No elements found. Consider changing the search query.\")\n }}</span>\n <span v-else>{{ t(\"List is empty\") }}</span>\n </template>\n\n <template #list-footer>\n <div v-if=\"remainingElements\" class=\"vs__dropdown-option\">\n {{\n t(\n \"Count more elements matched your query, please make a more specific search.\",\n { count: remainingElements },\n )\n }}\n </div>\n </template>\n\n <template #list-header>\n <div v-if=\"maxOptionsSelected\" class=\"vs__dropdown-option\">\n {{ t(\"Multiselect max options\", { max: maxOptions }) }}\n </div>\n </template>\n\n <template #open-indicator=\"{ attributes }\">\n <ChevronDownIcon v-bind=\"attributes\" />\n </template>\n </vSelect>\n <div v-if=\"textDanger\" class=\"text-danger\">\n {{ textDanger }}\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport { computed, defineAsyncComponent, ref, Ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport AsteriskIcon from \"vue-material-design-icons/Asterisk.vue\";\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport vSelect from \"vue-select\";\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nconst ClassicPopover = defineAsyncComponent(\n () => import(\"../misc/ClassicPopover.vue\"),\n);\n\n//Props \nconst {\n inModal = false, multiple = false, isDisabled = false, width = \"100%\",\n maxElement = 50, minSearchLength = 3, noDeselect = true, displayLabel = false,\n allowEmpty = true, optionChosen, maxOptions = null,\n optionCustomTemplating = '', optionSelectedCustomTemplating = '',\n optionLabel,\n withSelectAll = false\n} = defineProps<{\n id?: string;\n label?: string;\n placeholder?: string;\n optionLabel?: keyof T;\n inModal?: boolean;\n multiple?: boolean;\n isDisabled?: boolean;\n width?: string;\n height?: string;\n maxElement?: number;\n minSearchLength?: number;\n /** Currently chosen option */\n optionChosen?: T|Array<T>;\n noDeselect?: boolean;\n optionCustomTemplating?: string;\n optionSelectedCustomTemplating?: string;\n displayLabel?: boolean;\n maxOptions?: number;\n allowEmpty?: boolean;\n textDanger ?:string;\n displayRequired?: boolean;\n popover?: string;\n popoverRelativeClass?: string;\n /**\n * Add an option to select everything at once\n * If set to a truthy string, the added option will have this value as its\n * label. If set to true, use a generic label.\n */\n withSelectAll?: boolean|string;\n}>();\n\n//Emits\nconst emit = defineEmits<{\n (e: \"onSearch\", query: string): void;\n (e: \"selected\", data: Array<T>|T): void;\n (e: \"onClose\", data: string): void;\n}>();\n\n//Composables\nconst { t } = useI18n();\n\n\n//Data \nconst optionSelected : Ref<T|T[]>= ref(undefined);\nconst options : Ref<Array<T>>= ref([]);\nconst remainingElements = ref(0);\nconst isLoading = ref(false);\nconst searchInput = ref(\"\");\nconst selectAll = {\n id: 'SELECT_ALL',\n [optionLabel]: withSelectAll && typeof withSelectAll === 'string' ? withSelectAll : t('All')\n} as unknown as T;\n\n//Computed\nconst maxOptionsSelected = computed(() => {\n if (maxOptions !== null && multiple) {\n return (\n (optionSelected.value as Array<T>).length >= maxOptions\n );\n }\n return false;\n});\n\n//Watch\nwatch(()=>optionChosen, () => {\n optionSelected.value = optionChosen;\n}, {deep: true, immediate: true});\nwatch(optionSelected, () => {\n if (noDeselect || null !== optionSelected.value) {\n return;\n }\n emit(\"selected\", undefined);\n}, {deep: true});\n\n//Methods\nfunction fakeSearch(): Array<unknown> {\n return options.value;\n}\n\nfunction onSearch(search?: string): void {\n if (search && search.length < minSearchLength) {\n return;\n } else if (search) {\n searchInput.value = search;\n }\n isLoading.value = true;\n emit(\"onSearch\", search);\n}\n\nfunction onClose() {\n emit(\"onClose\", searchInput.value);\n searchInput.value = \"\";\n}\n\nfunction afterSearch(optionsFetched: Array<T>, count: number): void {\n if (withSelectAll) {\n options.value = [selectAll, ...optionsFetched];\n count += 1;\n } else {\n options.value = optionsFetched;\n }\n remainingElements.value = Math.max(0, count - maxElement);\n isLoading.value = false;\n}\n\nfunction onOptionSelected(newValue: Array<T>|T): void {\n // Check if selectAll is included\n if (withSelectAll && Array.isArray(newValue) && newValue.find(o => o.id === selectAll.id)) {\n emit(\"selected\", options.value.slice(1));\n } else {\n emit(\"selected\", newValue);\n }\n}\n\nfunction onOptionDeselect(event: T): void {\n if (!multiple) {\n return;\n }\n if (\n !allowEmpty &&\n 0 === (optionSelected.value as Array<T>).length\n ) {\n (optionSelected.value as Array<T>).push(event);\n return;\n }\n emit(\"selected\", (optionSelected.value as Array<T>));\n}\n\n//Expose\ndefineExpose({\n afterSearch\n});\n</script>\n\n<style lang=\"scss\">\n@use \"vue-select/dist/vue-select.css\";\n/* stylelint-disable */\n:root {\n --vs-dropdown-z-index: 1405;\n --vs-border-radius: 0.2rem;\n --vs-dropdown-option--active-bg: var(--octopus-secondary);\n --vs-dropdown-option--active-color: black;\n --vs-font-size: 0.8rem;\n --vs-border-width: 2px;\n --vs-border-color: var(--octopus-border-default);\n}\n\n.octopus-app {\n .vs__dropdown-option {\n white-space: initial;\n }\n\n .vs--searchable .vs__dropdown-toggle {\n cursor: pointer;\n }\n\n .vs__dropdown-toggle {\n padding: 0;\n height: 100%;\n }\n\n .vs__search, .vs__search:focus{\n border: var(--vs-selected-border-width) solid transparent;\n }\n .vs__search:focus {\n min-width: 150px;\n }\n\n .multiselect-no-deselect .vs__clear {\n display: none;\n }\n\n .multiselect-transparent {\n --vs-border-color: transparent;\n }\n\n .multiselect-white {\n --vs-selected-color: white;\n --vs-selected-bg: transparent;\n --vs-dropdown-bg: black;\n --vs-controls-color: white;\n\n .vs__actions path {\n fill: white;\n }\n }\n\n .multiselect-in-modal{\n .vs__dropdown-menu{\n position: relative !important;\n }\n }\n}\n/* stylelint-enable */\n</style>\n"],"mappings":"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"}
|
|
@@ -69,7 +69,7 @@ var O = { class: "d-flex align-items-center" }, k = ["for"], A = ["id", "title"]
|
|
|
69
69
|
"onClose"
|
|
70
70
|
],
|
|
71
71
|
setup(e, { expose: d, emit: z }) {
|
|
72
|
-
let B = u(() => import("./ClassicPopover-
|
|
72
|
+
let B = u(() => import("./ClassicPopover-BUb-1WMB.mjs").then((e) => e.n)), V = z, { t: H } = C(), U = _(void 0), W = _([]), G = _(0), K = _(!1), q = _(""), J = {
|
|
73
73
|
id: "SELECT_ALL",
|
|
74
74
|
[e.optionLabel]: e.withSelectAll && typeof e.withSelectAll == "string" ? e.withSelectAll : H("All")
|
|
75
75
|
}, Y = n(() => e.maxOptions !== null && e.multiple ? U.value.length >= e.maxOptions : !1);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { T as e } from "./classicApi-CGipMqf7.mjs";
|
|
2
2
|
import { createBlock as t, createCommentVNode as n, defineAsyncComponent as r, defineComponent as i, openBlock as a, unref as o } from "vue";
|
|
3
3
|
import { storeToRefs as s } from "pinia";
|
|
4
4
|
//#endregion
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassicNotifications-BFQ-R6kO.mjs","names":["_openBlock","_createBlock","_createCommentVNode","_sfc_main"],"sources":["../src/components/misc/ClassicNotifications.vue","../src/components/misc/ClassicNotifications.vue"],"sourcesContent":["<!--\n A component to display notifications\n-->\n<template>\n <MessageModal\n v-if=\"currentNotification\"\n :title=\"currentNotification.title\"\n :message=\"currentNotification.message\"\n :closeable=\"currentNotification.closeable !== false\"\n @close=\"clearNotification\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { storeToRefs } from 'pinia';\nimport { useNotificationStore } from '../../stores/NotificationStore';\n\nconst MessageModal = defineAsyncComponent(() => import('./modal/MessageModal.vue'));\n\nimport { defineAsyncComponent } from 'vue';\n\nconst {\n clearNotification\n} = useNotificationStore();\n\nconst {\n currentNotification,\n} = storeToRefs(useNotificationStore());\n</script>\n","<!--\n A component to display notifications\n-->\n<template>\n <MessageModal\n v-if=\"currentNotification\"\n :title=\"currentNotification.title\"\n :message=\"currentNotification.message\"\n :closeable=\"currentNotification.closeable !== false\"\n @close=\"clearNotification\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { storeToRefs } from 'pinia';\nimport { useNotificationStore } from '../../stores/NotificationStore';\n\nconst MessageModal = defineAsyncComponent(() => import('./modal/MessageModal.vue'));\n\nimport { defineAsyncComponent } from 'vue';\n\nconst {\n clearNotification\n} = useNotificationStore();\n\nconst {\n currentNotification,\n} = storeToRefs(useNotificationStore());\n</script>\n"],"mappings":";;;;;;;;;EAiBA,MAAM,eAAe,2BAA2B,OAAO,8BAA2B,CAAA,MAAA,MAAA,EAAA,CAAA,CAAA;EAIlF,MAAM,EACF,sBACA,qBAAqB;EAEzB,MAAM,EACF,wBACA,YAAY,qBAAqB,CAAC;;;;;;;;;;;;;;;;CCtBxB,OAAA,OAAA,uBADVA,UAAA,GAAAC,YAME,OAAA,iBAAA;;EAJG,OAAO,OAAA,oBAAoB;EAC3B,SAAS,OAAA,oBAAoB;EAC7B,WAAW,OAAA,oBAAoB,cAAS;EACxC,SAAO,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassicNotifications-DR0PM1Xp.mjs","names":["_openBlock","_createBlock","_createCommentVNode","_sfc_main"],"sources":["../src/components/misc/ClassicNotifications.vue","../src/components/misc/ClassicNotifications.vue"],"sourcesContent":["<!--\n A component to display notifications\n-->\n<template>\n <MessageModal\n v-if=\"currentNotification\"\n :title=\"currentNotification.title\"\n :message=\"currentNotification.message\"\n :closeable=\"currentNotification.closeable !== false\"\n @close=\"clearNotification\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { storeToRefs } from 'pinia';\nimport { useNotificationStore } from '../../stores/NotificationStore';\n\nconst MessageModal = defineAsyncComponent(() => import('./modal/MessageModal.vue'));\n\nimport { defineAsyncComponent } from 'vue';\n\nconst {\n clearNotification\n} = useNotificationStore();\n\nconst {\n currentNotification,\n} = storeToRefs(useNotificationStore());\n</script>\n","<!--\n A component to display notifications\n-->\n<template>\n <MessageModal\n v-if=\"currentNotification\"\n :title=\"currentNotification.title\"\n :message=\"currentNotification.message\"\n :closeable=\"currentNotification.closeable !== false\"\n @close=\"clearNotification\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { storeToRefs } from 'pinia';\nimport { useNotificationStore } from '../../stores/NotificationStore';\n\nconst MessageModal = defineAsyncComponent(() => import('./modal/MessageModal.vue'));\n\nimport { defineAsyncComponent } from 'vue';\n\nconst {\n clearNotification\n} = useNotificationStore();\n\nconst {\n currentNotification,\n} = storeToRefs(useNotificationStore());\n</script>\n"],"mappings":";;;;;;;;;EAiBA,MAAM,eAAe,2BAA2B,OAAO,8BAA2B,CAAA,MAAA,MAAA,EAAA,CAAA,CAAA;EAIlF,MAAM,EACF,sBACA,qBAAqB;EAEzB,MAAM,EACF,wBACA,YAAY,qBAAqB,CAAC;;;;;;;;;;;;;;;;CCtBxB,OAAA,OAAA,uBADVA,UAAA,GAAAC,YAME,OAAA,iBAAA;;EAJG,OAAO,OAAA,oBAAoB;EAC3B,SAAS,OAAA,oBAAoB;EAC7B,WAAW,OAAA,oBAAoB,cAAS;EACxC,SAAO,OAAA"}
|
|
@@ -120,7 +120,7 @@ var ne = ["id"], x = {
|
|
|
120
120
|
N.value = !1;
|
|
121
121
|
return;
|
|
122
122
|
}
|
|
123
|
-
if (Array.from(e?.target?.classList ?? []).findIndex((e) => e.startsWith("
|
|
123
|
+
if (Array.from(e?.target?.classList ?? []).findIndex((e) => e.startsWith("dp--")) !== -1) return;
|
|
124
124
|
let t = I?.value;
|
|
125
125
|
if (!e.relatedTarget) return t !== null && t.contains(e.target) ? void 0 : Z();
|
|
126
126
|
let n = e.relatedTarget;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassicPopover-BhMY2SMo.mjs","names":["_openBlock","_createBlock","_Teleport","_withDirectives","_createElementVNode","_normalizeClass","_normalizeStyle","_createElementBlock","_toDisplayString","_createCommentVNode","_renderSlot","_createTextVNode","_vShow","_sfc_main"],"sources":["../src/components/misc/ClassicPopover.vue","../src/components/misc/ClassicPopover.vue"],"sourcesContent":["<template>\n <Teleport to=\"#app\">\n <div\n v-show=\"displayPopover\"\n :id=\"'popover' + target\"\n ref=\"popover\"\n popover\n tabindex=\"0\"\n class=\"octopus-popover border position-fixed\"\n :class=\"[\n displayPopover ? 'd-block': '',\n onlyClick ? 'octopus-dropdown' : '',\n popoverClass]\"\n :style=\"positionInlineStyle\"\n @mouseenter=\"overPopover = true\"\n @mouseleave=\"\n overPopover = false;\n clearData();\n \"\n >\n <div v-if=\"title\" class=\"bg-secondary-light p-2\">\n {{ title }}\n </div>\n <div class=\"p-2\">\n <slot>{{ content }}</slot>\n </div>\n </div>\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, Ref, ref, useTemplateRef, watch } from 'vue';\nimport { useRouter } from 'vue-router';\n\n//Props \nconst props = defineProps({\n content: { type: String, default: \"\" },\n title: { type: String, default: \"\" },\n target: { type: String, required: true },\n disable: { type: Boolean, default: false },\n onlyClick: { type: Boolean, default: false },\n onlyMouse: { type: Boolean, default: false },\n isFixed: { type: Boolean, default: false },\n /** @deprecated No longer needed. The popover is teleported to body and always uses position:fixed. */\n relativeClass: { type: String, default: undefined },\n leftPos: { type: Boolean, default: false },\n topPos: { type: Boolean, default: false },\n popoverClass: { type: String, default: undefined },\n isTopLayer: { type: Boolean, default: false },\n /** @deprecated No longer needed. If set to true, max height of popover will not overflow from parent */\n constrainHeight: { type: Boolean, default: true },\n /** Force z-index */\n zIndex: { type: Number, default: undefined }\n})\n\n//Emits\nconst emit = defineEmits([\"updateVisibility\"]);\n\n\n//Data\nconst show = ref(false);\nconst isClick = ref(false);\nconst openedByHover = ref(false);\nconst posX = ref(0);\nconst posY = ref(0);\nconst targetElement: Ref<HTMLElement | null> = ref(null);\nconst overPopover = ref(false);\nconst isTabAction = ref(false);\nconst maxHeight = ref('80dvh');\nconst clearTimeout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst popoverRef = useTemplateRef('popover');\n\n\n//Composables\nconst router = useRouter();\n\n//Computed\nconst popoverId = computed(() => \"popover\" + props.target);\nconst positionInlineStyle = computed(() => ({\n left: `${posX.value}px`,\n top: `${posY.value}px`,\n 'max-height': maxHeight.value,\n 'z-index': props.zIndex ?? 10\n}));\nconst displayPopover = computed(() => show.value && !props.disable);\nconst isTopLayerPopover = computed(() => (props.isTopLayer || \"octopus-modal\"===props.relativeClass) && Object.hasOwn(HTMLElement.prototype, \"popover\"));\n\n\n//Watch\nwatch(displayPopover, async () => {\n if(!isTopLayerPopover.value){return;}\n if(displayPopover.value){\n (popoverRef.value as HTMLElement).showPopover();\n }else{\n (popoverRef.value as HTMLElement).hidePopover();\n }\n});\nwatch(show, async () => {\n emit(\"updateVisibility\", show.value);\n if (show.value) {\n window.addEventListener(\"keyup\", addAccessibilityControl);\n } else {\n window.removeEventListener(\"keyup\", addAccessibilityControl);\n }\n});\nwatch(isClick, async () => {\n // Only add global click listener if opened by click (not hover)\n if (isClick.value && !openedByHover.value) {\n window.addEventListener(\"click\", handleOutsideClick, true);\n } else {\n window.removeEventListener(\"click\", handleOutsideClick, true);\n }\n});\n\nonMounted(()=>init())\n\nonUnmounted(()=>removeListeners())\n\n\n//Methods\nfunction handleOutsideClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const popover = popoverRef?.value as HTMLElement;\n const targetEl = targetElement.value;\n\n // Check if click is outside both the popover and the target element\n if (\n popover &&\n !popover.contains(target) &&\n targetEl &&\n !targetEl.contains(target)\n ) {\n clearClick();\n }\n}\nfunction addAccessibilityControl(event: KeyboardEvent): void {\n if (!event || null === event) {\n return;\n }\n if (\"Tab\" !== event.key) {\n return;\n }\n const myElement = event.target as HTMLElement;\n const parent = popoverRef?.value as HTMLElement;\n if (parent?.contains(myElement)) {\n isTabAction.value = true;\n } else {\n clearClick();\n }\n}\nfunction init() {\n targetElement.value = document.getElementById(props.target);\n if (targetElement.value) {\n if (!props.onlyClick) {\n targetElement.value.addEventListener( \"mouseenter\",setPopoverData);\n targetElement.value.addEventListener(\"mouseleave\",clearDataTimeout);\n }\n if (!props.onlyMouse) {\n targetElement.value.addEventListener(\"click\", setPopoverData);\n }\n targetElement.value.addEventListener(\"focusout\", clearDataBlur);\n }\n}\nfunction removeListeners() {\n if (targetElement.value) {\n if (!props.onlyClick) {\n targetElement.value.removeEventListener(\"mouseenter\",setPopoverData,);\n targetElement.value.removeEventListener(\"mouseleave\",clearDataTimeout,);\n }\n if (!props.onlyMouse) {\n targetElement.value.removeEventListener(\"click\", setPopoverData);\n }\n targetElement.value.removeEventListener(\"focusout\", clearDataBlur);\n }\n}\nfunction handleClickEvent(e: MouseEvent | PointerEvent){\n if (show.value && isClick.value && e.target !== popoverRef.value && !popoverRef.value?.contains(e.target)) {\n isClick.value = false;\n clearData();\n return -1;\n }\n if (show.value && isTopLayerPopover.value) {\n const popover = popoverRef?.value as HTMLElement;\n popover.showPopover();\n isClick.value = true;\n return -1;\n }\n isClick.value = true;\n return 0;\n}\nfunction handleLeftPos(rectElement: DOMRect, parentLeft: number, sizeAvailable: number, sizePopover: number){\n const elementRightRelative = rectElement.right - parentLeft;\n const hasPlaceRightButton = (sizeAvailable - (sizeAvailable - elementRightRelative)) > sizePopover;\n if(hasPlaceRightButton){\n posX.value =\n rectElement.right -\n parentLeft -\n sizePopover;\n }else{\n posX.value =parentLeft;\n }\n}\nfunction handleRightPos(rectElement: DOMRect, parentLeft: number, sizeAvailable: number, sizePopover: number){\n const elementLeftRelative = rectElement.left - parentLeft;\n const hasPlaceRightButton = (sizeAvailable - elementLeftRelative) > sizePopover;\n if(hasPlaceRightButton){\n posX.value = elementLeftRelative;\n }else{\n posX.value = sizeAvailable - sizePopover + parentLeft;\n }\n}\nfunction setPopoverData(e: MouseEvent | PointerEvent) {\n clearInterval(clearTimeout.value as unknown as number);\n if (props.disable || !e || !e.target) {\n return;\n }\n if (\"click\" === e.type && -1 === handleClickEvent(e)) {\n return;\n }\n // Track if opened by hover (mouseenter) vs click\n if (e.type === \"mouseenter\") {\n openedByHover.value = true;\n }\n show.value = true;\n const popover = popoverRef?.value as HTMLElement;\n // The popover is teleported to <body> and uses position:fixed, so\n // getBoundingClientRect() coordinates map directly to viewport coordinates.\n const rectElement = (e.target as HTMLElement).getBoundingClientRect();\n popover.style.display = \"block\";\n const sizePopover = popover.clientWidth;\n if (props.leftPos) {\n handleLeftPos(rectElement, 0, window.innerWidth, sizePopover);\n } else {\n handleRightPos(rectElement, 0, window.innerWidth, sizePopover);\n }\n posX.value = Math.max(0, posX.value);\n const yPosParent = props.topPos ? rectElement.top : rectElement.bottom;\n const yGap = props.topPos\n ? -5 - popover.clientHeight\n : 5;\n posY.value = Math.max(0, yPosParent + yGap);\n maxHeight.value = (window.innerHeight - posY.value) + \"px\";\n}\n\nfunction clearDataBlur(e: FocusEvent) {\n if (isTabAction.value) {\n isTabAction.value = false;\n return;\n }\n //Exception timepicker in popover\n const result = Array.from(e?.target?.classList ?? []).findIndex((val) => { return val.startsWith(\"dp--\");});\n if (-1!==result) {\n return;\n }\n\n const parent = popoverRef?.value as HTMLElement;\n if (!e.relatedTarget) {\n if (parent !== null && parent.contains(e.target)) {\n return;\n }\n return clearClick();\n }\n const myElement = e.relatedTarget as HTMLElement;\n if (popoverId.value === myElement.id) {\n return;\n }\n if (null === parent || !parent.contains(myElement)) {\n return clearClick();\n }\n if (\n null === myElement.classList ||\n !myElement.classList.contains(\"octopus-dropdown-item\")\n ) {\n return;\n }\n if (!(myElement as HTMLAnchorElement).href) {\n return clearClick();\n }\n if (myElement.classList.contains(\"realLink\")) {\n myElement.click();\n } else {\n const { pathname, search, hash } = myElement as HTMLAnchorElement;\n router.push(pathname + search + hash);\n }\n nextTick(() => {\n isClick.value = false;\n clearData();\n });\n}\nfunction clearClick() {\n isClick.value = false;\n clearData();\n}\nfunction clearDataTimeout() {\n clearTimeout.value = setTimeout(() => {\n if (!overPopover.value) {\n clearData();\n }\n clearTimeout.value=undefined;\n }, 500);\n}\nfunction clearData() {\n // Allow closing if opened by hover, even if clicked afterwards\n if (isClick.value && !openedByHover.value) {\n return;\n }\n show.value = false;\n posX.value = 0;\n posY.value = 0;\n openedByHover.value = false;\n}\n\n//Expose\ndefineExpose({\n clearClick\n});\n</script>\n\n<style lang=\"scss\">\n.octopus-popover {\n background: var(--octopus-background);\n border-radius: var(--octopus-border-radius);\n overflow: auto;\n margin: 0 !important;\n z-index: 10;\n\n &.popover-z-index {\n z-index: 9999;\n }\n\n &.octopus-dropdown {\n min-width: 200px;\n\n .octopus-dropdown-item {\n display: flex;\n justify-content: center;\n color: var(--octopus-color-text);\n width: 100%;\n padding: 0.25rem 1rem;\n font-weight: 400;\n text-decoration: none;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n\n &:disabled {\n background: var(--octopus-secondary-darker);\n }\n\n &:is(:hover, :focus){\n color: var(--octopus-popover-dropdown-item-color-fg-hover);\n background: var(--octopus-popover-dropdown-item-color-bg-hover);\n }\n }\n\n hr {\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid var(--octopus-border-default);\n opacity: 1;\n }\n }\n}\n</style>\n","<template>\n <Teleport to=\"#app\">\n <div\n v-show=\"displayPopover\"\n :id=\"'popover' + target\"\n ref=\"popover\"\n popover\n tabindex=\"0\"\n class=\"octopus-popover border position-fixed\"\n :class=\"[\n displayPopover ? 'd-block': '',\n onlyClick ? 'octopus-dropdown' : '',\n popoverClass]\"\n :style=\"positionInlineStyle\"\n @mouseenter=\"overPopover = true\"\n @mouseleave=\"\n overPopover = false;\n clearData();\n \"\n >\n <div v-if=\"title\" class=\"bg-secondary-light p-2\">\n {{ title }}\n </div>\n <div class=\"p-2\">\n <slot>{{ content }}</slot>\n </div>\n </div>\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, Ref, ref, useTemplateRef, watch } from 'vue';\nimport { useRouter } from 'vue-router';\n\n//Props \nconst props = defineProps({\n content: { type: String, default: \"\" },\n title: { type: String, default: \"\" },\n target: { type: String, required: true },\n disable: { type: Boolean, default: false },\n onlyClick: { type: Boolean, default: false },\n onlyMouse: { type: Boolean, default: false },\n isFixed: { type: Boolean, default: false },\n /** @deprecated No longer needed. The popover is teleported to body and always uses position:fixed. */\n relativeClass: { type: String, default: undefined },\n leftPos: { type: Boolean, default: false },\n topPos: { type: Boolean, default: false },\n popoverClass: { type: String, default: undefined },\n isTopLayer: { type: Boolean, default: false },\n /** @deprecated No longer needed. If set to true, max height of popover will not overflow from parent */\n constrainHeight: { type: Boolean, default: true },\n /** Force z-index */\n zIndex: { type: Number, default: undefined }\n})\n\n//Emits\nconst emit = defineEmits([\"updateVisibility\"]);\n\n\n//Data\nconst show = ref(false);\nconst isClick = ref(false);\nconst openedByHover = ref(false);\nconst posX = ref(0);\nconst posY = ref(0);\nconst targetElement: Ref<HTMLElement | null> = ref(null);\nconst overPopover = ref(false);\nconst isTabAction = ref(false);\nconst maxHeight = ref('80dvh');\nconst clearTimeout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst popoverRef = useTemplateRef('popover');\n\n\n//Composables\nconst router = useRouter();\n\n//Computed\nconst popoverId = computed(() => \"popover\" + props.target);\nconst positionInlineStyle = computed(() => ({\n left: `${posX.value}px`,\n top: `${posY.value}px`,\n 'max-height': maxHeight.value,\n 'z-index': props.zIndex ?? 10\n}));\nconst displayPopover = computed(() => show.value && !props.disable);\nconst isTopLayerPopover = computed(() => (props.isTopLayer || \"octopus-modal\"===props.relativeClass) && Object.hasOwn(HTMLElement.prototype, \"popover\"));\n\n\n//Watch\nwatch(displayPopover, async () => {\n if(!isTopLayerPopover.value){return;}\n if(displayPopover.value){\n (popoverRef.value as HTMLElement).showPopover();\n }else{\n (popoverRef.value as HTMLElement).hidePopover();\n }\n});\nwatch(show, async () => {\n emit(\"updateVisibility\", show.value);\n if (show.value) {\n window.addEventListener(\"keyup\", addAccessibilityControl);\n } else {\n window.removeEventListener(\"keyup\", addAccessibilityControl);\n }\n});\nwatch(isClick, async () => {\n // Only add global click listener if opened by click (not hover)\n if (isClick.value && !openedByHover.value) {\n window.addEventListener(\"click\", handleOutsideClick, true);\n } else {\n window.removeEventListener(\"click\", handleOutsideClick, true);\n }\n});\n\nonMounted(()=>init())\n\nonUnmounted(()=>removeListeners())\n\n\n//Methods\nfunction handleOutsideClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const popover = popoverRef?.value as HTMLElement;\n const targetEl = targetElement.value;\n\n // Check if click is outside both the popover and the target element\n if (\n popover &&\n !popover.contains(target) &&\n targetEl &&\n !targetEl.contains(target)\n ) {\n clearClick();\n }\n}\nfunction addAccessibilityControl(event: KeyboardEvent): void {\n if (!event || null === event) {\n return;\n }\n if (\"Tab\" !== event.key) {\n return;\n }\n const myElement = event.target as HTMLElement;\n const parent = popoverRef?.value as HTMLElement;\n if (parent?.contains(myElement)) {\n isTabAction.value = true;\n } else {\n clearClick();\n }\n}\nfunction init() {\n targetElement.value = document.getElementById(props.target);\n if (targetElement.value) {\n if (!props.onlyClick) {\n targetElement.value.addEventListener( \"mouseenter\",setPopoverData);\n targetElement.value.addEventListener(\"mouseleave\",clearDataTimeout);\n }\n if (!props.onlyMouse) {\n targetElement.value.addEventListener(\"click\", setPopoverData);\n }\n targetElement.value.addEventListener(\"focusout\", clearDataBlur);\n }\n}\nfunction removeListeners() {\n if (targetElement.value) {\n if (!props.onlyClick) {\n targetElement.value.removeEventListener(\"mouseenter\",setPopoverData,);\n targetElement.value.removeEventListener(\"mouseleave\",clearDataTimeout,);\n }\n if (!props.onlyMouse) {\n targetElement.value.removeEventListener(\"click\", setPopoverData);\n }\n targetElement.value.removeEventListener(\"focusout\", clearDataBlur);\n }\n}\nfunction handleClickEvent(e: MouseEvent | PointerEvent){\n if (show.value && isClick.value && e.target !== popoverRef.value && !popoverRef.value?.contains(e.target)) {\n isClick.value = false;\n clearData();\n return -1;\n }\n if (show.value && isTopLayerPopover.value) {\n const popover = popoverRef?.value as HTMLElement;\n popover.showPopover();\n isClick.value = true;\n return -1;\n }\n isClick.value = true;\n return 0;\n}\nfunction handleLeftPos(rectElement: DOMRect, parentLeft: number, sizeAvailable: number, sizePopover: number){\n const elementRightRelative = rectElement.right - parentLeft;\n const hasPlaceRightButton = (sizeAvailable - (sizeAvailable - elementRightRelative)) > sizePopover;\n if(hasPlaceRightButton){\n posX.value =\n rectElement.right -\n parentLeft -\n sizePopover;\n }else{\n posX.value =parentLeft;\n }\n}\nfunction handleRightPos(rectElement: DOMRect, parentLeft: number, sizeAvailable: number, sizePopover: number){\n const elementLeftRelative = rectElement.left - parentLeft;\n const hasPlaceRightButton = (sizeAvailable - elementLeftRelative) > sizePopover;\n if(hasPlaceRightButton){\n posX.value = elementLeftRelative;\n }else{\n posX.value = sizeAvailable - sizePopover + parentLeft;\n }\n}\nfunction setPopoverData(e: MouseEvent | PointerEvent) {\n clearInterval(clearTimeout.value as unknown as number);\n if (props.disable || !e || !e.target) {\n return;\n }\n if (\"click\" === e.type && -1 === handleClickEvent(e)) {\n return;\n }\n // Track if opened by hover (mouseenter) vs click\n if (e.type === \"mouseenter\") {\n openedByHover.value = true;\n }\n show.value = true;\n const popover = popoverRef?.value as HTMLElement;\n // The popover is teleported to <body> and uses position:fixed, so\n // getBoundingClientRect() coordinates map directly to viewport coordinates.\n const rectElement = (e.target as HTMLElement).getBoundingClientRect();\n popover.style.display = \"block\";\n const sizePopover = popover.clientWidth;\n if (props.leftPos) {\n handleLeftPos(rectElement, 0, window.innerWidth, sizePopover);\n } else {\n handleRightPos(rectElement, 0, window.innerWidth, sizePopover);\n }\n posX.value = Math.max(0, posX.value);\n const yPosParent = props.topPos ? rectElement.top : rectElement.bottom;\n const yGap = props.topPos\n ? -5 - popover.clientHeight\n : 5;\n posY.value = Math.max(0, yPosParent + yGap);\n maxHeight.value = (window.innerHeight - posY.value) + \"px\";\n}\n\nfunction clearDataBlur(e: FocusEvent) {\n if (isTabAction.value) {\n isTabAction.value = false;\n return;\n }\n //Exception timepicker in popover\n const result = Array.from(e?.target?.classList ?? []).findIndex((val) => { return val.startsWith(\"dp--\");});\n if (-1!==result) {\n return;\n }\n\n const parent = popoverRef?.value as HTMLElement;\n if (!e.relatedTarget) {\n if (parent !== null && parent.contains(e.target)) {\n return;\n }\n return clearClick();\n }\n const myElement = e.relatedTarget as HTMLElement;\n if (popoverId.value === myElement.id) {\n return;\n }\n if (null === parent || !parent.contains(myElement)) {\n return clearClick();\n }\n if (\n null === myElement.classList ||\n !myElement.classList.contains(\"octopus-dropdown-item\")\n ) {\n return;\n }\n if (!(myElement as HTMLAnchorElement).href) {\n return clearClick();\n }\n if (myElement.classList.contains(\"realLink\")) {\n myElement.click();\n } else {\n const { pathname, search, hash } = myElement as HTMLAnchorElement;\n router.push(pathname + search + hash);\n }\n nextTick(() => {\n isClick.value = false;\n clearData();\n });\n}\nfunction clearClick() {\n isClick.value = false;\n clearData();\n}\nfunction clearDataTimeout() {\n clearTimeout.value = setTimeout(() => {\n if (!overPopover.value) {\n clearData();\n }\n clearTimeout.value=undefined;\n }, 500);\n}\nfunction clearData() {\n // Allow closing if opened by hover, even if clicked afterwards\n if (isClick.value && !openedByHover.value) {\n return;\n }\n show.value = false;\n posX.value = 0;\n posY.value = 0;\n openedByHover.value = false;\n}\n\n//Expose\ndefineExpose({\n clearClick\n});\n</script>\n\n<style lang=\"scss\">\n.octopus-popover {\n background: var(--octopus-background);\n border-radius: var(--octopus-border-radius);\n overflow: auto;\n margin: 0 !important;\n z-index: 10;\n\n &.popover-z-index {\n z-index: 9999;\n }\n\n &.octopus-dropdown {\n min-width: 200px;\n\n .octopus-dropdown-item {\n display: flex;\n justify-content: center;\n color: var(--octopus-color-text);\n width: 100%;\n padding: 0.25rem 1rem;\n font-weight: 400;\n text-decoration: none;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n\n &:disabled {\n background: var(--octopus-secondary-darker);\n }\n\n &:is(:hover, :focus){\n color: var(--octopus-popover-dropdown-item-color-fg-hover);\n background: var(--octopus-popover-dropdown-item-color-bg-hover);\n }\n }\n\n hr {\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid var(--octopus-border-default);\n opacity: 1;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCA,MAAM,QAAQ;EAqBd,MAAM,OAAO;EAIb,MAAM,OAAO,IAAI,KAAK;EACtB,MAAM,UAAU,IAAI,KAAK;EACzB,MAAM,gBAAgB,IAAI,KAAK;EAC/B,MAAM,OAAO,IAAI,CAAC;EAClB,MAAM,OAAO,IAAI,CAAC;EAClB,MAAM,gBAAyC,IAAI,IAAI;EACvD,MAAM,cAAc,IAAI,KAAK;EAC7B,MAAM,cAAc,IAAI,KAAK;EAC7B,MAAM,YAAY,IAAI,OAAO;EAC7B,MAAM,eAA+D,IAAI,KAAA,CAAS;EAClF,MAAM,aAAa,eAAe,SAAS;EAI3C,MAAM,SAAS,UAAU;EAGzB,MAAM,YAAY,eAAe,YAAY,MAAM,MAAM;EACzD,MAAM,sBAAsB,gBAAgB;GACxC,MAAM,GAAG,KAAK,MAAM;GACpB,KAAK,GAAG,KAAK,MAAM;GACnB,cAAc,UAAU;GACxB,WAAW,MAAM,UAAU;EAC/B,EAAE;EACF,MAAM,iBAAiB,eAAe,KAAK,SAAS,CAAC,MAAM,OAAO;EAClE,MAAM,oBAAoB,gBAAgB,MAAM,cAAc,oBAAkB,MAAM,kBAAkB,OAAO,OAAO,YAAY,WAAW,SAAS,CAAC;EAIvJ,MAAM,gBAAgB,YAAY;GAC9B,IAAG,CAAC,kBAAkB,OAAO;GAC7B,IAAG,eAAe,OACd,WAAY,MAAsB,YAAY;QAE9C,WAAY,MAAsB,YAAY;EAEtD,CAAC;EACD,MAAM,MAAM,YAAY;GACpB,KAAK,oBAAoB,KAAK,KAAK;GACnC,IAAI,KAAK,OACL,OAAO,iBAAiB,SAAS,uBAAuB;QAExD,OAAO,oBAAoB,SAAS,uBAAuB;EAEnE,CAAC;EACD,MAAM,SAAS,YAAY;GAEvB,IAAI,QAAQ,SAAS,CAAC,cAAc,OAChC,OAAO,iBAAiB,SAAS,oBAAoB,IAAI;QAEzD,OAAO,oBAAoB,SAAS,oBAAoB,IAAI;EAEpE,CAAC;EAED,gBAAc,KAAK,CAAC;EAEpB,kBAAgB,gBAAgB,CAAC;EAIjC,SAAS,mBAAmB,OAAyB;GACjD,MAAM,SAAS,MAAM;GACrB,MAAM,UAAU,YAAY;GAC5B,MAAM,WAAW,cAAc;GAG/B,IACI,WACA,CAAC,QAAQ,SAAS,MAAM,KACxB,YACA,CAAC,SAAS,SAAS,MAAM,GAEzB,WAAW;EAEnB;EACA,SAAS,wBAAwB,OAA4B;GACzD,IAAI,CAAC,SAAS,SAAS,OACnB;GAEJ,IAAI,UAAU,MAAM,KAChB;GAEJ,MAAM,YAAY,MAAM;GAExB,KADe,YAAY,MAAA,EACf,SAAS,SAAS,GAC1B,YAAY,QAAQ;QAEpB,WAAW;EAEnB;EACA,SAAS,OAAO;GACZ,cAAc,QAAQ,SAAS,eAAe,MAAM,MAAM;GAC1D,IAAI,cAAc,OAAO;IACrB,IAAI,CAAC,MAAM,WAAW;KAClB,cAAc,MAAM,iBAAkB,cAAa,cAAc;KACjE,cAAc,MAAM,iBAAiB,cAAa,gBAAgB;IACtE;IACA,IAAI,CAAC,MAAM,WACP,cAAc,MAAM,iBAAiB,SAAS,cAAc;IAEhE,cAAc,MAAM,iBAAiB,YAAY,aAAa;GAClE;EACJ;EACA,SAAS,kBAAkB;GACvB,IAAI,cAAc,OAAO;IACrB,IAAI,CAAC,MAAM,WAAW;KAClB,cAAc,MAAM,oBAAoB,cAAa,cAAe;KACpE,cAAc,MAAM,oBAAoB,cAAa,gBAAiB;IAC1E;IACA,IAAI,CAAC,MAAM,WACP,cAAc,MAAM,oBAAoB,SAAS,cAAc;IAEnE,cAAc,MAAM,oBAAoB,YAAY,aAAa;GACrE;EACJ;EACA,SAAS,iBAAiB,GAA6B;GACnD,IAAI,KAAK,SAAS,QAAQ,SAAS,EAAE,WAAW,WAAW,SAAS,CAAC,WAAW,OAAO,SAAS,EAAE,MAAM,GAAG;IACvG,QAAQ,QAAQ;IAChB,UAAU;IACV,OAAO;GACX;GACA,IAAI,KAAK,SAAS,kBAAkB,OAAO;IAEvC,CADgB,YAAY,MAAA,CACpB,YAAY;IACpB,QAAQ,QAAQ;IAChB,OAAO;GACX;GACA,QAAQ,QAAQ;GAChB,OAAO;EACX;EACA,SAAS,cAAc,aAAsB,YAAoB,eAAuB,aAAoB;GAGxG,IAD6B,iBAAiB,iBADjB,YAAY,QAAQ,eACsC,aAEnF,KAAK,QACD,YAAY,QACZ,aACA;QAEJ,KAAK,QAAO;EAEpB;EACA,SAAS,eAAe,aAAsB,YAAoB,eAAuB,aAAoB;GACzG,MAAM,sBAAsB,YAAY,OAAO;GAE/C,IAD6B,gBAAgB,sBAAuB,aAEhE,KAAK,QAAQ;QAEb,KAAK,QAAQ,gBAAgB,cAAc;EAEnD;EACA,SAAS,eAAe,GAA8B;GAClD,cAAc,aAAa,KAA0B;GACrD,IAAI,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,QAC1B;GAEJ,IAAI,YAAY,EAAE,QAAQ,OAAO,iBAAiB,CAAC,GAC/C;GAGJ,IAAI,EAAE,SAAS,cACX,cAAc,QAAQ;GAE1B,KAAK,QAAQ;GACb,MAAM,UAAU,YAAY;GAG5B,MAAM,cAAe,EAAE,OAAuB,sBAAsB;GACpE,QAAQ,MAAM,UAAU;GACxB,MAAM,cAAc,QAAQ;GAC5B,IAAI,MAAM,SACN,cAAc,aAAa,GAAG,OAAO,YAAY,WAAW;QAE5D,eAAe,aAAa,GAAG,OAAO,YAAY,WAAW;GAEjE,KAAK,QAAQ,KAAK,IAAI,GAAG,KAAK,KAAK;GACnC,MAAM,aAAa,MAAM,SAAS,YAAY,MAAM,YAAY;GAChE,MAAM,OAAO,MAAM,SACb,KAAK,QAAQ,eACb;GACN,KAAK,QAAQ,KAAK,IAAI,GAAG,aAAa,IAAI;GAC1C,UAAU,QAAS,OAAO,cAAc,KAAK,QAAS;EAC1D;EAEA,SAAS,cAAc,GAAe;GAClC,IAAI,YAAY,OAAO;IACnB,YAAY,QAAQ;IACpB;GACJ;GAGA,IAAI,OADW,MAAM,KAAK,GAAG,QAAQ,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,QAAQ;IAAE,OAAO,IAAI,WAAW,MAAM;GAAE,CAChG,GACL;GAGJ,MAAM,SAAS,YAAY;GAC3B,IAAI,CAAC,EAAE,eAAe;IAClB,IAAI,WAAW,QAAQ,OAAO,SAAS,EAAE,MAAM,GAC3C;IAEJ,OAAO,WAAW;GACtB;GACA,MAAM,YAAY,EAAE;GACpB,IAAI,UAAU,UAAU,UAAU,IAC9B;GAEJ,IAAI,SAAS,UAAU,CAAC,OAAO,SAAS,SAAS,GAC7C,OAAO,WAAW;GAEtB,IACI,SAAS,UAAU,aACnB,CAAC,UAAU,UAAU,SAAS,uBAAuB,GAErD;GAEJ,IAAI,CAAE,UAAgC,MAClC,OAAO,WAAW;GAEtB,IAAI,UAAU,UAAU,SAAS,UAAU,GACvC,UAAU,MAAM;QACb;IACH,MAAM,EAAE,UAAU,QAAQ,SAAS;IACnC,OAAO,KAAK,WAAW,SAAS,IAAI;GACxC;GACA,eAAe;IACX,QAAQ,QAAQ;IAChB,UAAU;GACd,CAAC;EACL;EACA,SAAS,aAAa;GAClB,QAAQ,QAAQ;GAChB,UAAU;EACd;EACA,SAAS,mBAAmB;GACxB,aAAa,QAAQ,iBAAiB;IAClC,IAAI,CAAC,YAAY,OACb,UAAU;IAEd,aAAa,QAAM,KAAA;GACvB,GAAG,GAAG;EACV;EACA,SAAS,YAAY;GAEjB,IAAI,QAAQ,SAAS,CAAC,cAAc,OAChC;GAEJ,KAAK,QAAQ;GACb,KAAK,QAAQ;GACb,KAAK,QAAQ;GACb,cAAc,QAAQ;EAC1B;EAGA,SAAa,EACT,WACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CCvS6B,OAAM;;AAGnB,IAAA,aAAA,EAAA,OAAM,MAAK;;CAtBxB,OAAAA,UAAA,GAAAC,YA0BWC,UAAA,EA1BD,IAAG,OAAM,GAAA,CACfC,eAAAC,mBAwBM,OAAA;EAtBD,IAAE,YAAc,OAAA;EACjB,KAAI;EACJ,SAAA;EACA,UAAS;EACT,OAAKC,eAAA,CAAC,yCAAuC;GACnB,OAAA,iBAAc,YAAA;GAAkC,OAAA,YAAS,qBAAA;GAA4C,OAAA;EAAY,CAAA,CAAA;EAI1I,OAAKC,eAAE,OAAA,mBAAmB;EAC1B,cAAU,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,cAAW;EACvB,cAAU,OAAA,OAAA,OAAA,MAAA,WAAA;GAAmB,OAAA,cAAW;GAA0B,OAAA,UAAS;;CAKjE,GAAA,CAAA,OAAA,SAAXN,UAAA,GAAAO,mBAEM,OAFN,YAEMC,gBADC,OAAA,KAAK,GAAA,CAAA,KAAAC,mBAAA,QAAA,IAAA,GAEZL,mBAEM,OAFN,YAEM,CADFM,WAA0B,KAAA,QAAA,WAAA,CAAA,SAAA,CAAjBC,gBAAAH,gBAAA,OAAA,OAAO,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,UAAA,GAAA,CArBZ,CAAAI,OAAA,OAAA,cAAc,CAAA,CAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClipboardModal-B_SZ6jDk.mjs","names":["_resolveComponent","_openBlock","_createBlock","_withCtx","_createElementVNode","_createTextVNode","_toDisplayString","_createVNode","_createCommentVNode","_sfc_main"],"sources":["../src/components/misc/modal/ClipboardModal.vue","../src/components/misc/modal/ClipboardModal.vue"],"sourcesContent":["<template>\n <ClassicModal\n id-modal=\"clipboard-modal\"\n :title-modal=\"t('RSS Link')\"\n @close=\"closePopup\"\n >\n <template #body>\n <p class=\"d-flex justify-content-between align-items-center\">\n {{ t(\"Rss feed:\") }}\n <span id=\"LINK\">{{ link }}</span>\n <ClassicCopyButton\n :text=\"t('Copy')\"\n :text-after-copy=\"t('Copied!')\"\n :data-to-copy=\"link\"\n :snackbar-text=\"t('Link in clipboard')\"\n />\n </p>\n <!--\n RssSection is not defined in the SDK: it is resolved at runtime from\n the consuming app's globally registered components (app.component()),\n and renders nothing if the app hasn't registered one under that name.\n -->\n <RssSection\n v-if=\"emission && undefined !== authStore.authOrgaId\"\n :emission=\"emission\"\n />\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicCopyButton from \"../../form/ClassicCopyButton.vue\";\nimport ClassicModal from \"../modal/ClassicModal.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n link: { default: \"\", type: String },\n emission: { default: undefined, type: Object as () => Emission },\n})\n\n//Emits\nconst emit = defineEmits([\"close\"]);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\n\n//Methods\nfunction closePopup(): void {\n emit(\"close\");\n}\n</script>\n","<template>\n <ClassicModal\n id-modal=\"clipboard-modal\"\n :title-modal=\"t('RSS Link')\"\n @close=\"closePopup\"\n >\n <template #body>\n <p class=\"d-flex justify-content-between align-items-center\">\n {{ t(\"Rss feed:\") }}\n <span id=\"LINK\">{{ link }}</span>\n <ClassicCopyButton\n :text=\"t('Copy')\"\n :text-after-copy=\"t('Copied!')\"\n :data-to-copy=\"link\"\n :snackbar-text=\"t('Link in clipboard')\"\n />\n </p>\n <!--\n RssSection is not defined in the SDK: it is resolved at runtime from\n the consuming app's globally registered components (app.component()),\n and renders nothing if the app hasn't registered one under that name.\n -->\n <RssSection\n v-if=\"emission && undefined !== authStore.authOrgaId\"\n :emission=\"emission\"\n />\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicCopyButton from \"../../form/ClassicCopyButton.vue\";\nimport ClassicModal from \"../modal/ClassicModal.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n link: { default: \"\", type: String },\n emission: { default: undefined, type: Object as () => Emission },\n})\n\n//Emits\nconst emit = defineEmits([\"close\"]);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\n\n//Methods\nfunction closePopup(): void {\n emit(\"close\");\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EA4CA,MAAM,OAAO;EAGb,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,YAAY,aAAa;EAG/B,SAAS,aAAmB;GAC1B,KAAK,OAAO;EACd;;;;;;;;;;;;;;;;;;AC9CS,IAAA,aAAA,EAAA,OAAM,oDAAmD;AAEpD,IAAA,aAAA,EAAA,IAAG,OAAM;;;CARrB,OAAAC,UAAA,GAAAC,YA0Be,OAAA,iBAAA;EAzBb,YAAS;EACR,eAAa,OAAA,EAAC,UAAA;EACd,SAAO,OAAA;;EAEG,MAAIC,cAUT;GATJC,mBASI,KATJ,YASI;IARCC,gBAAAC,gBAAA,OAAA,EAAC,WAAA,CAAA,IAAgB,KACpB,CAAA;IAAAF,mBAAiC,QAAjC,YAAiCE,gBAAd,OAAA,IAAI,GAAA,CAAA;IACvBC,YAKE,OAAA,sBAAA;KAJC,MAAM,OAAA,EAAC,MAAA;KACP,mBAAiB,OAAA,EAAC,SAAA;KAClB,gBAAc,OAAA;KACd,iBAAe,OAAA,EAAC,mBAAA;;;;;;;;GAGrBC,mBAAA,sPAAA;GAMQ,OAAA,YAAY,KAAA,MAAc,OAAA,UAAU,cAD5CP,UAAA,GAAAC,YAGE,uBAAA;;IADC,UAAU,OAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as e } from "./classicApi-
|
|
1
|
+
import { i as e } from "./classicApi-CGipMqf7.mjs";
|
|
2
2
|
import { t } from "./ClassicModal-Dl2IdzXZ.mjs";
|
|
3
3
|
import { t as n } from "./ClassicCopyButton-DJ9T09fS.mjs";
|
|
4
4
|
import { createBlock as r, createCommentVNode as i, createElementVNode as a, createTextVNode as o, createVNode as s, defineComponent as c, openBlock as l, resolveComponent as u, toDisplayString as d, unref as f, withCtx as p } from "vue";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClipboardModal-DjrZQRtY.mjs","names":["_resolveComponent","_openBlock","_createBlock","_withCtx","_createElementVNode","_createTextVNode","_toDisplayString","_createVNode","_createCommentVNode","_sfc_main"],"sources":["../src/components/misc/modal/ClipboardModal.vue","../src/components/misc/modal/ClipboardModal.vue"],"sourcesContent":["<template>\n <ClassicModal\n id-modal=\"clipboard-modal\"\n :title-modal=\"t('RSS Link')\"\n @close=\"closePopup\"\n >\n <template #body>\n <p class=\"d-flex justify-content-between align-items-center\">\n {{ t(\"Rss feed:\") }}\n <span id=\"LINK\">{{ link }}</span>\n <ClassicCopyButton\n :text=\"t('Copy')\"\n :text-after-copy=\"t('Copied!')\"\n :data-to-copy=\"link\"\n :snackbar-text=\"t('Link in clipboard')\"\n />\n </p>\n <!--\n RssSection is not defined in the SDK: it is resolved at runtime from\n the consuming app's globally registered components (app.component()),\n and renders nothing if the app hasn't registered one under that name.\n -->\n <RssSection\n v-if=\"emission && undefined !== authStore.authOrgaId\"\n :emission=\"emission\"\n />\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicCopyButton from \"../../form/ClassicCopyButton.vue\";\nimport ClassicModal from \"../modal/ClassicModal.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n link: { default: \"\", type: String },\n emission: { default: undefined, type: Object as () => Emission },\n})\n\n//Emits\nconst emit = defineEmits([\"close\"]);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\n\n//Methods\nfunction closePopup(): void {\n emit(\"close\");\n}\n</script>\n","<template>\n <ClassicModal\n id-modal=\"clipboard-modal\"\n :title-modal=\"t('RSS Link')\"\n @close=\"closePopup\"\n >\n <template #body>\n <p class=\"d-flex justify-content-between align-items-center\">\n {{ t(\"Rss feed:\") }}\n <span id=\"LINK\">{{ link }}</span>\n <ClassicCopyButton\n :text=\"t('Copy')\"\n :text-after-copy=\"t('Copied!')\"\n :data-to-copy=\"link\"\n :snackbar-text=\"t('Link in clipboard')\"\n />\n </p>\n <!--\n RssSection is not defined in the SDK: it is resolved at runtime from\n the consuming app's globally registered components (app.component()),\n and renders nothing if the app hasn't registered one under that name.\n -->\n <RssSection\n v-if=\"emission && undefined !== authStore.authOrgaId\"\n :emission=\"emission\"\n />\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicCopyButton from \"../../form/ClassicCopyButton.vue\";\nimport ClassicModal from \"../modal/ClassicModal.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n link: { default: \"\", type: String },\n emission: { default: undefined, type: Object as () => Emission },\n})\n\n//Emits\nconst emit = defineEmits([\"close\"]);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\n\n//Methods\nfunction closePopup(): void {\n emit(\"close\");\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EA4CA,MAAM,OAAO;EAGb,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,YAAY,aAAa;EAG/B,SAAS,aAAmB;GAC1B,KAAK,OAAO;EACd;;;;;;;;;;;;;;;;;;AC9CS,IAAA,aAAA,EAAA,OAAM,oDAAmD;AAEpD,IAAA,aAAA,EAAA,IAAG,OAAM;;;CARrB,OAAAC,UAAA,GAAAC,YA0Be,OAAA,iBAAA;EAzBb,YAAS;EACR,eAAa,OAAA,EAAC,UAAA;EACd,SAAO,OAAA;;EAEG,MAAIC,cAUT;GATJC,mBASI,KATJ,YASI;IARCC,gBAAAC,gBAAA,OAAA,EAAC,WAAA,CAAA,IAAgB,KACpB,CAAA;IAAAF,mBAAiC,QAAjC,YAAiCE,gBAAd,OAAA,IAAI,GAAA,CAAA;IACvBC,YAKE,OAAA,sBAAA;KAJC,MAAM,OAAA,EAAC,MAAA;KACP,mBAAiB,OAAA,EAAC,SAAA;KAClB,gBAAc,OAAA;KACd,iBAAe,OAAA,EAAC,mBAAA;;;;;;;;GAGrBC,mBAAA,sPAAA;GAMQ,OAAA,YAAY,KAAA,MAAc,OAAA,UAAU,cAD5CP,UAAA,GAAAC,YAGE,uBAAA;;IADC,UAAU,OAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { i as e, t } from "./classicApi-
|
|
2
|
-
import { n } from "./PlayerStore-
|
|
3
|
-
import { t as r } from "./CommentStore-
|
|
1
|
+
import { i as e, t } from "./classicApi-CGipMqf7.mjs";
|
|
2
|
+
import { n } from "./PlayerStore-DggKki80.mjs";
|
|
3
|
+
import { t as r } from "./CommentStore-CysGkBHp.mjs";
|
|
4
4
|
import { t as i } from "./config-DMjLBcZ2.mjs";
|
|
5
5
|
import { computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createVNode as u, defineAsyncComponent as d, defineComponent as f, normalizeClass as p, openBlock as m, ref as h, toDisplayString as g, unref as _, useTemplateRef as v, watch as y } from "vue";
|
|
6
6
|
import { useI18n as b } from "vue-i18n";
|
|
@@ -26,7 +26,7 @@ var x = { class: "d-flex flex-column comment-input-container mt-3" }, S = {
|
|
|
26
26
|
},
|
|
27
27
|
emits: ["cancelAction", "newComment"],
|
|
28
28
|
setup(f, { emit: T }) {
|
|
29
|
-
let E = d(() => import("./CheckIdentityModal-
|
|
29
|
+
let E = d(() => import("./CheckIdentityModal-BrnYeGdk.mjs")), D = d(() => import("./CommentName-CHBlEM7I.mjs")), O = d(() => import("./MessageModal-BcqS77v6.mjs").then((e) => e.n)), k = d(() => import("./ClassicEmojiPicker-C0gm-DA2.mjs")), A = d(() => import("./ClassicContentEditable-CWmtRihd.mjs")), j = f, M = T, N = i.MAX_COMMENT, P = h(""), F = h(!1), I = h(!1), L = h(!1), R = v("textarea"), { t: z } = b(), B = n(), V = r(), H = e(), U = a(() => W.value <= N), W = a(() => P.value.length), G = a(() => j.inAnswerComment?.commentId ? z("Answer a comment") : z("Write a comment")), K = a(() => "-comment" + (j.inAnswerComment?.commentId ?? "-parent"));
|
|
30
30
|
y(() => j.focus, () => R?.value?.focus());
|
|
31
31
|
function q(e) {
|
|
32
32
|
P.value += e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommentInput-DPMj47uE.mjs","names":["Constants","classicApi","_openBlock","_createElementBlock","_createBlock","_createCommentVNode","_createVNode","_createElementVNode","_normalizeClass","_toDisplayString","_sfc_main"],"sources":["../src/components/display/comments/CommentInput.vue","../src/components/display/comments/CommentInput.vue"],"sourcesContent":["<template>\n <div class=\"d-flex flex-column comment-input-container mt-3\">\n <CommentName v-if=\"commentStore.commentUser?.name\" />\n <ClassicContentEditable\n ref=\"textarea\"\n v-model=\"newComment\"\n class=\"comment-input\"\n :placeholder=\"placeholder\"\n @focus=\"isTextareaActive = true\"\n />\n <div v-if=\"isTextareaActive\" class=\"d-flex justify-content-between mt-1\">\n <ClassicEmojiPicker\n :id=\"uniqueId\"\n popover-relative-class=\"page-element\"\n @emoji-selected=\"addEmojiSelected\"\n />\n <div class=\"d-flex ms-auto\">\n <p\n class=\"d-flex justify-content-end h6 me-3\"\n :class=\"{ 'text-danger': !commentTooLong }\"\n >\n {{ countComment + \" / \" + maxComment }}\n </p>\n <button class=\"btn me-2\" @mousedown=\"cancelAction\">\n {{ t(\"Cancel\") }}\n </button>\n <button\n class=\"btn btn-primary\"\n :disabled=\"0 === countComment || !commentTooLong\"\n @mousedown=\"requestToSend\"\n >\n {{ placeholder }}\n </button>\n </div>\n </div>\n <CheckIdentityModal\n v-if=\"isCheckIdentity\"\n @validate=\"postComment\"\n @close=\"isCheckIdentity = false\"\n />\n <MessageModal\n v-if=\"postError\"\n :validatetext=\"t('Close')\"\n :title=\"t('Error')\"\n :message=\"t('Error occurs while post your comment...')\"\n @close=\"postError = false\"\n @validate=\"postError = false\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport Constants from \"../../../../public/config\";\nimport { defineAsyncComponent, ref, computed, watch, useTemplateRef } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\nconst CheckIdentityModal = defineAsyncComponent(\n () => import(\"./modal/CheckIdentityModal.vue\"),\n);\nconst CommentName = defineAsyncComponent(() => import(\"./CommentName.vue\"));\nconst MessageModal = defineAsyncComponent(\n () => import(\"../../misc/modal/MessageModal.vue\"),\n);\nconst ClassicEmojiPicker = defineAsyncComponent(\n () => import(\"../../form/ClassicEmojiPicker.vue\"),\n);\nconst ClassicContentEditable = defineAsyncComponent(\n () => import(\"../../form/ClassicContentEditable.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcast: { default: undefined, type: Object as () => Podcast },\n focus: { default: false, type: Boolean },\n inAnswerComment: {\n default: undefined,\n type: Object as () => CommentPodcast,\n },\n})\n\n//Emits\nconst emit = defineEmits([\"cancelAction\", \"newComment\"]);\n\n//Data \nconst maxComment = Constants.MAX_COMMENT;\nconst newComment = ref(\"\");\nconst isTextareaActive = ref(false);\nconst isCheckIdentity = ref(false);\nconst postError = ref(false);\nconst textareaRef = useTemplateRef('textarea');\n\n//Composables\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\nconst commentStore = useCommentStore();\nconst authStore = useAuthStore();\n\n//Computed\nconst commentTooLong = computed(() => countComment.value <= maxComment);\nconst countComment = computed(() => newComment.value.length);\nconst placeholder = computed(() => props.inAnswerComment?.commentId? t(\"Answer a comment\"): t(\"Write a comment\"));\nconst uniqueId = computed(() => \"-comment\"+(props.inAnswerComment?.commentId??\"-parent\"));\n\n\n//Watch\nwatch(()=>props.focus, () => textareaRef?.value?.focus());\n\n\n//Methods\nfunction addEmojiSelected(emoji: string) {\n newComment.value += emoji;\n}\nfunction requestToSend(): void {\n if (commentStore.commentUser?.name) {\n postComment();\n } else {\n isCheckIdentity.value = true;\n }\n}\nfunction cancelAction(): void {\n newComment.value = \"\";\n isTextareaActive.value = false;\n emit(\"cancelAction\");\n}\nasync function postComment(): Promise<void> {\n try {\n const commentReceived = await classicApi.postData<CommentPodcast>({\n api: 2,\n path: \"comment/\",\n dataToSend: {\n answerTo: props.inAnswerComment?.commentId,\n content: newComment.value.trim(),\n name: commentStore.commentUser?.name ?? \"\",\n podcastId:\n props.podcast?.podcastId ?? props.inAnswerComment?.podcastId ?? 0,\n uuid: commentStore.commentUser?.uuid ?? \"\",\n timeline: defineTimelineValue(),\n },\n isNotAuth: undefined === authStore.authOrgaId,\n });\n emit(\"newComment\", commentReceived);\n newComment.value = \"\";\n isTextareaActive.value = false;\n } catch {\n postError.value = true;\n }\n isCheckIdentity.value = false;\n}\nfunction defineTimelineValue(): number {\n let timeline = 0;\n if (\n undefined !== props.podcast &&\n (playerStore.playerPodcast?.podcastId === props.podcast.podcastId ||\n playerStore.playerLive?.podcastId === props.podcast.podcastId)\n ) {\n timeline = Math.round(playerStore.playerElapsed * playerStore.playerTotal);\n if (props.podcast.duration && playerStore.playerPodcast) {\n timeline = Math.round(\n timeline - (playerStore.playerTotal - props.podcast.duration / 1000),\n );\n }\n }\n return timeline < 0 ? 0 : timeline;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app .comment-input-container {\n .comment-input {\n border-bottom: 0.1rem solid var(--octopus-border-default);\n overflow: hidden;\n min-height: 36px;\n resize: none;\n }\n}\n</style>\n","<template>\n <div class=\"d-flex flex-column comment-input-container mt-3\">\n <CommentName v-if=\"commentStore.commentUser?.name\" />\n <ClassicContentEditable\n ref=\"textarea\"\n v-model=\"newComment\"\n class=\"comment-input\"\n :placeholder=\"placeholder\"\n @focus=\"isTextareaActive = true\"\n />\n <div v-if=\"isTextareaActive\" class=\"d-flex justify-content-between mt-1\">\n <ClassicEmojiPicker\n :id=\"uniqueId\"\n popover-relative-class=\"page-element\"\n @emoji-selected=\"addEmojiSelected\"\n />\n <div class=\"d-flex ms-auto\">\n <p\n class=\"d-flex justify-content-end h6 me-3\"\n :class=\"{ 'text-danger': !commentTooLong }\"\n >\n {{ countComment + \" / \" + maxComment }}\n </p>\n <button class=\"btn me-2\" @mousedown=\"cancelAction\">\n {{ t(\"Cancel\") }}\n </button>\n <button\n class=\"btn btn-primary\"\n :disabled=\"0 === countComment || !commentTooLong\"\n @mousedown=\"requestToSend\"\n >\n {{ placeholder }}\n </button>\n </div>\n </div>\n <CheckIdentityModal\n v-if=\"isCheckIdentity\"\n @validate=\"postComment\"\n @close=\"isCheckIdentity = false\"\n />\n <MessageModal\n v-if=\"postError\"\n :validatetext=\"t('Close')\"\n :title=\"t('Error')\"\n :message=\"t('Error occurs while post your comment...')\"\n @close=\"postError = false\"\n @validate=\"postError = false\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport Constants from \"../../../../public/config\";\nimport { defineAsyncComponent, ref, computed, watch, useTemplateRef } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\nconst CheckIdentityModal = defineAsyncComponent(\n () => import(\"./modal/CheckIdentityModal.vue\"),\n);\nconst CommentName = defineAsyncComponent(() => import(\"./CommentName.vue\"));\nconst MessageModal = defineAsyncComponent(\n () => import(\"../../misc/modal/MessageModal.vue\"),\n);\nconst ClassicEmojiPicker = defineAsyncComponent(\n () => import(\"../../form/ClassicEmojiPicker.vue\"),\n);\nconst ClassicContentEditable = defineAsyncComponent(\n () => import(\"../../form/ClassicContentEditable.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcast: { default: undefined, type: Object as () => Podcast },\n focus: { default: false, type: Boolean },\n inAnswerComment: {\n default: undefined,\n type: Object as () => CommentPodcast,\n },\n})\n\n//Emits\nconst emit = defineEmits([\"cancelAction\", \"newComment\"]);\n\n//Data \nconst maxComment = Constants.MAX_COMMENT;\nconst newComment = ref(\"\");\nconst isTextareaActive = ref(false);\nconst isCheckIdentity = ref(false);\nconst postError = ref(false);\nconst textareaRef = useTemplateRef('textarea');\n\n//Composables\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\nconst commentStore = useCommentStore();\nconst authStore = useAuthStore();\n\n//Computed\nconst commentTooLong = computed(() => countComment.value <= maxComment);\nconst countComment = computed(() => newComment.value.length);\nconst placeholder = computed(() => props.inAnswerComment?.commentId? t(\"Answer a comment\"): t(\"Write a comment\"));\nconst uniqueId = computed(() => \"-comment\"+(props.inAnswerComment?.commentId??\"-parent\"));\n\n\n//Watch\nwatch(()=>props.focus, () => textareaRef?.value?.focus());\n\n\n//Methods\nfunction addEmojiSelected(emoji: string) {\n newComment.value += emoji;\n}\nfunction requestToSend(): void {\n if (commentStore.commentUser?.name) {\n postComment();\n } else {\n isCheckIdentity.value = true;\n }\n}\nfunction cancelAction(): void {\n newComment.value = \"\";\n isTextareaActive.value = false;\n emit(\"cancelAction\");\n}\nasync function postComment(): Promise<void> {\n try {\n const commentReceived = await classicApi.postData<CommentPodcast>({\n api: 2,\n path: \"comment/\",\n dataToSend: {\n answerTo: props.inAnswerComment?.commentId,\n content: newComment.value.trim(),\n name: commentStore.commentUser?.name ?? \"\",\n podcastId:\n props.podcast?.podcastId ?? props.inAnswerComment?.podcastId ?? 0,\n uuid: commentStore.commentUser?.uuid ?? \"\",\n timeline: defineTimelineValue(),\n },\n isNotAuth: undefined === authStore.authOrgaId,\n });\n emit(\"newComment\", commentReceived);\n newComment.value = \"\";\n isTextareaActive.value = false;\n } catch {\n postError.value = true;\n }\n isCheckIdentity.value = false;\n}\nfunction defineTimelineValue(): number {\n let timeline = 0;\n if (\n undefined !== props.podcast &&\n (playerStore.playerPodcast?.podcastId === props.podcast.podcastId ||\n playerStore.playerLive?.podcastId === props.podcast.podcastId)\n ) {\n timeline = Math.round(playerStore.playerElapsed * playerStore.playerTotal);\n if (props.podcast.duration && playerStore.playerPodcast) {\n timeline = Math.round(\n timeline - (playerStore.playerTotal - props.podcast.duration / 1000),\n );\n }\n }\n return timeline < 0 ? 0 : timeline;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app .comment-input-container {\n .comment-input {\n border-bottom: 0.1rem solid var(--octopus-border-default);\n overflow: hidden;\n min-height: 36px;\n resize: none;\n }\n}\n</style>\n"],"mappings":"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"}
|