@conduction/nextcloud-vue 2.56.0-beta.64 → 2.56.0-beta.65

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.
Files changed (33) hide show
  1. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +2 -1
  2. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
  3. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
  4. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +20 -0
  5. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  6. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +68 -61
  7. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  8. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +37 -12
  9. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  10. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  11. package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue2.js.map +1 -1
  12. package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue3.js +1 -1
  13. package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue3.js.map +1 -1
  14. package/dist/esm/library-style.js +1 -1
  15. package/dist/esm/nextcloud-vue.css +98 -31
  16. package/dist/esm/utils/savedViewHelpers.js +40 -3
  17. package/dist/esm/utils/savedViewHelpers.js.map +1 -1
  18. package/dist/nextcloud-vue.cjs.js +198 -109
  19. package/dist/nextcloud-vue.cjs.js.map +2 -2
  20. package/dist/nextcloud-vue.css +98 -31
  21. package/package.json +1 -1
  22. package/src/components/CnAppRoot/CnAppRoot.vue +2 -1
  23. package/src/components/CnDetailPage/CnDetailPage.vue +35 -11
  24. package/src/components/CnIndexPage/CnIndexPage.md +1 -1
  25. package/src/components/CnIndexPage/CnIndexPage.vue +37 -12
  26. package/src/components/CnIndexSidebar/CnIndexSidebar.md +1 -1
  27. package/src/components/CnIndexSidebar/CnIndexSidebar.vue +2 -2
  28. package/src/css/board.css +5 -2
  29. package/src/css/look-board-detail.css +19 -7
  30. package/src/css/look-board-index.css +14 -10
  31. package/src/css/look-board-reports.css +1 -1
  32. package/src/css/look-board.css +54 -9
  33. package/src/utils/savedViewHelpers.js +39 -2
@@ -55,7 +55,7 @@ import { isRowActionVisible, rowActionPayload } from '../../utils/rowActionItem.
55
55
  import { isNewTabClick, preventMiddleClickAutoscroll, isRowMiddleClick, isNewTabHandled, markNewTabHandled } from '../../utils/rowAuxClick.js';
56
56
  import { compileRowClass } from '../../utils/rowClassRules.js';
57
57
  import { DEFAULT_ROW_INDICATOR_CAP } from '../../utils/rowIndicators.js';
58
- import { defaultFilterViews, viewMatchesScope, normalizeSharedWith, extractViewState, buildRouteQueryFromViewState, extractViewStateFromRouteQuery, buildViewCreatePayload, savedViewScope, schemaSlug } from '../../utils/savedViewHelpers.js';
58
+ import { defaultFilterViews, pageOffersSavedViews, viewMatchesScope, normalizeSharedWith, extractViewState, buildRouteQueryFromViewState, extractViewStateFromRouteQuery, buildViewCreatePayload, savedViewScope, schemaSlug } from '../../utils/savedViewHelpers.js';
59
59
  import { savedViewOverrides, savedViewBadge } from '../../utils/savedViewOverrides.js';
60
60
  import { fieldsFromSchema, columnsFromSchema } from '../../utils/schema.js';
61
61
  import { resolveScopeLayout, resolveScopePresentation } from '../../utils/scopeListLayout.js';
@@ -180,11 +180,22 @@ function declaredFilterFields(props) {
180
180
  * @return {object} The `{ fieldKey: values }` map, empty when the link carries none.
181
181
  */
182
182
  function namedFiltersFromRoute(instance, props) {
183
+ const route = instance && instance.proxy && instance.proxy.$route;
184
+ return namedFiltersFromQuery((route && route.query) || {}, props)
185
+ }
186
+
187
+ /**
188
+ * The named-source filters a query carries, as `namedFiltersFromRoute` reads them.
189
+ *
190
+ * @param {object} query The route query.
191
+ * @param {object} props The CnIndexPage props.
192
+ *
193
+ * @return {object} The `{ fieldKey: values }` map.
194
+ */
195
+ function namedFiltersFromQuery(query, props) {
183
196
  if (!props.entitySource) {
184
197
  return {}
185
198
  }
186
- const route = instance && instance.proxy && instance.proxy.$route;
187
- const query = (route && route.query) || {};
188
199
  const properties = declaredFilterFields(props);
189
200
  const out = {};
190
201
 
@@ -1627,9 +1638,11 @@ var script = {
1627
1638
  },
1628
1639
 
1629
1640
  /**
1630
- * Opt-in flag for the saved-views control (saved-views-ui) rendered
1631
- * in the toolbar. Defaults to `false` — an app must explicitly
1632
- * enable it per page. When `true`, a Views dropdown lists the
1641
+ * Saved views (saved-views-ui). Unset, the sidebar's Views tab is on
1642
+ * for every page with a sidebar and a source a view can be scoped to
1643
+ * (register and schema, `entitySource` or `savedViewsScope`); `false`
1644
+ * turns it off. `true` also forces the sidebar and adds the toolbar
1645
+ * control, where a Views dropdown lists the
1633
1646
  * current user's OpenRegister saved-search views
1634
1647
  * (`GET /apps/openregister/api/views`); applying one writes its
1635
1648
  * stored filters/search/sort into the route query (reusing the
@@ -1641,7 +1654,7 @@ var script = {
1641
1654
  */
1642
1655
  allowSavedViews: {
1643
1656
  type: Boolean,
1644
- default: false,
1657
+ default: null,
1645
1658
  },
1646
1659
 
1647
1660
  /**
@@ -4203,7 +4216,7 @@ var script = {
4203
4216
  * @spec openspec/changes/saved-views-manage-and-defaults/tasks.md#task-6
4204
4217
  */
4205
4218
  savedViewsForSidebar() {
4206
- if (!this.allowSavedViews) {
4219
+ if (!this.savedViewsOffered) {
4207
4220
  return null
4208
4221
  }
4209
4222
  return {
@@ -5344,7 +5357,16 @@ var script = {
5344
5357
  * @return {{ scope: string, register: string, schema: object|string|null }} The page's source.
5345
5358
  */
5346
5359
  savedViewsPage() {
5347
- return { scope: this.savedViewsScope, register: this.register, schema: this.schema }
5360
+ return { scope: this.savedViewsScope, register: this.register, schema: this.schema, source: this.entitySource }
5361
+ },
5362
+
5363
+ /**
5364
+ * Whether this page offers saved views in its sidebar.
5365
+ *
5366
+ * @return {boolean}
5367
+ */
5368
+ savedViewsOffered() {
5369
+ return pageOffersSavedViews(this)
5348
5370
  },
5349
5371
 
5350
5372
  /**
@@ -6917,7 +6939,7 @@ var script = {
6917
6939
  created() {
6918
6940
  this.applyViewModeFromRoute();
6919
6941
  this.pushAiContext();
6920
- if (this.allowSavedViews) {
6942
+ if (this.savedViewsOffered) {
6921
6943
  this.fetchSavedViews();
6922
6944
  }
6923
6945
  this.selfActions = createSelfModeActions({
@@ -10025,8 +10047,8 @@ var script = {
10025
10047
 
10026
10048
  /**
10027
10049
  * Fetch the current user's saved views (own + public) from
10028
- * OpenRegister's views API. Called from created() when
10029
- * `allowSavedViews` is enabled.
10050
+ * OpenRegister's views API. Called from created() when the page
10051
+ * offers saved views.
10030
10052
  */
10031
10053
  async fetchSavedViews() {
10032
10054
  this.savedViewsLoading = true;
@@ -10096,6 +10118,9 @@ var script = {
10096
10118
  query.savedView = this.appliedSavedViewId;
10097
10119
  }
10098
10120
  const nav = this.$router.replace({ query });
10121
+ if (this.isNamedSource) {
10122
+ this.namedActiveFilters = namedFiltersFromQuery(query, this);
10123
+ }
10099
10124
  // Swallow the duplicate-navigation rejection (Vue Router 3)
10100
10125
  // when the applied view matches the current query.
10101
10126
  if (nav && typeof nav.catch === 'function') {