@conduction/nextcloud-vue 2.98.0 → 2.100.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 (141) hide show
  1. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js +12 -0
  2. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js.map +1 -1
  3. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js +11 -2
  4. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js.map +1 -1
  5. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue.js +1 -1
  6. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js +6 -1
  7. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
  8. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +2 -1
  9. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js.map +1 -1
  10. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue.js +1 -1
  11. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue2.js.map +1 -1
  12. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue3.js +1 -1
  13. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue3.js.map +1 -1
  14. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +25 -8
  15. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  16. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +7 -4
  17. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  18. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue.js +1 -1
  19. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js +11 -8
  20. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
  21. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js +13 -4
  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 +54 -3
  25. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js.map +1 -1
  26. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js +16 -2
  27. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js.map +1 -1
  28. package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue.js +1 -1
  29. package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue2.js +42 -7
  30. package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue2.js.map +1 -1
  31. package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue3.js +121 -57
  32. package/dist/esm/components/CnFlowsPage/CnFlowBoard.vue3.js.map +1 -1
  33. package/dist/esm/components/CnFlowsPage/CnFlowEditorPage.vue2.js +10 -0
  34. package/dist/esm/components/CnFlowsPage/CnFlowEditorPage.vue2.js.map +1 -1
  35. package/dist/esm/components/CnFlowsPage/CnFlowEditorPage.vue3.js +2 -1
  36. package/dist/esm/components/CnFlowsPage/CnFlowEditorPage.vue3.js.map +1 -1
  37. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +136 -7
  38. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  39. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  40. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue.js +1 -1
  41. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue2.js +26 -7
  42. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue2.js.map +1 -1
  43. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue3.js +78 -17
  44. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue3.js.map +1 -1
  45. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
  46. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +68 -7
  47. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
  48. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js +256 -240
  49. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
  50. package/dist/esm/components/CnSettingsField/CnSettingsField.vue.js +9 -0
  51. package/dist/esm/components/CnSettingsField/CnSettingsField.vue.js.map +1 -0
  52. package/dist/esm/components/CnSettingsField/CnSettingsField.vue2.js +265 -0
  53. package/dist/esm/components/CnSettingsField/CnSettingsField.vue2.js.map +1 -0
  54. package/dist/esm/components/CnSettingsField/CnSettingsField.vue3.js +191 -0
  55. package/dist/esm/components/CnSettingsField/CnSettingsField.vue3.js.map +1 -0
  56. package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue.js +9 -0
  57. package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue.js.map +1 -0
  58. package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue2.js +537 -0
  59. package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue2.js.map +1 -0
  60. package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue3.js +99 -0
  61. package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue3.js.map +1 -0
  62. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue.js +1 -1
  63. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js +18 -70
  64. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js.map +1 -1
  65. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js +6 -44
  66. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js.map +1 -1
  67. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue.js +1 -1
  68. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js +16 -2
  69. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js.map +1 -1
  70. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js +40 -25
  71. package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js.map +1 -1
  72. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
  73. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
  74. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue.js +1 -1
  75. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue2.js +7 -7
  76. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue2.js.map +1 -1
  77. package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue3.js.map +1 -1
  78. package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue.js +9 -0
  79. package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue.js.map +1 -0
  80. package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue2.js +472 -0
  81. package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue2.js.map +1 -0
  82. package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue3.js +231 -0
  83. package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue3.js.map +1 -0
  84. package/dist/esm/components/CnWorkingCalendarWidget/index.js +27 -0
  85. package/dist/esm/components/CnWorkingCalendarWidget/index.js.map +1 -0
  86. package/dist/esm/composables/useFlowStore.js +2 -1
  87. package/dist/esm/composables/useFlowStore.js.map +1 -1
  88. package/dist/esm/index.js +3 -0
  89. package/dist/esm/index.js.map +1 -1
  90. package/dist/esm/l10n/en.json.js +101 -1
  91. package/dist/esm/l10n/en.json.js.map +1 -1
  92. package/dist/esm/l10n/nl.json.js +115 -1
  93. package/dist/esm/l10n/nl.json.js.map +1 -1
  94. package/dist/esm/library-style.js +1 -1
  95. package/dist/esm/nextcloud-vue.css +999 -233
  96. package/dist/esm/utils/libraryWidgetKeys.js +1 -0
  97. package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
  98. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  99. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  100. package/dist/esm/utils/workingCalendarMonth.js +85 -0
  101. package/dist/esm/utils/workingCalendarMonth.js.map +1 -0
  102. package/dist/nextcloud-vue.cjs.js +10314 -7778
  103. package/dist/nextcloud-vue.cjs.js.map +2 -2
  104. package/dist/nextcloud-vue.css +999 -233
  105. package/l10n/en.json +101 -1
  106. package/l10n/nl.json +115 -1
  107. package/package.json +1 -1
  108. package/src/components/CnActionsMenu/CnActionsMenu.vue +14 -1
  109. package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +7 -1
  110. package/src/components/CnBreadcrumbs/CnBreadcrumbs.vue +1 -0
  111. package/src/components/CnDetailPage/CnDetailPage.vue +29 -9
  112. package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +13 -4
  113. package/src/components/CnFactsWidget/CnFactsWidget.vue +65 -3
  114. package/src/components/CnFlowsPage/CnFlowBoard.vue +77 -2
  115. package/src/components/CnFlowsPage/CnFlowEditorPage.vue +11 -0
  116. package/src/components/CnIndexPage/CnIndexPage.vue +136 -7
  117. package/src/components/CnOrderedListField/CnOrderedListField.vue +81 -9
  118. package/src/components/CnRecordListWidget/CnRecordListWidget.vue +114 -7
  119. package/src/components/CnSettingsField/CnSettingsField.vue +449 -0
  120. package/src/components/CnSettingsField/index.js +4 -0
  121. package/src/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue +642 -0
  122. package/src/components/CnSettingsFieldsSection/index.js +4 -0
  123. package/src/components/CnSettingsPage/CnSettingsPage.vue +6 -86
  124. package/src/components/CnSetupWizard/CnSetupWizard.vue +37 -3
  125. package/src/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
  126. package/src/components/CnWizardDialog/CnWizardDialog.vue +7 -7
  127. package/src/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue +725 -0
  128. package/src/components/CnWorkingCalendarWidget/index.js +26 -0
  129. package/src/components/index.js +3 -0
  130. package/src/composables/useFlowStore.js +2 -1
  131. package/src/css/badge.css +32 -16
  132. package/src/css/detail-page.css +15 -0
  133. package/src/css/dialog.css +48 -0
  134. package/src/css/look-board-detail.css +80 -8
  135. package/src/css/look-board-index.css +52 -8
  136. package/src/css/look-board.css +301 -1
  137. package/src/index.js +3 -0
  138. package/src/schemas/app-manifest-v2.schema.json +25 -1
  139. package/src/utils/libraryWidgetKeys.js +1 -0
  140. package/src/utils/validateManifestV2.compiled.js +3 -3
  141. package/src/utils/workingCalendarMonth.js +82 -0
@@ -172,34 +172,9 @@
172
172
  :field="field"
173
173
  :value="formData[field.key]"
174
174
  :onInput="(v) => updateField(field.key, v)">
175
- <NcCheckboxRadioSwitch
176
- v-if="field.type === 'boolean'"
177
- :modelValue="!!formData[field.key]"
178
- @update:modelValue="updateField(field.key, $event)">
179
- {{ resolveLabel(field.label) }}
180
- </NcCheckboxRadioSwitch>
181
- <NcTextField
182
- v-else-if="field.type === 'number'"
183
- :label="resolveLabel(field.label)"
184
- type="number"
185
- :modelValue="String(fieldValue(field.key, ''))"
186
- @update:modelValue="updateField(field.key, $event === '' ? null : Number($event))" />
187
- <NcTextField
188
- v-else-if="field.type === 'password'"
189
- :label="resolveLabel(field.label)"
190
- type="password"
191
- :modelValue="fieldValue(field.key, '')"
192
- @update:modelValue="updateField(field.key, $event)" />
193
- <NcSelect
194
- v-else-if="field.type === 'enum' && Array.isArray(field.options)"
195
- :modelValue="selectedOption(field)"
196
- :options="field.options"
197
- :inputLabel="resolveLabel(field.label)"
198
- @update:modelValue="updateField(field.key, optionValue($event))" />
199
- <NcTextField
200
- v-else
201
- :label="resolveLabel(field.label)"
202
- :modelValue="fieldValue(field.key, '')"
175
+ <CnSettingsField
176
+ :field="{ ...field, label: resolveLabel(field.label) }"
177
+ :modelValue="formData[field.key]"
203
178
  @update:modelValue="updateField(field.key, $event)" />
204
179
  </slot>
205
180
  <small
@@ -297,14 +272,12 @@ import axios from '@nextcloud/axios'
297
272
  import { translate as t } from '@nextcloud/l10n'
298
273
  import {
299
274
  NcButton,
300
- NcCheckboxRadioSwitch,
301
275
  NcLoadingIcon,
302
- NcSelect,
303
- NcTextField,
304
276
  } from '@nextcloud/vue'
305
277
  import ContentSave from 'vue-material-design-icons/ContentSave.vue'
306
278
  import CnBuildiqEditButton from '../CnBuildiqEditButton/CnBuildiqEditButton.vue'
307
279
  import CnRegisterMapping from '../CnRegisterMapping/CnRegisterMapping.vue'
280
+ import CnSettingsField from '../CnSettingsField/CnSettingsField.vue'
308
281
  import CnToggleTableWidget from '../CnToggleTableWidget/CnToggleTableWidget.vue'
309
282
  import CnVersionInfoCard from '../CnVersionInfoCard/CnVersionInfoCard.vue'
310
283
  import { useLook } from '../../composables/useLook.js'
@@ -356,7 +329,7 @@ const BUILTIN_SETTINGS_WIDGETS = Object.freeze({
356
329
  * three body kinds:
357
330
  *
358
331
  * - `fields[]` — flat form fields (back-compat default).
359
- * Each field's `type` controls which input renders:
332
+ * Each field's `type` controls which input CnSettingsField renders:
360
333
  * - `boolean` → NcCheckboxRadioSwitch
361
334
  * - `number` → NcTextField (type=number)
362
335
  * - `string` → NcTextField (default)
@@ -409,11 +382,9 @@ export default {
409
382
 
410
383
  components: {
411
384
  NcButton,
412
- NcCheckboxRadioSwitch,
413
385
  NcLoadingIcon,
414
- NcSelect,
415
- NcTextField,
416
386
  ContentSave,
387
+ CnSettingsField,
417
388
  CnBuildiqEditButton,
418
389
  CnSettingsCard,
419
390
  CnSettingsSection,
@@ -823,57 +794,6 @@ export default {
823
794
  },
824
795
 
825
796
  methods: {
826
- // Coalesce a field value to a fallback when null / undefined.
827
- // Used in template bindings instead of `formData[key] ?? ''` because
828
- // vue-template-es2015-compiler (the Rollup VuePlugin's parser) does
829
- // not accept ES2020 nullish-coalescing inside template expressions.
830
- fieldValue(key, fallback) {
831
- const v = this.formData[key]
832
- return (v === null || v === undefined) ? fallback : v
833
- },
834
-
835
- // Resolve the currently-selected option for an enum field.
836
- // `field.options` may be an array of strings/numbers OR an array
837
- // of `{ label, value }`-shaped objects. NcSelect needs the actual
838
- // option entry (not the bare value) to render the selection
839
- // correctly, so this resolver looks up the matching object form
840
- // when a primitive value is stored. Returns `null` when nothing
841
- // is selected so NcSelect renders the empty state instead of
842
- // emitting a Vue warning about an undefined `value` prop.
843
- selectedOption(field) {
844
- const v = this.formData[field.key]
845
- if (v === null || v === undefined) {
846
- return null
847
- }
848
- if (!Array.isArray(field.options)) {
849
- return v
850
- }
851
- for (const opt of field.options) {
852
- if (opt && typeof opt === 'object') {
853
- if (opt.value === v) {
854
- return opt
855
- }
856
- } else if (opt === v) {
857
- return opt
858
- }
859
- }
860
- return v
861
- },
862
-
863
- // Inverse of `selectedOption` — extract the storable value from
864
- // whatever NcSelect emits. NcSelect emits the full option entry
865
- // when options are objects, the primitive when options are
866
- // primitives, or `null` on clear.
867
- optionValue(emitted) {
868
- if (emitted === null || emitted === undefined) {
869
- return null
870
- }
871
- if (typeof emitted === 'object' && 'value' in emitted) {
872
- return emitted.value
873
- }
874
- return emitted
875
- },
876
-
877
797
  cloneInitial() {
878
798
  const merged = { ...(this.initialValues || {}) }
879
799
  // Collect every section across both modes (flat
@@ -69,7 +69,12 @@
69
69
 
70
70
  <!-- choice -->
71
71
  <template v-else-if="step.type === 'choice'">
72
- <NcNoteCard v-if="step.body" type="info">
72
+ <!-- The board sets the intro as a plain paragraph above the
73
+ cards (DqInstellen); the Nextcloud look keeps the note. -->
74
+ <p v-if="step.body && isBoard" class="cn-setup-step__intro" data-testid="cn-setup-step-intro">
75
+ {{ stepBody(step) }}
76
+ </p>
77
+ <NcNoteCard v-else-if="step.body" type="info">
73
78
  {{ stepBody(step) }}
74
79
  </NcNoteCard>
75
80
  <CnChoiceCards
@@ -119,6 +124,9 @@
119
124
  <NcNoteCard v-if="isChoiceDisabled(step)" type="warning">
120
125
  {{ dependsOnHint(step) }}
121
126
  </NcNoteCard>
127
+ <p v-if="stepNote(step)" class="cn-setup-step__note" data-testid="cn-setup-step-note">
128
+ {{ stepNote(step) }}
129
+ </p>
122
130
  </template>
123
131
 
124
132
  <!-- config-fields -->
@@ -212,6 +220,7 @@ import CnChoiceCards from '../CnChoiceCards/CnChoiceCards.vue'
212
220
  import CnLeafDependencySettings from '../CnLeafDependencySettings/CnLeafDependencySettings.vue'
213
221
  import CnWizardDialog from '../CnWizardDialog/CnWizardDialog.vue'
214
222
  import { checkDependencies, isDependencyResolved, missingRequiredApps, readServerAppStatuses } from '../../composables/useDependencyCheck.js'
223
+ import { useLook } from '../../composables/useLook.js'
215
224
  import { useSetupStatus } from '../../composables/useSetupStatus.js'
216
225
  import { fieldsFromSchema } from '../../utils/schema.js'
217
226
 
@@ -428,12 +437,13 @@ export default {
428
437
  * @return {object} `setupStatus` / `setupStatusLoading` for the option resolver.
429
438
  */
430
439
  setup(props) {
440
+ const { isBoard } = useLook()
431
441
  const wantsSource = (props.steps || []).some((s) => s && s.optionsSource)
432
442
  if (!wantsSource) {
433
- return {}
443
+ return { isBoard }
434
444
  }
435
445
  const { status, loading } = useSetupStatus(props.appId, { setup: { steps: props.steps } })
436
- return { setupStatus: status, setupStatusLoading: loading }
446
+ return { isBoard, setupStatus: status, setupStatusLoading: loading }
437
447
  },
438
448
 
439
449
  data() {
@@ -793,6 +803,18 @@ export default {
793
803
  return raw === '' ? '' : this.cnTranslate(raw)
794
804
  },
795
805
 
806
+ /**
807
+ * The footnote under a choice step's options, from the step's `note`
808
+ * (or `footnote`), translated like the body.
809
+ *
810
+ * @param {object} step The step declaration.
811
+ * @return {string} The translated footnote, or ''.
812
+ */
813
+ stepNote(step) {
814
+ const raw = (step && (step.note || step.footnote)) || ''
815
+ return raw === '' ? '' : this.cnTranslate(raw)
816
+ },
817
+
796
818
  stepSlot(step) {
797
819
  return 'step-' + step.id
798
820
  },
@@ -1338,6 +1360,18 @@ export default {
1338
1360
  gap: 12px;
1339
1361
  }
1340
1362
 
1363
+ .cn-setup-step__intro {
1364
+ margin: 0;
1365
+ font-size: 15px;
1366
+ line-height: 1.5;
1367
+ }
1368
+
1369
+ .cn-setup-step__note {
1370
+ margin: 0;
1371
+ font-size: 13px;
1372
+ color: var(--color-text-maxcontrast);
1373
+ }
1374
+
1341
1375
  .cn-setup-step__nav {
1342
1376
  display: flex;
1343
1377
  justify-content: flex-end;
@@ -76,6 +76,7 @@ import '../CnSectionsWidget/index.js'
76
76
  import '../CnFactsWidget/index.js'
77
77
  import '../CnDeviceFramesWidget/index.js'
78
78
  import '../CnChecklistRunWidget/index.js'
79
+ import '../CnWorkingCalendarWidget/index.js'
79
80
  import '../CnPartyActionsWidget/index.js'
80
81
  import '../CnFieldListWidget/index.js'
81
82
  import '../CnSettingsFormWidget/index.js'
@@ -208,7 +208,7 @@ export default {
208
208
  */
209
209
  dialogTitle: {
210
210
  type: String,
211
- default: 'Wizard',
211
+ default: () => t('nextcloud-vue', 'Wizard'),
212
212
  },
213
213
 
214
214
  /**
@@ -279,17 +279,17 @@ export default {
279
279
  submitIcon: { type: [Object, Function], default: null },
280
280
 
281
281
  /** Cancel-button label (wizard phase). */
282
- cancelLabel: { type: String, default: 'Cancel' },
282
+ cancelLabel: { type: String, default: () => t('nextcloud-vue', 'Cancel') },
283
283
  /** Back-button label. */
284
- backLabel: { type: String, default: 'Back' },
284
+ backLabel: { type: String, default: () => t('nextcloud-vue', 'Back') },
285
285
  /** Next-button label (intermediate steps). */
286
- nextLabel: { type: String, default: 'Next' },
286
+ nextLabel: { type: String, default: () => t('nextcloud-vue', 'Next') },
287
287
  /** Submit-button label (last step). */
288
- submitLabel: { type: String, default: 'Submit' },
288
+ submitLabel: { type: String, default: () => t('nextcloud-vue', 'Submit') },
289
289
  /** Close-button label (result phase). */
290
- closeLabel: { type: String, default: 'Close' },
290
+ closeLabel: { type: String, default: () => t('nextcloud-vue', 'Close') },
291
291
  /** Success banner default text when result.message is empty. */
292
- successText: { type: String, default: 'Done.' },
292
+ successText: { type: String, default: () => t('nextcloud-vue', 'Done.') },
293
293
  /**
294
294
  * Whether the dialog can be dismissed (Cancel button, ESC, backdrop
295
295
  * click) before reaching the result phase. `false` hides Cancel and