@conduction/nextcloud-vue 2.104.0 → 2.106.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/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue.js +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js.map +1 -1
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue.js +1 -1
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue2.js +18 -0
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue2.js.map +1 -1
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue3.js +3 -1
- package/dist/esm/components/CnCardGrid/CnCardGrid.vue3.js.map +1 -1
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue.js +1 -1
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js +18 -0
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js.map +1 -1
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js +1 -1
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js.map +1 -1
- package/dist/esm/components/CnChartWidget/CnChartWidget.vue.js +1 -1
- package/dist/esm/components/CnChartWidget/CnChartWidget.vue2.js +93 -1
- 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/CnDashboardPage/CnDashboardPage.vue.js +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +6 -3
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +3 -3
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +112 -5
- 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/CnDetailWidgetHeaderItems.vue.js +9 -0
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue.js.map +1 -0
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue2.js +24 -0
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue2.js.map +1 -0
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue3.js +49 -0
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue3.js.map +1 -0
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue.js +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js +36 -18
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js +17 -38
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js.map +1 -1
- package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue.js +1 -1
- 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/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue.js +1 -1
- package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js +1 -1
- package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js.map +1 -1
- package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue3.js.map +1 -1
- package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue.js +1 -1
- package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue2.js +2 -0
- package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue2.js.map +1 -1
- package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue3.js +32 -29
- package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue3.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue.js +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js +53 -2
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js +119 -111
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js.map +1 -1
- package/dist/esm/components/CnFlowRunsWidget/CnFlowRunsWidget.vue.js +1 -1
- package/dist/esm/components/CnFlowRunsWidget/CnFlowRunsWidget.vue2.js +62 -1
- package/dist/esm/components/CnFlowRunsWidget/CnFlowRunsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnFlowRunsWidget/CnFlowRunsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue.js +1 -1
- package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue2.js +73 -4
- package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue2.js.map +1 -1
- package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue3.js +74 -27
- package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +208 -46
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +121 -98
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue.js +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue2.js +24 -0
- package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue3.js +20 -4
- package/dist/esm/components/CnIndexPage/CnIndexPageWidgets.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/useSelfFetchList.js +25 -6
- package/dist/esm/components/CnIndexPage/useSelfFetchList.js.map +1 -1
- package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue2.js +112 -1
- package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue3.js +100 -44
- package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue3.js.map +1 -1
- package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue.js +1 -1
- package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue2.js +67 -4
- package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue3.js +1 -1
- package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue.js +9 -0
- package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue.js.map +1 -0
- package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue2.js +88 -0
- package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue3.js +39 -0
- package/dist/esm/components/CnNoticeWidget/CnNoticeWidget.vue3.js.map +1 -0
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue.js +1 -1
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue2.js +295 -12
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue3.js +267 -144
- package/dist/esm/components/CnObjectCard/CnObjectCard.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue.js +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js +4 -0
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js +3 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js.map +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +93 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js +322 -246
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue.js +1 -1
- package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue2.js +122 -7
- package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue3.js +189 -93
- package/dist/esm/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnSettingsField/CnSettingsField.vue.js +1 -1
- package/dist/esm/components/CnSettingsField/CnSettingsField.vue2.js.map +1 -1
- package/dist/esm/components/CnSettingsField/CnSettingsField.vue3.js +3 -3
- package/dist/esm/components/CnSettingsField/CnSettingsField.vue3.js.map +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue.js +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js.map +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js +16 -4
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js.map +1 -1
- package/dist/esm/components/CnTabs/CnTabs.vue.js +1 -1
- package/dist/esm/components/CnTabs/CnTabs.vue2.js.map +1 -1
- package/dist/esm/components/CnTabs/CnTabs.vue3.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +42 -0
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js +38 -19
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.vue.js +9 -0
- package/dist/esm/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.vue.js.map +1 -0
- package/dist/esm/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.vue2.js +258 -0
- package/dist/esm/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.vue3.js +69 -0
- package/dist/esm/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.vue3.js.map +1 -0
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue.js +1 -1
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js +11 -0
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js.map +1 -1
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js +4 -4
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js.map +1 -1
- package/dist/esm/components/CnWidgetGrid/builtInWidgets.js +16 -14
- package/dist/esm/components/CnWidgetGrid/builtInWidgets.js.map +1 -1
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +12 -0
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/l10n/en.json.js +24 -1
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +24 -1
- package/dist/esm/l10n/nl.json.js.map +1 -1
- package/dist/esm/library-style.js +1 -1
- package/dist/esm/nextcloud-vue.css +1369 -748
- package/dist/esm/utils/dueText.js +18 -3
- package/dist/esm/utils/dueText.js.map +1 -1
- package/dist/esm/utils/libraryWidgetKeys.js +2 -0
- package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
- package/dist/esm/utils/nextcloudApps.js +45 -0
- package/dist/esm/utils/nextcloudApps.js.map +1 -0
- package/dist/esm/utils/scopeListLayout.js +9 -2
- package/dist/esm/utils/scopeListLayout.js.map +1 -1
- package/dist/esm/utils/sortOrder.js +11 -1
- package/dist/esm/utils/sortOrder.js.map +1 -1
- package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
- package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
- package/dist/esm/utils/visibleWhen.js +12 -4
- package/dist/esm/utils/visibleWhen.js.map +1 -1
- package/dist/nextcloud-vue.cjs.js +8965 -6497
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +1369 -748
- package/l10n/en.json +24 -1
- package/l10n/nl.json +24 -1
- package/package.json +1 -1
- package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +1 -1
- package/src/components/CnCardGrid/CnCardGrid.md +2 -0
- package/src/components/CnCardGrid/CnCardGrid.vue +20 -0
- package/src/components/CnCellRenderer/CnCellRenderer.vue +19 -1
- package/src/components/CnChartWidget/CnChartWidget.md +2 -0
- package/src/components/CnChartWidget/CnChartWidget.vue +93 -1
- package/src/components/CnDashboardPage/CnDashboardPage.vue +9 -6
- package/src/components/CnDetailPage/CnDetailPage.md +3 -2
- package/src/components/CnDetailPage/CnDetailPage.vue +112 -5
- package/src/components/CnDetailWidgetHost/CnDetailWidgetHeaderItems.vue +60 -0
- package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +36 -29
- package/src/components/CnFactsWidget/CnFactsWidget.vue +4 -0
- package/src/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue +1 -1
- package/src/components/CnFeaturesBoard/CnFeaturesBoard.vue +4 -1
- package/src/components/CnFilesBrowser/CnFilesBrowser.vue +70 -4
- package/src/components/CnFlowRunsWidget/CnFlowRunsWidget.vue +62 -1
- package/src/components/CnFlowsPage/CnFlowBoard.vue +132 -8
- package/src/components/CnIndexPage/CnIndexPage.md +8 -5
- package/src/components/CnIndexPage/CnIndexPage.vue +236 -54
- package/src/components/CnIndexPage/CnIndexPageWidgets.vue +36 -1
- package/src/components/CnIndexPage/useSelfFetchList.js +25 -6
- package/src/components/CnIndexSidebar/CnIndexSidebar.md +2 -0
- package/src/components/CnIndexSidebar/CnIndexSidebar.vue +148 -1
- package/src/components/CnNcWidgetWidget/CnNcWidgetWidget.vue +68 -5
- package/src/components/CnNoticeWidget/CnNoticeWidget.vue +153 -0
- package/src/components/CnNoticeWidget/index.js +12 -0
- package/src/components/CnObjectCard/CnObjectCard.md +1 -0
- package/src/components/CnObjectCard/CnObjectCard.vue +354 -13
- package/src/components/CnObjectSidebar/CnFilesTab.vue +6 -0
- package/src/components/CnRecordListWidget/CnRecordListWidget.vue +190 -4
- package/src/components/CnRelatedObjectsWidget/CnRelatedObjectsWidget.vue +209 -9
- package/src/components/CnSettingsField/CnSettingsField.vue +4 -1
- package/src/components/CnSetupWizard/CnSetupWizard.vue +9 -1
- package/src/components/CnTabs/CnTabs.vue +11 -0
- package/src/components/CnTabsWidget/CnTabsWidget.vue +91 -18
- package/src/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.md +11 -0
- package/src/components/CnTeamWorkloadWidget/CnTeamWorkloadWidget.vue +382 -0
- package/src/components/CnTeamWorkloadWidget/index.js +14 -0
- package/src/components/CnVersionInfoCard/CnVersionInfoCard.vue +15 -4
- package/src/components/CnWidgetGrid/builtInWidgets.js +2 -0
- package/src/components/CnWidgetGrid/registerDashboardWidgets.js +12 -0
- package/src/components/index.js +2 -0
- package/src/css/dialog.css +20 -2
- package/src/css/index-page.css +14 -2
- package/src/css/look-board-detail.css +125 -8
- package/src/css/look-board-index.css +100 -4
- package/src/css/look-board.css +122 -14
- package/src/index.js +2 -1
- package/src/schemas/app-manifest-v2.schema.json +110 -8
- package/src/utils/dueText.js +18 -3
- package/src/utils/libraryWidgetKeys.js +2 -0
- package/src/utils/nextcloudApps.js +50 -0
- package/src/utils/scopeListLayout.js +9 -2
- package/src/utils/sortOrder.js +10 -0
- package/src/utils/validateManifestV2.compiled.js +3 -3
- package/src/utils/visibleWhen.js +12 -4
|
@@ -30,9 +30,11 @@ import { useObjectStore } from '../../store/useObjectStore.js';
|
|
|
30
30
|
import { routeHref, followItemActionLink, resolveItemActionLink } from '../../utils/actionLink.js';
|
|
31
31
|
import { resolveRegisteredHandler, buildOnSuccessRoute } from '../../utils/actionsDispatcher.js';
|
|
32
32
|
import { columnFieldsOf, refIdOf, buildValueStages, buildReferenceStages, columnKeyOfRow, resolveDropValue, fullTargetOf, referenceTargetOf, fetchReferenceObjects } from '../../utils/boardReferenceColumns.js';
|
|
33
|
+
import { isColumnSortable } from '../../utils/columnFilters.js';
|
|
33
34
|
import { reportBindingProblems } from '../../utils/diagnostics.js';
|
|
34
35
|
import { fetchGroupedCounts } from '../../utils/fetchAggregate.js';
|
|
35
36
|
import { fetchListTotal, fetchFilterCounts } from '../../utils/fetchFilterCounts.js';
|
|
37
|
+
import { unwrapAppConfig } from '../../utils/formatMetric.js';
|
|
36
38
|
import { buildExportUrl } from '../../utils/indexExportHelpers.js';
|
|
37
39
|
import { lensUnavailableText } from '../../utils/lensAvailability.js';
|
|
38
40
|
import { isModifiedClick, openRowTarget } from '../../utils/linkNavigation.js';
|
|
@@ -55,7 +57,7 @@ import { DEFAULT_ROW_INDICATOR_CAP } from '../../utils/rowIndicators.js';
|
|
|
55
57
|
import { viewMatchesScope, extractViewState, buildRouteQueryFromViewState, extractViewStateFromRouteQuery, buildViewCreatePayload, savedViewScope, normalizeSharedWith } from '../../utils/savedViewHelpers.js';
|
|
56
58
|
import { fieldsFromSchema, columnsFromSchema } from '../../utils/schema.js';
|
|
57
59
|
import { resolveScopeLayout, resolveScopePresentation } from '../../utils/scopeListLayout.js';
|
|
58
|
-
import {
|
|
60
|
+
import { orderToSortKeys } from '../../utils/sortOrder.js';
|
|
59
61
|
import { dispatchObjectCreated } from '../../utils/walkthroughSignals.js';
|
|
60
62
|
import __sfc_main$7 from '../CnActionButtons/CnActionButtons.vue.js';
|
|
61
63
|
import __sfc_main$8 from '../CnActionsBar/CnActionsBar.vue.js';
|
|
@@ -97,7 +99,7 @@ import { reconcilePersonalColumns, orderColumns, personalColumnsKey } from './pe
|
|
|
97
99
|
import { createSelfModeActions, resolveRowTarget } from './selfModeActions.js';
|
|
98
100
|
import { applyRowPatches, splitLayoutFor, normalisePaneWidth, rowIdOf } from './splitView.js';
|
|
99
101
|
import { useNamedSource } from './useNamedSource.js';
|
|
100
|
-
import { useSelfFetchList, BOARD_PAGE_SIZE } from './useSelfFetchList.js';
|
|
102
|
+
import { useSelfFetchList, resolveInitialQuickFilterIndex, BOARD_PAGE_SIZE } from './useSelfFetchList.js';
|
|
101
103
|
import { useContextMenu } from '../../composables/useContextMenu.js';
|
|
102
104
|
|
|
103
105
|
/** Rows fetched for one month in calendar mode. */
|
|
@@ -426,6 +428,8 @@ var script = {
|
|
|
426
428
|
cnCustomComponents: { default: () => ({}) },
|
|
427
429
|
/** The permissions the user holds, provided by CnAppRoot; for gated page tabs. */
|
|
428
430
|
cnPermissions: { default: () => [] },
|
|
431
|
+
/** The app config an ancestor provides, for `@config.<key>` in quick-filter labels. */
|
|
432
|
+
cnAppConfig: { default: null },
|
|
429
433
|
/** The app id CnAppRoot provides, for the plural form of `countSubtitle`. */
|
|
430
434
|
cnAppId: { default: '' },
|
|
431
435
|
/**
|
|
@@ -680,6 +684,20 @@ var script = {
|
|
|
680
684
|
default: null,
|
|
681
685
|
},
|
|
682
686
|
|
|
687
|
+
/**
|
|
688
|
+
* Board look: the record layout of each card in the cards view
|
|
689
|
+
* (manifest key `config.cardLayout`): `{ headPill, number, title,
|
|
690
|
+
* meta, footerPill, footerDate }`, each part naming a field. See
|
|
691
|
+
* CnObjectCard `layout`.
|
|
692
|
+
*
|
|
693
|
+
* @type {object}
|
|
694
|
+
* @spec openspec/changes/board-record-card-layout/specs/board-record-card-layout/spec.md#requirement-a-board-card-can-draw-the-record-layout-from-config
|
|
695
|
+
*/
|
|
696
|
+
cardLayout: {
|
|
697
|
+
type: Object,
|
|
698
|
+
default: null,
|
|
699
|
+
},
|
|
700
|
+
|
|
683
701
|
/**
|
|
684
702
|
* Gives each card in the card view a status accent: a colored start
|
|
685
703
|
* border and icon. See CnObjectCard `accent`.
|
|
@@ -903,13 +921,15 @@ var script = {
|
|
|
903
921
|
* the Filter button and the view switch, in whatever width that row has
|
|
904
922
|
* beside a side panel (DqTeamwachtrij): the chips take the room the
|
|
905
923
|
* buttons leave, and those that do not fit move into the overflow chip.
|
|
924
|
+
* `'row'` puts them on a row of their own above the toolbar, wrapping
|
|
925
|
+
* onto more lines instead of folding into the overflow chip.
|
|
906
926
|
*
|
|
907
|
-
* @type {''|'toolbar'}
|
|
927
|
+
* @type {''|'toolbar'|'row'}
|
|
908
928
|
*/
|
|
909
929
|
quickFilterPlacement: {
|
|
910
930
|
type: String,
|
|
911
931
|
default: '',
|
|
912
|
-
validator: (v) => ['', 'toolbar'].includes(v),
|
|
932
|
+
validator: (v) => ['', 'toolbar', 'row'].includes(v),
|
|
913
933
|
},
|
|
914
934
|
|
|
915
935
|
/**
|
|
@@ -1882,6 +1902,19 @@ var script = {
|
|
|
1882
1902
|
default: true,
|
|
1883
1903
|
},
|
|
1884
1904
|
|
|
1905
|
+
/**
|
|
1906
|
+
* The app config `@config.<key>` tokens resolve against, in quick-filter
|
|
1907
|
+
* filters and labels (`"Residence @config.municipality"`), as on the
|
|
1908
|
+
* dashboard and detail pages. Merged over a config an ancestor provides
|
|
1909
|
+
* on `cnAppConfig`. Manifest: `config.appConfig`.
|
|
1910
|
+
*
|
|
1911
|
+
* @type {object}
|
|
1912
|
+
*/
|
|
1913
|
+
appConfig: {
|
|
1914
|
+
type: Object,
|
|
1915
|
+
default: () => ({}),
|
|
1916
|
+
},
|
|
1917
|
+
|
|
1885
1918
|
/**
|
|
1886
1919
|
* Keep the "Showing X of Y" counter visible beside the inline search field,
|
|
1887
1920
|
* after any `#after-search` controls (only relevant with `inlineSearch`,
|
|
@@ -1930,9 +1963,11 @@ var script = {
|
|
|
1930
1963
|
},
|
|
1931
1964
|
|
|
1932
1965
|
/**
|
|
1933
|
-
*
|
|
1934
|
-
*
|
|
1935
|
-
*
|
|
1966
|
+
* Deprecated, without effect: the toolbar draws no sort select. The
|
|
1967
|
+
* table sorts by its column headers, the list, card and map views by
|
|
1968
|
+
* the Sort section in the index sidebar.
|
|
1969
|
+
*
|
|
1970
|
+
* @deprecated
|
|
1936
1971
|
*/
|
|
1937
1972
|
showSortSelect: {
|
|
1938
1973
|
type: Boolean,
|
|
@@ -1940,7 +1975,11 @@ var script = {
|
|
|
1940
1975
|
},
|
|
1941
1976
|
|
|
1942
1977
|
/**
|
|
1943
|
-
*
|
|
1978
|
+
* The orders the index sidebar's Sort section offers in the list, card
|
|
1979
|
+
* and map views (manifest `config.sortSelectOptions`): `{ value, label,
|
|
1980
|
+
* order? }`, the order its `order` (an `orderToSortKeys` form) or its
|
|
1981
|
+
* `value` read as one. Without them the section offers the sortable
|
|
1982
|
+
* columns.
|
|
1944
1983
|
*
|
|
1945
1984
|
* @type {Array<{ value: string, label: string }>}
|
|
1946
1985
|
*/
|
|
@@ -1950,8 +1989,10 @@ var script = {
|
|
|
1950
1989
|
},
|
|
1951
1990
|
|
|
1952
1991
|
/**
|
|
1953
|
-
*
|
|
1954
|
-
*
|
|
1992
|
+
* Deprecated, without effect: the toolbar sort select is gone; the
|
|
1993
|
+
* Sort section in the index sidebar shows the current order.
|
|
1994
|
+
*
|
|
1995
|
+
* @deprecated
|
|
1955
1996
|
*/
|
|
1956
1997
|
sortSelectValue: {
|
|
1957
1998
|
type: String,
|
|
@@ -2004,6 +2045,9 @@ var script = {
|
|
|
2004
2045
|
* defaults to `field`).
|
|
2005
2046
|
* - `folders` — explicit folder list for `source:'custom'`.
|
|
2006
2047
|
* - `allLabel` / `title` / `allowCreate` — passed to CnFolderSidebar.
|
|
2048
|
+
* - `scopeViews` — the view modes the scope's look (columns, title,
|
|
2049
|
+
* count line and the other scope keys) applies in, e.g. `["table",
|
|
2050
|
+
* "list"]`; other views keep the page's own look. Default: every view.
|
|
2007
2051
|
* - `pane` — `false` draws no pane: the scope still comes from the
|
|
2008
2052
|
* deep-link filter (`?caseType=<id>`) and still applies its look, as
|
|
2009
2053
|
* a list narrowed to one case type does without a folder column.
|
|
@@ -3735,22 +3779,45 @@ var script = {
|
|
|
3735
3779
|
},
|
|
3736
3780
|
|
|
3737
3781
|
/**
|
|
3738
|
-
* The
|
|
3739
|
-
*
|
|
3740
|
-
* list's current order (a header click that matches one shows it).
|
|
3782
|
+
* The list's current order, `[{ key, order }]`: the self-fetched list's,
|
|
3783
|
+
* else the `sortKeys` / `sortKey` props.
|
|
3741
3784
|
*
|
|
3742
|
-
* @return {string
|
|
3785
|
+
* @return {Array<{key: string, order: string}>} The order.
|
|
3743
3786
|
*/
|
|
3744
|
-
|
|
3745
|
-
if (this.
|
|
3746
|
-
return this.
|
|
3787
|
+
currentSortKeys() {
|
|
3788
|
+
if (this.isSelfFetchMode && this.list && this.list.sortKeys) {
|
|
3789
|
+
return this.list.sortKeys.value || []
|
|
3747
3790
|
}
|
|
3748
|
-
if (
|
|
3749
|
-
return
|
|
3791
|
+
if (Array.isArray(this.sortKeys) && this.sortKeys.length > 0) {
|
|
3792
|
+
return this.sortKeys
|
|
3793
|
+
}
|
|
3794
|
+
return this.sortKey ? [{ key: this.sortKey, order: this.sortOrder || 'asc' }] : []
|
|
3795
|
+
},
|
|
3796
|
+
|
|
3797
|
+
/**
|
|
3798
|
+
* The orders the index sidebar's Sort section offers: none in the table
|
|
3799
|
+
* view, which sorts by its column headers; else `sortSelectOptions`,
|
|
3800
|
+
* or else the sortable columns, ascending.
|
|
3801
|
+
*
|
|
3802
|
+
* @return {Array<{value: string, label: string, keys: Array<{key: string, order: string}>}>} The options.
|
|
3803
|
+
*/
|
|
3804
|
+
sidebarSortOptions() {
|
|
3805
|
+
if (this.currentViewMode === 'table') {
|
|
3806
|
+
return []
|
|
3807
|
+
}
|
|
3808
|
+
if (Array.isArray(this.sortSelectOptions) && this.sortSelectOptions.length > 0) {
|
|
3809
|
+
return this.sortSelectOptions
|
|
3810
|
+
.filter((o) => o && o.value !== undefined && o.value !== null)
|
|
3811
|
+
.map((o) => ({
|
|
3812
|
+
value: String(o.value),
|
|
3813
|
+
label: this.cnTranslate(o.label || String(o.value)),
|
|
3814
|
+
keys: orderToSortKeys(o.order !== undefined ? o.order : o.value),
|
|
3815
|
+
}))
|
|
3816
|
+
.filter((o) => o.keys.length > 0)
|
|
3750
3817
|
}
|
|
3751
|
-
|
|
3752
|
-
|
|
3753
|
-
|
|
3818
|
+
return (this.tableColumns || [])
|
|
3819
|
+
.filter((c) => c && typeof c === 'object' && c.key && isColumnSortable(c, this.effectiveSchema))
|
|
3820
|
+
.map((c) => ({ value: c.key, label: this.cnTranslate(c.label || c.key), keys: [{ key: c.key, order: 'asc' }] }))
|
|
3754
3821
|
},
|
|
3755
3822
|
|
|
3756
3823
|
/**
|
|
@@ -3782,7 +3849,7 @@ var script = {
|
|
|
3782
3849
|
* @spec openspec/changes/index-columns-per-scope/specs/index-page/spec.md
|
|
3783
3850
|
*/
|
|
3784
3851
|
activeScopeLayout() {
|
|
3785
|
-
if (!this.folderSidebar) {
|
|
3852
|
+
if (!this.folderSidebar || !this.scopeShapesView) {
|
|
3786
3853
|
return { columns: null, sortKeys: [], searchFields: [] }
|
|
3787
3854
|
}
|
|
3788
3855
|
return resolveScopeLayout({
|
|
@@ -3792,6 +3859,23 @@ var script = {
|
|
|
3792
3859
|
})
|
|
3793
3860
|
},
|
|
3794
3861
|
|
|
3862
|
+
/**
|
|
3863
|
+
* Whether the active scope's look applies in the current view mode:
|
|
3864
|
+
* always, unless `folderSidebar.scopeViews` names the view modes it is
|
|
3865
|
+
* for (`["table", "list"]`), so the board keeps the page's generic
|
|
3866
|
+
* look (DqWerkbord). The scope's filter applies in every view.
|
|
3867
|
+
*
|
|
3868
|
+
* @spec openspec/changes/index-scope-views/specs/index-page/spec.md#requirement-a-scope-look-can-be-limited-to-view-modes
|
|
3869
|
+
* @return {boolean}
|
|
3870
|
+
*/
|
|
3871
|
+
scopeShapesView() {
|
|
3872
|
+
const views = this.folderSidebar && this.folderSidebar.scopeViews;
|
|
3873
|
+
if (!Array.isArray(views) || views.length === 0) {
|
|
3874
|
+
return true
|
|
3875
|
+
}
|
|
3876
|
+
return views.includes(this.currentViewMode)
|
|
3877
|
+
},
|
|
3878
|
+
|
|
3795
3879
|
/**
|
|
3796
3880
|
* This page's own value of each presentation key, which a query preset
|
|
3797
3881
|
* may have set: what `presented()` falls back to without a scope.
|
|
@@ -3826,7 +3910,7 @@ var script = {
|
|
|
3826
3910
|
* @spec openspec/changes/index-scope-presentation/specs/index-page/spec.md#requirement-a-preset-or-a-scope-sets-the-list-s-presentation
|
|
3827
3911
|
*/
|
|
3828
3912
|
activeScopePresentation() {
|
|
3829
|
-
if (!this.folderSidebar) {
|
|
3913
|
+
if (!this.folderSidebar || !this.scopeShapesView) {
|
|
3830
3914
|
return {}
|
|
3831
3915
|
}
|
|
3832
3916
|
return resolveScopePresentation({ scope: this.activeScope, row: this.activeScopeRow })
|
|
@@ -4068,6 +4152,20 @@ var script = {
|
|
|
4068
4152
|
* @return {(Array<object>|null)} The tabs.
|
|
4069
4153
|
* @spec openspec/changes/working-list-row-actions/specs/index-page/spec.md
|
|
4070
4154
|
*/
|
|
4155
|
+
/**
|
|
4156
|
+
* The chip the strip lights: the active tab, else the default tab of
|
|
4157
|
+
* tabs that arrived after setup (`quickFiltersFrom`), which is the
|
|
4158
|
+
* one the fetch applies.
|
|
4159
|
+
*
|
|
4160
|
+
* @return {number|null} The tab index, or null without tabs.
|
|
4161
|
+
*/
|
|
4162
|
+
shownQuickFilterIndex() {
|
|
4163
|
+
if (this.activeQuickFilterIndex !== null && this.activeQuickFilterIndex !== undefined) {
|
|
4164
|
+
return this.activeQuickFilterIndex
|
|
4165
|
+
}
|
|
4166
|
+
return this.quickFilterMultiple ? null : resolveInitialQuickFilterIndex(this.tabStripEntries)
|
|
4167
|
+
},
|
|
4168
|
+
|
|
4071
4169
|
tabStripEntries() {
|
|
4072
4170
|
if (this.lensTabs.length > 0) {
|
|
4073
4171
|
return this.lensTabs
|
|
@@ -4294,6 +4392,22 @@ var script = {
|
|
|
4294
4392
|
return specs
|
|
4295
4393
|
},
|
|
4296
4394
|
|
|
4395
|
+
/**
|
|
4396
|
+
* The rendered columns by key, so a card fact shows what its table
|
|
4397
|
+
* cell shows (label, formatter, widget).
|
|
4398
|
+
*
|
|
4399
|
+
* @return {object} Column definitions keyed by property.
|
|
4400
|
+
*/
|
|
4401
|
+
cardFieldColumns() {
|
|
4402
|
+
const byKey = {};
|
|
4403
|
+
for (const col of this.renderedColumns || []) {
|
|
4404
|
+
if (col && typeof col === 'object' && typeof col.key === 'string') {
|
|
4405
|
+
byKey[col.key] = col;
|
|
4406
|
+
}
|
|
4407
|
+
}
|
|
4408
|
+
return byKey
|
|
4409
|
+
},
|
|
4410
|
+
|
|
4297
4411
|
/**
|
|
4298
4412
|
* The property keys the board look's card facts show: the page's
|
|
4299
4413
|
* `cardFields`, else the first four list columns. Null without the
|
|
@@ -5143,8 +5257,11 @@ var script = {
|
|
|
5143
5257
|
|
|
5144
5258
|
const present = new Set(cols.map((c) => (typeof c === 'string' ? c : c.key)));
|
|
5145
5259
|
const byKey = new Map(this.governedColumns.map((c) => [c.key, c]));
|
|
5260
|
+
// A scope that sets its own columns does not get its folder field back:
|
|
5261
|
+
// every row of the scope holds the same value there.
|
|
5262
|
+
const scopeField = this.activeScopeLayout.columns ? this.folderFilterKey : '';
|
|
5146
5263
|
visible.forEach((key) => {
|
|
5147
|
-
if (present.has(key)) {
|
|
5264
|
+
if (present.has(key) || key === scopeField) {
|
|
5148
5265
|
return
|
|
5149
5266
|
}
|
|
5150
5267
|
const def = byKey.get(key);
|
|
@@ -5427,11 +5544,21 @@ var script = {
|
|
|
5427
5544
|
effectiveQuickFilters() {
|
|
5428
5545
|
const own = withPersonalLenses(this.presented('quickFilters') || this.generatedQuickFilters, this.personalLenses);
|
|
5429
5546
|
if (own && own.length > 0) {
|
|
5430
|
-
return own
|
|
5547
|
+
return own.map((tab) => this.withConfigLabels(tab))
|
|
5431
5548
|
}
|
|
5432
5549
|
return (this.isNamedSource && this.namedQuickFilters) || null
|
|
5433
5550
|
},
|
|
5434
5551
|
|
|
5552
|
+
/**
|
|
5553
|
+
* The app config `@config.<key>` tokens resolve against: the `appConfig`
|
|
5554
|
+
* prop over a config an ancestor provides.
|
|
5555
|
+
*
|
|
5556
|
+
* @return {object} The config.
|
|
5557
|
+
*/
|
|
5558
|
+
effectiveAppConfig() {
|
|
5559
|
+
return { ...unwrapAppConfig(this.cnAppConfig), ...(this.appConfig || {}) }
|
|
5560
|
+
},
|
|
5561
|
+
|
|
5435
5562
|
/**
|
|
5436
5563
|
* Whether the Add button renders. A named source that declares
|
|
5437
5564
|
* `showAdd: false` suppresses it (a task is created by a flow, never
|
|
@@ -5609,6 +5736,28 @@ var script = {
|
|
|
5609
5736
|
return count > 0 ? `${name}, ${translate('nextcloud-vue', '{count} active', { count })}` : name
|
|
5610
5737
|
},
|
|
5611
5738
|
|
|
5739
|
+
/** @return {string} The field the folder sidebar filters by, or ''. */
|
|
5740
|
+
folderFilterKey() {
|
|
5741
|
+
return (this.folderSidebar && (this.folderSidebar.filterField || this.folderSidebar.field)) || ''
|
|
5742
|
+
},
|
|
5743
|
+
|
|
5744
|
+
/**
|
|
5745
|
+
* The filters the table's header filters show: every active filter but
|
|
5746
|
+
* the selected folder's own, which the Active chip already names, so
|
|
5747
|
+
* the table draws no summary chip for it.
|
|
5748
|
+
*
|
|
5749
|
+
* @return {object} The filters.
|
|
5750
|
+
*/
|
|
5751
|
+
tableActiveFilters() {
|
|
5752
|
+
const filters = this.effectiveActiveFilters || {};
|
|
5753
|
+
const key = this.folderFilterKey;
|
|
5754
|
+
if (!key || this.selectedFolderId === null || this.selectedFolderId === undefined || !Object.hasOwn(filters, key)) {
|
|
5755
|
+
return filters
|
|
5756
|
+
}
|
|
5757
|
+
const { [key]: _folder, ...rest } = filters;
|
|
5758
|
+
return rest
|
|
5759
|
+
},
|
|
5760
|
+
|
|
5612
5761
|
/**
|
|
5613
5762
|
* The active filters as chips for the board toolbar's second row, one
|
|
5614
5763
|
* per filter: "Team: Woo". A filter with no value is not active.
|
|
@@ -6012,6 +6161,8 @@ var script = {
|
|
|
6012
6161
|
showMetadata: this.resolvedSidebar.showMetadata !== false,
|
|
6013
6162
|
personalColumns: this.personalColumns,
|
|
6014
6163
|
pinnedCount: this.pinnedColumnCount,
|
|
6164
|
+
sortOptions: this.sidebarSortOptions,
|
|
6165
|
+
currentSort: this.currentSortKeys,
|
|
6015
6166
|
...this.sidebarSearchProps,
|
|
6016
6167
|
}
|
|
6017
6168
|
},
|
|
@@ -7484,35 +7635,45 @@ var script = {
|
|
|
7484
7635
|
},
|
|
7485
7636
|
|
|
7486
7637
|
/**
|
|
7487
|
-
*
|
|
7488
|
-
*
|
|
7638
|
+
* An order chosen in the index sidebar's Sort section. It goes the way
|
|
7639
|
+
* a header click goes: the self-fetched list sorts (`_order`, kept in
|
|
7640
|
+
* the address), and `sort` is emitted for a host that sorts itself.
|
|
7489
7641
|
*
|
|
7490
|
-
* @param {
|
|
7491
|
-
* @return {
|
|
7642
|
+
* @param {Array<{key: string, order: string}>} keys The chosen order.
|
|
7643
|
+
* @return {void}
|
|
7492
7644
|
*/
|
|
7493
|
-
|
|
7494
|
-
if (!
|
|
7495
|
-
return
|
|
7645
|
+
onSidebarSortChange(keys) {
|
|
7646
|
+
if (!Array.isArray(keys) || keys.length === 0) {
|
|
7647
|
+
return
|
|
7496
7648
|
}
|
|
7497
|
-
|
|
7649
|
+
this.onSortEvent({ key: keys[0].key, order: keys[0].order, keys });
|
|
7498
7650
|
},
|
|
7499
7651
|
|
|
7500
7652
|
/**
|
|
7501
|
-
* A
|
|
7502
|
-
*
|
|
7503
|
-
*
|
|
7653
|
+
* A quick filter with `@config.<key>` in its `label` or `activeLabel`
|
|
7654
|
+
* (`"Residence @config.municipality"`): the label translated first, then
|
|
7655
|
+
* each token replaced by its configured value. A key the config does
|
|
7656
|
+
* not hold leaves its token in place. Other tabs pass unchanged.
|
|
7504
7657
|
*
|
|
7505
|
-
* @param {
|
|
7506
|
-
* @return {
|
|
7658
|
+
* @param {object} tab A quick-filter tab.
|
|
7659
|
+
* @return {object} The tab, with its labels resolved.
|
|
7507
7660
|
*/
|
|
7508
|
-
|
|
7509
|
-
|
|
7510
|
-
|
|
7511
|
-
|
|
7512
|
-
|
|
7513
|
-
|
|
7661
|
+
withConfigLabels(tab) {
|
|
7662
|
+
if (!tab || typeof tab !== 'object') {
|
|
7663
|
+
return tab
|
|
7664
|
+
}
|
|
7665
|
+
const hasToken = (value) => typeof value === 'string' && value.includes('@config.');
|
|
7666
|
+
if (!hasToken(tab.label) && !hasToken(tab.activeLabel)) {
|
|
7667
|
+
return tab
|
|
7514
7668
|
}
|
|
7515
|
-
this
|
|
7669
|
+
const config = this.effectiveAppConfig;
|
|
7670
|
+
const fill = (value) => (hasToken(value)
|
|
7671
|
+
? this.cnTranslate(value).replace(/@config\.([A-Za-z0-9_.-]*[A-Za-z0-9_])/g, (token, key) => {
|
|
7672
|
+
const found = this.getByPath(config, key);
|
|
7673
|
+
return found === undefined || found === null || found === '' ? token : String(found)
|
|
7674
|
+
})
|
|
7675
|
+
: value);
|
|
7676
|
+
return { ...tab, label: fill(tab.label), activeLabel: fill(tab.activeLabel) }
|
|
7516
7677
|
},
|
|
7517
7678
|
|
|
7518
7679
|
/**
|
|
@@ -8673,6 +8834,7 @@ var script = {
|
|
|
8673
8834
|
'columns-reset': () => this.onColumnsReset(),
|
|
8674
8835
|
'filter-change': (event) => this.onFilterEvent(event),
|
|
8675
8836
|
'clear-filters': () => this.onClearFilters(),
|
|
8837
|
+
'sort-change': (keys) => this.onSidebarSortChange(keys),
|
|
8676
8838
|
},
|
|
8677
8839
|
};
|
|
8678
8840
|
},
|