[PR #2634] [MERGED] refactor(frontend): split FormField into composable form primitives #8418

Closed
opened 2026-04-20 18:12:22 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/go-vikunja/vikunja/pull/2634
Author: @tink-bot
Created: 4/15/2026
Status: Merged
Merged: 4/17/2026
Merged by: @kolaente

Base: mainHead: refactor-form-components


📝 Commits (7)

  • 30bcc1c feat(frontend): add FormInput primitive component
  • 2f4d0f0 feat(frontend): add FormSelect primitive component
  • 2690a20 feat(frontend): add FormCheckbox primitive component
  • 26bf198 refactor(frontend): support two-col layout on FormField
  • 40481fe refactor(frontend): use form primitives in user settings General view
  • 5b8af5e refactor(frontend): use form primitives in WebhookManager
  • 600d38e refactor(frontend): use FormCheckbox for remember-me on Login

📊 Changes

11 files changed (+980 additions, -488 deletions)

View changed files

frontend/src/components/input/FormCheckbox.test.ts (+42 -0)
frontend/src/components/input/FormCheckbox.vue (+41 -0)
📝 frontend/src/components/input/FormField.test.ts (+60 -1)
📝 frontend/src/components/input/FormField.vue (+73 -33)
frontend/src/components/input/FormInput.test.ts (+123 -0)
frontend/src/components/input/FormInput.vue (+78 -0)
frontend/src/components/input/FormSelect.test.ts (+175 -0)
frontend/src/components/input/FormSelect.vue (+100 -0)
📝 frontend/src/components/misc/WebhookManager.vue (+28 -48)
📝 frontend/src/views/user/Login.vue (+5 -10)
📝 frontend/src/views/user/settings/General.vue (+255 -396)

📄 Description

Introduces FormInput, FormSelect, and FormCheckbox primitives alongside a reshaped FormField (now supporting a two-col layout) so settings pages stop hand-rolling Bulma .field/.control/.input/.select markup — making a future Bulma removal a scoped, per-primitive change.

Migrates: General.vue (31 fields), WebhookManager.vue, and the remember-me checkbox on Login.vue. ApiTokens.vue, EditTeam.vue, Register.vue, and PasswordReset.vue either already use FormField or contain only composite layouts that don't fit the primitives cleanly; left for the follow-up migration.

Test plan

  • Open Settings → General and verify every row renders, inputs/selects/checkboxes work, and saving persists.
  • Open a project's Webhooks and exercise the create form (target URL, secret, basic-auth toggle).
  • Log in with "remember me" toggled on.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/go-vikunja/vikunja/pull/2634 **Author:** [@tink-bot](https://github.com/tink-bot) **Created:** 4/15/2026 **Status:** ✅ Merged **Merged:** 4/17/2026 **Merged by:** [@kolaente](https://github.com/kolaente) **Base:** `main` ← **Head:** `refactor-form-components` --- ### 📝 Commits (7) - [`30bcc1c`](https://github.com/go-vikunja/vikunja/commit/30bcc1c4598e09937a980f4241d6c6cf7b4ea021) feat(frontend): add FormInput primitive component - [`2f4d0f0`](https://github.com/go-vikunja/vikunja/commit/2f4d0f09929944494c6c4f39c035440175f5ead5) feat(frontend): add FormSelect primitive component - [`2690a20`](https://github.com/go-vikunja/vikunja/commit/2690a2099c078f71cbac7ce60b025b33fc4adf34) feat(frontend): add FormCheckbox primitive component - [`26bf198`](https://github.com/go-vikunja/vikunja/commit/26bf19879b65bb486677e97e82e0ca57de55fb55) refactor(frontend): support two-col layout on FormField - [`40481fe`](https://github.com/go-vikunja/vikunja/commit/40481fec007194b72bfcdc939d1fca96b3b4de2f) refactor(frontend): use form primitives in user settings General view - [`5b8af5e`](https://github.com/go-vikunja/vikunja/commit/5b8af5e7b0f8817b3652eeaac1d868ec54b8b636) refactor(frontend): use form primitives in WebhookManager - [`600d38e`](https://github.com/go-vikunja/vikunja/commit/600d38ed62094f4c2c0f4020063fe3d2fa8bbca5) refactor(frontend): use FormCheckbox for remember-me on Login ### 📊 Changes **11 files changed** (+980 additions, -488 deletions) <details> <summary>View changed files</summary> ➕ `frontend/src/components/input/FormCheckbox.test.ts` (+42 -0) ➕ `frontend/src/components/input/FormCheckbox.vue` (+41 -0) 📝 `frontend/src/components/input/FormField.test.ts` (+60 -1) 📝 `frontend/src/components/input/FormField.vue` (+73 -33) ➕ `frontend/src/components/input/FormInput.test.ts` (+123 -0) ➕ `frontend/src/components/input/FormInput.vue` (+78 -0) ➕ `frontend/src/components/input/FormSelect.test.ts` (+175 -0) ➕ `frontend/src/components/input/FormSelect.vue` (+100 -0) 📝 `frontend/src/components/misc/WebhookManager.vue` (+28 -48) 📝 `frontend/src/views/user/Login.vue` (+5 -10) 📝 `frontend/src/views/user/settings/General.vue` (+255 -396) </details> ### 📄 Description Introduces `FormInput`, `FormSelect`, and `FormCheckbox` primitives alongside a reshaped `FormField` (now supporting a `two-col` layout) so settings pages stop hand-rolling Bulma `.field`/`.control`/`.input`/`.select` markup — making a future Bulma removal a scoped, per-primitive change. Migrates: `General.vue` (31 fields), `WebhookManager.vue`, and the remember-me checkbox on `Login.vue`. `ApiTokens.vue`, `EditTeam.vue`, `Register.vue`, and `PasswordReset.vue` either already use `FormField` or contain only composite layouts that don't fit the primitives cleanly; left for the follow-up migration. ## Test plan - Open **Settings → General** and verify every row renders, inputs/selects/checkboxes work, and saving persists. - Open a project's **Webhooks** and exercise the create form (target URL, secret, basic-auth toggle). - Log in with "remember me" toggled on. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-20 18:12:22 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/vikunja#8418