@nextcloud/vue 8.40.0 → 8.41.0
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/CHANGELOG.md +81 -78
- package/dist/Components/NcActionButtonGroup.cjs +1 -1
- package/dist/Components/NcActionButtonGroup.mjs +1 -1
- package/dist/Components/NcActionInput.cjs +1 -1
- package/dist/Components/NcActionInput.mjs +1 -1
- package/dist/Components/NcActions.cjs +1 -1
- package/dist/Components/NcActions.mjs +1 -1
- package/dist/Components/NcAppContent.cjs +1 -1
- package/dist/Components/NcAppContent.mjs +1 -1
- package/dist/Components/NcAppNavigation.cjs +1 -1
- package/dist/Components/NcAppNavigation.mjs +1 -1
- package/dist/Components/NcAppNavigationCaption.cjs +1 -1
- package/dist/Components/NcAppNavigationCaption.mjs +1 -1
- package/dist/Components/NcAppNavigationItem.cjs +1 -1
- package/dist/Components/NcAppNavigationItem.mjs +1 -1
- package/dist/Components/NcAppNavigationNew.cjs +1 -1
- package/dist/Components/NcAppNavigationNew.mjs +1 -1
- package/dist/Components/NcAppNavigationNewItem.cjs +1 -1
- package/dist/Components/NcAppNavigationNewItem.mjs +1 -1
- package/dist/Components/NcAppNavigationSearch.cjs +1 -1
- package/dist/Components/NcAppNavigationSearch.mjs +1 -1
- package/dist/Components/NcAppNavigationSettings.cjs +1 -1
- package/dist/Components/NcAppNavigationSettings.mjs +1 -1
- package/dist/Components/NcAppNavigationToggle.cjs +1 -1
- package/dist/Components/NcAppNavigationToggle.mjs +1 -1
- package/dist/Components/NcAppSettingsDialog.cjs +1 -1
- package/dist/Components/NcAppSettingsDialog.mjs +1 -1
- package/dist/Components/NcAppSettingsSectionShortcuts.cjs +1 -1
- package/dist/Components/NcAppSettingsSectionShortcuts.mjs +1 -1
- package/dist/Components/NcAppSettingsShortcutsSection.cjs +1 -1
- package/dist/Components/NcAppSettingsShortcutsSection.mjs +1 -1
- package/dist/Components/NcAppSidebar.cjs +1 -1
- package/dist/Components/NcAppSidebar.mjs +1 -1
- package/dist/Components/NcAssistantButton.cjs +1 -1
- package/dist/Components/NcAssistantButton.mjs +1 -1
- package/dist/Components/NcAssistantContent.cjs +4 -4
- package/dist/Components/NcAssistantContent.mjs +4 -4
- package/dist/Components/NcAssistantIcon.cjs +1 -1
- package/dist/Components/NcAssistantIcon.mjs +1 -1
- package/dist/Components/NcAvatar.cjs +1 -1
- package/dist/Components/NcAvatar.mjs +1 -1
- package/dist/Components/NcBlurHash.cjs +1 -1
- package/dist/Components/NcBlurHash.mjs +1 -1
- package/dist/Components/NcBreadcrumb.cjs +1 -1
- package/dist/Components/NcBreadcrumb.mjs +1 -1
- package/dist/Components/NcBreadcrumbs.cjs +1 -1
- package/dist/Components/NcBreadcrumbs.mjs +1 -1
- package/dist/Components/NcButton.cjs +1 -1
- package/dist/Components/NcButton.mjs +1 -1
- package/dist/Components/NcCheckboxRadioSwitch.cjs +1 -1
- package/dist/Components/NcCheckboxRadioSwitch.mjs +1 -1
- package/dist/Components/NcChip.cjs +3 -3
- package/dist/Components/NcChip.mjs +3 -3
- package/dist/Components/NcCollectionList.cjs +1 -1
- package/dist/Components/NcCollectionList.mjs +1 -1
- package/dist/Components/NcColorPicker.cjs +1 -1
- package/dist/Components/NcColorPicker.mjs +1 -1
- package/dist/Components/NcContent.cjs +1 -1
- package/dist/Components/NcContent.mjs +1 -1
- package/dist/Components/NcDashboardWidget.cjs +1 -1
- package/dist/Components/NcDashboardWidget.mjs +1 -1
- package/dist/Components/NcDashboardWidgetItem.cjs +1 -1
- package/dist/Components/NcDashboardWidgetItem.mjs +1 -1
- package/dist/Components/NcDateTimePicker.cjs +6 -6
- package/dist/Components/NcDateTimePicker.mjs +6 -6
- package/dist/Components/NcDateTimePickerNative.cjs +1 -1
- package/dist/Components/NcDateTimePickerNative.mjs +1 -1
- package/dist/Components/NcDialog.cjs +1 -1
- package/dist/Components/NcDialog.mjs +1 -1
- package/dist/Components/NcDialogButton.cjs +1 -1
- package/dist/Components/NcDialogButton.mjs +1 -1
- package/dist/Components/NcEmojiPicker.cjs +1 -1
- package/dist/Components/NcEmojiPicker.mjs +1 -1
- package/dist/Components/NcFilePicker.cjs +1 -1
- package/dist/Components/NcFilePicker.mjs +1 -1
- package/dist/Components/NcFormBox.cjs +1 -1
- package/dist/Components/NcFormBox.mjs +1 -1
- package/dist/Components/NcFormBoxButton.cjs +1 -1
- package/dist/Components/NcFormBoxButton.mjs +1 -1
- package/dist/Components/NcFormBoxCopyButton.cjs +1 -1
- package/dist/Components/NcFormBoxCopyButton.mjs +1 -1
- package/dist/Components/NcFormBoxSwitch.cjs +1 -1
- package/dist/Components/NcFormBoxSwitch.mjs +1 -1
- package/dist/Components/NcFormGroup.cjs +1 -1
- package/dist/Components/NcFormGroup.mjs +1 -1
- package/dist/Components/NcHeaderButton.cjs +1 -1
- package/dist/Components/NcHeaderButton.mjs +1 -1
- package/dist/Components/NcHeaderMenu.cjs +1 -1
- package/dist/Components/NcHeaderMenu.mjs +1 -1
- package/dist/Components/NcHotkey.cjs +1 -1
- package/dist/Components/NcHotkey.mjs +1 -1
- package/dist/Components/NcHotkeyList.cjs +1 -1
- package/dist/Components/NcHotkeyList.mjs +1 -1
- package/dist/Components/NcInputField.cjs +1 -1
- package/dist/Components/NcInputField.mjs +1 -1
- package/dist/Components/NcKbd.cjs +1 -1
- package/dist/Components/NcKbd.mjs +1 -1
- package/dist/Components/NcListItem.cjs +1 -1
- package/dist/Components/NcListItem.mjs +1 -1
- package/dist/Components/NcListItemIcon.cjs +1 -1
- package/dist/Components/NcListItemIcon.mjs +1 -1
- package/dist/Components/NcModal.cjs +5 -5
- package/dist/Components/NcModal.mjs +5 -5
- package/dist/Components/NcNoteCard.cjs +1 -1
- package/dist/Components/NcNoteCard.mjs +1 -1
- package/dist/Components/NcPasswordField.cjs +1 -1
- package/dist/Components/NcPasswordField.mjs +1 -1
- package/dist/Components/NcPopover.cjs +1 -1
- package/dist/Components/NcPopover.mjs +1 -1
- package/dist/Components/NcProfileHoverCard.cjs +4 -0
- package/dist/Components/NcProfileHoverCard.cjs.map +1 -0
- package/dist/Components/NcProfileHoverCard.mjs +5 -0
- package/dist/Components/NcProfileHoverCard.mjs.map +1 -0
- package/dist/Components/NcRadioGroup.cjs +1 -1
- package/dist/Components/NcRadioGroup.mjs +1 -1
- package/dist/Components/NcRadioGroupButton.cjs +1 -1
- package/dist/Components/NcRadioGroupButton.mjs +1 -1
- package/dist/Components/NcRelatedResourcesPanel.cjs +1 -1
- package/dist/Components/NcRelatedResourcesPanel.mjs +1 -1
- package/dist/Components/NcRichContenteditable.cjs +1 -1
- package/dist/Components/NcRichContenteditable.mjs +1 -1
- package/dist/Components/NcRichText.cjs +9 -7
- package/dist/Components/NcRichText.cjs.map +1 -1
- package/dist/Components/NcRichText.mjs +15 -13
- package/dist/Components/NcRichText.mjs.map +1 -1
- package/dist/Components/NcSelect.cjs +1 -1
- package/dist/Components/NcSelect.mjs +1 -1
- package/dist/Components/NcSelectTags.cjs +1 -1
- package/dist/Components/NcSelectTags.mjs +1 -1
- package/dist/Components/NcSelectUsers.cjs +1 -1
- package/dist/Components/NcSelectUsers.mjs +1 -1
- package/dist/Components/NcSettingsInputText.cjs +1 -1
- package/dist/Components/NcSettingsInputText.mjs +1 -1
- package/dist/Components/NcSettingsSection.cjs +1 -1
- package/dist/Components/NcSettingsSection.mjs +1 -1
- package/dist/Components/NcSettingsSelectGroup.cjs +1 -1
- package/dist/Components/NcSettingsSelectGroup.mjs +1 -1
- package/dist/Components/NcTextArea.cjs +1 -1
- package/dist/Components/NcTextArea.mjs +1 -1
- package/dist/Components/NcTextField.cjs +1 -1
- package/dist/Components/NcTextField.mjs +1 -1
- package/dist/Components/NcTimezonePicker.cjs +1 -1
- package/dist/Components/NcTimezonePicker.mjs +1 -1
- package/dist/Components/NcUserBubble.cjs +1 -1
- package/dist/Components/NcUserBubble.mjs +1 -1
- package/dist/Components/NcUserStatusIcon.cjs +1 -1
- package/dist/Components/NcUserStatusIcon.mjs +1 -1
- package/dist/Composables/useFormatDateTime.cjs +11 -5
- package/dist/Composables/useFormatDateTime.cjs.map +1 -1
- package/dist/Composables/useFormatDateTime.mjs +11 -5
- package/dist/Composables/useFormatDateTime.mjs.map +1 -1
- package/dist/Functions/reference.cjs +11 -10
- package/dist/Functions/reference.cjs.map +1 -1
- package/dist/Functions/reference.mjs +7 -6
- package/dist/Functions/reference.mjs.map +1 -1
- package/dist/Functions/registerReference.cjs +6 -5
- package/dist/Functions/registerReference.cjs.map +1 -1
- package/dist/Functions/registerReference.mjs +6 -5
- package/dist/Functions/registerReference.mjs.map +1 -1
- package/dist/Functions/usernameToColor.cjs +1 -1
- package/dist/Functions/usernameToColor.mjs +1 -1
- package/dist/assets/{NcAppNavigationToggle-DgwbZOWc.css → NcAppNavigationToggle-D1K2TRZ-.css} +3 -3
- package/dist/assets/{NcAppSettingsDialog-Bi5b1VZg.css → NcAppSettingsDialog-Cu7QAD8V.css} +3 -3
- package/dist/assets/{NcAppSettingsShortcutsSection-zIKJEvmV.css → NcAppSettingsShortcutsSection-D-FcvAWd.css} +3 -3
- package/dist/assets/{NcAssistantButton-CaIHaboe.css → NcAssistantButton-C6d88UPB.css} +9 -9
- package/dist/assets/{NcAssistantContent-D6ZguiGh.css → NcAssistantContent-DTHxHZ09.css} +3 -3
- package/dist/assets/{NcAssistantIcon-Cmlid9NS.css → NcAssistantIcon-BV1uZpAb.css} +4 -4
- package/dist/assets/{NcAvatar-Dc_YuZk2.css → NcAvatar-BdHHFwV3.css} +40 -25
- package/dist/assets/{NcBlurHash-BW1TQ16k.css → NcBlurHash-Zj5Z9WKv.css} +2 -2
- package/dist/assets/{NcCheckboxRadioSwitch-DhXG73Zr.css → NcCheckboxRadioSwitch-DCSWiHVq.css} +38 -38
- package/dist/assets/{NcDateTimePicker-DuZR5gqu.css → NcDateTimePicker-CD0ZGUBz.css} +15 -15
- package/dist/assets/{NcFilePicker-D_SA_uGV.css → NcFilePicker-BjFpDu4R.css} +1 -1
- package/dist/assets/{NcFormBox-yb5gffYX.css → NcFormBox-DoEpsPVV.css} +11 -11
- package/dist/assets/{NcFormBoxButton-BnSImmUm.css → NcFormBoxButton-CFtdjCfy.css} +2 -2
- package/dist/assets/{NcFormBoxItem-DiaYRoDl.css → NcFormBoxItem-C918I2qS.css} +14 -14
- package/dist/assets/{NcFormBoxSwitch-CDDwfQx6.css → NcFormBoxSwitch-C4cbxBBA.css} +2 -2
- package/dist/assets/{NcFormGroup-ChUa97BY.css → NcFormGroup-CUFSO_ru.css} +7 -7
- package/dist/assets/{NcHotkey-B-GNBJym.css → NcHotkey-D_InvA0N.css} +8 -8
- package/dist/assets/{NcHotkeyList-D7NVZF42.css → NcHotkeyList-XE5Xd_iE.css} +2 -2
- package/dist/assets/{NcIconToggleSwitch-Df8M_g5F.css → NcIconToggleSwitch-DO_sv5_o.css} +4 -4
- package/dist/assets/{NcKbd-BQUEINsB.css → NcKbd-IflT8hS_.css} +3 -3
- package/dist/assets/{NcPopover-CVOTdP6j.css → NcPopover-nBCZ8J9Q.css} +13 -13
- package/dist/assets/NcProfileHoverCard-D3V682nS.css +340 -0
- package/dist/assets/{NcRadioGroup-DQde-Yd1.css → NcRadioGroup-Bq7x-xEK.css} +2 -2
- package/dist/assets/{NcRadioGroupButton-Dwpy1m0F.css → NcRadioGroupButton-i11p0wHX.css} +13 -13
- package/dist/assets/NcReferenceWidget-Cg4xOL_8.css +150 -0
- package/dist/assets/{NcRichContenteditable-Dwd67_kU.css → NcRichContenteditable-DRPzKa4Z.css} +17 -17
- package/dist/assets/{autolink-CR5N0xNQ.css → autolink-CEziQYgN.css} +3 -3
- package/dist/assets/{referencePickerModal-C4Pr02xT.css → referencePickerModal-0oYth4rX.css} +0 -149
- package/dist/chunks/DockRight-B0D52yCO.mjs +38 -0
- package/dist/chunks/DockRight-B0D52yCO.mjs.map +1 -0
- package/dist/chunks/DockRight-CXafXJaH.cjs +37 -0
- package/dist/chunks/DockRight-CXafXJaH.cjs.map +1 -0
- package/dist/chunks/{NcActionButtonGroup-B95wg_Q6.mjs → NcActionButtonGroup-C3eUBbt4.mjs} +2 -2
- package/dist/chunks/{NcActionButtonGroup-B95wg_Q6.mjs.map → NcActionButtonGroup-C3eUBbt4.mjs.map} +1 -1
- package/dist/chunks/{NcActionButtonGroup-CFGCmzTM.cjs → NcActionButtonGroup-CsOhQH6p.cjs} +2 -2
- package/dist/chunks/{NcActionButtonGroup-CFGCmzTM.cjs.map → NcActionButtonGroup-CsOhQH6p.cjs.map} +1 -1
- package/dist/chunks/{NcActionInput-DITmqZz5.cjs → NcActionInput-C-j7Mehu.cjs} +5 -5
- package/dist/chunks/{NcActionInput-DITmqZz5.cjs.map → NcActionInput-C-j7Mehu.cjs.map} +1 -1
- package/dist/chunks/{NcActionInput-Xepxb1Nk.mjs → NcActionInput-CMLDgnF_.mjs} +5 -5
- package/dist/chunks/{NcActionInput-Xepxb1Nk.mjs.map → NcActionInput-CMLDgnF_.mjs.map} +1 -1
- package/dist/chunks/{NcActions-JnumflF4.mjs → NcActions-CX1MSord.mjs} +5 -5
- package/dist/chunks/{NcActions-JnumflF4.mjs.map → NcActions-CX1MSord.mjs.map} +1 -1
- package/dist/chunks/{NcActions-DYWuXM9w.cjs → NcActions-H0GXWVPU.cjs} +5 -5
- package/dist/chunks/{NcActions-DYWuXM9w.cjs.map → NcActions-H0GXWVPU.cjs.map} +1 -1
- package/dist/chunks/{NcAppContent-BScPRxTJ.mjs → NcAppContent-7ziLICwJ.mjs} +5 -6
- package/dist/chunks/NcAppContent-7ziLICwJ.mjs.map +1 -0
- package/dist/chunks/{NcAppContent-BDqXhfww.cjs → NcAppContent-BCYyp6nc.cjs} +7 -8
- package/dist/chunks/NcAppContent-BCYyp6nc.cjs.map +1 -0
- package/dist/chunks/{NcAppNavigation-C4iIEWY3.mjs → NcAppNavigation-BDyBoXA1.mjs} +3 -3
- package/dist/chunks/{NcAppNavigation-C4iIEWY3.mjs.map → NcAppNavigation-BDyBoXA1.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigation-qz271rGf.cjs → NcAppNavigation-BEor4mmi.cjs} +3 -3
- package/dist/chunks/{NcAppNavigation-qz271rGf.cjs.map → NcAppNavigation-BEor4mmi.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-BJnvmftc.mjs → NcAppNavigationCaption-DYdHKPv7.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationCaption-BJnvmftc.mjs.map → NcAppNavigationCaption-DYdHKPv7.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-CYN9-_R2.cjs → NcAppNavigationCaption-drD-T2kk.cjs} +2 -2
- package/dist/chunks/{NcAppNavigationCaption-CYN9-_R2.cjs.map → NcAppNavigationCaption-drD-T2kk.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationItem-qRteEY0G.cjs → NcAppNavigationItem-Ccy8CT50.cjs} +8 -8
- package/dist/chunks/{NcAppNavigationItem-qRteEY0G.cjs.map → NcAppNavigationItem-Ccy8CT50.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationItem-DRaKry-f.mjs → NcAppNavigationItem-Dg-2s6bP.mjs} +8 -8
- package/dist/chunks/{NcAppNavigationItem-DRaKry-f.mjs.map → NcAppNavigationItem-Dg-2s6bP.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNew-BAuYV_06.cjs → NcAppNavigationNew-4O3IsPEz.cjs} +2 -2
- package/dist/chunks/{NcAppNavigationNew-BAuYV_06.cjs.map → NcAppNavigationNew-4O3IsPEz.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNew-BOfIdgIu.mjs → NcAppNavigationNew-B8Ny1xKx.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationNew-BOfIdgIu.mjs.map → NcAppNavigationNew-B8Ny1xKx.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNewItem-KbbB-8vX.mjs → NcAppNavigationNewItem-BHnL_502.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationNewItem-KbbB-8vX.mjs.map → NcAppNavigationNewItem-BHnL_502.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNewItem-B-29d1We.cjs → NcAppNavigationNewItem-CW4Y7Hz9.cjs} +2 -2
- package/dist/chunks/{NcAppNavigationNewItem-B-29d1We.cjs.map → NcAppNavigationNewItem-CW4Y7Hz9.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSearch-CI_e6Rva.mjs → NcAppNavigationSearch-DIO0S2TU.mjs} +4 -4
- package/dist/chunks/{NcAppNavigationSearch-CI_e6Rva.mjs.map → NcAppNavigationSearch-DIO0S2TU.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSearch-Du8eBuvW.cjs → NcAppNavigationSearch-DZEqsYpD.cjs} +4 -4
- package/dist/chunks/{NcAppNavigationSearch-Du8eBuvW.cjs.map → NcAppNavigationSearch-DZEqsYpD.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-BN3w-BCp.mjs → NcAppNavigationSettings-3jZKd9et.mjs} +5 -5
- package/dist/chunks/{NcAppNavigationSettings-BN3w-BCp.mjs.map → NcAppNavigationSettings-3jZKd9et.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-C2Txc8sh.cjs → NcAppNavigationSettings-DpIprW-E.cjs} +5 -5
- package/dist/chunks/{NcAppNavigationSettings-C2Txc8sh.cjs.map → NcAppNavigationSettings-DpIprW-E.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationToggle-B7K9pxVq.cjs → NcAppNavigationToggle-DFGuYTE8.cjs} +23 -52
- package/dist/chunks/NcAppNavigationToggle-DFGuYTE8.cjs.map +1 -0
- package/dist/chunks/{NcAppNavigationToggle-CZqz-wC8.mjs → NcAppNavigationToggle-DQZ2LWw4.mjs} +23 -52
- package/dist/chunks/NcAppNavigationToggle-DQZ2LWw4.mjs.map +1 -0
- package/dist/chunks/{NcAppSettingsDialog-DhHJQute.cjs → NcAppSettingsDialog-BoHdpAtG.cjs} +9 -9
- package/dist/chunks/{NcAppSettingsDialog-DhHJQute.cjs.map → NcAppSettingsDialog-BoHdpAtG.cjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsDialog-C7Oywy1u.mjs → NcAppSettingsDialog-JB67n8yt.mjs} +9 -9
- package/dist/chunks/{NcAppSettingsDialog-C7Oywy1u.mjs.map → NcAppSettingsDialog-JB67n8yt.mjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsShortcutsSection-CLKzAASc.cjs → NcAppSettingsShortcutsSection-Bli0fYba.cjs} +6 -6
- package/dist/chunks/NcAppSettingsShortcutsSection-Bli0fYba.cjs.map +1 -0
- package/dist/chunks/{NcAppSettingsShortcutsSection-D3ylJW58.mjs → NcAppSettingsShortcutsSection-BpUlnEbQ.mjs} +6 -6
- package/dist/chunks/NcAppSettingsShortcutsSection-BpUlnEbQ.mjs.map +1 -0
- package/dist/chunks/{NcAppSidebar-CEo2tgBa.mjs → NcAppSidebar-B2F66PCc.mjs} +13 -45
- package/dist/chunks/NcAppSidebar-B2F66PCc.mjs.map +1 -0
- package/dist/chunks/{NcAppSidebar-DJ8JImth.cjs → NcAppSidebar-CMHPTlTQ.cjs} +13 -45
- package/dist/chunks/NcAppSidebar-CMHPTlTQ.cjs.map +1 -0
- package/dist/chunks/{NcAssistantButton-CHiZT-vH.mjs → NcAssistantButton-D2gOuok6.mjs} +11 -11
- package/dist/chunks/{NcAssistantButton-CHiZT-vH.mjs.map → NcAssistantButton-D2gOuok6.mjs.map} +1 -1
- package/dist/chunks/{NcAssistantButton-CPlpv0Sl.cjs → NcAssistantButton-po8AW9pX.cjs} +11 -11
- package/dist/chunks/{NcAssistantButton-CPlpv0Sl.cjs.map → NcAssistantButton-po8AW9pX.cjs.map} +1 -1
- package/dist/chunks/{NcAssistantIcon-mcLe7umL.mjs → NcAssistantIcon-CTTn1608.mjs} +6 -6
- package/dist/chunks/{NcAssistantIcon-mcLe7umL.mjs.map → NcAssistantIcon-CTTn1608.mjs.map} +1 -1
- package/dist/chunks/{NcAssistantIcon-CS-KbVIN.cjs → NcAssistantIcon-D_1fcbQU.cjs} +6 -6
- package/dist/chunks/{NcAssistantIcon-CS-KbVIN.cjs.map → NcAssistantIcon-D_1fcbQU.cjs.map} +1 -1
- package/dist/chunks/{NcAvatar-BFWbPSke.cjs → NcAvatar-BbR_mZyT.cjs} +125 -20
- package/dist/chunks/NcAvatar-BbR_mZyT.cjs.map +1 -0
- package/dist/chunks/{NcAvatar-BBqomFJ3.mjs → NcAvatar-C1ty7wsG.mjs} +124 -20
- package/dist/chunks/NcAvatar-C1ty7wsG.mjs.map +1 -0
- package/dist/chunks/{NcBlurHash-DEa3MZG5.cjs → NcBlurHash-CXPnoVsM.cjs} +4 -4
- package/dist/chunks/{NcBlurHash-DEa3MZG5.cjs.map → NcBlurHash-CXPnoVsM.cjs.map} +1 -1
- package/dist/chunks/{NcBlurHash-CP2UBH-9.mjs → NcBlurHash-DKfLn7BC.mjs} +4 -4
- package/dist/chunks/{NcBlurHash-CP2UBH-9.mjs.map → NcBlurHash-DKfLn7BC.mjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumb-BN1Qrbjc.mjs → NcBreadcrumb-BPaEIFrD.mjs} +3 -3
- package/dist/chunks/{NcBreadcrumb-BN1Qrbjc.mjs.map → NcBreadcrumb-BPaEIFrD.mjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumb-D81qHmqH.cjs → NcBreadcrumb-ZV3_rxwo.cjs} +3 -3
- package/dist/chunks/{NcBreadcrumb-D81qHmqH.cjs.map → NcBreadcrumb-ZV3_rxwo.cjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs-OySgLqXi.mjs → NcBreadcrumbs-BN_Nk5sm.mjs} +3 -3
- package/dist/chunks/{NcBreadcrumbs-OySgLqXi.mjs.map → NcBreadcrumbs-BN_Nk5sm.mjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs-DxnTSsvR.cjs → NcBreadcrumbs-lgJctYCF.cjs} +3 -3
- package/dist/chunks/{NcBreadcrumbs-DxnTSsvR.cjs.map → NcBreadcrumbs-lgJctYCF.cjs.map} +1 -1
- package/dist/chunks/{NcButton-D6Swkr1k.mjs → NcButton-DAGirW_B.mjs} +2 -2
- package/dist/chunks/{NcButton-D6Swkr1k.mjs.map → NcButton-DAGirW_B.mjs.map} +1 -1
- package/dist/chunks/{NcButton-B3UxfMyE.cjs → NcButton-W3wDpCdX.cjs} +2 -2
- package/dist/chunks/{NcButton-B3UxfMyE.cjs.map → NcButton-W3wDpCdX.cjs.map} +1 -1
- package/dist/chunks/{NcCheckboxRadioSwitch-Ddl_QlRN.mjs → NcCheckboxRadioSwitch-BAjRm8PQ.mjs} +17 -8
- package/dist/chunks/NcCheckboxRadioSwitch-BAjRm8PQ.mjs.map +1 -0
- package/dist/chunks/{NcCheckboxRadioSwitch-BonPjuho.cjs → NcCheckboxRadioSwitch-Bc1iPxKK.cjs} +17 -8
- package/dist/chunks/{NcCheckboxRadioSwitch-Ddl_QlRN.mjs.map → NcCheckboxRadioSwitch-Bc1iPxKK.cjs.map} +1 -1
- package/dist/chunks/{NcCollectionList-q7zkDwqG.mjs → NcCollectionList-75D50pZU.mjs} +8 -8
- package/dist/chunks/{NcCollectionList-q7zkDwqG.mjs.map → NcCollectionList-75D50pZU.mjs.map} +1 -1
- package/dist/chunks/{NcCollectionList-BXSYaf2B.cjs → NcCollectionList-CX9fHs--.cjs} +8 -8
- package/dist/chunks/{NcCollectionList-BXSYaf2B.cjs.map → NcCollectionList-CX9fHs--.cjs.map} +1 -1
- package/dist/chunks/{NcColorPicker-DlAxFoRr.mjs → NcColorPicker-BwqjqV32.mjs} +6 -6
- package/dist/chunks/{NcColorPicker-DlAxFoRr.mjs.map → NcColorPicker-BwqjqV32.mjs.map} +1 -1
- package/dist/chunks/{NcColorPicker-CO85TDOK.cjs → NcColorPicker-oQVwX8dO.cjs} +6 -6
- package/dist/chunks/{NcColorPicker-CO85TDOK.cjs.map → NcColorPicker-oQVwX8dO.cjs.map} +1 -1
- package/dist/chunks/{NcContent-D5FcB_7G.cjs → NcContent-BlABZ4r6.cjs} +5 -5
- package/dist/chunks/{NcContent-D5FcB_7G.cjs.map → NcContent-BlABZ4r6.cjs.map} +1 -1
- package/dist/chunks/{NcContent-BgMXU5Dv.mjs → NcContent-nvVwz9xO.mjs} +5 -5
- package/dist/chunks/{NcContent-BgMXU5Dv.mjs.map → NcContent-nvVwz9xO.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-DnR3x-B1.cjs → NcDashboardWidget-CY9oWI6e.cjs} +5 -5
- package/dist/chunks/{NcDashboardWidget-DnR3x-B1.cjs.map → NcDashboardWidget-CY9oWI6e.cjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-oyS__D-B.mjs → NcDashboardWidget-d_eqooRR.mjs} +5 -5
- package/dist/chunks/{NcDashboardWidget-oyS__D-B.mjs.map → NcDashboardWidget-d_eqooRR.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-NxvhaIPP.cjs → NcDashboardWidgetItem-BWELTjeT.cjs} +3 -3
- package/dist/chunks/{NcDashboardWidgetItem-NxvhaIPP.cjs.map → NcDashboardWidgetItem-BWELTjeT.cjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-uYQMYeJS.mjs → NcDashboardWidgetItem-BiZ8QNOR.mjs} +3 -3
- package/dist/chunks/{NcDashboardWidgetItem-uYQMYeJS.mjs.map → NcDashboardWidgetItem-BiZ8QNOR.mjs.map} +1 -1
- package/dist/chunks/{NcDialog-W8ujIWJd.cjs → NcDialog-CiuR4ZK0.cjs} +2 -2
- package/dist/chunks/{NcDialog-W8ujIWJd.cjs.map → NcDialog-CiuR4ZK0.cjs.map} +1 -1
- package/dist/chunks/{NcDialog-DmRqcm3W.mjs → NcDialog-DoGsI2_6.mjs} +2 -2
- package/dist/chunks/{NcDialog-DmRqcm3W.mjs.map → NcDialog-DoGsI2_6.mjs.map} +1 -1
- package/dist/chunks/{NcDialogButton-C8RbaSqF.cjs → NcDialogButton-BR6KI4--.cjs} +4 -4
- package/dist/chunks/{NcDialogButton-C8RbaSqF.cjs.map → NcDialogButton-BR6KI4--.cjs.map} +1 -1
- package/dist/chunks/{NcDialogButton-Bqjj-wmb.mjs → NcDialogButton-D5yuDtSF.mjs} +4 -4
- package/dist/chunks/{NcDialogButton-Bqjj-wmb.mjs.map → NcDialogButton-D5yuDtSF.mjs.map} +1 -1
- package/dist/chunks/{NcEmojiPicker-ClkGGFdW.mjs → NcEmojiPicker-C_88_f6x.mjs} +8 -8
- package/dist/chunks/{NcEmojiPicker-ClkGGFdW.mjs.map → NcEmojiPicker-C_88_f6x.mjs.map} +1 -1
- package/dist/chunks/{NcEmojiPicker-7aElsqCQ.cjs → NcEmojiPicker-Dyqwkm_d.cjs} +8 -8
- package/dist/chunks/{NcEmojiPicker-7aElsqCQ.cjs.map → NcEmojiPicker-Dyqwkm_d.cjs.map} +1 -1
- package/dist/chunks/{NcFilePicker-DaUHiwFm.cjs → NcFilePicker-Cdc1TsXy.cjs} +6 -6
- package/dist/chunks/{NcFilePicker-DaUHiwFm.cjs.map → NcFilePicker-Cdc1TsXy.cjs.map} +1 -1
- package/dist/chunks/{NcFilePicker-B57HJpaE.mjs → NcFilePicker-Dg6UqMN1.mjs} +6 -6
- package/dist/chunks/{NcFilePicker-B57HJpaE.mjs.map → NcFilePicker-Dg6UqMN1.mjs.map} +1 -1
- package/dist/chunks/{NcFormBox-Bd7m8ffs.mjs → NcFormBox-C38-8CH6.mjs} +7 -7
- package/dist/chunks/{NcFormBox-Bd7m8ffs.mjs.map → NcFormBox-C38-8CH6.mjs.map} +1 -1
- package/dist/chunks/{NcFormBox-LJwAiXyR.cjs → NcFormBox-C8LDr6nF.cjs} +7 -7
- package/dist/chunks/{NcFormBox-LJwAiXyR.cjs.map → NcFormBox-C8LDr6nF.cjs.map} +1 -1
- package/dist/chunks/{NcFormBoxButton-BDI6Q7WA.cjs → NcFormBoxButton-Bk-1cqbj.cjs} +5 -5
- package/dist/chunks/{NcFormBoxButton-BDI6Q7WA.cjs.map → NcFormBoxButton-Bk-1cqbj.cjs.map} +1 -1
- package/dist/chunks/{NcFormBoxButton-CRL7kucw.mjs → NcFormBoxButton-DFqqtbav.mjs} +5 -5
- package/dist/chunks/{NcFormBoxButton-CRL7kucw.mjs.map → NcFormBoxButton-DFqqtbav.mjs.map} +1 -1
- package/dist/chunks/{NcFormBoxCopyButton-Bk121Oc2.cjs → NcFormBoxCopyButton-LEjPAg3D.cjs} +3 -3
- package/dist/chunks/{NcFormBoxCopyButton-Bk121Oc2.cjs.map → NcFormBoxCopyButton-LEjPAg3D.cjs.map} +1 -1
- package/dist/chunks/{NcFormBoxCopyButton-BOENrJAS.mjs → NcFormBoxCopyButton-_KxKabAB.mjs} +3 -3
- package/dist/chunks/{NcFormBoxCopyButton-BOENrJAS.mjs.map → NcFormBoxCopyButton-_KxKabAB.mjs.map} +1 -1
- package/dist/chunks/{NcFormBoxItem-Dmcja_Xa.cjs → NcFormBoxItem-BAJxkxRf.cjs} +11 -11
- package/dist/chunks/{NcFormBoxItem-Dmcja_Xa.cjs.map → NcFormBoxItem-BAJxkxRf.cjs.map} +1 -1
- package/dist/chunks/{NcFormBoxItem-DasY7_rJ.mjs → NcFormBoxItem-CmfqBL1k.mjs} +11 -11
- package/dist/chunks/{NcFormBoxItem-DasY7_rJ.mjs.map → NcFormBoxItem-CmfqBL1k.mjs.map} +1 -1
- package/dist/chunks/{NcFormBoxSwitch-bdRBjKGq.mjs → NcFormBoxSwitch-B34n4EwU.mjs} +6 -6
- package/dist/chunks/{NcFormBoxSwitch-bdRBjKGq.mjs.map → NcFormBoxSwitch-B34n4EwU.mjs.map} +1 -1
- package/dist/chunks/{NcFormBoxSwitch-CEO4FLdd.cjs → NcFormBoxSwitch-Bw2utaCz.cjs} +6 -6
- package/dist/chunks/{NcFormBoxSwitch-CEO4FLdd.cjs.map → NcFormBoxSwitch-Bw2utaCz.cjs.map} +1 -1
- package/dist/chunks/{NcFormGroup-wzUs2kfP.cjs → NcFormGroup-dH5AXvsT.cjs} +9 -9
- package/dist/chunks/{NcFormGroup-wzUs2kfP.cjs.map → NcFormGroup-dH5AXvsT.cjs.map} +1 -1
- package/dist/chunks/{NcFormGroup-tW-MwPUj.mjs → NcFormGroup-geUvdoIG.mjs} +9 -9
- package/dist/chunks/{NcFormGroup-tW-MwPUj.mjs.map → NcFormGroup-geUvdoIG.mjs.map} +1 -1
- package/dist/chunks/{NcHeaderButton-MEyDJghO.mjs → NcHeaderButton-BqjMDSal.mjs} +2 -2
- package/dist/chunks/{NcHeaderButton-MEyDJghO.mjs.map → NcHeaderButton-BqjMDSal.mjs.map} +1 -1
- package/dist/chunks/{NcHeaderButton-SRHcPWsp.cjs → NcHeaderButton-ChwiTpxY.cjs} +2 -2
- package/dist/chunks/{NcHeaderButton-SRHcPWsp.cjs.map → NcHeaderButton-ChwiTpxY.cjs.map} +1 -1
- package/dist/chunks/{NcHeaderMenu-jHItu4LV.mjs → NcHeaderMenu-BB2r8v-X.mjs} +2 -2
- package/dist/chunks/{NcHeaderMenu-jHItu4LV.mjs.map → NcHeaderMenu-BB2r8v-X.mjs.map} +1 -1
- package/dist/chunks/{NcHeaderMenu-C-K0LFEH.cjs → NcHeaderMenu-BivYykFA.cjs} +2 -2
- package/dist/chunks/{NcHeaderMenu-C-K0LFEH.cjs.map → NcHeaderMenu-BivYykFA.cjs.map} +1 -1
- package/dist/chunks/{NcHotkey-CpgacYSd.mjs → NcHotkey-B6KIqqii.mjs} +7 -7
- package/dist/chunks/{NcHotkey-CpgacYSd.mjs.map → NcHotkey-B6KIqqii.mjs.map} +1 -1
- package/dist/chunks/{NcHotkey-CLFZr-9x.cjs → NcHotkey-BVSKiKpz.cjs} +7 -7
- package/dist/chunks/{NcHotkey-CLFZr-9x.cjs.map → NcHotkey-BVSKiKpz.cjs.map} +1 -1
- package/dist/chunks/{NcHotkeyList-BYFbKo6_.mjs → NcHotkeyList-BACQoMeA.mjs} +6 -6
- package/dist/chunks/{NcHotkeyList-BYFbKo6_.mjs.map → NcHotkeyList-BACQoMeA.mjs.map} +1 -1
- package/dist/chunks/{NcHotkeyList-C_w3SAG_.cjs → NcHotkeyList-Crj5V-KW.cjs} +6 -6
- package/dist/chunks/{NcHotkeyList-C_w3SAG_.cjs.map → NcHotkeyList-Crj5V-KW.cjs.map} +1 -1
- package/dist/chunks/{NcIconToggleSwitch-DCTeQGv5.mjs → NcIconToggleSwitch-B19dt_oD.mjs} +4 -4
- package/dist/chunks/{NcIconToggleSwitch-DCTeQGv5.mjs.map → NcIconToggleSwitch-B19dt_oD.mjs.map} +1 -1
- package/dist/chunks/{NcIconToggleSwitch-Boo2ulI6.cjs → NcIconToggleSwitch-DZSBCDbH.cjs} +4 -4
- package/dist/chunks/{NcIconToggleSwitch-Boo2ulI6.cjs.map → NcIconToggleSwitch-DZSBCDbH.cjs.map} +1 -1
- package/dist/chunks/{NcInputConfirmCancel-zqo4ijEJ.mjs → NcInputConfirmCancel-44rhjqEA.mjs} +5 -5
- package/dist/chunks/{NcInputConfirmCancel-zqo4ijEJ.mjs.map → NcInputConfirmCancel-44rhjqEA.mjs.map} +1 -1
- package/dist/chunks/{NcInputConfirmCancel-CcPcB-bZ.cjs → NcInputConfirmCancel-CaCFiQnc.cjs} +5 -5
- package/dist/chunks/{NcInputConfirmCancel-CcPcB-bZ.cjs.map → NcInputConfirmCancel-CaCFiQnc.cjs.map} +1 -1
- package/dist/chunks/{NcInputField-DPby7_cZ.cjs → NcInputField-BcmWwfT5.cjs} +3 -3
- package/dist/chunks/{NcInputField-DPby7_cZ.cjs.map → NcInputField-BcmWwfT5.cjs.map} +1 -1
- package/dist/chunks/{NcInputField-BrzZ8Bne.mjs → NcInputField-Cym5GuvB.mjs} +3 -3
- package/dist/chunks/{NcInputField-BrzZ8Bne.mjs.map → NcInputField-Cym5GuvB.mjs.map} +1 -1
- package/dist/chunks/{NcKbd-uMv3QPhD.cjs → NcKbd-CrXHar_q.cjs} +6 -6
- package/dist/chunks/{NcKbd-uMv3QPhD.cjs.map → NcKbd-CrXHar_q.cjs.map} +1 -1
- package/dist/chunks/{NcKbd-CXJA9sCj.mjs → NcKbd-D86qGvDb.mjs} +6 -6
- package/dist/chunks/{NcKbd-CXJA9sCj.mjs.map → NcKbd-D86qGvDb.mjs.map} +1 -1
- package/dist/chunks/{NcListItem-BjV4Jjw0.cjs → NcListItem-5_QrKITf.cjs} +2 -2
- package/dist/chunks/{NcListItem-BjV4Jjw0.cjs.map → NcListItem-5_QrKITf.cjs.map} +1 -1
- package/dist/chunks/{NcListItem-Ciok4H4t.mjs → NcListItem-DFrhF-DU.mjs} +2 -2
- package/dist/chunks/{NcListItem-Ciok4H4t.mjs.map → NcListItem-DFrhF-DU.mjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-DukIl2hl.cjs → NcListItemIcon-BpEOUL7y.cjs} +2 -2
- package/dist/chunks/{NcListItemIcon-DukIl2hl.cjs.map → NcListItemIcon-BpEOUL7y.cjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-DdkIQyoP.mjs → NcListItemIcon-DIecVacf.mjs} +2 -2
- package/dist/chunks/{NcListItemIcon-DdkIQyoP.mjs.map → NcListItemIcon-DIecVacf.mjs.map} +1 -1
- package/dist/chunks/{NcPasswordField-CSeFP0Uz.mjs → NcPasswordField-2woxTjbl.mjs} +4 -4
- package/dist/chunks/{NcPasswordField-CSeFP0Uz.mjs.map → NcPasswordField-2woxTjbl.mjs.map} +1 -1
- package/dist/chunks/{NcPasswordField-9QeCVkJe.cjs → NcPasswordField-C1FGaXn4.cjs} +4 -4
- package/dist/chunks/{NcPasswordField-9QeCVkJe.cjs.map → NcPasswordField-C1FGaXn4.cjs.map} +1 -1
- package/dist/chunks/{NcPopover-BzTp7LfM.mjs → NcPopover-BaHX3QSG.mjs} +4 -4
- package/dist/chunks/{NcPopover-BzTp7LfM.mjs.map → NcPopover-BaHX3QSG.mjs.map} +1 -1
- package/dist/chunks/{NcPopover-BIGPurEP.cjs → NcPopover-Bq-bsaqt.cjs} +4 -4
- package/dist/chunks/{NcPopover-BIGPurEP.cjs.map → NcPopover-Bq-bsaqt.cjs.map} +1 -1
- package/dist/chunks/NcProfileHoverCard-DK5YkGF0.mjs +479 -0
- package/dist/chunks/NcProfileHoverCard-DK5YkGF0.mjs.map +1 -0
- package/dist/chunks/NcProfileHoverCard-rEanhQqc.cjs +481 -0
- package/dist/chunks/NcProfileHoverCard-rEanhQqc.cjs.map +1 -0
- package/dist/chunks/{NcRadioGroup-BbMUIkWl.cjs → NcRadioGroup-C2lG1kIj.cjs} +6 -6
- package/dist/chunks/{NcRadioGroup-BbMUIkWl.cjs.map → NcRadioGroup-C2lG1kIj.cjs.map} +1 -1
- package/dist/chunks/{NcRadioGroup-D4kc6Jjr.mjs → NcRadioGroup-D_7OAyQ4.mjs} +6 -6
- package/dist/chunks/{NcRadioGroup-D4kc6Jjr.mjs.map → NcRadioGroup-D_7OAyQ4.mjs.map} +1 -1
- package/dist/chunks/{NcRadioGroupButton-B8a5TW2l.mjs → NcRadioGroupButton-CkpB4myv.mjs} +8 -8
- package/dist/chunks/{NcRadioGroupButton-B8a5TW2l.mjs.map → NcRadioGroupButton-CkpB4myv.mjs.map} +1 -1
- package/dist/chunks/{NcRadioGroupButton-7ImC11aP.cjs → NcRadioGroupButton-DcU_Yagn.cjs} +8 -8
- package/dist/chunks/{NcRadioGroupButton-7ImC11aP.cjs.map → NcRadioGroupButton-DcU_Yagn.cjs.map} +1 -1
- package/dist/chunks/NcReferenceWidget-Br8ecSQw.cjs +280 -0
- package/dist/chunks/NcReferenceWidget-Br8ecSQw.cjs.map +1 -0
- package/dist/chunks/NcReferenceWidget-CMq5QVka.mjs +281 -0
- package/dist/chunks/NcReferenceWidget-CMq5QVka.mjs.map +1 -0
- package/dist/chunks/{NcRelatedResourcesPanel-CFp3GPty.mjs → NcRelatedResourcesPanel-BKygMHvP.mjs} +7 -7
- package/dist/chunks/{NcRelatedResourcesPanel-CFp3GPty.mjs.map → NcRelatedResourcesPanel-BKygMHvP.mjs.map} +1 -1
- package/dist/chunks/{NcRelatedResourcesPanel-C7r-tIz-.cjs → NcRelatedResourcesPanel-CjmzJ9Ex.cjs} +7 -7
- package/dist/chunks/{NcRelatedResourcesPanel-C7r-tIz-.cjs.map → NcRelatedResourcesPanel-CjmzJ9Ex.cjs.map} +1 -1
- package/dist/chunks/{NcRichContenteditable-DbhcrLP_.cjs → NcRichContenteditable-CaDBJIrd.cjs} +27 -31
- package/dist/chunks/{NcRichContenteditable-CG7oWfBl.mjs.map → NcRichContenteditable-CaDBJIrd.cjs.map} +1 -1
- package/dist/chunks/{NcRichContenteditable-CG7oWfBl.mjs → NcRichContenteditable-rJPX28V6.mjs} +27 -31
- package/dist/chunks/{NcRichContenteditable-DbhcrLP_.cjs.map → NcRichContenteditable-rJPX28V6.mjs.map} +1 -1
- package/dist/chunks/{NcRichText-b0ZZCvrD.cjs → NcRichText-BC9lKFPb.cjs} +7 -7
- package/dist/chunks/{NcRichText-b0ZZCvrD.cjs.map → NcRichText-BC9lKFPb.cjs.map} +1 -1
- package/dist/chunks/{NcRichText-C3Nj11Wy.mjs → NcRichText-K2ZjNIbK.mjs} +6 -6
- package/dist/chunks/{NcRichText-C3Nj11Wy.mjs.map → NcRichText-K2ZjNIbK.mjs.map} +1 -1
- package/dist/chunks/{NcSelect-DrKzKPZL.mjs → NcSelect-CxHfXvZV.mjs} +5 -5
- package/dist/chunks/{NcSelect-DrKzKPZL.mjs.map → NcSelect-CxHfXvZV.mjs.map} +1 -1
- package/dist/chunks/{NcSelect-BYRnqQaI.cjs → NcSelect-DW5W3ZIM.cjs} +5 -5
- package/dist/chunks/{NcSelect-BYRnqQaI.cjs.map → NcSelect-DW5W3ZIM.cjs.map} +1 -1
- package/dist/chunks/{NcSelectTags-D8pmnLor.mjs → NcSelectTags-BWTTPN2O.mjs} +3 -3
- package/dist/chunks/{NcSelectTags-D8pmnLor.mjs.map → NcSelectTags-BWTTPN2O.mjs.map} +1 -1
- package/dist/chunks/{NcSelectTags-CL8AQw8J.cjs → NcSelectTags-Bk4doVG3.cjs} +3 -3
- package/dist/chunks/{NcSelectTags-CL8AQw8J.cjs.map → NcSelectTags-Bk4doVG3.cjs.map} +1 -1
- package/dist/chunks/{NcSelectUsers-CAl1o2gA.cjs → NcSelectUsers-BxmxyFcE.cjs} +5 -5
- package/dist/chunks/{NcSelectUsers-CAl1o2gA.cjs.map → NcSelectUsers-BxmxyFcE.cjs.map} +1 -1
- package/dist/chunks/{NcSelectUsers-z2bZafO2.mjs → NcSelectUsers-D2jOjPs4.mjs} +5 -5
- package/dist/chunks/{NcSelectUsers-z2bZafO2.mjs.map → NcSelectUsers-D2jOjPs4.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsInputText-BF5437Q7.cjs → NcSettingsInputText-BAMF6udc.cjs} +3 -3
- package/dist/chunks/{NcSettingsInputText-BF5437Q7.cjs.map → NcSettingsInputText-BAMF6udc.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsInputText-BwnkZzWL.mjs → NcSettingsInputText-Cc7cCwNm.mjs} +3 -3
- package/dist/chunks/{NcSettingsInputText-BwnkZzWL.mjs.map → NcSettingsInputText-Cc7cCwNm.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSection-BfZ8I3zb.cjs → NcSettingsSection-D48jcXDL.cjs} +3 -3
- package/dist/chunks/{NcSettingsSection-BfZ8I3zb.cjs.map → NcSettingsSection-D48jcXDL.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsSection-DV-x6Ag7.mjs → NcSettingsSection-D9qxzYDc.mjs} +3 -3
- package/dist/chunks/{NcSettingsSection-DV-x6Ag7.mjs.map → NcSettingsSection-D9qxzYDc.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-CmotAYwP.cjs → NcSettingsSelectGroup-CJGf5mxJ.cjs} +4 -4
- package/dist/chunks/{NcSettingsSelectGroup-CmotAYwP.cjs.map → NcSettingsSelectGroup-CJGf5mxJ.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-CFvLzGNf.mjs → NcSettingsSelectGroup-DzzNyHN_.mjs} +4 -4
- package/dist/chunks/{NcSettingsSelectGroup-CFvLzGNf.mjs.map → NcSettingsSelectGroup-DzzNyHN_.mjs.map} +1 -1
- package/dist/chunks/{NcTextArea-BUH-0gIq.cjs → NcTextArea-GxhBi7Z3.cjs} +2 -2
- package/dist/chunks/{NcTextArea-BUH-0gIq.cjs.map → NcTextArea-GxhBi7Z3.cjs.map} +1 -1
- package/dist/chunks/{NcTextArea-C82D8CSK.mjs → NcTextArea-T9totbme.mjs} +2 -2
- package/dist/chunks/{NcTextArea-C82D8CSK.mjs.map → NcTextArea-T9totbme.mjs.map} +1 -1
- package/dist/chunks/{NcTextField-BPhf3E7g.mjs → NcTextField-CQp8XS4C.mjs} +4 -4
- package/dist/chunks/{NcTextField-BPhf3E7g.mjs.map → NcTextField-CQp8XS4C.mjs.map} +1 -1
- package/dist/chunks/{NcTextField-2tiCeGZw.cjs → NcTextField-DMxdmT5a.cjs} +4 -4
- package/dist/chunks/{NcTextField-2tiCeGZw.cjs.map → NcTextField-DMxdmT5a.cjs.map} +1 -1
- package/dist/chunks/{NcTimezonePicker-BSGxeYwn.cjs → NcTimezonePicker-B0rvWaty.cjs} +4 -4
- package/dist/chunks/{NcTimezonePicker-BSGxeYwn.cjs.map → NcTimezonePicker-B0rvWaty.cjs.map} +1 -1
- package/dist/chunks/{NcTimezonePicker-D4xfdT9T.mjs → NcTimezonePicker-BfSjyBxq.mjs} +4 -4
- package/dist/chunks/{NcTimezonePicker-D4xfdT9T.mjs.map → NcTimezonePicker-BfSjyBxq.mjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-BJf2sPSm.cjs → NcUserBubble-BR5bw7lO.cjs} +3 -3
- package/dist/chunks/{NcUserBubble-BJf2sPSm.cjs.map → NcUserBubble-BR5bw7lO.cjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-CuCNjhc8.mjs → NcUserBubble-Bd-PEfyK.mjs} +3 -3
- package/dist/chunks/{NcUserBubble-CuCNjhc8.mjs.map → NcUserBubble-Bd-PEfyK.mjs.map} +1 -1
- package/dist/chunks/{NcUserStatusIcon-BnGtoiCy.cjs → NcUserStatusIcon-BP2cHGxs.cjs} +5 -5
- package/dist/chunks/{NcUserStatusIcon-BnGtoiCy.cjs.map → NcUserStatusIcon-BP2cHGxs.cjs.map} +1 -1
- package/dist/chunks/{NcUserStatusIcon-DdPPN-cP.mjs → NcUserStatusIcon-gpl3yJFX.mjs} +5 -5
- package/dist/chunks/{NcUserStatusIcon-DdPPN-cP.mjs.map → NcUserStatusIcon-gpl3yJFX.mjs.map} +1 -1
- package/dist/chunks/{ScopeComponent-xx9Z3w0D.mjs → ScopeComponent-Df3JYkxQ.mjs} +2 -2
- package/dist/chunks/{ScopeComponent-xx9Z3w0D.mjs.map → ScopeComponent-Df3JYkxQ.mjs.map} +1 -1
- package/dist/chunks/{ScopeComponent-4M4zyHnT.cjs → ScopeComponent-O4dfHJkP.cjs} +2 -2
- package/dist/chunks/{ScopeComponent-4M4zyHnT.cjs.map → ScopeComponent-O4dfHJkP.cjs.map} +1 -1
- package/dist/chunks/{_l10n-skrZri3h.cjs → _l10n-Be-gO5QO.cjs} +56 -54
- package/dist/chunks/{_l10n-skrZri3h.cjs.map → _l10n-Be-gO5QO.cjs.map} +1 -1
- package/dist/chunks/{_l10n-DVz9Qdzk.mjs → _l10n-CAnZaLWU.mjs} +110 -108
- package/dist/chunks/_l10n-CAnZaLWU.mjs.map +1 -0
- package/dist/chunks/{autolink-CMWUgEzj.cjs → autolink-BHlqTULT.cjs} +5 -5
- package/dist/chunks/{autolink-CMWUgEzj.cjs.map → autolink-BHlqTULT.cjs.map} +1 -1
- package/dist/chunks/{autolink-C8BYVvdd.mjs → autolink-COrOqbJu.mjs} +5 -5
- package/dist/chunks/{autolink-C8BYVvdd.mjs.map → autolink-COrOqbJu.mjs.map} +1 -1
- package/dist/chunks/{colors-Bp0JzIQ4.mjs → colors-B_oqiKWY.mjs} +3 -3
- package/dist/chunks/{colors-Bp0JzIQ4.mjs.map → colors-B_oqiKWY.mjs.map} +1 -1
- package/dist/chunks/{colors-CyIwf6gH.cjs → colors-DF9O093h.cjs} +3 -3
- package/dist/chunks/{colors-CyIwf6gH.cjs.map → colors-DF9O093h.cjs.map} +1 -1
- package/dist/chunks/customPickerElements-CYpmyl0b.mjs +61 -0
- package/dist/chunks/customPickerElements-CYpmyl0b.mjs.map +1 -0
- package/dist/chunks/{customPickerElements-CPxrR1_N.cjs → customPickerElements-DNevxofg.cjs} +1 -63
- package/dist/chunks/customPickerElements-DNevxofg.cjs.map +1 -0
- package/dist/chunks/{legacy-Bk0qQxIg.cjs → legacy-BpZw2Eww.cjs} +4 -2
- package/dist/chunks/legacy-BpZw2Eww.cjs.map +1 -0
- package/dist/chunks/legacy-Cy3dCXuB.mjs +11 -0
- package/dist/chunks/legacy-Cy3dCXuB.mjs.map +1 -0
- package/dist/chunks/{referencePickerModal-Cqd084NY.cjs → referencePickerModal-D2nYmN67.cjs} +23 -294
- package/dist/chunks/referencePickerModal-D2nYmN67.cjs.map +1 -0
- package/dist/chunks/{referencePickerModal-DnsOMAHk.mjs → referencePickerModal-P_15xB7f.mjs} +24 -295
- package/dist/chunks/referencePickerModal-P_15xB7f.mjs.map +1 -0
- package/dist/chunks/rtl-DLuwcTlm.cjs +5 -0
- package/dist/chunks/rtl-DLuwcTlm.cjs.map +1 -0
- package/dist/chunks/rtl-v0UOPAM7.mjs +6 -0
- package/dist/chunks/rtl-v0UOPAM7.mjs.map +1 -0
- package/dist/chunks/{useCopy-DDDe5RYH.mjs → useCopy-C-jNoLry.mjs} +3 -3
- package/dist/chunks/{useCopy-DDDe5RYH.mjs.map → useCopy-C-jNoLry.mjs.map} +1 -1
- package/dist/chunks/{useCopy-3m2jDiIN.cjs → useCopy-DXXjl8MD.cjs} +3 -3
- package/dist/chunks/{useCopy-3m2jDiIN.cjs.map → useCopy-DXXjl8MD.cjs.map} +1 -1
- package/dist/chunks/widgets-DoYhefYe.cjs +65 -0
- package/dist/chunks/widgets-DoYhefYe.cjs.map +1 -0
- package/dist/chunks/widgets-XxirL-2f.mjs +66 -0
- package/dist/chunks/widgets-XxirL-2f.mjs.map +1 -0
- package/dist/components/NcProfileHoverCard/index.d.ts +5 -0
- package/dist/components/NcProfileHoverCard/profileCache.d.ts +31 -0
- package/dist/index.cjs +78 -80
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +80 -82
- package/dist/index.mjs.map +1 -1
- package/dist/utils/legacy.d.ts +2 -0
- package/package.json +9 -9
- package/dist/chunks/NcAppContent-BDqXhfww.cjs.map +0 -1
- package/dist/chunks/NcAppContent-BScPRxTJ.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationToggle-B7K9pxVq.cjs.map +0 -1
- package/dist/chunks/NcAppNavigationToggle-CZqz-wC8.mjs.map +0 -1
- package/dist/chunks/NcAppSettingsShortcutsSection-CLKzAASc.cjs.map +0 -1
- package/dist/chunks/NcAppSettingsShortcutsSection-D3ylJW58.mjs.map +0 -1
- package/dist/chunks/NcAppSidebar-CEo2tgBa.mjs.map +0 -1
- package/dist/chunks/NcAppSidebar-DJ8JImth.cjs.map +0 -1
- package/dist/chunks/NcAvatar-BBqomFJ3.mjs.map +0 -1
- package/dist/chunks/NcAvatar-BFWbPSke.cjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch-BonPjuho.cjs.map +0 -1
- package/dist/chunks/_l10n-DVz9Qdzk.mjs.map +0 -1
- package/dist/chunks/customPickerElements-BGmuXU7x.mjs +0 -123
- package/dist/chunks/customPickerElements-BGmuXU7x.mjs.map +0 -1
- package/dist/chunks/customPickerElements-CPxrR1_N.cjs.map +0 -1
- package/dist/chunks/legacy-Bk0qQxIg.cjs.map +0 -1
- package/dist/chunks/legacy-DV3mGZdh.mjs +0 -9
- package/dist/chunks/legacy-DV3mGZdh.mjs.map +0 -1
- package/dist/chunks/referencePickerModal-Cqd084NY.cjs.map +0 -1
- package/dist/chunks/referencePickerModal-DnsOMAHk.mjs.map +0 -1
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
require('../assets/NcProfileHoverCard-D3V682nS.css');
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
4
|
+
const Vue = require("vue");
|
|
5
|
+
const auth = require("@nextcloud/auth");
|
|
6
|
+
const axios = require("@nextcloud/axios");
|
|
7
|
+
const capabilities = require("@nextcloud/capabilities");
|
|
8
|
+
const l10n = require("@nextcloud/l10n");
|
|
9
|
+
const router = require("@nextcloud/router");
|
|
10
|
+
const _pluginVue2_normalizer = require("./_plugin-vue2_normalizer-V0q-tHlQ.cjs");
|
|
11
|
+
const NcActionButton = require("./NcActionButton-B1jvJWjl.cjs");
|
|
12
|
+
const Components_NcActionLink = require("../Components/NcActionLink.cjs");
|
|
13
|
+
const Components_NcActionRouter = require("../Components/NcActionRouter.cjs");
|
|
14
|
+
const NcActions = require("./NcActions-H0GXWVPU.cjs");
|
|
15
|
+
const NcAvatar = require("./NcAvatar-BbR_mZyT.cjs");
|
|
16
|
+
const NcButton = require("./NcButton-W3wDpCdX.cjs");
|
|
17
|
+
const Components_NcEmptyContent = require("../Components/NcEmptyContent.cjs");
|
|
18
|
+
const Components_NcLoadingIcon = require("../Components/NcLoadingIcon.cjs");
|
|
19
|
+
const NcRichText = require("./NcRichText-BC9lKFPb.cjs");
|
|
20
|
+
const Composables_useIsMobile = require("../Composables/useIsMobile.cjs");
|
|
21
|
+
const _l10n = require("./_l10n-Be-gO5QO.cjs");
|
|
22
|
+
const logger = require("./logger-3HuiEIF6.cjs");
|
|
23
|
+
const NcIconSvgWrapper = require("./NcIconSvgWrapper-Bbl4kXZI.cjs");
|
|
24
|
+
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
25
|
+
const axios__default = /* @__PURE__ */ _interopDefault(axios);
|
|
26
|
+
const _sfc_main$5 = {
|
|
27
|
+
name: "AccountOutlineIcon",
|
|
28
|
+
emits: ["click"],
|
|
29
|
+
props: {
|
|
30
|
+
title: {
|
|
31
|
+
type: String
|
|
32
|
+
},
|
|
33
|
+
fillColor: {
|
|
34
|
+
type: String,
|
|
35
|
+
default: "currentColor"
|
|
36
|
+
},
|
|
37
|
+
size: {
|
|
38
|
+
type: Number,
|
|
39
|
+
default: 24
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
var _sfc_render$5 = function render() {
|
|
44
|
+
var _vm = this, _c = _vm._self._c;
|
|
45
|
+
return _c("span", _vm._b({ staticClass: "material-design-icon account-outline-icon", attrs: { "aria-hidden": _vm.title ? null : "true", "aria-label": _vm.title, "role": "img" }, on: { "click": function($event) {
|
|
46
|
+
return _vm.$emit("click", $event);
|
|
47
|
+
} } }, "span", _vm.$attrs, false), [_c("svg", { staticClass: "material-design-icon__svg", attrs: { "fill": _vm.fillColor, "width": _vm.size, "height": _vm.size, "viewBox": "0 0 24 24" } }, [_c("path", { attrs: { "d": "M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M12,13C14.67,13 20,14.33 20,17V20H4V17C4,14.33 9.33,13 12,13M12,14.9C9.03,14.9 5.9,16.36 5.9,17V18.1H18.1V17C18.1,16.36 14.97,14.9 12,14.9Z" } }, [_vm.title ? _c("title", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);
|
|
48
|
+
};
|
|
49
|
+
var _sfc_staticRenderFns$5 = [];
|
|
50
|
+
var __component__$5 = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
|
|
51
|
+
_sfc_main$5,
|
|
52
|
+
_sfc_render$5,
|
|
53
|
+
_sfc_staticRenderFns$5,
|
|
54
|
+
false,
|
|
55
|
+
null,
|
|
56
|
+
null
|
|
57
|
+
);
|
|
58
|
+
const AccountIcon = __component__$5.exports;
|
|
59
|
+
const _sfc_main$4 = {
|
|
60
|
+
name: "BriefcaseOutlineIcon",
|
|
61
|
+
emits: ["click"],
|
|
62
|
+
props: {
|
|
63
|
+
title: {
|
|
64
|
+
type: String
|
|
65
|
+
},
|
|
66
|
+
fillColor: {
|
|
67
|
+
type: String,
|
|
68
|
+
default: "currentColor"
|
|
69
|
+
},
|
|
70
|
+
size: {
|
|
71
|
+
type: Number,
|
|
72
|
+
default: 24
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
var _sfc_render$4 = function render2() {
|
|
77
|
+
var _vm = this, _c = _vm._self._c;
|
|
78
|
+
return _c("span", _vm._b({ staticClass: "material-design-icon briefcase-outline-icon", attrs: { "aria-hidden": _vm.title ? null : "true", "aria-label": _vm.title, "role": "img" }, on: { "click": function($event) {
|
|
79
|
+
return _vm.$emit("click", $event);
|
|
80
|
+
} } }, "span", _vm.$attrs, false), [_c("svg", { staticClass: "material-design-icon__svg", attrs: { "fill": _vm.fillColor, "width": _vm.size, "height": _vm.size, "viewBox": "0 0 24 24" } }, [_c("path", { attrs: { "d": "M20,6C20.58,6 21.05,6.2 21.42,6.59C21.8,7 22,7.45 22,8V19C22,19.55 21.8,20 21.42,20.41C21.05,20.8 20.58,21 20,21H4C3.42,21 2.95,20.8 2.58,20.41C2.2,20 2,19.55 2,19V8C2,7.45 2.2,7 2.58,6.59C2.95,6.2 3.42,6 4,6H8V4C8,3.42 8.2,2.95 8.58,2.58C8.95,2.2 9.42,2 10,2H14C14.58,2 15.05,2.2 15.42,2.58C15.8,2.95 16,3.42 16,4V6H20M4,8V19H20V8H4M14,6V4H10V6H14Z" } }, [_vm.title ? _c("title", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);
|
|
81
|
+
};
|
|
82
|
+
var _sfc_staticRenderFns$4 = [];
|
|
83
|
+
var __component__$4 = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
|
|
84
|
+
_sfc_main$4,
|
|
85
|
+
_sfc_render$4,
|
|
86
|
+
_sfc_staticRenderFns$4,
|
|
87
|
+
false,
|
|
88
|
+
null,
|
|
89
|
+
null
|
|
90
|
+
);
|
|
91
|
+
const BriefcaseIcon = __component__$4.exports;
|
|
92
|
+
const _sfc_main$3 = {
|
|
93
|
+
name: "ClockOutlineIcon",
|
|
94
|
+
emits: ["click"],
|
|
95
|
+
props: {
|
|
96
|
+
title: {
|
|
97
|
+
type: String
|
|
98
|
+
},
|
|
99
|
+
fillColor: {
|
|
100
|
+
type: String,
|
|
101
|
+
default: "currentColor"
|
|
102
|
+
},
|
|
103
|
+
size: {
|
|
104
|
+
type: Number,
|
|
105
|
+
default: 24
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
var _sfc_render$3 = function render3() {
|
|
110
|
+
var _vm = this, _c = _vm._self._c;
|
|
111
|
+
return _c("span", _vm._b({ staticClass: "material-design-icon clock-outline-icon", attrs: { "aria-hidden": _vm.title ? null : "true", "aria-label": _vm.title, "role": "img" }, on: { "click": function($event) {
|
|
112
|
+
return _vm.$emit("click", $event);
|
|
113
|
+
} } }, "span", _vm.$attrs, false), [_c("svg", { staticClass: "material-design-icon__svg", attrs: { "fill": _vm.fillColor, "width": _vm.size, "height": _vm.size, "viewBox": "0 0 24 24" } }, [_c("path", { attrs: { "d": "M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z" } }, [_vm.title ? _c("title", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);
|
|
114
|
+
};
|
|
115
|
+
var _sfc_staticRenderFns$3 = [];
|
|
116
|
+
var __component__$3 = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
|
|
117
|
+
_sfc_main$3,
|
|
118
|
+
_sfc_render$3,
|
|
119
|
+
_sfc_staticRenderFns$3,
|
|
120
|
+
false,
|
|
121
|
+
null,
|
|
122
|
+
null
|
|
123
|
+
);
|
|
124
|
+
const ClockIcon = __component__$3.exports;
|
|
125
|
+
const _sfc_main$2 = {
|
|
126
|
+
name: "MapMarkerOutlineIcon",
|
|
127
|
+
emits: ["click"],
|
|
128
|
+
props: {
|
|
129
|
+
title: {
|
|
130
|
+
type: String
|
|
131
|
+
},
|
|
132
|
+
fillColor: {
|
|
133
|
+
type: String,
|
|
134
|
+
default: "currentColor"
|
|
135
|
+
},
|
|
136
|
+
size: {
|
|
137
|
+
type: Number,
|
|
138
|
+
default: 24
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
var _sfc_render$2 = function render4() {
|
|
143
|
+
var _vm = this, _c = _vm._self._c;
|
|
144
|
+
return _c("span", _vm._b({ staticClass: "material-design-icon map-marker-outline-icon", attrs: { "aria-hidden": _vm.title ? null : "true", "aria-label": _vm.title, "role": "img" }, on: { "click": function($event) {
|
|
145
|
+
return _vm.$emit("click", $event);
|
|
146
|
+
} } }, "span", _vm.$attrs, false), [_c("svg", { staticClass: "material-design-icon__svg", attrs: { "fill": _vm.fillColor, "width": _vm.size, "height": _vm.size, "viewBox": "0 0 24 24" } }, [_c("path", { attrs: { "d": "M12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5M12,2A7,7 0 0,1 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9C7,10 7,12 12,18.71C17,12 17,10 17,9A5,5 0 0,0 12,4Z" } }, [_vm.title ? _c("title", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);
|
|
147
|
+
};
|
|
148
|
+
var _sfc_staticRenderFns$2 = [];
|
|
149
|
+
var __component__$2 = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
|
|
150
|
+
_sfc_main$2,
|
|
151
|
+
_sfc_render$2,
|
|
152
|
+
_sfc_staticRenderFns$2,
|
|
153
|
+
false,
|
|
154
|
+
null,
|
|
155
|
+
null
|
|
156
|
+
);
|
|
157
|
+
const MapMarkerIcon = __component__$2.exports;
|
|
158
|
+
const _sfc_main$1 = {
|
|
159
|
+
name: "PencilOutlineIcon",
|
|
160
|
+
emits: ["click"],
|
|
161
|
+
props: {
|
|
162
|
+
title: {
|
|
163
|
+
type: String
|
|
164
|
+
},
|
|
165
|
+
fillColor: {
|
|
166
|
+
type: String,
|
|
167
|
+
default: "currentColor"
|
|
168
|
+
},
|
|
169
|
+
size: {
|
|
170
|
+
type: Number,
|
|
171
|
+
default: 24
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
var _sfc_render$1 = function render5() {
|
|
176
|
+
var _vm = this, _c = _vm._self._c;
|
|
177
|
+
return _c("span", _vm._b({ staticClass: "material-design-icon pencil-outline-icon", attrs: { "aria-hidden": _vm.title ? null : "true", "aria-label": _vm.title, "role": "img" }, on: { "click": function($event) {
|
|
178
|
+
return _vm.$emit("click", $event);
|
|
179
|
+
} } }, "span", _vm.$attrs, false), [_c("svg", { staticClass: "material-design-icon__svg", attrs: { "fill": _vm.fillColor, "width": _vm.size, "height": _vm.size, "viewBox": "0 0 24 24" } }, [_c("path", { attrs: { "d": "M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z" } }, [_vm.title ? _c("title", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);
|
|
180
|
+
};
|
|
181
|
+
var _sfc_staticRenderFns$1 = [];
|
|
182
|
+
var __component__$1 = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
|
|
183
|
+
_sfc_main$1,
|
|
184
|
+
_sfc_render$1,
|
|
185
|
+
_sfc_staticRenderFns$1,
|
|
186
|
+
false,
|
|
187
|
+
null,
|
|
188
|
+
null
|
|
189
|
+
);
|
|
190
|
+
const PencilIcon = __component__$1.exports;
|
|
191
|
+
_l10n.register(_l10n.t1);
|
|
192
|
+
/*!
|
|
193
|
+
* SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
|
|
194
|
+
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
195
|
+
*/
|
|
196
|
+
const PROFILE_CACHE_TTL_MS = 30 * 60 * 1e3;
|
|
197
|
+
const cache = /* @__PURE__ */ new Map();
|
|
198
|
+
const inflight = /* @__PURE__ */ new Map();
|
|
199
|
+
function getCachedProfile(userId) {
|
|
200
|
+
const entry = cache.get(userId);
|
|
201
|
+
if (!entry) {
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
if (Date.now() >= entry.expiresAt) {
|
|
205
|
+
cache.delete(userId);
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
return entry.data;
|
|
209
|
+
}
|
|
210
|
+
function setCachedProfile(userId, data, ttlMs = PROFILE_CACHE_TTL_MS) {
|
|
211
|
+
cache.set(userId, {
|
|
212
|
+
data,
|
|
213
|
+
expiresAt: Date.now() + ttlMs
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
async function fetchProfileCached(userId, fetcher, ttlMs = PROFILE_CACHE_TTL_MS) {
|
|
217
|
+
const cached = getCachedProfile(userId);
|
|
218
|
+
if (cached) {
|
|
219
|
+
return cached;
|
|
220
|
+
}
|
|
221
|
+
const pending = inflight.get(userId);
|
|
222
|
+
if (pending) {
|
|
223
|
+
return pending;
|
|
224
|
+
}
|
|
225
|
+
const promise = (async () => {
|
|
226
|
+
try {
|
|
227
|
+
const data = await fetcher();
|
|
228
|
+
if (data) {
|
|
229
|
+
setCachedProfile(userId, data, ttlMs);
|
|
230
|
+
}
|
|
231
|
+
return data;
|
|
232
|
+
} finally {
|
|
233
|
+
inflight.delete(userId);
|
|
234
|
+
}
|
|
235
|
+
})();
|
|
236
|
+
inflight.set(userId, promise);
|
|
237
|
+
return promise;
|
|
238
|
+
}
|
|
239
|
+
const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
|
|
240
|
+
__name: "NcProfileHoverCard",
|
|
241
|
+
props: {
|
|
242
|
+
user: { default: null },
|
|
243
|
+
profile: { default: null },
|
|
244
|
+
preloadedUserStatus: { default: null },
|
|
245
|
+
open: { type: Boolean, default: false },
|
|
246
|
+
actions: { default: null },
|
|
247
|
+
actionsLoading: { type: Boolean, default: false }
|
|
248
|
+
},
|
|
249
|
+
setup(__props) {
|
|
250
|
+
const props = __props;
|
|
251
|
+
const loading = Vue.ref(false);
|
|
252
|
+
const error = Vue.ref(false);
|
|
253
|
+
const profileData = Vue.ref(props.profile);
|
|
254
|
+
const userStatus = Vue.ref(props.preloadedUserStatus ?? {});
|
|
255
|
+
const isMobile = Composables_useIsMobile.useIsSmallMobile();
|
|
256
|
+
if (props.user && props.profile) {
|
|
257
|
+
setCachedProfile(props.user, props.profile);
|
|
258
|
+
}
|
|
259
|
+
const isCurrentUser = Vue.computed(() => !!props.user && auth.getCurrentUser()?.uid === props.user);
|
|
260
|
+
const settingsUrl = router.generateUrl("/settings/user");
|
|
261
|
+
const resolvedActions = Vue.computed(() => {
|
|
262
|
+
if (props.actions && props.actions.length > 0) {
|
|
263
|
+
return props.actions.filter((action) => action.appId !== "timezone");
|
|
264
|
+
}
|
|
265
|
+
return (profileData.value?.actions ?? []).filter((action) => action.appId !== "timezone").map((action) => ({
|
|
266
|
+
id: action.id,
|
|
267
|
+
appId: action.appId,
|
|
268
|
+
text: action.title,
|
|
269
|
+
href: action.target || void 0,
|
|
270
|
+
icon: action.icon,
|
|
271
|
+
target: action.id === "phone" ? "_self" : "_blank",
|
|
272
|
+
rel: action.id === "fediverse" ? "me" : void 0
|
|
273
|
+
}));
|
|
274
|
+
});
|
|
275
|
+
const localTimeLabel = Vue.computed(() => {
|
|
276
|
+
const time = formatProfileLocalTime(/* @__PURE__ */ new Date());
|
|
277
|
+
if (!time) {
|
|
278
|
+
return null;
|
|
279
|
+
}
|
|
280
|
+
return _l10n.t("Local time: {time}", { time });
|
|
281
|
+
});
|
|
282
|
+
const primaryAction = Vue.computed(() => resolvedActions.value[0]);
|
|
283
|
+
const otherActions = Vue.computed(() => resolvedActions.value.slice(1));
|
|
284
|
+
const primaryActionButtonProps = Vue.computed(() => {
|
|
285
|
+
const action = primaryAction.value;
|
|
286
|
+
if (!action) {
|
|
287
|
+
return {};
|
|
288
|
+
}
|
|
289
|
+
if (action.to) {
|
|
290
|
+
return { to: action.to };
|
|
291
|
+
}
|
|
292
|
+
if (action.href) {
|
|
293
|
+
return {
|
|
294
|
+
href: action.href,
|
|
295
|
+
target: action.target ?? (action.href.startsWith("tel:") ? "_self" : "_blank"),
|
|
296
|
+
rel: action.rel
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
return {};
|
|
300
|
+
});
|
|
301
|
+
const emptyProfileMessage = Vue.computed(() => {
|
|
302
|
+
if (isCurrentUser.value) {
|
|
303
|
+
return _l10n.t("You have not added any info yet");
|
|
304
|
+
}
|
|
305
|
+
const name = profileData.value?.displayname || props.user || "";
|
|
306
|
+
return _l10n.t("{user} has not added any info yet", { user: name });
|
|
307
|
+
});
|
|
308
|
+
const avatarUserStatus = Vue.computed(() => ({
|
|
309
|
+
status: userStatus.value.status ?? null,
|
|
310
|
+
icon: userStatus.value.icon ?? null,
|
|
311
|
+
message: userStatus.value.message ?? null
|
|
312
|
+
}));
|
|
313
|
+
function formatProfileLocalTime(date) {
|
|
314
|
+
const timeZone = profileData.value?.timezone;
|
|
315
|
+
if (timeZone) {
|
|
316
|
+
try {
|
|
317
|
+
return new Intl.DateTimeFormat(l10n.getCanonicalLocale(), {
|
|
318
|
+
timeZone,
|
|
319
|
+
hour: "2-digit",
|
|
320
|
+
minute: "2-digit"
|
|
321
|
+
}).format(date);
|
|
322
|
+
} catch {
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
if (typeof profileData.value?.timezoneOffset === "number") {
|
|
326
|
+
const shifted = new Date(date.getTime() + profileData.value.timezoneOffset * 1e3);
|
|
327
|
+
return new Intl.DateTimeFormat(l10n.getCanonicalLocale(), {
|
|
328
|
+
timeZone: "UTC",
|
|
329
|
+
hour: "2-digit",
|
|
330
|
+
minute: "2-digit"
|
|
331
|
+
}).format(shifted);
|
|
332
|
+
}
|
|
333
|
+
return null;
|
|
334
|
+
}
|
|
335
|
+
function isIconUrl(icon) {
|
|
336
|
+
return !!icon && (/^(https?:)?\/\//.test(icon) || icon.startsWith("/") || icon.startsWith("data:"));
|
|
337
|
+
}
|
|
338
|
+
function otherActionComponent(action) {
|
|
339
|
+
if (action.to) {
|
|
340
|
+
return Components_NcActionRouter;
|
|
341
|
+
}
|
|
342
|
+
if (action.onClick && !action.href) {
|
|
343
|
+
return NcActionButton.NcActionButton;
|
|
344
|
+
}
|
|
345
|
+
return Components_NcActionLink;
|
|
346
|
+
}
|
|
347
|
+
function otherActionProps(action) {
|
|
348
|
+
if (action.to) {
|
|
349
|
+
return { to: action.to, closeAfterClick: true };
|
|
350
|
+
}
|
|
351
|
+
if (action.onClick && !action.href) {
|
|
352
|
+
return { closeAfterClick: true };
|
|
353
|
+
}
|
|
354
|
+
return {
|
|
355
|
+
href: action.href,
|
|
356
|
+
target: action.target ?? (action.href?.startsWith("tel:") ? "_self" : "_blank"),
|
|
357
|
+
rel: action.rel,
|
|
358
|
+
closeAfterClick: true
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
Vue.watch(() => props.profile, (value) => {
|
|
362
|
+
if (value) {
|
|
363
|
+
profileData.value = value;
|
|
364
|
+
if (props.user) {
|
|
365
|
+
setCachedProfile(props.user, value);
|
|
366
|
+
}
|
|
367
|
+
error.value = false;
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
Vue.watch(() => props.preloadedUserStatus, (value) => {
|
|
371
|
+
if (value) {
|
|
372
|
+
userStatus.value = value;
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
Vue.watch(() => props.user, () => {
|
|
376
|
+
profileData.value = props.profile;
|
|
377
|
+
userStatus.value = props.preloadedUserStatus ?? {};
|
|
378
|
+
error.value = false;
|
|
379
|
+
if (props.user && props.profile) {
|
|
380
|
+
setCachedProfile(props.user, props.profile);
|
|
381
|
+
}
|
|
382
|
+
if (props.open) {
|
|
383
|
+
loadProfile();
|
|
384
|
+
}
|
|
385
|
+
});
|
|
386
|
+
Vue.watch(() => props.open, (isOpen) => {
|
|
387
|
+
if (isOpen) {
|
|
388
|
+
loadProfile();
|
|
389
|
+
}
|
|
390
|
+
});
|
|
391
|
+
Vue.onMounted(() => {
|
|
392
|
+
if (props.open) {
|
|
393
|
+
loadProfile();
|
|
394
|
+
}
|
|
395
|
+
});
|
|
396
|
+
function hasPreloadedUserStatus() {
|
|
397
|
+
return props.preloadedUserStatus !== null || !!(userStatus.value.icon || userStatus.value.message || userStatus.value.status);
|
|
398
|
+
}
|
|
399
|
+
async function ensureUserStatus(userId) {
|
|
400
|
+
if (!hasPreloadedUserStatus()) {
|
|
401
|
+
userStatus.value = await fetchUserStatus(userId);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
async function loadProfile() {
|
|
405
|
+
if (!props.user || loading.value) {
|
|
406
|
+
return;
|
|
407
|
+
}
|
|
408
|
+
const userId = props.user;
|
|
409
|
+
if (!profileData.value) {
|
|
410
|
+
const cached = getCachedProfile(userId);
|
|
411
|
+
if (cached) {
|
|
412
|
+
profileData.value = cached;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
if (profileData.value) {
|
|
416
|
+
await ensureUserStatus(userId);
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
loading.value = true;
|
|
420
|
+
error.value = false;
|
|
421
|
+
try {
|
|
422
|
+
const [profile, status] = await Promise.all([
|
|
423
|
+
fetchProfileCached(userId, async () => {
|
|
424
|
+
const { data } = await axios__default.default.get(router.generateOcsUrl("/profile/{userId}", { userId }));
|
|
425
|
+
return data.ocs?.data ?? null;
|
|
426
|
+
}),
|
|
427
|
+
hasPreloadedUserStatus() ? Promise.resolve(userStatus.value) : fetchUserStatus(userId)
|
|
428
|
+
]);
|
|
429
|
+
profileData.value = profile;
|
|
430
|
+
userStatus.value = status;
|
|
431
|
+
if (!profileData.value) {
|
|
432
|
+
error.value = true;
|
|
433
|
+
}
|
|
434
|
+
} catch (e) {
|
|
435
|
+
logger.logger.debug("Failed to load profile for hovercard", { error: e, user: userId });
|
|
436
|
+
error.value = true;
|
|
437
|
+
} finally {
|
|
438
|
+
loading.value = false;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
async function fetchUserStatus(userId) {
|
|
442
|
+
try {
|
|
443
|
+
if (!capabilities.getCapabilities()?.user_status?.enabled || !auth.getCurrentUser()) {
|
|
444
|
+
return {};
|
|
445
|
+
}
|
|
446
|
+
const { data } = await axios__default.default.get(router.generateOcsUrl("/apps/user_status/api/v1/statuses/{userId}", { userId }));
|
|
447
|
+
return data.ocs?.data ?? {};
|
|
448
|
+
} catch (e) {
|
|
449
|
+
logger.logger.debug("Failed to load user status for hovercard", { error: e, userId });
|
|
450
|
+
return {};
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
return { __sfc: true, props, loading, error, profileData, userStatus, isMobile, isCurrentUser, settingsUrl, resolvedActions, localTimeLabel, primaryAction, otherActions, primaryActionButtonProps, emptyProfileMessage, avatarUserStatus, formatProfileLocalTime, isIconUrl, otherActionComponent, otherActionProps, hasPreloadedUserStatus, ensureUserStatus, loadProfile, fetchUserStatus, AccountIcon, BriefcaseIcon, ClockIcon, MapMarkerIcon, PencilIcon, NcActions: NcActions.NcActions, NcAvatar: NcAvatar.NcAvatar, NcButton: NcButton.NcButton, NcEmptyContent: Components_NcEmptyContent, NcLoadingIcon: Components_NcLoadingIcon, NcRichText: NcRichText.NcRichText, t: _l10n.t, NcIconSvgWrapper: NcIconSvgWrapper.NcIconSvgWrapper };
|
|
454
|
+
}
|
|
455
|
+
});
|
|
456
|
+
var _sfc_render = function render6() {
|
|
457
|
+
var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;
|
|
458
|
+
return _c("div", { staticClass: "profile-hover-card", attrs: { "role": "dialog", "aria-label": _setup.t("Profile of {user}", { user: _setup.profileData?.displayname || _vm.user || "" }) } }, [_setup.loading ? _c("div", { staticClass: "profile-hover-card__loading" }, [_c(_setup.NcLoadingIcon, { attrs: { "size": 32, "name": _setup.t("Loading profile") } })], 1) : _setup.profileData && !_setup.error ? [_c("div", { staticClass: "profile-hover-card__header" }, [_setup.isCurrentUser ? _c(_setup.NcButton, { staticClass: "profile-hover-card__header__edit", attrs: { "variant": "tertiary", "aria-label": _setup.t("Edit profile"), "title": _setup.t("Edit profile"), "href": _setup.settingsUrl, "target": "_blank" }, scopedSlots: _vm._u([{ key: "icon", fn: function() {
|
|
459
|
+
return [_c(_setup.PencilIcon, { attrs: { "size": 20 } })];
|
|
460
|
+
}, proxy: true }], null, false, 3660207582) }) : _vm._e(), _c("div", { staticClass: "profile-hover-card__header__container" }, [_setup.isMobile ? _c(_setup.NcAvatar, { staticClass: "avatar profile-hover-card__header__container__avatar", attrs: { "user": _setup.profileData.userId, "size": 96, "disableMenu": "", "disableTooltip": "", "preloadedUserStatus": _setup.avatarUserStatus, "isNoUser": !_setup.profileData.isUserAvatarVisible } }) : _c("div", { staticClass: "profile-hover-card__header__container__placeholder" }), _c("div", { staticClass: "profile-hover-card__header__container__identity" }, [_c("div", { staticClass: "profile-hover-card__header__container__displayname" }, [_c("h2", [_vm._v(_vm._s(_setup.profileData.displayname || _setup.profileData.userId))]), _setup.profileData.pronouns ? _c("span", { staticClass: "profile-hover-card__header__container__pronoun-separator" }, [_vm._v("·")]) : _vm._e(), _setup.profileData.pronouns ? _c("span", { staticClass: "profile-hover-card__header__container__pronouns" }, [_vm._v(_vm._s(_setup.profileData.pronouns))]) : _vm._e()]), _setup.userStatus.icon || _setup.userStatus.message ? _c("div", { staticClass: "profile-hover-card__header__container__status" }, [_c("span", { staticClass: "profile-hover-card__header__container__status-content" }, [_c("span", [_vm._v(_vm._s(_setup.userStatus.icon) + " " + _vm._s(_setup.userStatus.message))])])]) : _vm._e()])], 1)], 1), _c("div", { staticClass: "profile-hover-card__body" }, [_c("div", { staticClass: "profile-hover-card__content" }, [_c("div", { staticClass: "profile-hover-card__sidebar" }, [!_setup.isMobile ? _c(_setup.NcAvatar, { staticClass: "avatar", attrs: { "user": _setup.profileData.userId, "size": 135, "disableMenu": "", "disableTooltip": "", "preloadedUserStatus": _setup.avatarUserStatus, "isNoUser": !_setup.profileData.isUserAvatarVisible } }) : _vm._e(), _c("div", { staticClass: "user-actions" }, [_vm.actionsLoading && _setup.resolvedActions.length === 0 ? _c("div", { staticClass: "user-actions__loading" }, [_c(_setup.NcLoadingIcon, { attrs: { "size": 20, "name": _setup.t("Loading actions") } })], 1) : [_setup.primaryAction ? _c(_setup.NcButton, _vm._b({ staticClass: "user-actions__primary", attrs: { "variant": "primary" }, on: { "click": _setup.primaryAction.onClick }, scopedSlots: _vm._u([_setup.primaryAction.iconSvg || _setup.primaryAction.icon ? { key: "icon", fn: function() {
|
|
461
|
+
return [_setup.primaryAction.iconSvg ? _c(_setup.NcIconSvgWrapper, { attrs: { "svg": _setup.primaryAction.iconSvg } }) : _setup.isIconUrl(_setup.primaryAction.icon) ? _c("img", { staticClass: "user-actions__primary__icon", attrs: { "src": _setup.primaryAction.icon, "alt": "" } }) : _c("span", { staticClass: "user-actions__primary__icon-class", class: _setup.primaryAction.icon, attrs: { "aria-hidden": "true" } })];
|
|
462
|
+
}, proxy: true } : null], null, true) }, "NcButton", _setup.primaryActionButtonProps, false), [_vm._v(" " + _vm._s(_setup.primaryAction.text) + " ")]) : _vm._e(), _setup.otherActions.length > 0 ? _c(_setup.NcActions, { staticClass: "user-actions__other", attrs: { "inline": _setup.isMobile ? 5 : 4 } }, _vm._l(_setup.otherActions, function(action, index) {
|
|
463
|
+
return _c(_setup.otherActionComponent(action), _vm._b({ key: action.id || action.href || index, tag: "component", on: { "click": action.onClick }, scopedSlots: _vm._u([action.iconSvg || action.icon ? { key: "icon", fn: function() {
|
|
464
|
+
return [action.iconSvg ? _c(_setup.NcIconSvgWrapper, { attrs: { "svg": action.iconSvg } }) : _setup.isIconUrl(action.icon) ? _c("img", { staticClass: "user-actions__other__icon", attrs: { "src": action.icon, "alt": "" } }) : _c("span", { staticClass: "user-actions__other__icon-class", class: action.icon, attrs: { "aria-hidden": "true" } })];
|
|
465
|
+
}, proxy: true } : null], null, true) }, "component", _setup.otherActionProps(action), false), [_vm._v(" " + _vm._s(action.text) + " ")]);
|
|
466
|
+
}), 1) : _vm._e()]], 2)], 1), _c("div", { staticClass: "profile-hover-card__blocks" }, [_setup.profileData.organisation || _setup.profileData.role || _setup.profileData.address || _setup.localTimeLabel ? _c("div", { staticClass: "profile-hover-card__blocks-details" }, [_setup.profileData.organisation || _setup.profileData.role ? _c("div", { staticClass: "detail" }, [_c("p", [_c(_setup.BriefcaseIcon, { staticClass: "detail-icon", attrs: { "size": 16, "title": "" } }), _vm._v(" " + _vm._s(_setup.profileData.organisation) + " "), _setup.profileData.organisation && _setup.profileData.role ? _c("span", [_vm._v("•")]) : _vm._e(), _vm._v(" " + _vm._s(_setup.profileData.role) + " ")], 1)]) : _vm._e(), _setup.profileData.address ? _c("div", { staticClass: "detail" }, [_c("p", [_c(_setup.MapMarkerIcon, { staticClass: "detail-icon", attrs: { "size": 16, "title": "" } }), _vm._v(" " + _vm._s(_setup.profileData.address) + " ")], 1)]) : _vm._e(), _setup.localTimeLabel ? _c("div", { staticClass: "detail" }, [_c("p", [_c(_setup.ClockIcon, { staticClass: "detail-icon", attrs: { "size": 16, "title": "" } }), _vm._v(" " + _vm._s(_setup.localTimeLabel) + " ")], 1)]) : _vm._e()]) : _vm._e(), _setup.profileData.headline || _setup.profileData.biography ? [_setup.profileData.headline ? _c("h3", { staticClass: "profile-hover-card__blocks-headline" }, [_vm._v(" " + _vm._s(_setup.profileData.headline) + " ")]) : _vm._e(), _setup.profileData.biography ? _c("div", { staticClass: "profile-hover-card__blocks-biography" }, [_c(_setup.NcRichText, { attrs: { "text": _setup.profileData.biography, "useExtendedMarkdown": "" } })], 1) : _vm._e()] : _c(_setup.NcEmptyContent, { staticClass: "profile-hover-card__blocks-empty-info", attrs: { "name": _setup.emptyProfileMessage, "description": _setup.t("The headline and about sections will show up here") }, scopedSlots: _vm._u([{ key: "icon", fn: function() {
|
|
467
|
+
return [_c(_setup.AccountIcon, { attrs: { "size": 40 } })];
|
|
468
|
+
}, proxy: true }]) })], 2)])])] : _c("div", { staticClass: "profile-hover-card__error" }, [_vm._v(" " + _vm._s(_setup.t("Failed to load profile")) + " ")])], 2);
|
|
469
|
+
};
|
|
470
|
+
var _sfc_staticRenderFns = [];
|
|
471
|
+
var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
|
|
472
|
+
_sfc_main,
|
|
473
|
+
_sfc_render,
|
|
474
|
+
_sfc_staticRenderFns,
|
|
475
|
+
false,
|
|
476
|
+
null,
|
|
477
|
+
"cf5e55fe"
|
|
478
|
+
);
|
|
479
|
+
const NcProfileHoverCard = __component__.exports;
|
|
480
|
+
exports.default = NcProfileHoverCard;
|
|
481
|
+
//# sourceMappingURL=NcProfileHoverCard-rEanhQqc.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NcProfileHoverCard-rEanhQqc.cjs","sources":["../../node_modules/vue-material-design-icons/AccountOutline.vue","../../node_modules/vue-material-design-icons/BriefcaseOutline.vue","../../node_modules/vue-material-design-icons/ClockOutline.vue","../../node_modules/vue-material-design-icons/MapMarkerOutline.vue","../../node_modules/vue-material-design-icons/PencilOutline.vue","../../src/components/NcProfileHoverCard/profileCache.ts","../../src/components/NcProfileHoverCard/NcProfileHoverCard.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon account-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M12,13C14.67,13 20,14.33 20,17V20H4V17C4,14.33 9.33,13 12,13M12,14.9C9.03,14.9 5.9,16.36 5.9,17V18.1H18.1V17C18.1,16.36 14.97,14.9 12,14.9Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AccountOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon briefcase-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M20,6C20.58,6 21.05,6.2 21.42,6.59C21.8,7 22,7.45 22,8V19C22,19.55 21.8,20 21.42,20.41C21.05,20.8 20.58,21 20,21H4C3.42,21 2.95,20.8 2.58,20.41C2.2,20 2,19.55 2,19V8C2,7.45 2.2,7 2.58,6.59C2.95,6.2 3.42,6 4,6H8V4C8,3.42 8.2,2.95 8.58,2.58C8.95,2.2 9.42,2 10,2H14C14.58,2 15.05,2.2 15.42,2.58C15.8,2.95 16,3.42 16,4V6H20M4,8V19H20V8H4M14,6V4H10V6H14Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"BriefcaseOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon clock-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ClockOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon map-marker-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5M12,2A7,7 0 0,1 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9C7,10 7,12 12,18.71C17,12 17,10 17,9A5,5 0 0,0 12,4Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"MapMarkerOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon pencil-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"PencilOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IProfileData } from './NcProfileHoverCard.vue'\n\n/** Default TTL for cached profile payloads (30 minutes). */\nexport const PROFILE_CACHE_TTL_MS = 30 * 60 * 1000\n\ninterface CacheEntry {\n\tdata: IProfileData\n\texpiresAt: number\n}\n\nconst cache = new Map<string, CacheEntry>()\nconst inflight = new Map<string, Promise<IProfileData | null>>()\n\n/**\n * Return a non-expired cached profile for the user, or null.\n *\n * @param userId - User id\n */\nexport function getCachedProfile(userId: string): IProfileData | null {\n\tconst entry = cache.get(userId)\n\tif (!entry) {\n\t\treturn null\n\t}\n\tif (Date.now() >= entry.expiresAt) {\n\t\tcache.delete(userId)\n\t\treturn null\n\t}\n\treturn entry.data\n}\n\n/**\n * Store profile data in the shared TTL cache.\n *\n * @param userId - User id\n * @param data - Profile payload\n * @param ttlMs - Time to live in milliseconds\n */\nexport function setCachedProfile(userId: string, data: IProfileData, ttlMs = PROFILE_CACHE_TTL_MS): void {\n\tcache.set(userId, {\n\t\tdata,\n\t\texpiresAt: Date.now() + ttlMs,\n\t})\n}\n\n/**\n * Clear all cached profiles and in-flight fetches. Used by tests.\n *\n * @internal\n */\nexport function clearProfileCache(): void {\n\tcache.clear()\n\tinflight.clear()\n}\n\n/**\n * Fetch a profile with shared TTL cache and in-flight request deduplication.\n *\n * @param userId - User id\n * @param fetcher - Network loader invoked on cache miss\n * @param ttlMs - Time to live for a successful result\n */\nexport async function fetchProfileCached(\n\tuserId: string,\n\tfetcher: () => Promise<IProfileData | null>,\n\tttlMs = PROFILE_CACHE_TTL_MS,\n): Promise<IProfileData | null> {\n\tconst cached = getCachedProfile(userId)\n\tif (cached) {\n\t\treturn cached\n\t}\n\n\tconst pending = inflight.get(userId)\n\tif (pending) {\n\t\treturn pending\n\t}\n\n\tconst promise = (async () => {\n\t\ttry {\n\t\t\tconst data = await fetcher()\n\t\t\tif (data) {\n\t\t\t\tsetCachedProfile(userId, data, ttlMs)\n\t\t\t}\n\t\t\treturn data\n\t\t} finally {\n\t\t\tinflight.delete(userId)\n\t\t}\n\t})()\n\n\tinflight.set(userId, promise)\n\treturn promise\n}\n","<!--\n - SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport type { RawLocation } from 'vue-router'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { getCanonicalLocale } from '@nextcloud/l10n'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport { computed, onMounted, ref, watch } from 'vue'\nimport AccountIcon from 'vue-material-design-icons/AccountOutline.vue'\nimport BriefcaseIcon from 'vue-material-design-icons/BriefcaseOutline.vue'\nimport ClockIcon from 'vue-material-design-icons/ClockOutline.vue'\nimport MapMarkerIcon from 'vue-material-design-icons/MapMarkerOutline.vue'\nimport PencilIcon from 'vue-material-design-icons/PencilOutline.vue'\nimport NcActionButton from '../NcActionButton/NcActionButton.vue'\nimport NcActionLink from '../NcActionLink/NcActionLink.vue'\nimport NcActionRouter from '../NcActionRouter/NcActionRouter.vue'\nimport NcActions from '../NcActions/NcActions.vue'\nimport NcAvatar from '../NcAvatar/NcAvatar.vue'\nimport NcButton from '../NcButton/NcButton.vue'\nimport NcEmptyContent from '../NcEmptyContent/NcEmptyContent.vue'\nimport NcLoadingIcon from '../NcLoadingIcon/NcLoadingIcon.vue'\nimport NcRichText from '../NcRichText/NcRichText.vue'\nimport { useIsSmallMobile } from '../../composables/useIsMobile/index.ts'\nimport { t } from '../../l10n.js'\nimport { logger } from '../../utils/logger.ts'\nimport NcIconSvgWrapper from '../NcIconSvgWrapper/index.js'\nimport { fetchProfileCached, getCachedProfile, setCachedProfile } from './profileCache.ts'\n\nexport interface IProfileAction {\n\tid: string\n\tappId?: string\n\ticon: string\n\ttitle: string\n\ttarget: string | null\n}\n\nexport interface IProfileData {\n\tuserId: string\n\taddress?: string | null\n\tbiography?: string | null\n\tdisplayname?: string | null\n\theadline?: string | null\n\tisUserAvatarVisible?: boolean\n\torganisation?: string | null\n\tpronouns?: string | null\n\trole?: string | null\n\ttimezone?: string | null\n\ttimezoneOffset?: number | null\n\tactions: IProfileAction[]\n}\n\n/**\n * Action shown in the hover card sidebar (typically from NcAvatar's contacts menu).\n */\nexport interface IProfileHoverCardAction {\n\tid?: string\n\tappId?: string\n\ttext: string\n\thref?: string\n\tto?: RawLocation\n\ttarget?: string\n\trel?: string\n\ticon?: string\n\ticonSvg?: string\n\tonClick?: (event: MouseEvent) => void\n}\n\nexport interface IUserStatus {\n\ticon?: string | null\n\tmessage?: string | null\n\tstatus?: string | null\n}\n\nconst props = withDefaults(defineProps<{\n\t/**\n\t * User id whose profile to show.\n\t */\n\tuser?: string | null\n\n\t/**\n\t * Optional preloaded profile data (skips the profile API request when set).\n\t */\n\tprofile?: IProfileData | null\n\n\t/**\n\t * Optional preloaded user status (skips the status API request when set).\n\t * Pass an object with `status`, `icon`, and `message` set to null for a known empty status.\n\t */\n\tpreloadedUserStatus?: IUserStatus | null\n\n\t/**\n\t * Whether the popover that hosts this card is currently shown.\n\t * Profile data and user status are loaded when this becomes true.\n\t */\n\topen?: boolean\n\n\t/**\n\t * Actions to show in the card (e.g. NcAvatar contacts menu actions).\n\t * When omitted or empty, actions from the profile API are used.\n\t */\n\tactions?: IProfileHoverCardAction[] | null\n\n\t/**\n\t * True while parent actions (e.g. contacts menu) are still loading.\n\t */\n\tactionsLoading?: boolean\n}>(), {\n\tuser: null,\n\tprofile: null,\n\tpreloadedUserStatus: null,\n\topen: false,\n\tactions: null,\n\tactionsLoading: false,\n})\n\nconst loading = ref(false)\nconst error = ref(false)\nconst profileData = ref<IProfileData | null>(props.profile)\nconst userStatus = ref<IUserStatus>(props.preloadedUserStatus ?? {})\nconst isMobile = useIsSmallMobile()\n\nif (props.user && props.profile) {\n\tsetCachedProfile(props.user, props.profile)\n}\n\nconst isCurrentUser = computed(() => !!props.user && getCurrentUser()?.uid === props.user)\nconst settingsUrl = generateUrl('/settings/user')\n\nconst resolvedActions = computed((): IProfileHoverCardAction[] => {\n\tif (props.actions && props.actions.length > 0) {\n\t\treturn props.actions.filter((action) => action.appId !== 'timezone')\n\t}\n\treturn (profileData.value?.actions ?? [])\n\t\t.filter((action) => action.appId !== 'timezone')\n\t\t.map((action) => ({\n\t\t\tid: action.id,\n\t\t\tappId: action.appId,\n\t\t\ttext: action.title,\n\t\t\thref: action.target || undefined,\n\t\t\ticon: action.icon,\n\t\t\ttarget: action.id === 'phone' ? '_self' : '_blank',\n\t\t\trel: action.id === 'fediverse' ? 'me' : undefined,\n\t\t}))\n})\n\n/**\n * Local clock for the profile user (same format as Talk's right sidebar).\n */\nconst localTimeLabel = computed(() => {\n\tconst time = formatProfileLocalTime(new Date())\n\tif (!time) {\n\t\treturn null\n\t}\n\treturn t('Local time: {time}', { time })\n})\n\nconst primaryAction = computed(() => resolvedActions.value[0])\nconst otherActions = computed(() => resolvedActions.value.slice(1))\n\nconst primaryActionButtonProps = computed(() => {\n\tconst action = primaryAction.value\n\tif (!action) {\n\t\treturn {}\n\t}\n\tif (action.to) {\n\t\treturn { to: action.to }\n\t}\n\tif (action.href) {\n\t\treturn {\n\t\t\thref: action.href,\n\t\t\ttarget: action.target ?? (action.href.startsWith('tel:') ? '_self' : '_blank'),\n\t\t\trel: action.rel,\n\t\t}\n\t}\n\treturn {}\n})\n\nconst emptyProfileMessage = computed(() => {\n\tif (isCurrentUser.value) {\n\t\treturn t('You have not added any info yet')\n\t}\n\tconst name = profileData.value?.displayname || props.user || ''\n\treturn t('{user} has not added any info yet', { user: name })\n})\n\n/**\n * Pass status to NcAvatar so the badge matches the loaded status.\n * Always pass an object (null fields if empty) so NcAvatar does not fetch again.\n */\nconst avatarUserStatus = computed(() => ({\n\tstatus: userStatus.value.status ?? null,\n\ticon: userStatus.value.icon ?? null,\n\tmessage: userStatus.value.message ?? null,\n}))\n\n/**\n * Format the profile user's current time like Talk (`HH:MM` in their timezone)\n *\n * @param date - Instant to format\n */\nfunction formatProfileLocalTime(date: Date): string | null {\n\tconst timeZone = profileData.value?.timezone\n\tif (timeZone) {\n\t\ttry {\n\t\t\treturn new Intl.DateTimeFormat(getCanonicalLocale(), {\n\t\t\t\ttimeZone,\n\t\t\t\thour: '2-digit',\n\t\t\t\tminute: '2-digit',\n\t\t\t}).format(date)\n\t\t} catch {\n\t\t\t// Invalid timezone id from the server\n\t\t}\n\t}\n\n\tif (typeof profileData.value?.timezoneOffset === 'number') {\n\t\tconst shifted = new Date(date.getTime() + profileData.value.timezoneOffset * 1000)\n\t\treturn new Intl.DateTimeFormat(getCanonicalLocale(), {\n\t\t\ttimeZone: 'UTC',\n\t\t\thour: '2-digit',\n\t\t\tminute: '2-digit',\n\t\t}).format(shifted)\n\t}\n\n\treturn null\n}\n\n/**\n * Whether an action icon is an image URL rather than a CSS class\n *\n * @param icon - Icon value\n */\nfunction isIconUrl(icon?: string) {\n\treturn !!icon && (/^(https?:)?\\/\\//.test(icon) || icon.startsWith('/') || icon.startsWith('data:'))\n}\n\n/**\n * Resolve the NcAction component for a secondary hover-card action\n *\n * @param action - Hover card action\n */\nfunction otherActionComponent(action: IProfileHoverCardAction) {\n\tif (action.to) {\n\t\treturn NcActionRouter\n\t}\n\tif (action.onClick && !action.href) {\n\t\treturn NcActionButton\n\t}\n\treturn NcActionLink\n}\n\n/**\n * Props for a secondary hover-card action component\n *\n * @param action - Hover card action\n */\nfunction otherActionProps(action: IProfileHoverCardAction) {\n\tif (action.to) {\n\t\treturn { to: action.to, closeAfterClick: true }\n\t}\n\tif (action.onClick && !action.href) {\n\t\treturn { closeAfterClick: true }\n\t}\n\treturn {\n\t\thref: action.href,\n\t\ttarget: action.target ?? (action.href?.startsWith('tel:') ? '_self' : '_blank'),\n\t\trel: action.rel,\n\t\tcloseAfterClick: true,\n\t}\n}\n\nwatch(() => props.profile, (value) => {\n\tif (value) {\n\t\tprofileData.value = value\n\t\tif (props.user) {\n\t\t\tsetCachedProfile(props.user, value)\n\t\t}\n\t\terror.value = false\n\t}\n})\n\nwatch(() => props.preloadedUserStatus, (value) => {\n\tif (value) {\n\t\tuserStatus.value = value\n\t}\n})\n\nwatch(() => props.user, () => {\n\tprofileData.value = props.profile\n\tuserStatus.value = props.preloadedUserStatus ?? {}\n\terror.value = false\n\tif (props.user && props.profile) {\n\t\tsetCachedProfile(props.user, props.profile)\n\t}\n\tif (props.open) {\n\t\tloadProfile()\n\t}\n})\n\nwatch(() => props.open, (isOpen) => {\n\tif (isOpen) {\n\t\tloadProfile()\n\t}\n})\n\nonMounted(() => {\n\tif (props.open) {\n\t\tloadProfile()\n\t}\n})\n\n/**\n * Whether user status was already provided (including a known empty status).\n */\nfunction hasPreloadedUserStatus() {\n\treturn props.preloadedUserStatus !== null\n\t\t|| !!(userStatus.value.icon || userStatus.value.message || userStatus.value.status)\n}\n\n/**\n * Ensure user status is loaded when missing.\n *\n * @param userId - User id\n */\nasync function ensureUserStatus(userId: string) {\n\t// Skip the status request when already preloaded (e.g. from NcAvatar)\n\tif (!hasPreloadedUserStatus()) {\n\t\tuserStatus.value = await fetchUserStatus(userId)\n\t}\n}\n\n/**\n * Load profile fields and user status when the hovercard opens\n */\nasync function loadProfile() {\n\tif (!props.user || loading.value) {\n\t\treturn\n\t}\n\n\tconst userId = props.user\n\n\t// Use preloaded, instance, or shared-cache profile; only refresh status if needed\n\tif (!profileData.value) {\n\t\tconst cached = getCachedProfile(userId)\n\t\tif (cached) {\n\t\t\tprofileData.value = cached\n\t\t}\n\t}\n\tif (profileData.value) {\n\t\tawait ensureUserStatus(userId)\n\t\treturn\n\t}\n\n\tloading.value = true\n\terror.value = false\n\n\ttry {\n\t\tconst [profile, status] = await Promise.all([\n\t\t\tfetchProfileCached(userId, async () => {\n\t\t\t\tconst { data } = await axios.get(generateOcsUrl('/profile/{userId}', { userId }))\n\t\t\t\treturn data.ocs?.data ?? null\n\t\t\t}),\n\t\t\thasPreloadedUserStatus()\n\t\t\t\t? Promise.resolve(userStatus.value)\n\t\t\t\t: fetchUserStatus(userId),\n\t\t])\n\t\tprofileData.value = profile\n\t\tuserStatus.value = status\n\t\tif (!profileData.value) {\n\t\t\terror.value = true\n\t\t}\n\t} catch (e) {\n\t\tlogger.debug('Failed to load profile for hovercard', { error: e, user: userId })\n\t\terror.value = true\n\t} finally {\n\t\tloading.value = false\n\t}\n}\n\n/**\n * Fetch user status for the given user\n *\n * @param userId - User id\n */\nasync function fetchUserStatus(userId: string): Promise<IUserStatus> {\n\ttry {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tif (!(getCapabilities() as any)?.user_status?.enabled || !getCurrentUser()) {\n\t\t\treturn {}\n\t\t}\n\t\tconst { data } = await axios.get(generateOcsUrl('/apps/user_status/api/v1/statuses/{userId}', { userId }))\n\t\treturn data.ocs?.data ?? {}\n\t} catch (e) {\n\t\tlogger.debug('Failed to load user status for hovercard', { error: e, userId })\n\t\treturn {}\n\t}\n}\n</script>\n\n<template>\n\t<div\n\t\tclass=\"profile-hover-card\"\n\t\trole=\"dialog\"\n\t\t:aria-label=\"t('Profile of {user}', { user: profileData?.displayname || user || '' })\">\n\t\t<div v-if=\"loading\" class=\"profile-hover-card__loading\">\n\t\t\t<NcLoadingIcon :size=\"32\" :name=\"t('Loading profile')\" />\n\t\t</div>\n\n\t\t<template v-else-if=\"profileData && !error\">\n\t\t\t<!-- Header band: name, pronouns, status (mirrors ProfileApp.vue) -->\n\t\t\t<div class=\"profile-hover-card__header\">\n\t\t\t\t<NcButton\n\t\t\t\t\tv-if=\"isCurrentUser\"\n\t\t\t\t\tclass=\"profile-hover-card__header__edit\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t:aria-label=\"t('Edit profile')\"\n\t\t\t\t\t:title=\"t('Edit profile')\"\n\t\t\t\t\t:href=\"settingsUrl\"\n\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<PencilIcon :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcButton>\n\t\t\t\t<div class=\"profile-hover-card__header__container\">\n\t\t\t\t\t<NcAvatar\n\t\t\t\t\t\tv-if=\"isMobile\"\n\t\t\t\t\t\tclass=\"avatar profile-hover-card__header__container__avatar\"\n\t\t\t\t\t\t:user=\"profileData.userId\"\n\t\t\t\t\t\t:size=\"96\"\n\t\t\t\t\t\tdisableMenu\n\t\t\t\t\t\tdisableTooltip\n\t\t\t\t\t\t:preloadedUserStatus=\"avatarUserStatus\"\n\t\t\t\t\t\t:isNoUser=\"!profileData.isUserAvatarVisible\" />\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-else\n\t\t\t\t\t\tclass=\"profile-hover-card__header__container__placeholder\" />\n\t\t\t\t\t<div class=\"profile-hover-card__header__container__identity\">\n\t\t\t\t\t\t<div class=\"profile-hover-card__header__container__displayname\">\n\t\t\t\t\t\t\t<h2>{{ profileData.displayname || profileData.userId }}</h2>\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tv-if=\"profileData.pronouns\"\n\t\t\t\t\t\t\t\tclass=\"profile-hover-card__header__container__pronoun-separator\">·</span>\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tv-if=\"profileData.pronouns\"\n\t\t\t\t\t\t\t\tclass=\"profile-hover-card__header__container__pronouns\">{{ profileData.pronouns }}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"userStatus.icon || userStatus.message\"\n\t\t\t\t\t\t\tclass=\"profile-hover-card__header__container__status\">\n\t\t\t\t\t\t\t<span class=\"profile-hover-card__header__container__status-content\">\n\t\t\t\t\t\t\t\t<span>{{ userStatus.icon }} {{ userStatus.message }}</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"profile-hover-card__body\">\n\t\t\t\t<div class=\"profile-hover-card__content\">\n\t\t\t\t\t<!-- Sidebar: avatar + actions (mirrors ProfileApp.vue) -->\n\t\t\t\t\t<div class=\"profile-hover-card__sidebar\">\n\t\t\t\t\t\t<NcAvatar\n\t\t\t\t\t\t\tv-if=\"!isMobile\"\n\t\t\t\t\t\t\tclass=\"avatar\"\n\t\t\t\t\t\t\t:user=\"profileData.userId\"\n\t\t\t\t\t\t\t:size=\"135\"\n\t\t\t\t\t\t\tdisableMenu\n\t\t\t\t\t\t\tdisableTooltip\n\t\t\t\t\t\t\t:preloadedUserStatus=\"avatarUserStatus\"\n\t\t\t\t\t\t\t:isNoUser=\"!profileData.isUserAvatarVisible\" />\n\n\t\t\t\t\t\t<div class=\"user-actions\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tv-if=\"actionsLoading && resolvedActions.length === 0\"\n\t\t\t\t\t\t\t\tclass=\"user-actions__loading\">\n\t\t\t\t\t\t\t\t<NcLoadingIcon :size=\"20\" :name=\"t('Loading actions')\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t\t\t<NcButton\n\t\t\t\t\t\t\t\t\tv-if=\"primaryAction\"\n\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\tclass=\"user-actions__primary\"\n\t\t\t\t\t\t\t\t\tv-bind=\"primaryActionButtonProps\"\n\t\t\t\t\t\t\t\t\t@click=\"primaryAction.onClick\">\n\t\t\t\t\t\t\t\t\t<template v-if=\"primaryAction.iconSvg || primaryAction.icon\" #icon>\n\t\t\t\t\t\t\t\t\t\t<NcIconSvgWrapper\n\t\t\t\t\t\t\t\t\t\t\tv-if=\"primaryAction.iconSvg\"\n\t\t\t\t\t\t\t\t\t\t\t:svg=\"primaryAction.iconSvg\" />\n\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\tv-else-if=\"isIconUrl(primaryAction.icon)\"\n\t\t\t\t\t\t\t\t\t\t\t:src=\"primaryAction.icon\"\n\t\t\t\t\t\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"user-actions__primary__icon\">\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tv-else\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"user-actions__primary__icon-class\"\n\t\t\t\t\t\t\t\t\t\t\t:class=\"primaryAction.icon\" />\n\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t{{ primaryAction.text }}\n\t\t\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t\t\t\t<NcActions\n\t\t\t\t\t\t\t\t\tv-if=\"otherActions.length > 0\"\n\t\t\t\t\t\t\t\t\tclass=\"user-actions__other\"\n\t\t\t\t\t\t\t\t\t:inline=\"isMobile ? 5 : 4\">\n\t\t\t\t\t\t\t\t\t<component\n\t\t\t\t\t\t\t\t\t\t:is=\"otherActionComponent(action)\"\n\t\t\t\t\t\t\t\t\t\tv-for=\"(action, index) in otherActions\"\n\t\t\t\t\t\t\t\t\t\t:key=\"action.id || action.href || index\"\n\t\t\t\t\t\t\t\t\t\tv-bind=\"otherActionProps(action)\"\n\t\t\t\t\t\t\t\t\t\t@click=\"action.onClick\">\n\t\t\t\t\t\t\t\t\t\t<template v-if=\"action.iconSvg || action.icon\" #icon>\n\t\t\t\t\t\t\t\t\t\t\t<NcIconSvgWrapper\n\t\t\t\t\t\t\t\t\t\t\t\tv-if=\"action.iconSvg\"\n\t\t\t\t\t\t\t\t\t\t\t\t:svg=\"action.iconSvg\" />\n\t\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\t\tv-else-if=\"isIconUrl(action.icon)\"\n\t\t\t\t\t\t\t\t\t\t\t\t:src=\"action.icon\"\n\t\t\t\t\t\t\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"user-actions__other__icon\">\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\tv-else\n\t\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"user-actions__other__icon-class\"\n\t\t\t\t\t\t\t\t\t\t\t\t:class=\"action.icon\" />\n\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t\t{{ action.text }}\n\t\t\t\t\t\t\t\t\t</component>\n\t\t\t\t\t\t\t\t</NcActions>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<!-- Content blocks: details + bio (mirrors ProfileApp.vue) -->\n\t\t\t\t\t<div class=\"profile-hover-card__blocks\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"profileData.organisation || profileData.role || profileData.address || localTimeLabel\"\n\t\t\t\t\t\t\tclass=\"profile-hover-card__blocks-details\">\n\t\t\t\t\t\t\t<div v-if=\"profileData.organisation || profileData.role\" class=\"detail\">\n\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t<BriefcaseIcon\n\t\t\t\t\t\t\t\t\t\tclass=\"detail-icon\"\n\t\t\t\t\t\t\t\t\t\t:size=\"16\"\n\t\t\t\t\t\t\t\t\t\ttitle=\"\" />\n\t\t\t\t\t\t\t\t\t{{ profileData.organisation }} <span v-if=\"profileData.organisation && profileData.role\">•</span> {{ profileData.role }}\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div v-if=\"profileData.address\" class=\"detail\">\n\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t<MapMarkerIcon\n\t\t\t\t\t\t\t\t\t\tclass=\"detail-icon\"\n\t\t\t\t\t\t\t\t\t\t:size=\"16\"\n\t\t\t\t\t\t\t\t\t\ttitle=\"\" />\n\t\t\t\t\t\t\t\t\t{{ profileData.address }}\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div v-if=\"localTimeLabel\" class=\"detail\">\n\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t<ClockIcon\n\t\t\t\t\t\t\t\t\t\tclass=\"detail-icon\"\n\t\t\t\t\t\t\t\t\t\t:size=\"16\"\n\t\t\t\t\t\t\t\t\t\ttitle=\"\" />\n\t\t\t\t\t\t\t\t\t{{ localTimeLabel }}\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<template v-if=\"profileData.headline || profileData.biography\">\n\t\t\t\t\t\t\t<h3 v-if=\"profileData.headline\" class=\"profile-hover-card__blocks-headline\">\n\t\t\t\t\t\t\t\t{{ profileData.headline }}\n\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t<div v-if=\"profileData.biography\" class=\"profile-hover-card__blocks-biography\">\n\t\t\t\t\t\t\t\t<NcRichText :text=\"profileData.biography\" useExtendedMarkdown />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<NcEmptyContent\n\t\t\t\t\t\t\tv-else\n\t\t\t\t\t\t\tclass=\"profile-hover-card__blocks-empty-info\"\n\t\t\t\t\t\t\t:name=\"emptyProfileMessage\"\n\t\t\t\t\t\t\t:description=\"t('The headline and about sections will show up here')\">\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<AccountIcon :size=\"40\" />\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</NcEmptyContent>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\n\t\t<div v-else class=\"profile-hover-card__error\">\n\t\t\t{{ t('Failed to load profile') }}\n\t\t</div>\n\t</div>\n</template>\n\n<style lang=\"scss\" scoped>\n// Card-scaled mirror of apps/profile ProfileApp.vue layout\n$card-width: 560px;\n$card-height: 300px;\n$header-height: 127px;\n$sidebar-width: 180px;\n\n.profile-hover-card {\n\tbox-sizing: border-box;\n\tposition: relative;\n\twidth: $card-width;\n\tmax-width: min(#{$card-width}, 90vw);\n\tmin-height: $card-height;\n\toverflow: hidden;\n\tcolor: var(--color-main-text);\n\tbackground-color: var(--color-main-background);\n\tborder-radius: var(--border-radius-large);\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\tflex-shrink: 0;\n\t\tposition: relative;\n\t\theight: $header-height;\n\t\tbackground-color: var(--color-primary-element-light);\n\n\t\t&__edit {\n\t\t\tposition: absolute;\n\t\t\tinset-block-start: 8px;\n\t\t\tinset-inline-end: 8px;\n\t\t\tz-index: 1;\n\t\t}\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\tdisplay: flex;\n\t\t\talign-items: flex-end;\n\t\t\t// Match sidebar margin-inline-end so name/status line up with role/bio\n\t\t\tgap: 12px;\n\t\t\twidth: 100%;\n\t\t\tmargin: 8px 0;\n\t\t\tpadding-inline: 16px;\n\t\t\tbox-sizing: border-box;\n\n\t\t\t&__placeholder {\n\t\t\t\tflex: 0 0 $sidebar-width;\n\t\t\t\twidth: $sidebar-width;\n\t\t\t}\n\n\t\t\t&__avatar {\n\t\t\t\tflex-shrink: 0;\n\t\t\t}\n\n\t\t\t&__identity {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\tjustify-content: flex-end;\n\t\t\t\talign-items: flex-start;\n\t\t\t\tgap: 4px;\n\t\t\t\tmin-width: 0;\n\t\t\t\tflex: 1;\n\t\t\t\tpadding-inline: 0;\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: baseline;\n\t\t\t\tgap: 8px;\n\t\t\t\tmin-width: 0;\n\n\t\t\t\th2 {\n\t\t\t\t\tfont-size: 24px;\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\toverflow-wrap: anywhere;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__pronouns {\n\t\t\t\tfont-size: 15px;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\n\t\t\t&__status {\n\t\t\t\tmin-width: 0;\n\t\t\t}\n\n\t\t\t&__status-content {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 8px;\n\t\t\t\tfont-size: 14px;\n\t\t\t\toverflow-wrap: anywhere;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__body {\n\t\tflex: 1;\n\t\tmin-height: 0;\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tpadding-inline: 16px 16px;\n\t\tbox-sizing: border-box;\n\t}\n\n\t&__sidebar {\n\t\talign-self: flex-start;\n\t\tpadding-top: 8px;\n\t\twidth: $sidebar-width;\n\t\tmin-width: $sidebar-width;\n\t\tmargin-block: -100px 0;\n\t\tmargin-inline: 0 12px;\n\t}\n\n\t&__header,\n\t&__sidebar {\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t:deep(.avatar.avatardiv) {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\n\t\t\t.avatardiv__user-status {\n\t\t\t\tinset-inline-end: 10px;\n\t\t\t\tbottom: 10px;\n\t\t\t\twidth: 26px;\n\t\t\t\theight: 26px;\n\t\t\t\tbackground-size: 22px;\n\t\t\t\tborder: none;\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 26px;\n\t\t\t\tfont-size: 16px;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__blocks {\n\t\tmargin: 12px 0 12px 0;\n\t\tdisplay: grid;\n\t\tgap: 8px 0;\n\t\tmin-width: 0;\n\t\tflex: 1;\n\t\toverflow: hidden;\n\t\talign-content: start;\n\n\t\tp, h3 {\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t\tfont-size: 14px;\n\n\t\t\t\tp .detail-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-inline: 0;\n\t\t\tmargin-block: 4px 0;\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 16px;\n\t\t}\n\n\t\t&-biography {\n\t\t\toverflow: hidden;\n\t\t\tfont-size: 14px;\n\t\t\tline-height: 1.4;\n\t\t\tdisplay: -webkit-box;\n\t\t\t-webkit-box-orient: vertical;\n\t\t\t-webkit-line-clamp: 4;\n\t\t\tline-clamp: 4;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow-wrap: anywhere;\n\n\t\t\t:deep(p) {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-empty-info {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\n\t&__loading,\n\t&__error {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\theight: 100%;\n\t\tmin-height: $card-height;\n\t\tpadding: 16px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 12px;\n\tmax-width: $sidebar-width;\n\n\t&__loading {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tpadding: 8px 0;\n\t}\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\t\twidth: $sidebar-width !important;\n\n\t\t&__icon {\n\t\t\theight: 20px;\n\t\t\twidth: 20px;\n\t\t\tobject-fit: contain;\n\t\t\tfilter: var(--primary-invert-if-dark);\n\t\t}\n\n\t\t&__icon-class {\n\t\t\tdisplay: block;\n\t\t\theight: 20px;\n\t\t\twidth: 20px;\n\t\t\tbackground-size: 20px;\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tfilter: var(--primary-invert-if-dark);\n\t\t}\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\n\t\t&__icon {\n\t\t\theight: 20px;\n\t\t\twidth: 20px;\n\t\t\tobject-fit: contain;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\talign-self: center;\n\t\t\tmargin: 8px; // compact 44px-ish hit target for the card\n\t\t}\n\n\t\t&__icon-class {\n\t\t\tdisplay: block;\n\t\t\theight: 20px;\n\t\t\twidth: 20px;\n\t\t\tmargin: 8px;\n\t\t\tbackground-size: 20px;\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n\n// Mobile layout — uses MOBILE_SMALL_BREAKPOINT (512px), same as useIsSmallMobile()\n@media only screen and (max-width: 512px) {\n\t.profile-hover-card {\n\t\twidth: min(#{$card-width}, calc(100vw - 24px));\n\t\tmax-width: calc(100vw - 24px);\n\t\theight: auto;\n\t\tmin-height: 0;\n\t\tmax-height: min(80vh, 520px);\n\t\toverflow: auto;\n\n\t\t&__header {\n\t\t\theight: auto;\n\t\t\tmin-height: 112px;\n\n\t\t\t&__container {\n\t\t\t\talign-self: flex-end;\n\t\t\t\talign-items: flex-end;\n\t\t\t\tgap: 16px;\n\t\t\t\tmargin: 12px auto;\n\t\t\t\tpadding-inline: 12px;\n\n\t\t\t\t&__avatar {\n\t\t\t\t\talign-self: flex-end;\n\t\t\t\t}\n\n\t\t\t\t&__identity {\n\t\t\t\t\tgap: 6px;\n\t\t\t\t\tpadding-inline: 0;\n\t\t\t\t\t// Stack from the bottom: name, then pronouns, then status\n\t\t\t\t\tjustify-content: flex-end;\n\t\t\t\t}\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tflex-direction: column;\n\t\t\t\t\talign-items: flex-start;\n\t\t\t\t\tgap: 4px;\n\n\t\t\t\t\th2 {\n\t\t\t\t\t\tfont-size: 20px;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t&__pronouns {\n\t\t\t\t\tfont-size: 16px;\n\t\t\t\t}\n\n\t\t\t\t&__pronoun-separator {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\n\t\t\t\t&__status-content {\n\t\t\t\t\tfont-size: 16px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\t\t\theight: auto;\n\t\t\tpadding-inline: 12px;\n\t\t\tpadding-block-end: 12px;\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\twidth: auto;\n\t\t\tmin-width: 0;\n\t\t\tpadding-top: 0;\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmargin: 0;\n\t\t\tpadding: 8px 4px 12px;\n\t\t}\n\n\t\t&__header,\n\t\t&__sidebar {\n\t\t\t:deep(.avatar.avatardiv) {\n\t\t\t\t.avatardiv__user-status {\n\t\t\t\t\tinset-inline-end: 0;\n\t\t\t\t\tbottom: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__loading,\n\t\t&__error {\n\t\t\tmin-height: 200px;\n\t\t}\n\t}\n\n\t.user-actions {\n\t\twidth: unset;\n\t\tmax-width: none;\n\t\tmargin: 8px auto 0;\n\t\tpadding: 0 4px;\n\n\t\t&__primary {\n\t\t\twidth: 100% !important;\n\t\t\tmax-width: 220px;\n\t\t}\n\n\t\t&__other {\n\t\t\tflex-wrap: wrap;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 480px) {\n\t.profile-hover-card {\n\t\twidth: calc(100vw - 16px);\n\t\tmax-width: calc(100vw - 16px);\n\t\tborder-radius: var(--border-radius);\n\n\t\t&__header {\n\t\t\t&__container {\n\t\t\t\tgap: 8px;\n\t\t\t\tpadding-inline: 8px;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n\n<docs>\n\n### Description\n\n`NcProfileHoverCard` is the **content** of a profile popover. It is not a trigger and does not wrap `NcPopover`.\n\nWhen `open` becomes `true`, the card loads the user's profile and user status itself.\nPass `profile` to skip the profile request.\nPass `preloadedUserStatus` to skip the status request (e.g. when `NcAvatar` already loaded it).\n\n`NcAvatar` already hosts this card on hover or focus for real users (unless `disable-menu` is set)\nand can pass contacts menu actions via `actions` / `actions-loading`.\nIf `actions` is omitted, actions from the profile API are used.\n\n### With NcAvatar\n\n```vue\n\t<NcAvatar user=\"alice\" display-name=\"Alice\" />\n```\n\n### Standalone as popover content\n\nBind `open` to the popover visibility so data is loaded only while the card is shown.\n\n```vue\n<template>\n\t<NcPopover :shown.sync=\"shown\"\n\t\t:triggers=\"['hover', 'focus', 'click']\"\n\t\t:popover-triggers=\"['hover']\"\n\t\t:delay=\"{ show: 400, hide: 200 }\"\n\t\tno-focus-trap\n\t\tpopup-role=\"dialog\">\n\t\t<template #trigger>\n\t\t\t<span tabindex=\"0\">Hover me</span>\n\t\t</template>\n\t\t<NcProfileHoverCard user=\"alice\" :open=\"shown\" />\n\t</NcPopover>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tshown: false,\n\t\t}\n\t},\n}\n</script>\n```\n\n</docs>\n"],"names":["_sfc_main","ref","useIsSmallMobile","computed","getCurrentUser","generateUrl","t","getCanonicalLocale","NcActionRouter","NcActionButton","NcActionLink","watch","onMounted","axios","generateOcsUrl","logger","getCapabilities"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAAA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,CAAA,OAAA;AAAA,EACA,OAAA;AAAA,IACA,OAAA;AAAA,MACA,MAAA;AAAA,IACA;AAAA,IACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;AChBA,MAAAA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,CAAA,OAAA;AAAA,EACA,OAAA;AAAA,IACA,OAAA;AAAA,MACA,MAAA;AAAA,IACA;AAAA,IACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;AChBA,MAAAA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,CAAA,OAAA;AAAA,EACA,OAAA;AAAA,IACA,OAAA;AAAA,MACA,MAAA;AAAA,IACA;AAAA,IACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;AChBA,MAAAA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,CAAA,OAAA;AAAA,EACA,OAAA;AAAA,IACA,OAAA;AAAA,MACA,MAAA;AAAA,IACA;AAAA,IACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;AChBA,MAAAA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,CAAA,OAAA;AAAA,EACA,OAAA;AAAA,IACA,OAAA;AAAA,MACA,MAAA;AAAA,IACA;AAAA,IACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;ACpCA;AAAA;AAAA;AAAA;AAQO,MAAM,uBAAuB,KAAK,KAAK;AAO9C,MAAM,4BAAY,IAAA;AAClB,MAAM,+BAAe,IAAA;AAOd,SAAS,iBAAiB,QAAqC;AACrE,QAAM,QAAQ,MAAM,IAAI,MAAM;AAC9B,MAAI,CAAC,OAAO;AACX,WAAO;AAAA,EACR;AACA,MAAI,KAAK,SAAS,MAAM,WAAW;AAClC,UAAM,OAAO,MAAM;AACnB,WAAO;AAAA,EACR;AACA,SAAO,MAAM;AACd;AASO,SAAS,iBAAiB,QAAgB,MAAoB,QAAQ,sBAA4B;AACxG,QAAM,IAAI,QAAQ;AAAA,IACjB;AAAA,IACA,WAAW,KAAK,QAAQ;AAAA,EAAA,CACxB;AACF;AAmBA,eAAsB,mBACrB,QACA,SACA,QAAQ,sBACuB;AAC/B,QAAM,SAAS,iBAAiB,MAAM;AACtC,MAAI,QAAQ;AACX,WAAO;AAAA,EACR;AAEA,QAAM,UAAU,SAAS,IAAI,MAAM;AACnC,MAAI,SAAS;AACZ,WAAO;AAAA,EACR;AAEA,QAAM,WAAW,YAAY;AAC5B,QAAI;AACH,YAAM,OAAO,MAAM,QAAA;AACnB,UAAI,MAAM;AACT,yBAAiB,QAAQ,MAAM,KAAK;AAAA,MACrC;AACA,aAAO;AAAA,IACR,UAAA;AACC,eAAS,OAAO,MAAM;AAAA,IACvB;AAAA,EACD,GAAA;AAEA,WAAS,IAAI,QAAQ,OAAO;AAC5B,SAAO;AACR;;;;;;;;;;;;;AC0BA,UAAM,UAAUC,IAAAA,IAAI,KAAK;AACzB,UAAM,QAAQA,IAAAA,IAAI,KAAK;AACvB,UAAM,cAAcA,IAAAA,IAAyB,MAAM,OAAO;AAC1D,UAAM,aAAaA,IAAAA,IAAiB,MAAM,uBAAuB,CAAA,CAAE;AACnE,UAAM,WAAWC,wBAAAA,iBAAA;AAEjB,QAAI,MAAM,QAAQ,MAAM,SAAS;AAChC,uBAAiB,MAAM,MAAM,MAAM,OAAO;AAAA,IAC3C;AAEA,UAAM,gBAAgBC,IAAAA,SAAS,MAAM,CAAC,CAAC,MAAM,QAAQC,KAAAA,kBAAkB,QAAQ,MAAM,IAAI;AACzF,UAAM,cAAcC,OAAAA,YAAY,gBAAgB;AAEhD,UAAM,kBAAkBF,IAAAA,SAAS,MAAiC;AACjE,UAAI,MAAM,WAAW,MAAM,QAAQ,SAAS,GAAG;AAC9C,eAAO,MAAM,QAAQ,OAAO,CAAC,WAAW,OAAO,UAAU,UAAU;AAAA,MACpE;AACA,cAAQ,YAAY,OAAO,WAAW,CAAA,GACpC,OAAO,CAAC,WAAW,OAAO,UAAU,UAAU,EAC9C,IAAI,CAAC,YAAY;AAAA,QACjB,IAAI,OAAO;AAAA,QACX,OAAO,OAAO;AAAA,QACd,MAAM,OAAO;AAAA,QACb,MAAM,OAAO,UAAU;AAAA,QACvB,MAAM,OAAO;AAAA,QACb,QAAQ,OAAO,OAAO,UAAU,UAAU;AAAA,QAC1C,KAAK,OAAO,OAAO,cAAc,OAAO;AAAA,MAAA,EACvC;AAAA,IACJ,CAAC;AAKD,UAAM,iBAAiBA,IAAAA,SAAS,MAAM;AACrC,YAAM,OAAO,uBAAuB,oBAAI,MAAM;AAC9C,UAAI,CAAC,MAAM;AACV,eAAO;AAAA,MACR;AACA,aAAOG,QAAE,sBAAsB,EAAE,MAAM;AAAA,IACxC,CAAC;AAED,UAAM,gBAAgBH,IAAAA,SAAS,MAAM,gBAAgB,MAAM,CAAC,CAAC;AAC7D,UAAM,eAAeA,IAAAA,SAAS,MAAM,gBAAgB,MAAM,MAAM,CAAC,CAAC;AAElE,UAAM,2BAA2BA,IAAAA,SAAS,MAAM;AAC/C,YAAM,SAAS,cAAc;AAC7B,UAAI,CAAC,QAAQ;AACZ,eAAO,CAAA;AAAA,MACR;AACA,UAAI,OAAO,IAAI;AACd,eAAO,EAAE,IAAI,OAAO,GAAA;AAAA,MACrB;AACA,UAAI,OAAO,MAAM;AAChB,eAAO;AAAA,UACN,MAAM,OAAO;AAAA,UACb,QAAQ,OAAO,WAAW,OAAO,KAAK,WAAW,MAAM,IAAI,UAAU;AAAA,UACrE,KAAK,OAAO;AAAA,QAAA;AAAA,MAEd;AACA,aAAO,CAAA;AAAA,IACR,CAAC;AAED,UAAM,sBAAsBA,IAAAA,SAAS,MAAM;AAC1C,UAAI,cAAc,OAAO;AACxB,eAAOG,MAAAA,EAAE,iCAAiC;AAAA,MAC3C;AACA,YAAM,OAAO,YAAY,OAAO,eAAe,MAAM,QAAQ;AAC7D,aAAOA,MAAAA,EAAE,qCAAqC,EAAE,MAAM,MAAM;AAAA,IAC7D,CAAC;AAMD,UAAM,mBAAmBH,IAAAA,SAAS,OAAO;AAAA,MACxC,QAAQ,WAAW,MAAM,UAAU;AAAA,MACnC,MAAM,WAAW,MAAM,QAAQ;AAAA,MAC/B,SAAS,WAAW,MAAM,WAAW;AAAA,IAAA,EACpC;AAOF,aAAS,uBAAuB,MAA2B;AAC1D,YAAM,WAAW,YAAY,OAAO;AACpC,UAAI,UAAU;AACb,YAAI;AACH,iBAAO,IAAI,KAAK,eAAeI,KAAAA,sBAAsB;AAAA,YACpD;AAAA,YACA,MAAM;AAAA,YACN,QAAQ;AAAA,UAAA,CACR,EAAE,OAAO,IAAI;AAAA,QACf,QAAQ;AAAA,QAER;AAAA,MACD;AAEA,UAAI,OAAO,YAAY,OAAO,mBAAmB,UAAU;AAC1D,cAAM,UAAU,IAAI,KAAK,KAAK,YAAY,YAAY,MAAM,iBAAiB,GAAI;AACjF,eAAO,IAAI,KAAK,eAAeA,KAAAA,sBAAsB;AAAA,UACpD,UAAU;AAAA,UACV,MAAM;AAAA,UACN,QAAQ;AAAA,QAAA,CACR,EAAE,OAAO,OAAO;AAAA,MAClB;AAEA,aAAO;AAAA,IACR;AAOA,aAAS,UAAU,MAAe;AACjC,aAAO,CAAC,CAAC,SAAS,kBAAkB,KAAK,IAAI,KAAK,KAAK,WAAW,GAAG,KAAK,KAAK,WAAW,OAAO;AAAA,IAClG;AAOA,aAAS,qBAAqB,QAAiC;AAC9D,UAAI,OAAO,IAAI;AACd,eAAOC;AAAAA,MACR;AACA,UAAI,OAAO,WAAW,CAAC,OAAO,MAAM;AACnC,eAAOC,eAAAA;AAAAA,MACR;AACA,aAAOC;AAAAA,IACR;AAOA,aAAS,iBAAiB,QAAiC;AAC1D,UAAI,OAAO,IAAI;AACd,eAAO,EAAE,IAAI,OAAO,IAAI,iBAAiB,KAAA;AAAA,MAC1C;AACA,UAAI,OAAO,WAAW,CAAC,OAAO,MAAM;AACnC,eAAO,EAAE,iBAAiB,KAAA;AAAA,MAC3B;AACA,aAAO;AAAA,QACN,MAAM,OAAO;AAAA,QACb,QAAQ,OAAO,WAAW,OAAO,MAAM,WAAW,MAAM,IAAI,UAAU;AAAA,QACtE,KAAK,OAAO;AAAA,QACZ,iBAAiB;AAAA,MAAA;AAAA,IAEnB;AAEAC,QAAAA,MAAM,MAAM,MAAM,SAAS,CAAC,UAAU;AACrC,UAAI,OAAO;AACV,oBAAY,QAAQ;AACpB,YAAI,MAAM,MAAM;AACf,2BAAiB,MAAM,MAAM,KAAK;AAAA,QACnC;AACA,cAAM,QAAQ;AAAA,MACf;AAAA,IACD,CAAC;AAEDA,QAAAA,MAAM,MAAM,MAAM,qBAAqB,CAAC,UAAU;AACjD,UAAI,OAAO;AACV,mBAAW,QAAQ;AAAA,MACpB;AAAA,IACD,CAAC;AAEDA,cAAM,MAAM,MAAM,MAAM,MAAM;AAC7B,kBAAY,QAAQ,MAAM;AAC1B,iBAAW,QAAQ,MAAM,uBAAuB,CAAA;AAChD,YAAM,QAAQ;AACd,UAAI,MAAM,QAAQ,MAAM,SAAS;AAChC,yBAAiB,MAAM,MAAM,MAAM,OAAO;AAAA,MAC3C;AACA,UAAI,MAAM,MAAM;AACf,oBAAA;AAAA,MACD;AAAA,IACD,CAAC;AAEDA,QAAAA,MAAM,MAAM,MAAM,MAAM,CAAC,WAAW;AACnC,UAAI,QAAQ;AACX,oBAAA;AAAA,MACD;AAAA,IACD,CAAC;AAEDC,QAAAA,UAAU,MAAM;AACf,UAAI,MAAM,MAAM;AACf,oBAAA;AAAA,MACD;AAAA,IACD,CAAC;AAKD,aAAS,yBAAyB;AACjC,aAAO,MAAM,wBAAwB,QACjC,CAAC,EAAE,WAAW,MAAM,QAAQ,WAAW,MAAM,WAAW,WAAW,MAAM;AAAA,IAC9E;AAOA,mBAAe,iBAAiB,QAAgB;AAE/C,UAAI,CAAC,0BAA0B;AAC9B,mBAAW,QAAQ,MAAM,gBAAgB,MAAM;AAAA,MAChD;AAAA,IACD;AAKA,mBAAe,cAAc;AAC5B,UAAI,CAAC,MAAM,QAAQ,QAAQ,OAAO;AACjC;AAAA,MACD;AAEA,YAAM,SAAS,MAAM;AAGrB,UAAI,CAAC,YAAY,OAAO;AACvB,cAAM,SAAS,iBAAiB,MAAM;AACtC,YAAI,QAAQ;AACX,sBAAY,QAAQ;AAAA,QACrB;AAAA,MACD;AACA,UAAI,YAAY,OAAO;AACtB,cAAM,iBAAiB,MAAM;AAC7B;AAAA,MACD;AAEA,cAAQ,QAAQ;AAChB,YAAM,QAAQ;AAEd,UAAI;AACH,cAAM,CAAC,SAAS,MAAM,IAAI,MAAM,QAAQ,IAAI;AAAA,UAC3C,mBAAmB,QAAQ,YAAY;AACtC,kBAAM,EAAE,SAAS,MAAMC,uBAAM,IAAIC,OAAAA,eAAe,qBAAqB,EAAE,OAAA,CAAQ,CAAC;AAChF,mBAAO,KAAK,KAAK,QAAQ;AAAA,UAC1B,CAAC;AAAA,UACD,uBAAA,IACG,QAAQ,QAAQ,WAAW,KAAK,IAChC,gBAAgB,MAAM;AAAA,QAAA,CACzB;AACD,oBAAY,QAAQ;AACpB,mBAAW,QAAQ;AACnB,YAAI,CAAC,YAAY,OAAO;AACvB,gBAAM,QAAQ;AAAA,QACf;AAAA,MACD,SAAS,GAAG;AACXC,eAAAA,OAAO,MAAM,wCAAwC,EAAE,OAAO,GAAG,MAAM,QAAQ;AAC/E,cAAM,QAAQ;AAAA,MACf,UAAA;AACC,gBAAQ,QAAQ;AAAA,MACjB;AAAA,IACD;AAOA,mBAAe,gBAAgB,QAAsC;AACpE,UAAI;AAEH,YAAI,CAAEC,aAAAA,gBAAA,GAA2B,aAAa,WAAW,CAACZ,KAAAA,kBAAkB;AAC3E,iBAAO,CAAA;AAAA,QACR;AACA,cAAM,EAAE,SAAS,MAAMS,uBAAM,IAAIC,OAAAA,eAAe,8CAA8C,EAAE,OAAA,CAAQ,CAAC;AACzG,eAAO,KAAK,KAAK,QAAQ,CAAA;AAAA,MAC1B,SAAS,GAAG;AACXC,eAAAA,OAAO,MAAM,4CAA4C,EAAE,OAAO,GAAG,QAAQ;AAC7E,eAAO,CAAA;AAAA,MACR;AAAA,IACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[0,1,2,3,4]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
require('../assets/NcRadioGroup-
|
|
1
|
+
require('../assets/NcRadioGroup-Bq7x-xEK.css');
|
|
2
2
|
"use strict";
|
|
3
3
|
const Vue = require("vue");
|
|
4
|
-
const NcFormBox = require("./NcFormBox-
|
|
5
|
-
const NcFormGroup = require("./NcFormGroup-
|
|
4
|
+
const NcFormBox = require("./NcFormBox-C8LDr6nF.cjs");
|
|
5
|
+
const NcFormGroup = require("./NcFormGroup-dH5AXvsT.cjs");
|
|
6
6
|
const useNcRadioGroup = require("./useNcRadioGroup-rLYISWKB.cjs");
|
|
7
7
|
const _pluginVue2_normalizer = require("./_plugin-vue2_normalizer-V0q-tHlQ.cjs");
|
|
8
8
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
@@ -44,9 +44,9 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
|
|
|
44
44
|
return { __sfc: true, props, emit, buttonVariant, register, onUpdate, NcFormBox: NcFormBox.NcFormBox, NcFormGroup: NcFormGroup.NcFormGroup };
|
|
45
45
|
}
|
|
46
46
|
});
|
|
47
|
-
const radioGroup_checkboxRadioContainer = "
|
|
47
|
+
const radioGroup_checkboxRadioContainer = "_radioGroup_checkboxRadioContainer_C6Uum";
|
|
48
48
|
const style0 = {
|
|
49
|
-
"material-design-icon": "_material-design-
|
|
49
|
+
"material-design-icon": "_material-design-icon_A8sTh",
|
|
50
50
|
radioGroup_checkboxRadioContainer
|
|
51
51
|
};
|
|
52
52
|
var _sfc_render = function render() {
|
|
@@ -72,4 +72,4 @@ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
|
|
|
72
72
|
);
|
|
73
73
|
const NcRadioGroup = __component__.exports;
|
|
74
74
|
exports.NcRadioGroup = NcRadioGroup;
|
|
75
|
-
//# sourceMappingURL=NcRadioGroup-
|
|
75
|
+
//# sourceMappingURL=NcRadioGroup-C2lG1kIj.cjs.map
|