From 46cdb524e519297f55eefd57df69e89c6832c8ab Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Tue, 4 Aug 2026 12:03:09 +0200 Subject: [PATCH] =?UTF-8?q?fix(ui):=20NcButton=20`native-type`=20is=20iner?= =?UTF-8?q?t=20on=20@nextcloud/vue=209=20=E2=80=94=20six=20forms=20never?= =?UTF-8?q?=20submitted?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `@nextcloud/vue` 9 renamed NcButton's visual prop `type` -> `variant` and repurposed `type` as the NATIVE button type, with `default: "button"`. `nativeType` was removed outright — it was the v8 name. `native-type="submit"` is therefore an undeclared prop on v9: it falls through to the DOM as an inert attribute while the button keeps `type="button"`. A `type="button"` inside a
raises no submit event, so `@submit.prevent` never runs. No console warning, no lint error, no failed request — a user fills in a purchase order, clicks Create, sees no error, and nothing was ever sent. All six sites already used `variant=` (the v9 visual prop), so these were half-finished v8 -> v9 migrations where only the button type was missed. Each verified to sit inside a form with a submit handler: goods-receipt-note/GoodsReceiptNoteForm.vue:152 purchase-order/PurchaseOrderForm.vue:160 views/DeadlineCalendarSettings.vue:57 views/bookings/BookingForm.vue:63 views/settings/PipelinqIntegration.vue:38 views/settings/Settings.vue:21 Behaviour is proven in openconnector#1140, which mounts the real NcButton 9.9.0 and asserts that `type="submit"` fires the form's submit handler while `native-type="submit"` fires nothing. --- src/components/goods-receipt-note/GoodsReceiptNoteForm.vue | 2 +- src/components/purchase-order/PurchaseOrderForm.vue | 2 +- src/views/DeadlineCalendarSettings.vue | 2 +- src/views/bookings/BookingForm.vue | 2 +- src/views/settings/PipelinqIntegration.vue | 2 +- src/views/settings/Settings.vue | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/goods-receipt-note/GoodsReceiptNoteForm.vue b/src/components/goods-receipt-note/GoodsReceiptNoteForm.vue index e228fa94d..a9c421b22 100644 --- a/src/components/goods-receipt-note/GoodsReceiptNoteForm.vue +++ b/src/components/goods-receipt-note/GoodsReceiptNoteForm.vue @@ -149,7 +149,7 @@
{{ submitting ? t('shillinq', 'Saving...') : t('shillinq', 'Save goods receipt') }} diff --git a/src/components/purchase-order/PurchaseOrderForm.vue b/src/components/purchase-order/PurchaseOrderForm.vue index ccf63fb43..f93cb5374 100644 --- a/src/components/purchase-order/PurchaseOrderForm.vue +++ b/src/components/purchase-order/PurchaseOrderForm.vue @@ -157,7 +157,7 @@
{{ submitting ? t('shillinq', 'Creating...') : t('shillinq', 'Create purchase order') }} diff --git a/src/views/DeadlineCalendarSettings.vue b/src/views/DeadlineCalendarSettings.vue index 37c7114b8..daf2f4042 100644 --- a/src/views/DeadlineCalendarSettings.vue +++ b/src/views/DeadlineCalendarSettings.vue @@ -54,7 +54,7 @@
{{ saving ? t('shillinq', 'Saving…') : t('shillinq', 'Save') }} diff --git a/src/views/bookings/BookingForm.vue b/src/views/bookings/BookingForm.vue index 8f46850b9..aa77d9e63 100644 --- a/src/views/bookings/BookingForm.vue +++ b/src/views/bookings/BookingForm.vue @@ -60,7 +60,7 @@

- + {{ submitting ? t('shillinq', 'Saving…') : t('shillinq', 'Create Booking') }}
diff --git a/src/views/settings/PipelinqIntegration.vue b/src/views/settings/PipelinqIntegration.vue index 60bd51159..c32e7faa2 100644 --- a/src/views/settings/PipelinqIntegration.vue +++ b/src/views/settings/PipelinqIntegration.vue @@ -35,7 +35,7 @@
{{ saving ? t('shillinq', 'Saving…') : t('shillinq', 'Save') }} diff --git a/src/views/settings/Settings.vue b/src/views/settings/Settings.vue index fee77f9b1..e718cf1c4 100644 --- a/src/views/settings/Settings.vue +++ b/src/views/settings/Settings.vue @@ -18,7 +18,7 @@ {{ saving ? t('shillinq', 'Saving...') : t('shillinq', 'Save') }}