@conduction/nextcloud-vue 2.93.0 → 2.94.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/CnActionsMenu/CnActionsMenu.vue2.js +1 -1
- package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js.map +1 -1
- package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js +2 -1
- package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js.map +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue.js +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js +28 -8
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +37 -2
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js.map +1 -1
- package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue.js +1 -1
- package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue2.js +139 -3
- package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue3.js +60 -12
- 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 +91 -36
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +115 -72
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
- package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +32 -3
- package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
- package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +7 -7
- package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +141 -7
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +5 -2
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
- package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue.js +8 -0
- package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue.js.map +1 -0
- package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue2.js +114 -0
- package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue2.js.map +1 -0
- package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue3.js +45 -0
- package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue3.js.map +1 -0
- package/dist/esm/components/CnPageHeader/CnPageHeader.vue2.js +38 -2
- package/dist/esm/components/CnPageHeader/CnPageHeader.vue2.js.map +1 -1
- package/dist/esm/components/CnPageHeader/CnPageHeader.vue3.js +12 -2
- package/dist/esm/components/CnPageHeader/CnPageHeader.vue3.js.map +1 -1
- package/dist/esm/components/CnPagination/CnPagination.vue2.js.map +1 -1
- package/dist/esm/components/CnPagination/CnPagination.vue3.js +56 -51
- package/dist/esm/components/CnPagination/CnPagination.vue3.js.map +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +3 -3
- 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/CnSettingsPage/CnSettingsPage.vue.js +1 -1
- package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js +24 -0
- package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js.map +1 -1
- package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js +3 -1
- package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js.map +1 -1
- package/dist/esm/components/CnTabs/CnTabs.vue.js +1 -1
- package/dist/esm/components/CnTabs/CnTabs.vue2.js +39 -2
- 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 +85 -8
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js +37 -9
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue.js +1 -1
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js.map +1 -1
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js +4 -3
- package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js.map +1 -1
- package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue.js +1 -1
- package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js +20 -0
- package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js.map +1 -1
- package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js +31 -20
- package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js.map +1 -1
- package/dist/esm/composables/indexSources.js +9 -0
- package/dist/esm/composables/indexSources.js.map +1 -1
- package/dist/esm/library-style.js +1 -1
- package/dist/esm/nextcloud-vue.css +402 -262
- package/dist/esm/utils/dueText.js +49 -8
- package/dist/esm/utils/dueText.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/nextcloud-vue.cjs.js +5779 -4827
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +402 -262
- package/package.json +1 -1
- package/src/components/CnActionsMenu/CnActionsMenu.vue +3 -1
- package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +39 -1
- package/src/components/CnCountdownWidget/CnCountdownWidget.vue +222 -6
- package/src/components/CnDashboardPage/CnDashboardPage.vue +96 -2
- package/src/components/CnDataTable/CnDataTable.md +1 -0
- package/src/components/CnDataTable/CnDataTable.vue +39 -10
- package/src/components/CnIndexPage/CnIndexPage.vue +144 -7
- package/src/components/CnPageHeader/CnHeaderTrail.vue +140 -0
- package/src/components/CnPageHeader/CnPageHeader.md +11 -0
- package/src/components/CnPageHeader/CnPageHeader.vue +42 -0
- package/src/components/CnPagination/CnPagination.vue +10 -2
- package/src/components/CnRecordListWidget/CnRecordListWidget.vue +3 -3
- package/src/components/CnSettingsPage/CnSettingsPage.vue +26 -0
- package/src/components/CnTabs/CnTabs.vue +39 -2
- package/src/components/CnTabsWidget/CnTabsWidget.vue +106 -13
- package/src/components/CnVersionInfoCard/CnVersionInfoCard.vue +4 -3
- package/src/components/CnWidgetWrapper/CnWidgetWrapper.md +8 -0
- package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +31 -2
- package/src/composables/indexSources.js +9 -0
- package/src/css/dialog.css +14 -0
- package/src/css/look-board-index.css +27 -1
- package/src/css/look-board.css +27 -0
- package/src/css/page-header.css +16 -0
- package/src/schemas/app-manifest-v2.schema.json +22 -15
- package/src/utils/dueText.js +49 -8
- package/src/utils/validateManifestV2.compiled.js +3 -3
package/src/utils/dueText.js
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
*
|
|
7
7
|
* "3 dagen te laat" in the danger colour, "Vandaag", the short date for a
|
|
8
8
|
* day still to come ("morgen", "20 okt"), and a configured text when the
|
|
9
|
-
* field is empty ("Geen deadline").
|
|
9
|
+
* field is empty ("Geen deadline"). A day to come can read as a count instead
|
|
10
|
+
* ("nog 4 dagen", "nog 8 weken"). One formatter for record-list rows and
|
|
10
11
|
* table cells, built on the relative date (`formatRelativeDate`).
|
|
11
12
|
*
|
|
12
13
|
* @module utils/dueText
|
|
@@ -23,8 +24,12 @@ import { parseDateValue } from './dateVariant.js'
|
|
|
23
24
|
* Config (all optional): `todayLabel` (default "Due today"), `overdueLabel`
|
|
24
25
|
* `{ one, other }` with `{count}` (default "{count} day overdue" / "{count} days
|
|
25
26
|
* overdue"), `emptyText` (shown when the field is empty; without it an empty
|
|
26
|
-
* field reads as nothing)
|
|
27
|
-
*
|
|
27
|
+
* field reads as nothing), `upcomingLabel` `{ one, other }` with `{count}`
|
|
28
|
+
* (a day to come reads as the days left instead of the date), and
|
|
29
|
+
* `upcomingWeeksLabel` `{ one, other }` (from `upcomingWeeksFrom` days left,
|
|
30
|
+
* default 35, it reads the weeks left, rounded). Texts go through `translate`
|
|
31
|
+
* before `{count}` is filled. Tones: `danger` (overdue), `today`, `upcoming`,
|
|
32
|
+
* `empty`.
|
|
28
33
|
*
|
|
29
34
|
* @param {unknown} value A Date, a timestamp or an ISO string.
|
|
30
35
|
* @param {object} [config] The `due` config.
|
|
@@ -41,10 +46,9 @@ export function resolveDue(value, config, translate = (text) => text, now = new
|
|
|
41
46
|
}
|
|
42
47
|
const days = ageInDays(date, now)
|
|
43
48
|
if (days > 0) {
|
|
44
|
-
const
|
|
45
|
-
if (
|
|
46
|
-
|
|
47
|
-
return { text: template.replace(/\{count\}/g, String(days)), tone: 'danger' }
|
|
49
|
+
const overdue = pluralLabel(cfg.overdueLabel, days, translate)
|
|
50
|
+
if (overdue !== null) {
|
|
51
|
+
return { text: overdue, tone: 'danger' }
|
|
48
52
|
}
|
|
49
53
|
return { text: n('nextcloud-vue', '{count} day overdue', '{count} days overdue', days, { count: days }), tone: 'danger' }
|
|
50
54
|
}
|
|
@@ -52,5 +56,42 @@ export function resolveDue(value, config, translate = (text) => text, now = new
|
|
|
52
56
|
const label = typeof cfg.todayLabel === 'string' && cfg.todayLabel !== '' ? translate(cfg.todayLabel) : t('nextcloud-vue', 'Due today')
|
|
53
57
|
return { text: label, tone: 'today' }
|
|
54
58
|
}
|
|
55
|
-
return { text: formatRelativeDate(date, { now }), tone: 'upcoming' }
|
|
59
|
+
return { text: upcomingText(-days, cfg, translate) ?? formatRelativeDate(date, { now }), tone: 'upcoming' }
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* The days or weeks left before a date to come, or null without `upcomingLabel`.
|
|
64
|
+
*
|
|
65
|
+
* @param {number} left Whole days left, at least 1.
|
|
66
|
+
* @param {object} cfg The `due` config.
|
|
67
|
+
* @param {(text: string) => string} translate The host's translate.
|
|
68
|
+
* @return {string|null} The text, or null.
|
|
69
|
+
* @spec openspec/changes/due-text-upcoming-count/specs/due-text-upcoming-count/spec.md#requirement-a-due-date-to-come-can-read-as-the-time-left
|
|
70
|
+
*/
|
|
71
|
+
function upcomingText(left, cfg, translate) {
|
|
72
|
+
const from = Number(cfg.upcomingWeeksFrom)
|
|
73
|
+
const weeksFrom = Number.isFinite(from) && from > 0 ? from : 35
|
|
74
|
+
if (left >= weeksFrom) {
|
|
75
|
+
const weeks = pluralLabel(cfg.upcomingWeeksLabel, Math.round(left / 7), translate)
|
|
76
|
+
if (weeks !== null) {
|
|
77
|
+
return weeks
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return pluralLabel(cfg.upcomingLabel, left, translate)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* A `{ one, other }` label with `{count}` filled, or null when none is configured.
|
|
85
|
+
*
|
|
86
|
+
* @param {unknown} labels The configured label pair.
|
|
87
|
+
* @param {number} count The count.
|
|
88
|
+
* @param {(text: string) => string} translate The host's translate.
|
|
89
|
+
* @return {string|null} The text, or null.
|
|
90
|
+
*/
|
|
91
|
+
function pluralLabel(labels, count, translate) {
|
|
92
|
+
if (!labels || typeof labels !== 'object' || !(labels.one || labels.other)) {
|
|
93
|
+
return null
|
|
94
|
+
}
|
|
95
|
+
const template = translate((count === 1 ? labels.one : labels.other) || labels.other || labels.one)
|
|
96
|
+
return template.replace(/\{count\}/g, String(count))
|
|
56
97
|
}
|