@conduction/nextcloud-vue 2.56.0-beta.36 → 2.56.0-beta.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue.js +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js +131 -3
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +54 -18
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js.map +1 -1
- package/dist/esm/components/CnAdvancedFormDialog/CnMetadataTab.vue.js +1 -1
- package/dist/esm/components/CnAdvancedFormDialog/CnMetadataTab.vue2.js +3 -2
- package/dist/esm/components/CnAdvancedFormDialog/CnMetadataTab.vue2.js.map +1 -1
- package/dist/esm/components/CnAdvancedFormDialog/CnMetadataTab.vue3.js.map +1 -1
- package/dist/esm/components/CnAdvancedFormDialog/CnPropertyValueCell.vue.js +1 -1
- package/dist/esm/components/CnAdvancedFormDialog/CnPropertyValueCell.vue2.js +5 -4
- package/dist/esm/components/CnAdvancedFormDialog/CnPropertyValueCell.vue2.js.map +1 -1
- package/dist/esm/components/CnAdvancedFormDialog/CnPropertyValueCell.vue3.js.map +1 -1
- package/dist/esm/components/CnAnalyticsReportPicker/CnAnalyticsReportPicker.vue.js +1 -1
- package/dist/esm/components/CnAnalyticsReportPicker/CnAnalyticsReportPicker.vue2.js +2 -1
- package/dist/esm/components/CnAnalyticsReportPicker/CnAnalyticsReportPicker.vue2.js.map +1 -1
- package/dist/esm/components/CnAnalyticsReportPicker/CnAnalyticsReportPicker.vue3.js.map +1 -1
- package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue.js +1 -1
- package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue2.js +2 -1
- package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue2.js.map +1 -1
- package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue3.js.map +1 -1
- package/dist/esm/components/CnBoardView/CnBoardView.vue.js +1 -1
- package/dist/esm/components/CnBoardView/CnBoardView.vue2.js +376 -6
- package/dist/esm/components/CnBoardView/CnBoardView.vue2.js.map +1 -1
- package/dist/esm/components/CnBoardView/CnBoardView.vue3.js +146 -71
- package/dist/esm/components/CnBoardView/CnBoardView.vue3.js.map +1 -1
- package/dist/esm/components/CnCalendarEventPicker/CnCalendarEventPicker.vue.js +1 -1
- package/dist/esm/components/CnCalendarEventPicker/CnCalendarEventPicker.vue2.js +2 -1
- package/dist/esm/components/CnCalendarEventPicker/CnCalendarEventPicker.vue2.js.map +1 -1
- package/dist/esm/components/CnCalendarEventPicker/CnCalendarEventPicker.vue3.js.map +1 -1
- package/dist/esm/components/CnCalendarWidget/CnCalendarWidget.vue.js +1 -1
- package/dist/esm/components/CnCalendarWidget/CnCalendarWidget.vue2.js +2 -1
- package/dist/esm/components/CnCalendarWidget/CnCalendarWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnCalendarWidget/CnCalendarWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnChartWidget/CnChartWidget.vue.js +1 -1
- package/dist/esm/components/CnChartWidget/CnChartWidget.vue2.js +6 -5
- package/dist/esm/components/CnChartWidget/CnChartWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnChartWidget/CnChartWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnCollectivePagePicker/CnCollectivePagePicker.vue.js +1 -1
- package/dist/esm/components/CnCollectivePagePicker/CnCollectivePagePicker.vue2.js +2 -1
- package/dist/esm/components/CnCollectivePagePicker/CnCollectivePagePicker.vue2.js.map +1 -1
- package/dist/esm/components/CnCollectivePagePicker/CnCollectivePagePicker.vue3.js.map +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue.js +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue2.js +2 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue2.js.map +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue3.js.map +1 -1
- package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue.js +1 -1
- package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue2.js +2 -1
- package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +47 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +22 -12
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
- package/dist/esm/components/CnDataMatrix/CnDataMatrix.vue.js +1 -1
- package/dist/esm/components/CnDataMatrix/CnDataMatrix.vue2.js +3 -1
- package/dist/esm/components/CnDataMatrix/CnDataMatrix.vue2.js.map +1 -1
- package/dist/esm/components/CnDataMatrix/CnDataMatrix.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailHeaderChips.vue2.js +2 -1
- package/dist/esm/components/CnDetailPage/CnDetailHeaderChips.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailHeaderChips.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +23 -4
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue.js +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js +3 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js.map +1 -1
- package/dist/esm/components/CnEmailPicker/CnEmailPicker.vue.js +1 -1
- package/dist/esm/components/CnEmailPicker/CnEmailPicker.vue2.js +2 -1
- package/dist/esm/components/CnEmailPicker/CnEmailPicker.vue2.js.map +1 -1
- package/dist/esm/components/CnEmailPicker/CnEmailPicker.vue3.js.map +1 -1
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue.js +1 -1
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js +18 -5
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnFederationStatus/CnFederationStatus.vue.js +1 -1
- package/dist/esm/components/CnFederationStatus/CnFederationStatus.vue2.js +3 -1
- package/dist/esm/components/CnFederationStatus/CnFederationStatus.vue2.js.map +1 -1
- package/dist/esm/components/CnFederationStatus/CnFederationStatus.vue3.js.map +1 -1
- package/dist/esm/components/CnFileManager/CnFileManager.vue.js +1 -1
- package/dist/esm/components/CnFileManager/CnFileManager.vue2.js +3 -1
- package/dist/esm/components/CnFileManager/CnFileManager.vue2.js.map +1 -1
- package/dist/esm/components/CnFileManager/CnFileManager.vue3.js.map +1 -1
- package/dist/esm/components/CnFilePreview/CnFilePreview.vue.js +1 -1
- package/dist/esm/components/CnFilePreview/CnFilePreview.vue2.js +2 -1
- package/dist/esm/components/CnFilePreview/CnFilePreview.vue2.js.map +1 -1
- package/dist/esm/components/CnFilePreview/CnFilePreview.vue3.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue.js +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js +49 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js +3 -3
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js.map +1 -1
- package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue.js +1 -1
- package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue2.js +2 -1
- package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue2.js.map +1 -1
- package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +571 -77
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +191 -82
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/useSelfFetchList.js +11 -2
- package/dist/esm/components/CnIndexPage/useSelfFetchList.js.map +1 -1
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue.js +1 -1
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue2.js +2 -1
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue2.js.map +1 -1
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectCalendar/CnObjectCalendar.vue.js +1 -1
- package/dist/esm/components/CnObjectCalendar/CnObjectCalendar.vue2.js +3 -2
- package/dist/esm/components/CnObjectCalendar/CnObjectCalendar.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectCalendar/CnObjectCalendar.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue.js +1 -1
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js +28 -0
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue3.js +82 -75
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectMetadataWidget/CnObjectMetadataWidget.vue.js +1 -1
- package/dist/esm/components/CnObjectMetadataWidget/CnObjectMetadataWidget.vue2.js +5 -4
- package/dist/esm/components/CnObjectMetadataWidget/CnObjectMetadataWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectMetadataWidget/CnObjectMetadataWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnAuditTrailTab.vue.js +1 -1
- package/dist/esm/components/CnObjectSidebar/CnAuditTrailTab.vue2.js +2 -1
- package/dist/esm/components/CnObjectSidebar/CnAuditTrailTab.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnAuditTrailTab.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFlowTasksPanel.vue.js +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFlowTasksPanel.vue2.js +2 -1
- package/dist/esm/components/CnObjectSidebar/CnFlowTasksPanel.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFlowTasksPanel.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnNotesTab.vue.js +1 -1
- package/dist/esm/components/CnObjectSidebar/CnNotesTab.vue2.js +2 -1
- package/dist/esm/components/CnObjectSidebar/CnNotesTab.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnNotesTab.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnTasksTab.vue.js +1 -1
- package/dist/esm/components/CnObjectSidebar/CnTasksTab.vue2.js +2 -1
- package/dist/esm/components/CnObjectSidebar/CnTasksTab.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnTasksTab.vue3.js.map +1 -1
- package/dist/esm/components/CnPropertySourceField/CnPropertySourceField.vue.js +1 -1
- package/dist/esm/components/CnPropertySourceField/CnPropertySourceField.vue2.js +2 -1
- package/dist/esm/components/CnPropertySourceField/CnPropertySourceField.vue2.js.map +1 -1
- package/dist/esm/components/CnPropertySourceField/CnPropertySourceField.vue3.js.map +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +70 -2
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue.js +1 -1
- package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue2.js +67 -5
- package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue2.js.map +1 -1
- package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue3.js +181 -124
- package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue3.js.map +1 -1
- package/dist/esm/components/CnRoadmapItem/CnRoadmapItem.vue.js +1 -1
- package/dist/esm/components/CnRoadmapItem/CnRoadmapItem.vue2.js +2 -1
- package/dist/esm/components/CnRoadmapItem/CnRoadmapItem.vue2.js.map +1 -1
- package/dist/esm/components/CnRoadmapItem/CnRoadmapItem.vue3.js.map +1 -1
- package/dist/esm/components/CnSchemaFormDialog/CnSchemaFormDialog.vue2.js +2 -0
- package/dist/esm/components/CnSchemaFormDialog/CnSchemaFormDialog.vue2.js.map +1 -1
- package/dist/esm/components/CnSchemaFormDialog/CnSchemaFormDialog.vue3.js +2 -2
- package/dist/esm/components/CnSchemaFormDialog/CnSchemaFormDialog.vue3.js.map +1 -1
- package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue.js +1 -1
- package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js +5 -1
- package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js.map +1 -1
- package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js.map +1 -1
- package/dist/esm/components/CnStatWidget/CnStatWidget.vue.js +1 -1
- package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js +134 -10
- package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js +6 -2
- package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnStatsBlock/CnStatsBlock.vue.js +1 -1
- package/dist/esm/components/CnStatsBlock/CnStatsBlock.vue2.js +2 -1
- package/dist/esm/components/CnStatsBlock/CnStatsBlock.vue2.js.map +1 -1
- package/dist/esm/components/CnStatsBlock/CnStatsBlock.vue3.js.map +1 -1
- package/dist/esm/components/CnSummaryAggregates/CnSummaryAggregates.vue.js +1 -1
- package/dist/esm/components/CnSummaryAggregates/CnSummaryAggregates.vue2.js +2 -1
- package/dist/esm/components/CnSummaryAggregates/CnSummaryAggregates.vue2.js.map +1 -1
- package/dist/esm/components/CnSummaryAggregates/CnSummaryAggregates.vue3.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +6 -3
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnTasksCard/CnTasksCard.vue.js +1 -1
- package/dist/esm/components/CnTasksCard/CnTasksCard.vue2.js +2 -1
- package/dist/esm/components/CnTasksCard/CnTasksCard.vue2.js.map +1 -1
- package/dist/esm/components/CnTasksCard/CnTasksCard.vue3.js.map +1 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue.js +1 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue2.js +2 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue.js +1 -1
- package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue2.js +140 -7
- package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnTranslatedBadge/CnTranslatedBadge.vue.js +1 -1
- package/dist/esm/components/CnTranslatedBadge/CnTranslatedBadge.vue2.js +2 -1
- package/dist/esm/components/CnTranslatedBadge/CnTranslatedBadge.vue2.js.map +1 -1
- package/dist/esm/components/CnVersionHistory/CnVersionHistory.vue.js +1 -1
- package/dist/esm/components/CnVersionHistory/CnVersionHistory.vue2.js +2 -1
- package/dist/esm/components/CnVersionHistory/CnVersionHistory.vue2.js.map +1 -1
- package/dist/esm/components/CnVersionHistory/CnVersionHistory.vue3.js.map +1 -1
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue.js +1 -1
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js +37 -9
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js.map +1 -1
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js +6 -5
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js.map +1 -1
- package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue2.js +53 -1
- package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue2.js.map +1 -1
- package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue3.js +3 -2
- package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue3.js.map +1 -1
- package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue.js +1 -1
- package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js +135 -0
- package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js.map +1 -1
- package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue3.js.map +1 -1
- package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue.js +1 -1
- package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js +19 -0
- package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js.map +1 -1
- package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js +37 -19
- package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js.map +1 -1
- package/dist/esm/composables/useListView.js +21 -0
- package/dist/esm/composables/useListView.js.map +1 -1
- package/dist/esm/dialogs/CnNoteHistoryDialog.vue.js +1 -1
- package/dist/esm/dialogs/CnNoteHistoryDialog.vue2.js +2 -1
- package/dist/esm/dialogs/CnNoteHistoryDialog.vue2.js.map +1 -1
- package/dist/esm/dialogs/CnNoteHistoryDialog.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/activity/CnActivityCard.vue.js +1 -1
- package/dist/esm/integrations/builtin/activity/CnActivityCard.vue2.js +3 -2
- package/dist/esm/integrations/builtin/activity/CnActivityCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/activity/CnActivityCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/activity/CnActivityTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/activity/CnActivityTab.vue2.js +4 -3
- package/dist/esm/integrations/builtin/activity/CnActivityTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/activity/CnActivityTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/analytics/CnAnalyticsTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/analytics/CnAnalyticsTab.vue2.js +3 -2
- package/dist/esm/integrations/builtin/analytics/CnAnalyticsTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/analytics/CnAnalyticsTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarCard.vue.js +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarCard.vue2.js +2 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarTab.vue2.js +6 -5
- package/dist/esm/integrations/builtin/calendar/CnCalendarTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/contactmoment/CnContactmomentCard.vue.js +1 -1
- package/dist/esm/integrations/builtin/contactmoment/CnContactmomentCard.vue2.js +2 -1
- package/dist/esm/integrations/builtin/contactmoment/CnContactmomentCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/contactmoment/CnContactmomentCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/cospend/CnCospendTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/cospend/CnCospendTab.vue2.js +2 -1
- package/dist/esm/integrations/builtin/cospend/CnCospendTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/cospend/CnCospendTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue2.js +2 -1
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/email/CnEmailCard.vue.js +1 -1
- package/dist/esm/integrations/builtin/email/CnEmailCard.vue2.js +2 -1
- package/dist/esm/integrations/builtin/email/CnEmailCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/email/CnEmailCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionCard.vue.js +1 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionCard.vue2.js +2 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionTab.vue2.js +2 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/photos/CnPhotosTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/photos/CnPhotosTab.vue2.js +2 -1
- package/dist/esm/integrations/builtin/photos/CnPhotosTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/photos/CnPhotosTab.vue3.js.map +1 -1
- package/dist/esm/l10n/en.json.js +57 -2
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +78 -2
- package/dist/esm/l10n/nl.json.js.map +1 -1
- package/dist/esm/library-style.js +1 -1
- package/dist/esm/nextcloud-vue.css +1541 -1166
- package/dist/esm/store/useObjectStore.js +23 -4
- package/dist/esm/store/useObjectStore.js.map +1 -1
- package/dist/esm/utils/boardColumns.js +58 -2
- package/dist/esm/utils/boardColumns.js.map +1 -1
- package/dist/esm/utils/boardReferenceColumns.js +330 -0
- package/dist/esm/utils/boardReferenceColumns.js.map +1 -0
- package/dist/esm/utils/buildManifest.js +4 -1
- package/dist/esm/utils/buildManifest.js.map +1 -1
- package/dist/esm/utils/schema.js +5 -4
- package/dist/esm/utils/schema.js.map +1 -1
- package/dist/esm/utils/userLocale.js +30 -0
- package/dist/esm/utils/userLocale.js.map +1 -0
- package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
- package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
- package/dist/esm/utils/widgetDispatch.js +8 -2
- package/dist/esm/utils/widgetDispatch.js.map +1 -1
- package/dist/nextcloud-vue.cjs.js +30291 -27618
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +1541 -1166
- package/l10n/en.json +57 -2
- package/l10n/nl.json +78 -2
- package/package.json +1 -1
- package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +160 -8
- package/src/components/CnAdvancedFormDialog/CnMetadataTab.vue +3 -2
- package/src/components/CnAdvancedFormDialog/CnPropertyValueCell.vue +5 -4
- package/src/components/CnAnalyticsReportPicker/CnAnalyticsReportPicker.vue +2 -1
- package/src/components/CnAuditTrailCard/CnAuditTrailCard.vue +2 -1
- package/src/components/CnBoardView/CnBoardView.vue +433 -12
- package/src/components/CnCalendarEventPicker/CnCalendarEventPicker.vue +2 -1
- package/src/components/CnCalendarWidget/CnCalendarWidget.vue +2 -1
- package/src/components/CnChartWidget/CnChartWidget.vue +6 -5
- package/src/components/CnCollectivePagePicker/CnCollectivePagePicker.vue +2 -1
- package/src/components/CnConversationThread/CnConversationThread.vue +2 -1
- package/src/components/CnCountdownWidget/CnCountdownWidget.vue +2 -1
- package/src/components/CnDashboardPage/CnDashboardPage.vue +59 -3
- package/src/components/CnDataMatrix/CnDataMatrix.vue +2 -1
- package/src/components/CnDetailPage/CnDetailHeaderChips.vue +2 -1
- package/src/components/CnDetailPage/CnDetailPage.md +1 -1
- package/src/components/CnDetailPage/CnDetailPage.vue +23 -4
- package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +3 -1
- package/src/components/CnEmailPicker/CnEmailPicker.vue +2 -1
- package/src/components/CnFactsWidget/CnFactsWidget.vue +18 -5
- package/src/components/CnFederationStatus/CnFederationStatus.vue +3 -1
- package/src/components/CnFileManager/CnFileManager.vue +2 -1
- package/src/components/CnFilePreview/CnFilePreview.vue +2 -1
- package/src/components/CnFilesBrowser/CnFilesBrowser.vue +54 -6
- package/src/components/CnFollowToggle/CnFollowToggle.vue +2 -1
- package/src/components/CnIndexPage/CnIndexPage.vue +610 -25
- package/src/components/CnIndexPage/useSelfFetchList.js +10 -1
- package/src/components/CnNotesCard/CnNotesCard.vue +2 -1
- package/src/components/CnObjectCalendar/CnObjectCalendar.vue +3 -2
- package/src/components/CnObjectDataWidget/CnObjectDataWidget.vue +36 -0
- package/src/components/CnObjectMetadataWidget/CnObjectMetadataWidget.vue +5 -4
- package/src/components/CnObjectSidebar/CnAuditTrailTab.vue +2 -1
- package/src/components/CnObjectSidebar/CnFlowTasksPanel.vue +2 -1
- package/src/components/CnObjectSidebar/CnNotesTab.vue +2 -1
- package/src/components/CnObjectSidebar/CnTasksTab.vue +2 -1
- package/src/components/CnPropertySourceField/CnPropertySourceField.vue +2 -1
- package/src/components/CnRecordListWidget/CnRecordListWidget.vue +70 -2
- package/src/components/CnRegisterMapping/CnRegisterMapping.md +5 -0
- package/src/components/CnRegisterMapping/CnRegisterMapping.vue +231 -96
- package/src/components/CnRoadmapItem/CnRoadmapItem.vue +2 -1
- package/src/components/CnSchemaFormDialog/CnSchemaFormDialog.vue +4 -2
- package/src/components/CnSettingsPage/CnSettingsPage.vue +5 -1
- package/src/components/CnStatWidget/CnStatWidget.vue +136 -11
- package/src/components/CnStatsBlock/CnStatsBlock.vue +2 -1
- package/src/components/CnSummaryAggregates/CnSummaryAggregates.vue +2 -1
- package/src/components/CnTabsWidget/CnTabsWidget.vue +6 -3
- package/src/components/CnTasksCard/CnTasksCard.vue +2 -1
- package/src/components/CnTimelineWidget/CnTimelineWidget.vue +2 -1
- package/src/components/CnToggleTableWidget/CnToggleTableWidget.vue +140 -7
- package/src/components/CnTranslatedBadge/CnTranslatedBadge.vue +2 -1
- package/src/components/CnVersionHistory/CnVersionHistory.vue +2 -1
- package/src/components/CnVersionInfoCard/CnVersionInfoCard.md +2 -1
- package/src/components/CnVersionInfoCard/CnVersionInfoCard.vue +42 -13
- package/src/components/CnWidgetCardGrid/CnWidgetCardGrid.vue +55 -2
- package/src/components/CnWidgetObjectTable/CnWidgetObjectTable.vue +135 -0
- package/src/components/CnWidgetWrapper/CnWidgetWrapper.md +10 -0
- package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +44 -1
- package/src/composables/useListView.js +21 -0
- package/src/css/board.css +105 -4
- package/src/css/dialog.css +4 -2
- package/src/css/index-page.css +49 -0
- package/src/css/look-board.css +77 -7
- package/src/dialogs/CnNoteHistoryDialog.vue +2 -1
- package/src/integrations/builtin/activity/CnActivityCard.vue +3 -2
- package/src/integrations/builtin/activity/CnActivityTab.vue +4 -3
- package/src/integrations/builtin/analytics/CnAnalyticsTab.vue +3 -2
- package/src/integrations/builtin/calendar/CnCalendarCard.vue +2 -1
- package/src/integrations/builtin/calendar/CnCalendarTab.vue +6 -5
- package/src/integrations/builtin/contactmoment/CnContactmomentCard.vue +2 -1
- package/src/integrations/builtin/cospend/CnCospendTab.vue +2 -1
- package/src/integrations/builtin/deck/CnDeckTab.vue +2 -1
- package/src/integrations/builtin/email/CnEmailCard.vue +2 -1
- package/src/integrations/builtin/field-inspection/CnFieldInspectionCard.vue +2 -1
- package/src/integrations/builtin/field-inspection/CnFieldInspectionTab.vue +2 -1
- package/src/integrations/builtin/photos/CnPhotosTab.vue +2 -1
- package/src/schemas/app-manifest-v2.schema.json +116 -5
- package/src/store/useObjectStore.js +23 -4
- package/src/utils/boardColumns.js +57 -1
- package/src/utils/boardReferenceColumns.js +326 -0
- package/src/utils/buildManifest.js +4 -1
- package/src/utils/schema.js +5 -4
- package/src/utils/userLocale.js +26 -0
- package/src/utils/validateManifestV2.compiled.js +3 -3
- package/src/utils/widgetDispatch.js +8 -2
|
@@ -2,13 +2,14 @@ import { translate } from '@nextcloud/l10n';
|
|
|
2
2
|
import __sfc_main from '../CnStatusBadge/CnStatusBadge.vue.js';
|
|
3
3
|
import { normalizeLook } from '../../composables/useLook.js';
|
|
4
4
|
import { isBadgeVariant } from '../../utils/badgeVariants.js';
|
|
5
|
-
import { buildBoardColumns, resolveStageColor } from '../../utils/boardColumns.js';
|
|
5
|
+
import { buildBoardColumns, normalizeAllowed, resolveStageColor } from '../../utils/boardColumns.js';
|
|
6
6
|
import { buildSwimlanes } from '../../utils/boardSwimlanes.js';
|
|
7
7
|
import { runBoardDrop, DROP_OUTCOMES } from '../../utils/boardTransition.js';
|
|
8
8
|
import { dueStateForRow } from '../../utils/dueRule.js';
|
|
9
9
|
import { formatMetricValue } from '../../utils/formatMetric.js';
|
|
10
10
|
import { readPath } from '../../utils/readPath.js';
|
|
11
11
|
import { preventMiddleClickAutoscroll, isRowMiddleClick } from '../../utils/rowAuxClick.js';
|
|
12
|
+
import { userLocale } from '../../utils/userLocale.js';
|
|
12
13
|
import { daysUntil } from '../../utils/dateVariant.js';
|
|
13
14
|
|
|
14
15
|
/**
|
|
@@ -46,6 +47,12 @@ var script = {
|
|
|
46
47
|
* draws the screens' board anatomy (screens-kanban-parity).
|
|
47
48
|
*/
|
|
48
49
|
cnLook: { default: 'nextcloud' },
|
|
50
|
+
/**
|
|
51
|
+
* The app's cell-formatter registry, provided by CnAppRoot. A card
|
|
52
|
+
* role named in `cardRoles.formatters` shows its value through it, as
|
|
53
|
+
* the table's cells do (screens-board-reference-columns).
|
|
54
|
+
*/
|
|
55
|
+
cnFormatters: { default: () => ({}) },
|
|
49
56
|
},
|
|
50
57
|
|
|
51
58
|
props: {
|
|
@@ -186,9 +193,78 @@ var script = {
|
|
|
186
193
|
type: Number,
|
|
187
194
|
default: 0,
|
|
188
195
|
},
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* The column a row belongs in, for a status whose raw value is not
|
|
199
|
+
* the column key: a reference whose rows are merged by name
|
|
200
|
+
* (screens-board-reference-columns). Absent, the row's `statusField`
|
|
201
|
+
* value is the key.
|
|
202
|
+
*
|
|
203
|
+
* @type {((row: object) => string)|null}
|
|
204
|
+
* @spec openspec/changes/screens-board-reference-columns/specs/board-view/spec.md#requirement-columns-can-be-the-rows-a-field-references
|
|
205
|
+
*/
|
|
206
|
+
columnKeyOf: {
|
|
207
|
+
type: Function,
|
|
208
|
+
default: null,
|
|
209
|
+
},
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Wrap the columns onto more rows, as many to a row as fit at 240px,
|
|
213
|
+
* instead of one row that scrolls sideways (manifest
|
|
214
|
+
* `config.board.wrap`). For a board with more stages than fit.
|
|
215
|
+
*
|
|
216
|
+
* @spec openspec/changes/screens-board-reference-columns/specs/board-view/spec.md#requirement-a-wide-board-can-wrap-its-columns
|
|
217
|
+
*/
|
|
218
|
+
wrapColumns: {
|
|
219
|
+
type: Boolean,
|
|
220
|
+
default: false,
|
|
221
|
+
},
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Offer a checkbox on every card, so cards can be selected for the
|
|
225
|
+
* list's bulk actions (the same selection the table holds).
|
|
226
|
+
*
|
|
227
|
+
* @spec openspec/changes/screens-board-reference-columns/specs/board-view/spec.md#requirement-cards-can-be-selected-for-bulk-actions
|
|
228
|
+
*/
|
|
229
|
+
selectable: {
|
|
230
|
+
type: Boolean,
|
|
231
|
+
default: false,
|
|
232
|
+
},
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* The selected cards, by row key.
|
|
236
|
+
*
|
|
237
|
+
* @type {Array<string|number>}
|
|
238
|
+
*/
|
|
239
|
+
selectedIds: {
|
|
240
|
+
type: Array,
|
|
241
|
+
default: () => [],
|
|
242
|
+
},
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* The columns one card may move to, asked when its menu opens or its
|
|
246
|
+
* drag starts: `(card) => Promise<Array<string>|null>`, column keys,
|
|
247
|
+
* `null` for every column. A column the card cannot reach is greyed
|
|
248
|
+
* during the drag and marked "not allowed" in the menu, and a drop on
|
|
249
|
+
* it is refused without asking the host. Absent, every column is
|
|
250
|
+
* offered and the host's move decides.
|
|
251
|
+
*
|
|
252
|
+
* An entry may also be `{ key, allowed, reason }`. With `allowed:
|
|
253
|
+
* false` the column is blocked: the menu shows the reason under its
|
|
254
|
+
* name, the column shows it under its header during a drag, and a
|
|
255
|
+
* drop there is refused with it.
|
|
256
|
+
*
|
|
257
|
+
* @type {((card: object) => Promise<Array<string|{key: string, allowed?: boolean, reason?: string}>|null>)|null}
|
|
258
|
+
* @spec openspec/changes/board-move-block-reasons/specs/board-view/spec.md#requirement-a-move-target-can-be-blocked-with-a-reason
|
|
259
|
+
* @spec openspec/changes/screens-board-reference-columns/specs/board-view/spec.md#requirement-the-board-shows-where-a-card-can-go
|
|
260
|
+
*/
|
|
261
|
+
allowedMoves: {
|
|
262
|
+
type: Function,
|
|
263
|
+
default: null,
|
|
264
|
+
},
|
|
189
265
|
},
|
|
190
266
|
|
|
191
|
-
emits: ['card-click', 'card-aux-click', 'moved', 'refused', 'stale', 'load-more'],
|
|
267
|
+
emits: ['card-click', 'card-aux-click', 'moved', 'refused', 'stale', 'load-more', 'select'],
|
|
192
268
|
|
|
193
269
|
data() {
|
|
194
270
|
return {
|
|
@@ -204,6 +280,10 @@ var script = {
|
|
|
204
280
|
expanded: [],
|
|
205
281
|
/** The card whose menu is open (board look), by card key. */
|
|
206
282
|
openMenuKey: null,
|
|
283
|
+
/** Where each card may move (`allowedMoves`), as `{ keys, reasons }` by card key; null = everywhere, absent = not asked yet. */
|
|
284
|
+
allowedByCard: {},
|
|
285
|
+
/** Where the dragged card may move, as `{ keys, reasons }`, or null for everywhere. */
|
|
286
|
+
dragAllowed: null,
|
|
207
287
|
}
|
|
208
288
|
},
|
|
209
289
|
|
|
@@ -221,6 +301,7 @@ var script = {
|
|
|
221
301
|
statusField: this.statusField,
|
|
222
302
|
offBoardLabel: translate('nextcloud-vue', 'Elsewhere'),
|
|
223
303
|
colorField: this.colorField,
|
|
304
|
+
keyOf: this.columnKeyOf,
|
|
224
305
|
})
|
|
225
306
|
},
|
|
226
307
|
|
|
@@ -248,9 +329,35 @@ var script = {
|
|
|
248
329
|
due: (given && given.due) || '',
|
|
249
330
|
owner: (given && given.owner) || '',
|
|
250
331
|
pillColors: (given && given.pillColors) || {},
|
|
332
|
+
formatters: (given && given.formatters && typeof given.formatters === 'object') ? given.formatters : {},
|
|
251
333
|
}
|
|
252
334
|
},
|
|
253
335
|
|
|
336
|
+
/** @return {string} The note on a menu target the card cannot reach. */
|
|
337
|
+
notAllowedLabel() {
|
|
338
|
+
return translate('nextcloud-vue', 'not allowed')
|
|
339
|
+
},
|
|
340
|
+
|
|
341
|
+
/** @return {string} The note on a menu target that is full. */
|
|
342
|
+
fullLabel() {
|
|
343
|
+
return translate('nextcloud-vue', 'full')
|
|
344
|
+
},
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Every column's total over all lanes, by key: what a limit is
|
|
348
|
+
* measured against, since a swimlane holds only part of a column.
|
|
349
|
+
*
|
|
350
|
+
* @return {Map<string, number>} The totals.
|
|
351
|
+
*/
|
|
352
|
+
columnTotals() {
|
|
353
|
+
return new Map(this.board.columns.map((column) => [String(column.key), column.count]))
|
|
354
|
+
},
|
|
355
|
+
|
|
356
|
+
/** @return {Array<string>} The selected row keys as strings. */
|
|
357
|
+
selectedKeys() {
|
|
358
|
+
return (Array.isArray(this.selectedIds) ? this.selectedIds : []).map(String)
|
|
359
|
+
},
|
|
360
|
+
|
|
254
361
|
/** @return {string} The Open in new tab menu item. */
|
|
255
362
|
openInNewTabLabel() {
|
|
256
363
|
return translate('nextcloud-vue', 'Open in new tab')
|
|
@@ -309,6 +416,206 @@ var script = {
|
|
|
309
416
|
|
|
310
417
|
preventMiddleClickAutoscroll,
|
|
311
418
|
|
|
419
|
+
/**
|
|
420
|
+
* Whether a card is selected.
|
|
421
|
+
*
|
|
422
|
+
* @param {object} card The card.
|
|
423
|
+
* @return {boolean} True when selected.
|
|
424
|
+
*/
|
|
425
|
+
isSelected(card) {
|
|
426
|
+
return this.selectedKeys.includes(this.cardKey(card))
|
|
427
|
+
},
|
|
428
|
+
|
|
429
|
+
/**
|
|
430
|
+
* The checkbox's accessible name.
|
|
431
|
+
*
|
|
432
|
+
* @param {object} card The card.
|
|
433
|
+
* @return {string} "Select <name>".
|
|
434
|
+
*/
|
|
435
|
+
selectLabel(card) {
|
|
436
|
+
const name = this.roleText(card, this.roles.title) || this.cardKey(card);
|
|
437
|
+
return translate('nextcloud-vue', 'Select {name}', { name })
|
|
438
|
+
},
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Select a card, or unselect it.
|
|
442
|
+
*
|
|
443
|
+
* @param {object} card The card.
|
|
444
|
+
* @return {void}
|
|
445
|
+
* @spec openspec/changes/screens-board-reference-columns/specs/board-view/spec.md#requirement-cards-can-be-selected-for-bulk-actions
|
|
446
|
+
*/
|
|
447
|
+
toggleSelected(card) {
|
|
448
|
+
const key = this.cardKey(card);
|
|
449
|
+
const next = this.isSelected(card)
|
|
450
|
+
? this.selectedIds.filter((id) => String(id) !== key)
|
|
451
|
+
: [...this.selectedIds, card?.[this.rowKey]];
|
|
452
|
+
/**
|
|
453
|
+
* @event select Emitted when a card's checkbox changes. Payload: the selected row keys.
|
|
454
|
+
*/
|
|
455
|
+
this.$emit('select', next);
|
|
456
|
+
},
|
|
457
|
+
|
|
458
|
+
/**
|
|
459
|
+
* Ask the host where one card may go (`allowedMoves`), once per card.
|
|
460
|
+
*
|
|
461
|
+
* @param {object} card The card.
|
|
462
|
+
* @return {Promise<{keys: Array<string>, reasons: object}|null>} Where it may go, or null for everywhere.
|
|
463
|
+
* @spec openspec/changes/screens-board-reference-columns/specs/board-view/spec.md#requirement-the-board-shows-where-a-card-can-go
|
|
464
|
+
*/
|
|
465
|
+
async loadAllowed(card) {
|
|
466
|
+
if (typeof this.allowedMoves !== 'function') {
|
|
467
|
+
return null
|
|
468
|
+
}
|
|
469
|
+
const key = this.cardKey(card);
|
|
470
|
+
if (Object.hasOwn(this.allowedByCard, key)) {
|
|
471
|
+
return this.allowedByCard[key]
|
|
472
|
+
}
|
|
473
|
+
let allowed;
|
|
474
|
+
try {
|
|
475
|
+
allowed = normalizeAllowed(await this.allowedMoves(card));
|
|
476
|
+
} catch {
|
|
477
|
+
// Unknown is not "nowhere": the host's move stays the authority.
|
|
478
|
+
allowed = null;
|
|
479
|
+
}
|
|
480
|
+
this.allowedByCard = { ...this.allowedByCard, [key]: allowed };
|
|
481
|
+
return allowed
|
|
482
|
+
},
|
|
483
|
+
|
|
484
|
+
/**
|
|
485
|
+
* Whether a card may move to a column, as far as the board knows.
|
|
486
|
+
*
|
|
487
|
+
* @param {object} card The card.
|
|
488
|
+
* @param {object} target The column.
|
|
489
|
+
* @return {boolean} False only when the host said it cannot.
|
|
490
|
+
*/
|
|
491
|
+
isMoveAllowed(card, target) {
|
|
492
|
+
const allowed = this.allowedByCard[this.cardKey(card)];
|
|
493
|
+
return !allowed || allowed.keys.includes(String(target.key))
|
|
494
|
+
},
|
|
495
|
+
|
|
496
|
+
/**
|
|
497
|
+
* Why the host blocked a card's move to a column, when it said.
|
|
498
|
+
*
|
|
499
|
+
* @param {object} card The card.
|
|
500
|
+
* @param {object} target The column.
|
|
501
|
+
* @return {string} The reason, '' when the move is allowed or no reason was given.
|
|
502
|
+
* @spec openspec/changes/board-move-block-reasons/specs/board-view/spec.md#requirement-a-move-target-can-be-blocked-with-a-reason
|
|
503
|
+
*/
|
|
504
|
+
blockReason(card, target) {
|
|
505
|
+
const allowed = this.allowedByCard[this.cardKey(card)];
|
|
506
|
+
if (!allowed || this.isMoveAllowed(card, target)) {
|
|
507
|
+
return ''
|
|
508
|
+
}
|
|
509
|
+
return allowed.reasons[String(target.key)] || ''
|
|
510
|
+
},
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* The note beside a menu target the card cannot move to.
|
|
514
|
+
*
|
|
515
|
+
* @param {object} card The card.
|
|
516
|
+
* @param {object} target The column.
|
|
517
|
+
* @return {string} "full" or "not allowed"; '' when a reason is shown instead.
|
|
518
|
+
*/
|
|
519
|
+
blockedNote(card, target) {
|
|
520
|
+
if (this.blockReason(card, target) !== '') {
|
|
521
|
+
return ''
|
|
522
|
+
}
|
|
523
|
+
return this.isMoveAllowed(card, target) && this.isFull(target) ? this.fullLabel : this.notAllowedLabel
|
|
524
|
+
},
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* Why the dragged card cannot land on a column, shown under its header.
|
|
528
|
+
*
|
|
529
|
+
* @param {object} column The column.
|
|
530
|
+
* @return {string} The host's reason while a drag is on, else ''.
|
|
531
|
+
* @spec openspec/changes/board-move-block-reasons/specs/board-view/spec.md#requirement-a-move-target-can-be-blocked-with-a-reason
|
|
532
|
+
*/
|
|
533
|
+
dragReason(column) {
|
|
534
|
+
if (this.dragging === null || !this.dragAllowed || column.key === this.dragging.fromKey) {
|
|
535
|
+
return ''
|
|
536
|
+
}
|
|
537
|
+
const key = String(column.key);
|
|
538
|
+
return this.dragAllowed.keys.includes(key) ? '' : (this.dragAllowed.reasons[key] || '')
|
|
539
|
+
},
|
|
540
|
+
|
|
541
|
+
/**
|
|
542
|
+
* A column's limit.
|
|
543
|
+
*
|
|
544
|
+
* @param {object} column The column.
|
|
545
|
+
* @return {number|null} The limit, or null when it has none.
|
|
546
|
+
* @spec openspec/changes/board-column-capacity/specs/board-view/spec.md#requirement-a-column-can-carry-a-capacity
|
|
547
|
+
*/
|
|
548
|
+
capacityOf(column) {
|
|
549
|
+
const capacity = Number(column?.capacity);
|
|
550
|
+
return Number.isFinite(capacity) && capacity > 0 ? capacity : null
|
|
551
|
+
},
|
|
552
|
+
|
|
553
|
+
/**
|
|
554
|
+
* Whether a column holds as many cards as its limit, or more.
|
|
555
|
+
*
|
|
556
|
+
* @param {object} column The column.
|
|
557
|
+
* @return {boolean} True when full; false without a limit.
|
|
558
|
+
* @spec openspec/changes/board-column-capacity/specs/board-view/spec.md#requirement-a-column-can-carry-a-capacity
|
|
559
|
+
*/
|
|
560
|
+
isFull(column) {
|
|
561
|
+
const capacity = this.capacityOf(column);
|
|
562
|
+
return capacity !== null && (this.columnTotals.get(String(column.key)) ?? column.count) >= capacity
|
|
563
|
+
},
|
|
564
|
+
|
|
565
|
+
/**
|
|
566
|
+
* "count / capacity" for a column with a limit.
|
|
567
|
+
*
|
|
568
|
+
* @param {object} column The column.
|
|
569
|
+
* @return {string} The text.
|
|
570
|
+
*/
|
|
571
|
+
capacityText(column) {
|
|
572
|
+
return translate('nextcloud-vue', '{count} / {capacity}', {
|
|
573
|
+
count: this.columnTotals.get(String(column.key)) ?? column.count,
|
|
574
|
+
capacity: this.capacityOf(column),
|
|
575
|
+
})
|
|
576
|
+
},
|
|
577
|
+
|
|
578
|
+
/**
|
|
579
|
+
* Whether a card may move to a column: the host allows it and the
|
|
580
|
+
* column is not full.
|
|
581
|
+
*
|
|
582
|
+
* @param {object} card The card.
|
|
583
|
+
* @param {object} target The column.
|
|
584
|
+
* @return {boolean} True when the move may be asked for.
|
|
585
|
+
* @spec openspec/changes/board-column-capacity/specs/board-view/spec.md#requirement-a-drop-into-a-full-column-is-refused
|
|
586
|
+
*/
|
|
587
|
+
canMoveTo(card, target) {
|
|
588
|
+
return this.isMoveAllowed(card, target) && !this.isFull(target)
|
|
589
|
+
},
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* The sentence a drop into a full column is refused with.
|
|
593
|
+
*
|
|
594
|
+
* @param {object} column The column.
|
|
595
|
+
* @return {string} The sentence.
|
|
596
|
+
*/
|
|
597
|
+
fullRefusal(column) {
|
|
598
|
+
return translate('nextcloud-vue', '{column} is full: {count} of {capacity}.', {
|
|
599
|
+
column: column.label,
|
|
600
|
+
count: this.columnTotals.get(String(column.key)) ?? column.count,
|
|
601
|
+
capacity: this.capacityOf(column),
|
|
602
|
+
})
|
|
603
|
+
},
|
|
604
|
+
|
|
605
|
+
/**
|
|
606
|
+
* Whether a column is out of reach for the card being dragged.
|
|
607
|
+
*
|
|
608
|
+
* @param {object} column The column.
|
|
609
|
+
* @return {boolean} True while a drag is on and the card cannot go there.
|
|
610
|
+
*/
|
|
611
|
+
isUnreachable(column) {
|
|
612
|
+
if (this.dragging === null || column.key === this.dragging.fromKey) {
|
|
613
|
+
return false
|
|
614
|
+
}
|
|
615
|
+
return this.isFull(column)
|
|
616
|
+
|| (this.dragAllowed !== null && !this.dragAllowed.keys.includes(String(column.key)))
|
|
617
|
+
},
|
|
618
|
+
|
|
312
619
|
/**
|
|
313
620
|
* A card's due state under `dueRule`.
|
|
314
621
|
*
|
|
@@ -350,11 +657,35 @@ var script = {
|
|
|
350
657
|
const fields = Array.isArray(role) ? role : [role];
|
|
351
658
|
return fields
|
|
352
659
|
.filter((field) => typeof field === 'string' && field !== '')
|
|
353
|
-
.map((field) => this.
|
|
660
|
+
.map((field) => this.fieldText(card, field))
|
|
354
661
|
.filter((value) => value !== '')
|
|
355
662
|
.join(' \u00b7 ')
|
|
356
663
|
},
|
|
357
664
|
|
|
665
|
+
/**
|
|
666
|
+
* One card field as text: through the formatter `cardRoles.formatters`
|
|
667
|
+
* names for it, else the value itself.
|
|
668
|
+
*
|
|
669
|
+
* @param {object} card The card's row.
|
|
670
|
+
* @param {string} field The dot-path.
|
|
671
|
+
* @return {string} The text.
|
|
672
|
+
* @spec openspec/changes/screens-board-reference-columns/specs/board-view/spec.md#requirement-a-card-field-can-show-through-a-formatter
|
|
673
|
+
*/
|
|
674
|
+
fieldText(card, field) {
|
|
675
|
+
const raw = readPath(card, field);
|
|
676
|
+
const id = this.roles.formatters[field];
|
|
677
|
+
const fn = id && this.cnFormatters ? this.cnFormatters[id] : null;
|
|
678
|
+
if (typeof fn === 'function') {
|
|
679
|
+
try {
|
|
680
|
+
const out = fn(raw, card, null);
|
|
681
|
+
return out === null || out === undefined ? '' : String(out).trim()
|
|
682
|
+
} catch {
|
|
683
|
+
return this.textOf(raw)
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
return this.textOf(raw)
|
|
687
|
+
},
|
|
688
|
+
|
|
358
689
|
/**
|
|
359
690
|
* A value as text: a string or number as is, an object by its label.
|
|
360
691
|
*
|
|
@@ -379,7 +710,7 @@ var script = {
|
|
|
379
710
|
* @return {string} A CnStatusBadge variant.
|
|
380
711
|
*/
|
|
381
712
|
pillVariant(card) {
|
|
382
|
-
const raw = this.
|
|
713
|
+
const raw = this.fieldText(card, this.roles.pill);
|
|
383
714
|
const variant = this.roles.pillColors[raw] ?? this.roles.pillColors[raw.toLowerCase()];
|
|
384
715
|
return isBadgeVariant(variant) ? variant : 'default'
|
|
385
716
|
},
|
|
@@ -406,7 +737,7 @@ var script = {
|
|
|
406
737
|
const date = new Date(value);
|
|
407
738
|
const shown = Number.isNaN(date.getTime())
|
|
408
739
|
? String(value)
|
|
409
|
-
: date.toLocaleDateString(
|
|
740
|
+
: date.toLocaleDateString(userLocale(), { day: 'numeric', month: 'short' });
|
|
410
741
|
return days < 0
|
|
411
742
|
? translate('nextcloud-vue', 'Overdue {date}', { date: shown })
|
|
412
743
|
: translate('nextcloud-vue', 'Due {date}', { date: shown })
|
|
@@ -419,7 +750,7 @@ var script = {
|
|
|
419
750
|
* @return {string} The name, '' when there is none.
|
|
420
751
|
*/
|
|
421
752
|
ownerName(card) {
|
|
422
|
-
return this.roles.owner === '' ? '' : this.
|
|
753
|
+
return this.roles.owner === '' ? '' : this.fieldText(card, this.roles.owner)
|
|
423
754
|
},
|
|
424
755
|
|
|
425
756
|
/**
|
|
@@ -571,6 +902,7 @@ var script = {
|
|
|
571
902
|
const key = this.cardKey(card);
|
|
572
903
|
this.openMenuKey = this.openMenuKey === key ? null : key;
|
|
573
904
|
if (this.openMenuKey !== null) {
|
|
905
|
+
this.loadAllowed(card);
|
|
574
906
|
this.focusMenuItem(card, 0);
|
|
575
907
|
}
|
|
576
908
|
},
|
|
@@ -659,6 +991,7 @@ var script = {
|
|
|
659
991
|
event.preventDefault();
|
|
660
992
|
if (!this.isMenuOpen(card)) {
|
|
661
993
|
this.openMenuKey = this.cardKey(card);
|
|
994
|
+
this.loadAllowed(card);
|
|
662
995
|
this.focusMenuItem(card, 0);
|
|
663
996
|
}
|
|
664
997
|
}
|
|
@@ -754,6 +1087,9 @@ var script = {
|
|
|
754
1087
|
* @return {string} The count.
|
|
755
1088
|
*/
|
|
756
1089
|
countLabel(column) {
|
|
1090
|
+
if (this.capacityOf(column) !== null) {
|
|
1091
|
+
return this.capacityText(column)
|
|
1092
|
+
}
|
|
757
1093
|
return this.paged
|
|
758
1094
|
? translate('nextcloud-vue', '{count} on this page', { count: column.count })
|
|
759
1095
|
: String(column.count)
|
|
@@ -805,8 +1141,27 @@ var script = {
|
|
|
805
1141
|
*/
|
|
806
1142
|
onDragStart(card, column, event) {
|
|
807
1143
|
this.dragging = { card, fromKey: column.key };
|
|
1144
|
+
this.dragAllowed = null;
|
|
808
1145
|
// Firefox drops a drag that carries no data.
|
|
809
1146
|
event?.dataTransfer?.setData?.('text/plain', this.cardKey(card));
|
|
1147
|
+
if (typeof this.allowedMoves === 'function') {
|
|
1148
|
+
this.loadAllowed(card).then((allowed) => {
|
|
1149
|
+
if (this.dragging && this.dragging.card === card) {
|
|
1150
|
+
this.dragAllowed = allowed;
|
|
1151
|
+
}
|
|
1152
|
+
});
|
|
1153
|
+
}
|
|
1154
|
+
},
|
|
1155
|
+
|
|
1156
|
+
/**
|
|
1157
|
+
* The drag ended (dropped anywhere, or cancelled): no column stays
|
|
1158
|
+
* greyed. A drop on a column has already run by now.
|
|
1159
|
+
*
|
|
1160
|
+
* @return {void}
|
|
1161
|
+
*/
|
|
1162
|
+
onDragEnd() {
|
|
1163
|
+
this.dragging = null;
|
|
1164
|
+
this.dragAllowed = null;
|
|
810
1165
|
},
|
|
811
1166
|
|
|
812
1167
|
/**
|
|
@@ -821,6 +1176,14 @@ var script = {
|
|
|
821
1176
|
}
|
|
822
1177
|
const { card, fromKey } = this.dragging;
|
|
823
1178
|
this.dragging = null;
|
|
1179
|
+
this.dragAllowed = null;
|
|
1180
|
+
if (column.key !== fromKey && !this.isMoveAllowed(card, column)) {
|
|
1181
|
+
const name = this.roleText(card, this.roles.title) || this.cardKey(card);
|
|
1182
|
+
this.refusal = this.blockReason(card, column)
|
|
1183
|
+
|| translate('nextcloud-vue', '{name} cannot move to {column}.', { name, column: column.label });
|
|
1184
|
+
this.$emit('refused', { card, message: this.refusal });
|
|
1185
|
+
return
|
|
1186
|
+
}
|
|
824
1187
|
await this.move(card, fromKey, column.key);
|
|
825
1188
|
},
|
|
826
1189
|
|
|
@@ -847,6 +1210,13 @@ var script = {
|
|
|
847
1210
|
async move(card, fromKey, toKey) {
|
|
848
1211
|
this.refusal = '';
|
|
849
1212
|
|
|
1213
|
+
const target = this.board.columns.find((column) => String(column.key) === String(toKey));
|
|
1214
|
+
if (target && String(toKey) !== String(fromKey) && this.isFull(target)) {
|
|
1215
|
+
this.refusal = this.fullRefusal(target);
|
|
1216
|
+
this.$emit('refused', { card, message: this.refusal });
|
|
1217
|
+
return
|
|
1218
|
+
}
|
|
1219
|
+
|
|
850
1220
|
const result = await runBoardDrop({
|
|
851
1221
|
card,
|
|
852
1222
|
fromKey,
|