@conduction/nextcloud-vue 2.138.0 → 2.139.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.
Files changed (46) hide show
  1. package/dist/esm/components/CnChartWidget/CnChartWidget.vue.js +1 -1
  2. package/dist/esm/components/CnChartWidget/CnChartWidget.vue2.js.map +1 -1
  3. package/dist/esm/components/CnChartWidget/CnChartWidget.vue3.js.map +1 -1
  4. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue.js +1 -1
  5. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js.map +1 -1
  6. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js.map +1 -1
  7. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue.js +1 -1
  8. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js.map +1 -1
  9. package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js.map +1 -1
  10. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +99 -4
  11. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  12. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +2 -2
  13. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  14. package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue2.js +2 -0
  15. package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue2.js.map +1 -1
  16. package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue3.js +13 -2
  17. package/dist/esm/components/CnIndexSidebar/CnIndexSidebar.vue3.js.map +1 -1
  18. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue.js +1 -1
  19. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js +1 -1
  20. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js.map +1 -1
  21. package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js.map +1 -1
  22. package/dist/esm/composables/indexSources.js +43 -4
  23. package/dist/esm/composables/indexSources.js.map +1 -1
  24. package/dist/esm/l10n/en.json.js +3 -1
  25. package/dist/esm/l10n/en.json.js.map +1 -1
  26. package/dist/esm/l10n/nl.json.js +3 -1
  27. package/dist/esm/l10n/nl.json.js.map +1 -1
  28. package/dist/esm/library-style.js +1 -1
  29. package/dist/esm/nextcloud-vue.css +340 -238
  30. package/dist/nextcloud-vue.cjs.js +166 -19
  31. package/dist/nextcloud-vue.cjs.js.map +2 -2
  32. package/dist/nextcloud-vue.css +340 -238
  33. package/l10n/en.json +3 -1
  34. package/l10n/nl.json +3 -1
  35. package/package.json +1 -1
  36. package/src/components/CnChartWidget/CnChartWidget.vue +4 -0
  37. package/src/components/CnFactsWidget/CnFactsWidget.vue +6 -4
  38. package/src/components/CnFilesBrowser/CnFilesBrowser.vue +11 -0
  39. package/src/components/CnIndexPage/CnIndexPage.vue +101 -6
  40. package/src/components/CnIndexSidebar/CnIndexSidebar.vue +10 -2
  41. package/src/components/CnObjectListWidget/CnObjectListWidget.vue +1 -1
  42. package/src/composables/indexSources.js +43 -4
  43. package/src/css/dialog.css +18 -0
  44. package/src/css/look-board-detail.css +24 -0
  45. package/src/css/look-board-index.css +21 -0
  46. package/src/css/look-board.css +21 -0
@@ -3602,7 +3602,9 @@ var translations$s = {
3602
3602
  "Search a person or group": "Search a person or group",
3603
3603
  "Now: by {order}.": "Now: by {order}.",
3604
3604
  "You save the order along with a view.": "You save the order along with a view.",
3605
- me: "me"
3605
+ me: "me",
3606
+ "Open profile": "Open profile",
3607
+ "Link a contact from your address book.": "Link a contact from your address book."
3606
3608
  };
3607
3609
  var plurals$1 = {
3608
3610
  "{count} member": [
@@ -6612,7 +6614,9 @@ var translations$c = {
6612
6614
  "Search a person or group": "Zoek een persoon of groep",
6613
6615
  "Now: by {order}.": "Nu: op {order}.",
6614
6616
  "You save the order along with a view.": "De sortering bewaart u mee in een weergave.",
6615
- me: "ik"
6617
+ me: "ik",
6618
+ "Open profile": "Profiel openen",
6619
+ "Link a contact from your address book.": "Koppel een contact uit je adresboek."
6616
6620
  };
6617
6621
  var plurals = {
6618
6622
  "{count} member": [
@@ -26871,7 +26875,7 @@ function render$8y(_ctx, _cache, $props, $setup, $data, $options) {
26871
26875
  }
26872
26876
 
26873
26877
  script$8z.render = render$8y;
26874
- script$8z.__scopeId = "data-v-8e52ae5c";
26878
+ script$8z.__scopeId = "data-v-56aabaf0";
26875
26879
  const __sfc_main$8t = script$8z;
26876
26880
 
26877
26881
  /**
@@ -119711,7 +119715,7 @@ function render$70(_ctx, _cache, $props, $setup, $data, $options) {
119711
119715
  }
119712
119716
 
119713
119717
  script$71.render = render$70;
119714
- script$71.__scopeId = "data-v-7ce558e7";
119718
+ script$71.__scopeId = "data-v-ad907164";
119715
119719
  const __sfc_main$6X = script$71;
119716
119720
 
119717
119721
  /**
@@ -142039,7 +142043,7 @@ function fillRowTemplate(template, row) {
142039
142043
  * and its count (DqZoekresultaten).
142040
142044
  *
142041
142045
  * `sourceConfig.kinds` lists what is searched:
142042
- * `{ id, label, register, schema, titleField?, subtitleField?, subtitleTemplate?, statusField?, statusResolve?, linkedField?, linkedTemplate?, href?, limit? }`
142046
+ * `{ id, label, register, schema, titleField?, subtitleField?, subtitleTemplate?, statusField?, statusResolve?, linkedField?, linkedTemplate?, linkedUser?, href?, limit? }`
142043
142047
  * for objects (OpenRegister's `_search`, so the reader sees what they may
142044
142048
  * read), or `{ id, label, files: true, limit? }` for the reader's files
142045
142049
  * (Nextcloud's unified search). The term is `sourceConfig.term`, else the
@@ -142055,6 +142059,8 @@ function fillRowTemplate(template, row) {
142055
142059
  * column, drawn when a kind declares one; `sourceConfig.linkedLabel` names it.
142056
142060
  * `subtitleTemplate` ("Case {identifier}", translated) fills the line under a
142057
142061
  * result, else `subtitleField`.
142062
+ * `linkedUser: true` reads that value as a user id and shows the user's
142063
+ * display name. `sourceConfig.columnWidths` sets a width per column key.
142058
142064
  * The page's title and count line can name the term as `{term}`, and the
142059
142065
  * count is the active kind's total. Kind, link and status are filterable.
142060
142066
  *
@@ -142064,6 +142070,23 @@ function fillRowTemplate(template, row) {
142064
142070
  * @return {object} The source adapter.
142065
142071
  * @spec openspec/changes/index-search-source/specs/index-page/spec.md#requirement-an-index-page-can-search-several-schemas-and-files
142066
142072
  */
142073
+ /**
142074
+ * Columns with the widths a page names per column key
142075
+ * (`sourceConfig.columnWidths`, `{ title: '250px' }`); a column it does not
142076
+ * name keeps none.
142077
+ *
142078
+ * @param {Array<object>} columns The columns.
142079
+ * @param {object|undefined} widths The widths by key.
142080
+ * @return {Array<object>} The columns.
142081
+ * @spec openspec/changes/search-linked-user-and-widths/specs/search-linked-user-and-widths/spec.md
142082
+ */
142083
+ function withColumnWidths(columns, widths) {
142084
+ if (!widths || typeof widths !== 'object') {
142085
+ return columns
142086
+ }
142087
+ return columns.map((col) => (typeof widths[col.key] === 'string' && widths[col.key] !== '' ? { ...col, width: widths[col.key] } : col))
142088
+ }
142089
+
142067
142090
  function searchSource(config = {}, context = {}) {
142068
142091
  const translate = typeof context.translate === 'function' ? context.translate : (text) => text;
142069
142092
  const kinds = (Array.isArray(config && config.kinds) ? config.kinds : [])
@@ -142159,12 +142182,20 @@ function searchSource(config = {}, context = {}) {
142159
142182
  return kind.subtitleField ? String(readPath$8(object, kind.subtitleField) ?? '') : ''
142160
142183
  };
142161
142184
 
142185
+ // `linkedUser`: the Linked cell holds a user id; name the user instead.
142186
+ const linkedUserNames = async (kind, objects) => {
142187
+ const ids = [...new Set(objects.map((object) => linkedOf(kind, object)).filter((id) => id !== ''))];
142188
+ const options = await Promise.all(ids.map((id) => resolveNextcloudUser(id).catch(() => null)));
142189
+ return new Map(ids.map((id, index) => [id, (options[index] && options[index].label) || id]))
142190
+ };
142191
+
142162
142192
  const searchObjects = async (axios, kind, term) => {
142163
142193
  const url = router.generateUrl('/apps/openregister/api/objects/{register}/{schema}', { register: kind.register, schema: kind.schema });
142164
142194
  const res = await axios.get(url, { params: { _search: term, _limit: kind.limit || 20 } });
142165
142195
  const body = (res && res.data) || {};
142166
142196
  const results = Array.isArray(body.results) ? body.results : (Array.isArray(body) ? body : []);
142167
142197
  const labels = kind.statusResolve && kind.statusField ? await statusLabels(kind) : null;
142198
+ const userNames = kind.linkedUser === true ? await linkedUserNames(kind, results) : null;
142168
142199
  return {
142169
142200
  total: typeof body.total === 'number' ? body.total : results.length,
142170
142201
  rows: results.map((object) => {
@@ -142181,7 +142212,7 @@ function searchSource(config = {}, context = {}) {
142181
142212
  title: String(readPath$8(object, kind.titleField || 'title') ?? object.name ?? id ?? ''),
142182
142213
  subtitle: subtitleOf(kind, object),
142183
142214
  status,
142184
- linked: linkedOf(kind, object),
142215
+ linked: userNames ? (userNames.get(linkedOf(kind, object)) || linkedOf(kind, object)) : linkedOf(kind, object),
142185
142216
  href: kind.href ? router.generateUrl(fillRowTemplate(kind.href, { ...object, id })) : '',
142186
142217
  object,
142187
142218
  }
@@ -142289,7 +142320,7 @@ function searchSource(config = {}, context = {}) {
142289
142320
  */
142290
142321
  loading: () => state.loading,
142291
142322
 
142292
- columns: [
142323
+ columns: withColumnWidths([
142293
142324
  { key: 'title', label: l10n.translate('nextcloud-vue', 'Result'), secondary: 'subtitle', sortable: true },
142294
142325
  // `kindAsText`: what one row is, as plain text ("Zaak", "Lantaarnpaal",
142295
142326
  // DqZoekresultaten), instead of the plural kind as a pill.
@@ -142304,7 +142335,7 @@ function searchSource(config = {}, context = {}) {
142304
142335
  widgetProps: { colorMap: (config && config.statusColorMap) || {} },
142305
142336
  sortable: true,
142306
142337
  },
142307
- ],
142338
+ ], config && config.columnWidths),
142308
142339
 
142309
142340
  /**
142310
142341
  * Every column header carries a filter button (DqZoekresultaten); the
@@ -142554,6 +142585,15 @@ function usersSource() {
142554
142585
  /** A filter button on every head (DqAfdelingen); the members read are narrowed here. */
142555
142586
  headerFilters: true,
142556
142587
 
142588
+ /**
142589
+ * A member's row menu (DqAfdelingen): their Nextcloud profile, and an
142590
+ * e-mail when they have an address. Both are links.
142591
+ */
142592
+ rowActions: [
142593
+ { id: 'open-profile', label: l10n.translate('nextcloud-vue', 'Open profile'), icon: AccountOutline, href: (row) => router.generateUrl(`/u/${encodeURIComponent(row.id)}`) },
142594
+ { id: 'send-email', label: l10n.translate('nextcloud-vue', 'Send email'), icon: EmailOutline, href: (row) => `mailto:${row.email}`, visible: (row) => Boolean(row && row.email) },
142595
+ ],
142596
+
142557
142597
  showAdd: false,
142558
142598
  }
142559
142599
  }
@@ -157062,7 +157102,7 @@ var script$6b = {
157062
157102
  // `secondary` (a second, muted line under the cell) rides
157063
157103
  // along too: the table draws it, and dropping it here took the
157064
157104
  // list rows' second line away (zuiddrecht-pixel-gaps-3).
157065
- for (const k of ['format', 'widget', 'widgetProps', 'formatter', 'align', 'width', 'type', 'enum', 'enumLabels', 'sortable', 'secondary', 'colorMap', 'grow']) {
157105
+ for (const k of ['format', 'widget', 'widgetProps', 'formatter', 'align', 'width', 'type', 'enum', 'enumLabels', 'sortable', 'secondary', 'colorMap', 'grow', 'cellClass']) {
157066
157106
  if (c[k] !== undefined) {
157067
157107
  out[k] = c[k];
157068
157108
  }
@@ -159612,7 +159652,7 @@ function render$6a(_ctx, _cache, $props, $setup, $data, $options) {
159612
159652
  }
159613
159653
 
159614
159654
  script$6b.render = render$6a;
159615
- script$6b.__scopeId = "data-v-445e213c";
159655
+ script$6b.__scopeId = "data-v-3a0165c8";
159616
159656
  const __sfc_main$65 = script$6b;
159617
159657
 
159618
159658
  const DEFAULT_CONTENT$s = Object.freeze({
@@ -238189,7 +238229,7 @@ function render$47(_ctx, _cache, $props, $setup, $data, $options) {
238189
238229
  }
238190
238230
 
238191
238231
  script$48.render = render$47;
238192
- script$48.__scopeId = "data-v-e3954500";
238232
+ script$48.__scopeId = "data-v-4fd0d81c";
238193
238233
  const __sfc_main$48 = script$48;
238194
238234
 
238195
238235
  /**
@@ -344082,6 +344122,7 @@ var script$2d = {
344082
344122
  Pin,
344083
344123
  PinOutline,
344084
344124
  InformationOutline,
344125
+ Magnify,
344085
344126
  },
344086
344127
 
344087
344128
  inject: {
@@ -345170,6 +345211,7 @@ const _hoisted_29$a = { class: "cn-index-sidebar__section" };
345170
345211
  function render$2c(_ctx, _cache, $props, $setup, $data, $options) {
345171
345212
  const _component_CnIcon = vue$1.resolveComponent("CnIcon");
345172
345213
  const _component_FilterOutline = vue$1.resolveComponent("FilterOutline");
345214
+ const _component_Magnify = vue$1.resolveComponent("Magnify");
345173
345215
  const _component_NcTextField = vue$1.resolveComponent("NcTextField");
345174
345216
  const _component_NcSelect = vue$1.resolveComponent("NcSelect");
345175
345217
  const _component_ArrowUp = vue$1.resolveComponent("ArrowUp");
@@ -345226,9 +345268,19 @@ function render$2c(_ctx, _cache, $props, $setup, $data, $options) {
345226
345268
  vue$1.createVNode(_component_NcTextField, {
345227
345269
  modelValue: $props.searchValue || '',
345228
345270
  placeholder: $props.searchPlaceholder,
345229
- label: $props.searchLabel,
345271
+ label: $options.isBoardLook ? $props.searchPlaceholder : $props.searchLabel,
345230
345272
  "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => (_ctx.$emit('search', $event)))
345231
- }, null, 8 /* PROPS */, ["modelValue", "placeholder", "label"])
345273
+ }, vue$1.createSlots({ _: 2 /* DYNAMIC */ }, [
345274
+ ($options.isBoardLook)
345275
+ ? {
345276
+ name: "icon",
345277
+ fn: vue$1.withCtx(() => [
345278
+ vue$1.createVNode(_component_Magnify, { size: 18 })
345279
+ ]),
345280
+ key: "0"
345281
+ }
345282
+ : undefined
345283
+ ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["modelValue", "placeholder", "label"])
345232
345284
  ]),
345233
345285
  ($props.sortOptions.length > 0)
345234
345286
  ? (vue$1.openBlock(), vue$1.createElementBlock("div", _hoisted_5$1z, [
@@ -351852,6 +351904,21 @@ var script$20 = {
351852
351904
  default: '',
351853
351905
  },
351854
351906
 
351907
+ /**
351908
+ * Board look: the count line while a saved view is applied (manifest
351909
+ * `config.savedViewCountText`), a template as `countText` that may name
351910
+ * the view's conditions as `{view}`: its description, else its filters
351911
+ * in words (DqFilterInMenu "3 van 48 lopende zaken · termijn binnen 7
351912
+ * dagen, van mij · gesorteerd op termijn"). A view's own `countText`
351913
+ * override and a scope's come first.
351914
+ *
351915
+ * @spec openspec/changes/applied-view-lights-its-lens/specs/applied-view-lights-its-lens/spec.md
351916
+ */
351917
+ savedViewCountText: {
351918
+ type: String,
351919
+ default: '',
351920
+ },
351921
+
351855
351922
  /**
351856
351923
  * Board look: a count line per view (manifest `config.countTextByView`),
351857
351924
  * `{ table?, cards?, list?, board?, map? }`, each a template as
@@ -354192,6 +354259,8 @@ var script$20 = {
354192
354259
  savedViewCounts: null,
354193
354260
  // The id (or slug) of the saved view that is applied; its chip shows selected under the board look.
354194
354261
  appliedSavedViewId: '',
354262
+ /** Whether the reader picked a lens chip after the applied view (then their chip shows). */
354263
+ lensChosenByHand: false,
354195
354264
  // The sort option the applied view's `overrides.sortOption` selected, so leaving the view can undo it.
354196
354265
  viewSortOption: '',
354197
354266
  // The applied view's filters as one comparable key, so the address keeps naming the view until they change.
@@ -356031,13 +356100,53 @@ var script$20 = {
356031
356100
  * @spec openspec/changes/working-list-row-actions/specs/index-page/spec.md
356032
356101
  */
356033
356102
  /**
356034
- * The chip the strip lights: the active tab, else the default tab of
356035
- * tabs that arrived after setup (`quickFiltersFrom`), which is the
356036
- * one the fetch applies.
356103
+ * The lens chip an applied saved view narrows within: the non-default
356104
+ * tab whose every condition the view's own conditions (its filters
356105
+ * over its locked filters, tokens as written) hold, the most specific
356106
+ * first (DqFilterInMenu: "Termijn deze week" lit for the view of that
356107
+ * name). Null without an applied view or a fitting tab.
356108
+ *
356109
+ * @return {number|null} The tab index.
356110
+ * @spec openspec/changes/applied-view-lights-its-lens/specs/applied-view-lights-its-lens/spec.md
356111
+ */
356112
+ appliedViewLensIndex() {
356113
+ const view = this.appliedSavedView;
356114
+ const tabs = Array.isArray(this.tabStripEntries) ? this.tabStripEntries : [];
356115
+ if (!view || tabs.length === 0) {
356116
+ return null
356117
+ }
356118
+ const query = view.query && typeof view.query === 'object' ? view.query : {};
356119
+ const locked = query.overrides && typeof query.overrides.lockedFilters === 'object' ? query.overrides.lockedFilters : {};
356120
+ const conditions = { ...(locked || {}), ...(query.filters || view.filters || {}) };
356121
+ const same = (a, b) => JSON.stringify(Array.isArray(a) ? a.map(String) : String(a)) === JSON.stringify(Array.isArray(b) ? b.map(String) : String(b));
356122
+ let best = null;
356123
+ let bestSize = 0;
356124
+ tabs.forEach((tab, index) => {
356125
+ const filter = tab && tab.filter && typeof tab.filter === 'object' ? tab.filter : {};
356126
+ const keys = Object.keys(filter);
356127
+ if (tab.default === true || keys.length === 0 || keys.length <= bestSize) {
356128
+ return
356129
+ }
356130
+ if (keys.every((key) => Object.hasOwn(conditions, key) && same(conditions[key], filter[key]))) {
356131
+ best = index;
356132
+ bestSize = keys.length;
356133
+ }
356134
+ });
356135
+ return best
356136
+ },
356137
+
356138
+ /**
356139
+ * The chip the strip lights: the lens an applied saved view narrows
356140
+ * within (until the reader picks a chip), else the active tab, else
356141
+ * the default tab of tabs that arrived after setup
356142
+ * (`quickFiltersFrom`), which is the one the fetch applies.
356037
356143
  *
356038
356144
  * @return {number|null} The tab index, or null without tabs.
356039
356145
  */
356040
356146
  shownQuickFilterIndex() {
356147
+ if (!this.quickFilterMultiple && !this.lensChosenByHand && this.appliedViewLensIndex !== null) {
356148
+ return this.appliedViewLensIndex
356149
+ }
356041
356150
  if (this.activeQuickFilterIndex !== null && this.activeQuickFilterIndex !== undefined) {
356042
356151
  return this.activeQuickFilterIndex
356043
356152
  }
@@ -358427,6 +358536,11 @@ var script$20 = {
358427
358536
  * @return {string}
358428
358537
  */
358429
358538
  presentedCountText() {
358539
+ const viewLine = this.savedViewCountText;
358540
+ const view = this.appliedSavedView;
358541
+ if (view && typeof viewLine === 'string' && viewLine !== '' && this.activeScopePresentation.countText === undefined && !savedViewOverrides(view)?.countText) {
358542
+ return viewLine
358543
+ }
358430
358544
  if (this.activeScopePresentation.countText === undefined) {
358431
358545
  const byView = this.countTextByView;
358432
358546
  const own = byView && typeof byView === 'object' ? byView[this.currentViewMode] : undefined;
@@ -358437,6 +358551,23 @@ var script$20 = {
358437
358551
  return this.presented('countText')
358438
358552
  },
358439
358553
 
358554
+ /**
358555
+ * The applied saved view's conditions for the count line's `{view}`:
358556
+ * its description, else its filters in words, starting lower case.
358557
+ *
358558
+ * @return {string}
358559
+ * @spec openspec/changes/applied-view-lights-its-lens/specs/applied-view-lights-its-lens/spec.md
358560
+ */
358561
+ appliedViewConditionsText() {
358562
+ const view = this.appliedSavedView;
358563
+ if (!view) {
358564
+ return ''
358565
+ }
358566
+ const own = typeof view.description === 'string' ? view.description.trim() : '';
358567
+ const text = own !== '' ? own : String(this.viewFilterSummary(view) || '');
358568
+ return text.charAt(0).toLowerCase() + text.slice(1)
358569
+ },
358570
+
358440
358571
  headerDescriptionBase() {
358441
358572
  const total = this.effectivePagination?.total;
358442
358573
  // Board look: the count line is a template over the rows on this page
@@ -358460,6 +358591,7 @@ var script$20 = {
358460
358591
  .replace('{shown}', String(shown))
358461
358592
  .replace('{total}', String(total))
358462
358593
  .replace(/\{term\}/g, this.sourceTerm)
358594
+ .replace(/\{view\}/g, this.appliedViewConditionsText)
358463
358595
  }
358464
358596
  return this.countLine(this.countSubtitle, total, shown)
358465
358597
  }
@@ -358525,6 +358657,17 @@ var script$20 = {
358525
358657
  return !!this.resolvedSidebar.enabled && this.resolvedSidebar.show !== false
358526
358658
  },
358527
358659
 
358660
+ /**
358661
+ * Whether the page's side panel is open now; the board look then lays
358662
+ * the header out narrower (DqZakenSorteren).
358663
+ *
358664
+ * @spec openspec/changes/board-header-buttons-under-title-beside-side-panel/specs/board-header-buttons-under-title-beside-side-panel/spec.md#requirement-the-header-buttons-sit-under-the-title-while-the-side-panel-is-open
358665
+ * @return {boolean}
358666
+ */
358667
+ sidebarPanelOpen() {
358668
+ return Boolean(this.sidebarOpen && this.hasSidebar)
358669
+ },
358670
+
358528
358671
  /**
358529
358672
  * Whether the board toolbar draws the Filter button as a menu: the
358530
358673
  * board look, `filterMenu` on, something to filter by, and no filter
@@ -358567,7 +358710,9 @@ var script$20 = {
358567
358710
 
358568
358711
  /** Search props forwarded to the embedded CnIndexSidebar (defaults applied per CnIndexSidebar). */
358569
358712
  sidebarSearchProps() {
358570
- return (this.sidebar && this.sidebar.search) || {}
358713
+ // The page's own search hint, unless `sidebar.search` names one.
358714
+ const own = this.shownSearchPlaceholder ? { searchPlaceholder: this.shownSearchPlaceholder } : {};
358715
+ return { ...own, ...((this.sidebar && this.sidebar.search) || {}) }
358571
358716
  },
358572
358717
 
358573
358718
  /**
@@ -360390,6 +360535,7 @@ var script$20 = {
360390
360535
  // `activeQuickFilterIndex` is a setup-returned ref; the
360391
360536
  // Vue 2 ref-unwrap proxy makes plain assignment work.
360392
360537
  this.activeQuickFilterIndex = index;
360538
+ this.lensChosenByHand = true;
360393
360539
  this.$emit('quick-filter-change', index);
360394
360540
  },
360395
360541
 
@@ -362825,6 +362971,7 @@ var script$20 = {
362825
362971
  */
362826
362972
  onApplySavedView(view, { keepSavedViewKey = false } = {}) {
362827
362973
  this.appliedSavedViewId = view && (view.id || view.slug) ? String(view.id || view.slug) : '';
362974
+ this.lensChosenByHand = false;
362828
362975
  const state = extractViewState(view);
362829
362976
  // A view's filters may carry tokens (`@me`, `@myTeam`): resolved here,
362830
362977
  // and an optional one that answers nothing (no team) is dropped. A
@@ -363977,7 +364124,7 @@ function render$1$(_ctx, _cache, $props, $setup, $data, $options) {
363977
364124
  const _component_CnIndexSidebar = vue$1.resolveComponent("CnIndexSidebar");
363978
364125
 
363979
364126
  return (vue$1.openBlock(), vue$1.createElementBlock("div", {
363980
- class: vue$1.normalizeClass(["cn-index-page", [$setup.lookClass, { 'cn-index-page--with-side-panel': $options.hasSidePanel, 'cn-index-page--quick-filters-toolbar': $options.effectiveQuickFilterPlacement === 'toolbar' }]]),
364127
+ class: vue$1.normalizeClass(["cn-index-page", [$setup.lookClass, { 'cn-index-page--with-side-panel': $options.hasSidePanel, 'cn-index-page--sidebar-open': $options.sidebarPanelOpen, 'cn-index-page--quick-filters-toolbar': $options.effectiveQuickFilterPlacement === 'toolbar' }]]),
363981
364128
  "data-testid": "cn-index-page",
363982
364129
  onKeydown: _cache[34] || (_cache[34] = (...args) => ($options.onListKeydown && $options.onListKeydown(...args)))
363983
364130
  }, [
@@ -364217,7 +364364,7 @@ function render$1$(_ctx, _cache, $props, $setup, $data, $options) {
364217
364364
  maxVisible: $props.quickFilterMaxVisible,
364218
364365
  fit: false,
364219
364366
  multiple: $props.quickFilterMultiple,
364220
- activeIndex: $setup.activeQuickFilterIndex,
364367
+ activeIndex: $options.shownQuickFilterIndex,
364221
364368
  selectedIndices: $setup.selectedQuickFilterIndices,
364222
364369
  counts: $options.effectiveTabCounts,
364223
364370
  "onUpdate:activeIndex": $options.onQuickFilterChange,
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
2
  name: package/dist/nextcloud-vue.cjs.js.map
3
- size: 49694787 bytes
4
- sha256: 3b02f12b852a7874170298261036ceb73909638851a37dbd1f81a3878b1361a6
3
+ size: 49713304 bytes
4
+ sha256: 11b16e882d36de50a0f2029b3f7863890871773691a226d0806b5ff5bc23c6c1