@conduction/nextcloud-vue 2.78.0 → 2.79.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/bundled-packages.json +0 -2
- package/dist/esm/bundled-packages.json +0 -2
- package/dist/esm/components/CnActionsBar/CnActionsBar.vue2.js.map +1 -1
- package/dist/esm/components/CnActionsBar/CnActionsBar.vue3.js +113 -104
- package/dist/esm/components/CnActionsBar/CnActionsBar.vue3.js.map +1 -1
- package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +12 -2
- package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
- package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js +80 -0
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue2.js.map +1 -1
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js +115 -91
- package/dist/esm/components/CnCellRenderer/CnCellRenderer.vue3.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +139 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +140 -92
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
- package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +77 -0
- package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
- package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +4 -2
- package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js +61 -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/CnFilesBrowser/CnFilesBrowser.vue2.js +173 -5
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js +181 -99
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/filesBrowser.js +29 -11
- package/dist/esm/components/CnFilesBrowser/filesBrowser.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/openRegisterSource.js +252 -0
- package/dist/esm/components/CnFilesBrowser/openRegisterSource.js.map +1 -0
- package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js +1 -1
- package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js.map +1 -1
- package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +25 -2
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +3 -2
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js +100 -3
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js +4 -2
- package/dist/esm/components/CnObjectSidebar/CnFilesTab.vue3.js.map +1 -1
- package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue2.js +3 -2
- package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue2.js.map +1 -1
- package/dist/esm/components/CnQuickFilterBar/CnQuickFilterBar.vue3.js.map +1 -1
- package/dist/esm/components/CnSavedViewsControl/CnSavedViewsControl.vue2.js.map +1 -1
- package/dist/esm/components/CnSavedViewsControl/CnSavedViewsControl.vue3.js +1 -1
- package/dist/esm/components/CnSavedViewsControl/CnSavedViewsControl.vue3.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +30 -1
- 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/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js +13 -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/composables/useAppManifest.js +8 -3
- package/dist/esm/composables/useAppManifest.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 +61 -1
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +106 -2
- package/dist/esm/l10n/nl.json.js.map +1 -1
- package/dist/esm/nextcloud-vue.css +314 -15
- package/dist/esm/utils/boardDate.js +193 -0
- package/dist/esm/utils/boardDate.js.map +1 -0
- package/dist/esm/utils/dynamicProperties.js +5 -1
- package/dist/esm/utils/dynamicProperties.js.map +1 -1
- package/dist/esm/utils/validateManifestV2.compiled.js +57 -6
- package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
- package/dist/nextcloud-vue.cjs.js +2039 -581
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +314 -15
- package/l10n/en.json +61 -1
- package/l10n/nl.json +106 -2
- package/package.json +1 -1
- package/scripts/build-validators.js +26 -0
- package/src/components/CnActionsBar/CnActionsBar.vue +48 -39
- package/src/components/CnAppRoot/CnAppRoot.vue +12 -2
- package/src/components/CnCellRenderer/CnCellRenderer.vue +119 -2
- package/src/components/CnDashboardPage/CnDashboardPage.vue +219 -4
- package/src/components/CnDataTable/CnDataTable.md +2 -0
- package/src/components/CnDataTable/CnDataTable.vue +81 -2
- package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +61 -1
- package/src/components/CnFilesBrowser/CnFilesBrowser.vue +232 -11
- package/src/components/CnFilesBrowser/filesBrowser.js +43 -2
- package/src/components/CnFilesBrowser/index.js +1 -0
- package/src/components/CnFilesBrowser/openRegisterSource.js +248 -0
- package/src/components/CnFormDialog/CnFormDialog.vue +1 -1
- package/src/components/CnIndexPage/CnIndexPage.vue +27 -3
- package/src/components/CnObjectSidebar/CnFilesTab.vue +103 -4
- package/src/components/CnQuickFilterBar/CnQuickFilterBar.vue +3 -2
- package/src/components/CnSavedViewsControl/CnSavedViewsControl.vue +1 -1
- package/src/components/CnTabsWidget/CnTabsWidget.vue +30 -1
- package/src/components/CnWidgetObjectTable/CnWidgetObjectTable.vue +13 -0
- package/src/components/index.js +1 -1
- package/src/composables/useAppManifest.js +8 -3
- package/src/css/look-board-detail.css +10 -0
- package/src/css/look-board-index.css +92 -14
- package/src/css/look-board.css +77 -0
- package/src/css/table.css +37 -0
- package/src/index.js +4 -0
- package/src/schemas/app-manifest-v2.schema.json +46 -1
- package/src/utils/boardDate.js +189 -0
- package/src/utils/dynamicProperties.js +5 -1
- package/src/utils/validateManifestV2.compiled.js +57 -2
- package/dist/esm/_virtual/equal.js +0 -4
- package/dist/esm/_virtual/equal.js.map +0 -1
- package/dist/esm/_virtual/ucs2length.js +0 -4
- package/dist/esm/_virtual/ucs2length.js.map +0 -1
- package/dist/esm/node_modules/ajv/dist/runtime/equal.js +0 -9
- package/dist/esm/node_modules/ajv/dist/runtime/equal.js.map +0 -1
- package/dist/esm/node_modules/ajv/dist/runtime/ucs2length.js +0 -25
- package/dist/esm/node_modules/ajv/dist/runtime/ucs2length.js.map +0 -1
- package/dist/esm/node_modules/fast-deep-equal/index.js +0 -47
- package/dist/esm/node_modules/fast-deep-equal/index.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getCurrentUser } from '@nextcloud/auth';
|
|
2
|
+
import { translate, getCanonicalLocale } from '@nextcloud/l10n';
|
|
2
3
|
import { NcActions, NcActionButton, NcActionInput, NcActionSeparator, NcButton, NcLoadingIcon, NcSelect } from '@nextcloud/vue';
|
|
3
4
|
import { ref, provide, watch } from 'vue';
|
|
4
5
|
import CalendarRange from 'vue-material-design-icons/CalendarRange.vue';
|
|
@@ -19,6 +20,7 @@ import __sfc_main$g from '../CnKpiGrid/CnKpiGrid.vue.js';
|
|
|
19
20
|
import __sfc_main$f from '../CnSegmentedControl/CnSegmentedControl.vue.js';
|
|
20
21
|
import __sfc_main$6 from '../CnStatsBlockWidget/CnStatsBlockWidget.vue.js';
|
|
21
22
|
import __sfc_main$4 from '../CnTileWidget/CnTileWidget.vue.js';
|
|
23
|
+
import __sfc_main$h from '../CnWidgetGrid/CnWidgetIcon.vue.js';
|
|
22
24
|
import __sfc_main$7 from '../CnWidgetRefItem/CnWidgetRefItem.vue.js';
|
|
23
25
|
import __sfc_main$3 from '../CnWidgetRenderer/CnWidgetRenderer.vue.js';
|
|
24
26
|
import __sfc_main$2 from '../CnWidgetWrapper/CnWidgetWrapper.vue.js';
|
|
@@ -184,6 +186,7 @@ var script = {
|
|
|
184
186
|
CnLeafMountHost: __sfc_main$e,
|
|
185
187
|
CnSegmentedControl: __sfc_main$f,
|
|
186
188
|
CnKpiGrid: __sfc_main$g,
|
|
189
|
+
CnWidgetIcon: __sfc_main$h,
|
|
187
190
|
},
|
|
188
191
|
|
|
189
192
|
mixins: [pageViews],
|
|
@@ -284,6 +287,50 @@ var script = {
|
|
|
284
287
|
default: () => [],
|
|
285
288
|
},
|
|
286
289
|
|
|
290
|
+
/**
|
|
291
|
+
* Greet the reader in the header subtitle (manifest `config.greeting`):
|
|
292
|
+
* `true` (or `"first"`) writes "Good afternoon, Pieter · Monday 5
|
|
293
|
+
* October 2026", `"full"` uses the whole display name. The page
|
|
294
|
+
* `description`, when set, follows after another middle dot. Off by
|
|
295
|
+
* default: the subtitle is the description alone, as before.
|
|
296
|
+
*
|
|
297
|
+
* @spec openspec/changes/screens-dashboard-greeting-header/specs/dashboard-page/spec.md#requirement-the-header-subtitle-can-greet-the-reader
|
|
298
|
+
* @type {boolean|string}
|
|
299
|
+
*/
|
|
300
|
+
greeting: {
|
|
301
|
+
type: [Boolean, String],
|
|
302
|
+
default: false,
|
|
303
|
+
},
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Links drawn as small pills on the switch row under the header
|
|
307
|
+
* (manifest `config.viewLinks`), as DqMijnWerk's "Uw wachtrij / Aan
|
|
308
|
+
* mij toegewezen / Dag afsluiten". Each `{ label, icon?, route?,
|
|
309
|
+
* href? }`: `route` is a route name or a `{ name, params?, query? }`
|
|
310
|
+
* location, `href` a plain URL; `label` goes through the host
|
|
311
|
+
* translate function. An entry without a label or a target is skipped.
|
|
312
|
+
*
|
|
313
|
+
* @spec openspec/changes/screens-dashboard-greeting-header/specs/dashboard-page/spec.md#requirement-a-switch-row-carries-the-view-switch-and-link-pills
|
|
314
|
+
* @type {Array<object>}
|
|
315
|
+
*/
|
|
316
|
+
viewLinks: {
|
|
317
|
+
type: Array,
|
|
318
|
+
default: () => [],
|
|
319
|
+
},
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* Whether the header draws the page Actions menu (manifest
|
|
323
|
+
* `config.showActionsMenu`). `false` removes it, for a board page
|
|
324
|
+
* whose header carries only the buildiq square and the primary.
|
|
325
|
+
*
|
|
326
|
+
* @spec openspec/changes/screens-dashboard-greeting-header/specs/dashboard-page/spec.md#requirement-the-header-can-drop-the-page-actions-menu
|
|
327
|
+
* @type {boolean}
|
|
328
|
+
*/
|
|
329
|
+
showActionsMenu: {
|
|
330
|
+
type: Boolean,
|
|
331
|
+
default: true,
|
|
332
|
+
},
|
|
333
|
+
|
|
287
334
|
/**
|
|
288
335
|
* Whether a widget draws its overflow Actions menu when neither its
|
|
289
336
|
* placement nor its definition says (`showActions`). `false` (manifest
|
|
@@ -976,6 +1023,97 @@ var script = {
|
|
|
976
1023
|
return typeof this.cnTranslate === 'function' ? this.cnTranslate : (key) => key
|
|
977
1024
|
},
|
|
978
1025
|
|
|
1026
|
+
/**
|
|
1027
|
+
* The greeting for the time of day, with the reader's first (or
|
|
1028
|
+
* full) name when known, or '' when `greeting` is off.
|
|
1029
|
+
*
|
|
1030
|
+
* @spec openspec/changes/screens-dashboard-greeting-header/specs/dashboard-page/spec.md#requirement-the-header-subtitle-can-greet-the-reader
|
|
1031
|
+
* @return {string}
|
|
1032
|
+
*/
|
|
1033
|
+
greetingLine() {
|
|
1034
|
+
if (this.greeting !== true && this.greeting !== 'first' && this.greeting !== 'full') {
|
|
1035
|
+
return ''
|
|
1036
|
+
}
|
|
1037
|
+
let user;
|
|
1038
|
+
try {
|
|
1039
|
+
user = getCurrentUser();
|
|
1040
|
+
} catch {
|
|
1041
|
+
user = null;
|
|
1042
|
+
}
|
|
1043
|
+
const displayName = (user && typeof user.displayName === 'string') ? user.displayName.trim() : '';
|
|
1044
|
+
const name = this.greeting === 'full' ? displayName : displayName.split(/\s+/)[0];
|
|
1045
|
+
const hour = new Date().getHours();
|
|
1046
|
+
if (hour < 12) {
|
|
1047
|
+
return name ? translate('nextcloud-vue', 'Good morning, {name}', { name }) : translate('nextcloud-vue', 'Good morning')
|
|
1048
|
+
}
|
|
1049
|
+
if (hour < 18) {
|
|
1050
|
+
return name ? translate('nextcloud-vue', 'Good afternoon, {name}', { name }) : translate('nextcloud-vue', 'Good afternoon')
|
|
1051
|
+
}
|
|
1052
|
+
return name ? translate('nextcloud-vue', 'Good evening, {name}', { name }) : translate('nextcloud-vue', 'Good evening')
|
|
1053
|
+
},
|
|
1054
|
+
|
|
1055
|
+
/**
|
|
1056
|
+
* The header subtitle: with `greeting` on, the greeting, today's date
|
|
1057
|
+
* written out and the description, joined by a middle dot; else the
|
|
1058
|
+
* description alone, as before.
|
|
1059
|
+
*
|
|
1060
|
+
* @spec openspec/changes/screens-dashboard-greeting-header/specs/dashboard-page/spec.md#requirement-the-header-subtitle-can-greet-the-reader
|
|
1061
|
+
* @return {string}
|
|
1062
|
+
*/
|
|
1063
|
+
subtitleText() {
|
|
1064
|
+
const description = this.description ? this.resolvedDescription : '';
|
|
1065
|
+
const greeting = this.greetingLine;
|
|
1066
|
+
if (greeting === '') {
|
|
1067
|
+
return description
|
|
1068
|
+
}
|
|
1069
|
+
const options = { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' };
|
|
1070
|
+
let date;
|
|
1071
|
+
try {
|
|
1072
|
+
date = new Intl.DateTimeFormat(getCanonicalLocale() || undefined, options).format(new Date());
|
|
1073
|
+
} catch {
|
|
1074
|
+
date = new Intl.DateTimeFormat(undefined, options).format(new Date());
|
|
1075
|
+
}
|
|
1076
|
+
return [greeting, date, description].filter((part) => part !== '').join(' · ')
|
|
1077
|
+
},
|
|
1078
|
+
|
|
1079
|
+
/**
|
|
1080
|
+
* Whether the page's view switch sits on the switch row under the
|
|
1081
|
+
* header (board look) rather than among the header actions.
|
|
1082
|
+
*
|
|
1083
|
+
* @spec openspec/changes/screens-dashboard-greeting-header/specs/dashboard-page/spec.md#requirement-a-switch-row-carries-the-view-switch-and-link-pills
|
|
1084
|
+
* @return {boolean}
|
|
1085
|
+
*/
|
|
1086
|
+
switchInRow() {
|
|
1087
|
+
return this.isBoardLook && this.showsPageViewSwitch
|
|
1088
|
+
},
|
|
1089
|
+
|
|
1090
|
+
/**
|
|
1091
|
+
* `viewLinks` as render descriptors: a router link for a route, an
|
|
1092
|
+
* anchor for an href, the label translated. Entries without a label
|
|
1093
|
+
* or a target are dropped.
|
|
1094
|
+
*
|
|
1095
|
+
* @spec openspec/changes/screens-dashboard-greeting-header/specs/dashboard-page/spec.md#requirement-a-switch-row-carries-the-view-switch-and-link-pills
|
|
1096
|
+
* @return {Array<{key: string, tag: string, attrs: object, label: string, icon: string}>}
|
|
1097
|
+
*/
|
|
1098
|
+
resolvedViewLinks() {
|
|
1099
|
+
const links = Array.isArray(this.viewLinks) ? this.viewLinks : [];
|
|
1100
|
+
const out = [];
|
|
1101
|
+
links.forEach((link, index) => {
|
|
1102
|
+
if (!link || typeof link.label !== 'string' || link.label === '') {
|
|
1103
|
+
return
|
|
1104
|
+
}
|
|
1105
|
+
const icon = typeof link.icon === 'string' ? link.icon : '';
|
|
1106
|
+
const label = this.effectiveTranslate(link.label);
|
|
1107
|
+
if (link.route && this.$router) {
|
|
1108
|
+
const to = typeof link.route === 'string' ? { name: link.route } : link.route;
|
|
1109
|
+
out.push({ key: `route-${index}`, tag: 'router-link', attrs: { to }, label, icon });
|
|
1110
|
+
} else if (typeof link.href === 'string' && link.href !== '') {
|
|
1111
|
+
out.push({ key: `href-${index}`, tag: 'a', attrs: { href: link.href }, label, icon });
|
|
1112
|
+
}
|
|
1113
|
+
});
|
|
1114
|
+
return out
|
|
1115
|
+
},
|
|
1116
|
+
|
|
979
1117
|
/**
|
|
980
1118
|
* The page title run through the host translate function so a
|
|
981
1119
|
* manifest-authored source string localises.
|