@conduction/nextcloud-vue 2.56.0-beta.36 → 2.56.0-beta.37

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 (136) hide show
  1. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue.js +1 -1
  2. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js +131 -3
  3. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
  4. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +54 -18
  5. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js.map +1 -1
  6. package/dist/esm/components/CnBoardView/CnBoardView.vue.js +1 -1
  7. package/dist/esm/components/CnBoardView/CnBoardView.vue2.js +232 -4
  8. package/dist/esm/components/CnBoardView/CnBoardView.vue2.js.map +1 -1
  9. package/dist/esm/components/CnBoardView/CnBoardView.vue3.js +95 -51
  10. package/dist/esm/components/CnBoardView/CnBoardView.vue3.js.map +1 -1
  11. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
  12. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +45 -0
  13. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  14. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +22 -12
  15. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  16. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +23 -4
  17. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  18. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  19. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue.js +1 -1
  20. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js +3 -1
  21. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
  22. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js.map +1 -1
  23. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue.js +1 -1
  24. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js +18 -5
  25. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js.map +1 -1
  26. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js.map +1 -1
  27. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +548 -77
  28. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  29. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +191 -82
  30. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  31. package/dist/esm/components/CnIndexPage/useSelfFetchList.js +11 -2
  32. package/dist/esm/components/CnIndexPage/useSelfFetchList.js.map +1 -1
  33. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
  34. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +70 -2
  35. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
  36. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
  37. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue.js +1 -1
  38. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue2.js +67 -5
  39. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue2.js.map +1 -1
  40. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue3.js +181 -124
  41. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue3.js.map +1 -1
  42. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue.js +1 -1
  43. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js +5 -1
  44. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js.map +1 -1
  45. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js.map +1 -1
  46. package/dist/esm/components/CnStatWidget/CnStatWidget.vue.js +1 -1
  47. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js +134 -10
  48. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js.map +1 -1
  49. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js +6 -2
  50. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js.map +1 -1
  51. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
  52. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +6 -3
  53. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
  54. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
  55. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue.js +1 -1
  56. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue2.js +140 -7
  57. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue2.js.map +1 -1
  58. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue3.js.map +1 -1
  59. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue.js +1 -1
  60. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js +37 -9
  61. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js.map +1 -1
  62. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js +6 -5
  63. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js.map +1 -1
  64. package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue2.js +53 -1
  65. package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue2.js.map +1 -1
  66. package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue3.js +3 -2
  67. package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue3.js.map +1 -1
  68. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue.js +1 -1
  69. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js +135 -0
  70. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js.map +1 -1
  71. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue3.js.map +1 -1
  72. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue.js +1 -1
  73. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js +19 -0
  74. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js.map +1 -1
  75. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js +37 -19
  76. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js.map +1 -1
  77. package/dist/esm/composables/useListView.js +21 -0
  78. package/dist/esm/composables/useListView.js.map +1 -1
  79. package/dist/esm/l10n/en.json.js +23 -1
  80. package/dist/esm/l10n/en.json.js.map +1 -1
  81. package/dist/esm/l10n/nl.json.js +41 -1
  82. package/dist/esm/l10n/nl.json.js.map +1 -1
  83. package/dist/esm/library-style.js +1 -1
  84. package/dist/esm/nextcloud-vue.css +622 -332
  85. package/dist/esm/store/useObjectStore.js +16 -2
  86. package/dist/esm/store/useObjectStore.js.map +1 -1
  87. package/dist/esm/utils/boardColumns.js +8 -1
  88. package/dist/esm/utils/boardColumns.js.map +1 -1
  89. package/dist/esm/utils/boardReferenceColumns.js +278 -0
  90. package/dist/esm/utils/boardReferenceColumns.js.map +1 -0
  91. package/dist/esm/utils/buildManifest.js +4 -1
  92. package/dist/esm/utils/buildManifest.js.map +1 -1
  93. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  94. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  95. package/dist/esm/utils/widgetDispatch.js +8 -2
  96. package/dist/esm/utils/widgetDispatch.js.map +1 -1
  97. package/dist/nextcloud-vue.cjs.js +27964 -25769
  98. package/dist/nextcloud-vue.cjs.js.map +2 -2
  99. package/dist/nextcloud-vue.css +622 -332
  100. package/l10n/en.json +23 -1
  101. package/l10n/nl.json +41 -1
  102. package/package.json +1 -1
  103. package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +160 -8
  104. package/src/components/CnBoardView/CnBoardView.vue +262 -6
  105. package/src/components/CnDashboardPage/CnDashboardPage.vue +57 -2
  106. package/src/components/CnDetailPage/CnDetailPage.md +1 -1
  107. package/src/components/CnDetailPage/CnDetailPage.vue +23 -4
  108. package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +3 -1
  109. package/src/components/CnFactsWidget/CnFactsWidget.vue +18 -5
  110. package/src/components/CnIndexPage/CnIndexPage.vue +586 -25
  111. package/src/components/CnIndexPage/useSelfFetchList.js +10 -1
  112. package/src/components/CnRecordListWidget/CnRecordListWidget.vue +70 -2
  113. package/src/components/CnRegisterMapping/CnRegisterMapping.md +5 -0
  114. package/src/components/CnRegisterMapping/CnRegisterMapping.vue +231 -96
  115. package/src/components/CnSettingsPage/CnSettingsPage.vue +5 -1
  116. package/src/components/CnStatWidget/CnStatWidget.vue +136 -11
  117. package/src/components/CnTabsWidget/CnTabsWidget.vue +6 -3
  118. package/src/components/CnToggleTableWidget/CnToggleTableWidget.vue +140 -7
  119. package/src/components/CnVersionInfoCard/CnVersionInfoCard.md +2 -1
  120. package/src/components/CnVersionInfoCard/CnVersionInfoCard.vue +42 -13
  121. package/src/components/CnWidgetCardGrid/CnWidgetCardGrid.vue +55 -2
  122. package/src/components/CnWidgetObjectTable/CnWidgetObjectTable.vue +135 -0
  123. package/src/components/CnWidgetWrapper/CnWidgetWrapper.md +10 -0
  124. package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +44 -1
  125. package/src/composables/useListView.js +21 -0
  126. package/src/css/board.css +65 -4
  127. package/src/css/dialog.css +4 -2
  128. package/src/css/index-page.css +49 -0
  129. package/src/css/look-board.css +77 -7
  130. package/src/schemas/app-manifest-v2.schema.json +115 -5
  131. package/src/store/useObjectStore.js +16 -2
  132. package/src/utils/boardColumns.js +8 -1
  133. package/src/utils/boardReferenceColumns.js +274 -0
  134. package/src/utils/buildManifest.js +4 -1
  135. package/src/utils/validateManifestV2.compiled.js +3 -3
  136. package/src/utils/widgetDispatch.js +8 -2
@@ -145,6 +145,7 @@ import { dispatchAction } from '../../utils/actionsDispatcher.js'
145
145
  import { isBadgeVariant } from '../../utils/badgeVariants.js'
146
146
  import { formatBoardDate } from '../../utils/boardDate.js'
147
147
  import { parseDateValue } from '../../utils/dateVariant.js'
148
+ import { formatMoney, unwrapAppConfig } from '../../utils/formatMetric.js'
148
149
  import { readPath } from '../../utils/readPath.js'
149
150
  import { hasUnresolvedDeepTokens, resolveDeepTokens } from '../../utils/resolveFilterTokens.js'
150
151
 
@@ -246,6 +247,8 @@ export default {
246
247
  cnTranslate: { default: () => (key) => key },
247
248
  cnObjectContext: { default: null },
248
249
  cnWorkspaceContext: { default: null },
250
+ /** The page's app config; its `currency` is the reporting currency a money value falls back to. */
251
+ cnAppConfig: { default: null },
249
252
  /** Pre-bound action dispatcher of CnPageRenderer, for `action` / `headerAction`. */
250
253
  cnDispatchAction: { default: null },
251
254
  },
@@ -260,7 +263,7 @@ export default {
260
263
  * A part may be `{ text }`, a constant; a `line` or `text` entry without `path` or `parts` shows its `text`.
261
264
  * `resolve: { register, schema, labelField? }` on an entry or a part turns a value that is a reference (an id, or a list of ids) into the label of the referenced object (`labelField`, else `title`, then `name`): the case type or status of a task shows its name, not its uuid. The ids are fetched once per register and schema through the object store and shared by every facts widget on the page; the entry stays empty until its label is known, and when no label can be read. A resolved value works as a pill too: `map` is applied to the resolved label, and `variantMap` / `colorMap` look the tone up by the value of `resolve.toneField` on the referenced object when that is set (a status named by its `name`, coloured by its `state`), then by the resolved label, then by the stored value.
262
265
  * - `action` — an action drawn as a button under the facts; `headerAction` — one drawn in the card header (reported through the `header` event).
263
- * `format` is `text` (default), `date` (board short date), `date-long` (always with the year) or `list` (an array joined by ", ", each item read at `itemPath`).
266
+ * `format` is `text` (default), `date` (board short date), `date-long` (always with the year), `list` (an array joined by ", ", each item read at `itemPath`) or `currency` (a money amount in the reader's language, "€ 1.234,50": the code in `currency`, else the record's `currencyField`, else the app's reporting currency, else EUR; `decimals` defaults to 2).
264
267
  * `map` turns a raw value into a label (translated). `parts` (on a `line`) lists paths, or `{ path, label?, format? }`, joined by `separator` (default " · "); empty parts are dropped.
265
268
  * - `source` — `{ register, schema, id }` or `{ url }`; omitted = the current object.
266
269
  * - `link` — `{ label, route? | href? }` at the foot.
@@ -900,7 +903,7 @@ export default {
900
903
  */
901
904
  valueOf(record, field) {
902
905
  const raw = readPath(record, field.path)
903
- return this.format(raw, field)
906
+ return this.format(raw, field, record)
904
907
  },
905
908
 
906
909
  /**
@@ -919,7 +922,7 @@ export default {
919
922
  if (!spec.path && typeof spec.text === 'string') {
920
923
  return this.tr(spec.text)
921
924
  }
922
- const value = this.format(readPath(record, spec.path), spec)
925
+ const value = this.format(readPath(record, spec.path), spec, record)
923
926
  if (value === '') {
924
927
  return ''
925
928
  }
@@ -933,10 +936,12 @@ export default {
933
936
  * Format a raw value.
934
937
  *
935
938
  * @param {unknown} raw The value.
936
- * @param {object} spec `{ format?, map?, itemPath? }`.
939
+ * @param {object} spec `{ format?, map?, itemPath?, currency?, currencyField?, decimals? }`.
940
+ * @param {object|null} [record] The object shown, which `currencyField` reads.
937
941
  * @return {string} The text, '' when empty.
942
+ * @spec openspec/changes/facts-currency-format/specs/facts-widget/spec.md#requirement-a-facts-entry-can-show-a-money-amount
938
943
  */
939
- format(raw, spec) {
944
+ format(raw, spec, record = null) {
940
945
  if (raw === null || raw === undefined || raw === '') {
941
946
  return ''
942
947
  }
@@ -961,6 +966,14 @@ export default {
961
966
  ? formatBoardDate(date, new Date(date.getFullYear() + 1, 0, 1))
962
967
  : formatBoardDate(date)
963
968
  }
969
+ if (format === 'currency') {
970
+ const money = formatMoney(raw, { currency: spec.currency, currencyField: spec.currencyField, decimals: spec.decimals }, record, unwrapAppConfig(this.cnAppConfig))
971
+ if (money !== '') {
972
+ return money
973
+ }
974
+ // Not a number: shown as written, never as "[object Object]".
975
+ return typeof raw === 'object' ? '' : String(raw)
976
+ }
964
977
  if (typeof raw === 'object') {
965
978
  const label = raw.title || raw.name || raw.label || raw.displayName
966
979
  return typeof label === 'string' ? label : ''