@conduction/nextcloud-vue 2.114.0 → 2.115.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/CnAdvancedFormDialog/CnPropertyValueCell.vue.js +1 -1
- package/dist/esm/components/CnAdvancedFormDialog/CnPropertyValueCell.vue2.js +1 -1
- 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/CnCellRenderer/CnCellRenderer.vue.js +1 -1
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js +6 -2
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js.map +1 -1
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js.map +1 -1
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue.js +1 -1
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js +2 -1
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js.map +1 -1
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +19 -2
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +22 -3
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue.js +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js +2 -2
- 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/CnIndexPage/CnIndexPage.vue2.js +37 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/rowsToCsv.js +90 -0
- package/dist/esm/components/CnIndexPage/rowsToCsv.js.map +1 -0
- package/dist/esm/components/CnMacrosWidget/CnMacrosWidget.vue.js +9 -0
- package/dist/esm/components/CnMacrosWidget/CnMacrosWidget.vue.js.map +1 -0
- package/dist/esm/components/CnMacrosWidget/CnMacrosWidget.vue2.js +161 -0
- package/dist/esm/components/CnMacrosWidget/CnMacrosWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnMacrosWidget/CnMacrosWidget.vue3.js +97 -0
- package/dist/esm/components/CnMacrosWidget/CnMacrosWidget.vue3.js.map +1 -0
- package/dist/esm/components/CnRetentionWidget/CnRetentionRecomputeDialog.vue.js +9 -0
- package/dist/esm/components/CnRetentionWidget/CnRetentionRecomputeDialog.vue.js.map +1 -0
- package/dist/esm/components/CnRetentionWidget/CnRetentionRecomputeDialog.vue2.js +63 -0
- package/dist/esm/components/CnRetentionWidget/CnRetentionRecomputeDialog.vue2.js.map +1 -0
- package/dist/esm/components/CnRetentionWidget/CnRetentionRecomputeDialog.vue3.js +54 -0
- package/dist/esm/components/CnRetentionWidget/CnRetentionRecomputeDialog.vue3.js.map +1 -0
- package/dist/esm/components/CnRetentionWidget/CnRetentionWidget.vue.js +1 -1
- package/dist/esm/components/CnRetentionWidget/CnRetentionWidget.vue2.js +15 -9
- package/dist/esm/components/CnRetentionWidget/CnRetentionWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnRetentionWidget/CnRetentionWidget.vue3.js +55 -63
- package/dist/esm/components/CnRetentionWidget/CnRetentionWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue.js +1 -1
- package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue2.js +2 -1
- package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue2.js.map +1 -1
- package/dist/esm/components/CnSegmentedControl/CnSegmentedControl.vue3.js.map +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue.js +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js +13 -4
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js.map +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js +2 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js.map +1 -1
- package/dist/esm/components/CnStepper/CnStepper.vue.js +1 -1
- package/dist/esm/components/CnStepper/CnStepper.vue2.js.map +1 -1
- package/dist/esm/components/CnStepper/CnStepper.vue3.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +10 -5
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue.js +1 -1
- package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue3.js +2 -2
- package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +32 -20
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
- package/dist/esm/composables/indexSources.js +43 -11
- package/dist/esm/composables/indexSources.js.map +1 -1
- package/dist/esm/composables/useTaskInboxStore.js +41 -0
- package/dist/esm/composables/useTaskInboxStore.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/l10n/en.json.js +4 -1
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +9 -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 +482 -330
- package/dist/esm/utils/contentHeaderLink.js +37 -1
- package/dist/esm/utils/contentHeaderLink.js.map +1 -1
- package/dist/esm/utils/declaredMacros.js +31 -0
- package/dist/esm/utils/declaredMacros.js.map +1 -0
- package/dist/esm/utils/libraryWidgetKeys.js +1 -0
- package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
- package/dist/nextcloud-vue.cjs.js +2673 -1977
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +482 -330
- package/l10n/en.json +4 -1
- package/l10n/nl.json +9 -1
- package/package.json +1 -1
- package/src/components/CnAdvancedFormDialog/CnPropertyValueCell.vue +1 -1
- package/src/components/CnCellRenderer/CnCellRenderer.vue +6 -2
- package/src/components/CnChoiceCards/CnChoiceCards.vue +2 -1
- package/src/components/CnDashboardPage/CnDashboardPage.vue +45 -3
- package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +2 -2
- package/src/components/CnIndexPage/CnIndexPage.vue +37 -1
- package/src/components/CnIndexPage/rowsToCsv.js +87 -0
- package/src/components/CnMacrosWidget/CnMacrosWidget.md +30 -0
- package/src/components/CnMacrosWidget/CnMacrosWidget.vue +266 -0
- package/src/components/CnMacrosWidget/index.js +6 -0
- package/src/components/CnRetentionWidget/CnRetentionRecomputeDialog.vue +104 -0
- package/src/components/CnRetentionWidget/CnRetentionWidget.vue +53 -38
- package/src/components/CnSegmentedControl/CnSegmentedControl.vue +2 -1
- package/src/components/CnSetupWizard/CnSetupWizard.vue +28 -4
- package/src/components/CnStepper/CnStepper.vue +2 -1
- package/src/components/CnTabsWidget/CnTabsWidget.vue +11 -6
- package/src/components/CnTasksWidget/CnTasksWidget.vue +2 -2
- package/src/components/CnWidgetGrid/registerDashboardWidgets.js +12 -0
- package/src/components/index.js +1 -0
- package/src/composables/indexSources.js +43 -11
- package/src/composables/useTaskInboxStore.js +41 -0
- package/src/css/look-board-detail.css +4 -3
- package/src/css/look-board-index.css +62 -0
- package/src/css/look-board.css +20 -0
- package/src/index.js +1 -0
- package/src/utils/contentHeaderLink.js +35 -0
- package/src/utils/declaredMacros.js +28 -0
- package/src/utils/libraryWidgetKeys.js +1 -0
package/src/css/look-board.css
CHANGED
|
@@ -1621,6 +1621,26 @@ body:has(.cn-look-board):not(:has(.cn-look-nextcloud)) .v-popper__popper.action-
|
|
|
1621
1621
|
padding: 4px var(--cn-board-dashboard-card-inset) 20px;
|
|
1622
1622
|
}
|
|
1623
1623
|
|
|
1624
|
+
/* An ApexCharts plot takes the same inset as an HTML chart (DqDoorlooptijd
|
|
1625
|
+
"Gemiddelde doorlooptijd per maand": the plot 23px in, not on the card's
|
|
1626
|
+
edge). ApexCharts sizes itself to its box minus the box's padding, so the
|
|
1627
|
+
plot shrinks into the inset instead of overflowing it. A footnote under the
|
|
1628
|
+
plot carries the bottom inset in its place.
|
|
1629
|
+
@spec openspec/changes/board-dashboard-chart-inset/specs/board-dashboard-chart-inset/spec.md#requirement-a-board-dashboard-plot-keeps-the-cards-inset */
|
|
1630
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--borderless) .cn-chart-widget__canvas {
|
|
1631
|
+
box-sizing: border-box;
|
|
1632
|
+
padding: 4px var(--cn-board-dashboard-card-inset) 20px;
|
|
1633
|
+
}
|
|
1634
|
+
|
|
1635
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--borderless) .cn-chart-widget__canvas:has(+ .cn-chart-widget__footnote) {
|
|
1636
|
+
padding-bottom: 0;
|
|
1637
|
+
}
|
|
1638
|
+
|
|
1639
|
+
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--borderless) .cn-chart-widget > .cn-chart-widget__footnote {
|
|
1640
|
+
padding: 0 var(--cn-board-dashboard-card-inset) 20px;
|
|
1641
|
+
font-size: 13px;
|
|
1642
|
+
}
|
|
1643
|
+
|
|
1624
1644
|
/* An activity item pads itself 4px, so the body takes 4px less. */
|
|
1625
1645
|
.cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--borderless) .cn-nc-widget-widget__body {
|
|
1626
1646
|
padding: 0 calc(var(--cn-board-dashboard-card-inset) - 4px) 16px;
|
package/src/index.js
CHANGED
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
* @module utils/contentHeaderLink
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
+
import { resolveDeepTokens } from './resolveFilterTokens.js'
|
|
13
|
+
|
|
12
14
|
/**
|
|
13
15
|
* The header link a widget's `content` declares, in the shape
|
|
14
16
|
* CnWidgetWrapper's `headerLink` takes, or null when it declares none.
|
|
@@ -93,3 +95,36 @@ export function headerLinkTarget(link, hasRouter) {
|
|
|
93
95
|
}
|
|
94
96
|
return { tag: '', attrs: {} }
|
|
95
97
|
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* A header link with the `@objectId` and `@object.<path>` tokens in its
|
|
101
|
+
* `params` and `query` resolved against the record the page shows
|
|
102
|
+
* (`{ route: 'WorkflowDefinitionDetail', params: { id: '@object.workflowDefinition' } }`).
|
|
103
|
+
* A link whose route params do not all resolve is no link: the record does
|
|
104
|
+
* not name the page it would open.
|
|
105
|
+
*
|
|
106
|
+
* @param {object|null|undefined} link A link `{ label, route?, params?, query?, href? }`.
|
|
107
|
+
* @param {{objectId?: (string|number), object?: object}} ctx The record.
|
|
108
|
+
* @return {object|null} The link with its tokens resolved, or null.
|
|
109
|
+
* @spec openspec/changes/header-link-param-tokens/specs/header-link-param-tokens/spec.md#requirement-a-header-links-route-params-read-the-record
|
|
110
|
+
*/
|
|
111
|
+
export function resolveHeaderLink(link, ctx) {
|
|
112
|
+
if (!link || typeof link !== 'object') {
|
|
113
|
+
return null
|
|
114
|
+
}
|
|
115
|
+
if (!link.params && !link.query) {
|
|
116
|
+
return link
|
|
117
|
+
}
|
|
118
|
+
const out = { ...link }
|
|
119
|
+
if (link.params && typeof link.params === 'object') {
|
|
120
|
+
out.params = resolveDeepTokens(link.params, ctx || {})
|
|
121
|
+
const filled = Object.values(out.params).every((value) => value !== null && value !== undefined && value !== '' && !(typeof value === 'string' && value.startsWith('@')))
|
|
122
|
+
if (!filled) {
|
|
123
|
+
return null
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (link.query && typeof link.query === 'object') {
|
|
127
|
+
out.query = resolveDeepTokens(link.query, ctx || {})
|
|
128
|
+
}
|
|
129
|
+
return out
|
|
130
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SPDX-FileCopyrightText: 2026 Conduction B.V.
|
|
3
|
+
* SPDX-License-Identifier: EUPL-1.2
|
|
4
|
+
*
|
|
5
|
+
* The macros an OpenRegister schema declares: declared actions
|
|
6
|
+
* (`configuration['x-openregister-action']`) with `macro: true` and a bound
|
|
7
|
+
* flow. A declared action without a flow is not a macro and is left out.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The macros a schema declares, in declaration order.
|
|
12
|
+
*
|
|
13
|
+
* @param {object|null} schema The schema, as OpenRegister returns it.
|
|
14
|
+
* @return {Array<{key: string, name: string, description: string}>} The macros.
|
|
15
|
+
*/
|
|
16
|
+
export function declaredMacros(schema) {
|
|
17
|
+
const declared = schema?.configuration?.['x-openregister-action']
|
|
18
|
+
if (!declared || typeof declared !== 'object' || Array.isArray(declared)) {
|
|
19
|
+
return []
|
|
20
|
+
}
|
|
21
|
+
return Object.entries(declared)
|
|
22
|
+
.filter(([, entry]) => entry && typeof entry === 'object' && entry.macro === true && typeof entry.flow === 'string' && entry.flow !== '')
|
|
23
|
+
.map(([key, entry]) => ({
|
|
24
|
+
key,
|
|
25
|
+
name: typeof entry.name === 'string' && entry.name !== '' ? entry.name : key,
|
|
26
|
+
description: typeof entry.description === 'string' ? entry.description : '',
|
|
27
|
+
}))
|
|
28
|
+
}
|