Commit Graph

32 Commits

Author SHA1 Message Date
kolaente dd83e0d42b refactor(frontend): replace reverse-index splice loops with findIndex/filter
Single-match removals use findIndex + splice; the reminder-null cleanup
uses filter since model.reminders is on a local shallow clone.
2026-04-15 11:44:47 +00:00
kolaente 2c6029eac4 refactor(frontend): replace for...in usages and forbid via lint rule
Replaces 33 for...in loops across 18 files with for...of + Object.keys/entries
or indexed for loops. for...in iterates enumerable string keys including
inherited ones, which is especially risky on reactive arrays (tasks, labels,
assignees, etc.) where polyfilled properties may appear.

Loops that mutate via splice during iteration now iterate backwards to avoid
index-shift bugs. Adds a no-restricted-syntax ESLint rule forbidding
ForInStatement to prevent regressions.

Closes #513
2026-04-15 11:44:47 +00:00
kolaente 15aa773212
fix(frontend): add horizontal overflow handling to tables on mobile
Wraps all tables that were missing overflow handling in a
`has-horizontal-overflow` div to prevent horizontal overflow on mobile
viewports.

Affected components:
- Sessions.vue
- ApiTokens.vue
- ProjectSettingsWebhooks.vue
- LinkSharing.vue
- UserTeam.vue
- EditTeam.vue
- ProjectSettingsViews.vue

Fixes https://github.com/go-vikunja/vikunja/issues/2331
2026-03-02 08:35:35 +01:00
kolaente 4ee29f9972 refactor(frontend): use FormField scoped slot id for select elements
Update FormField usages with slotted select elements to use the
exposed id from the scoped slot, ensuring label-input association
works correctly.
2026-01-10 21:59:06 +01:00
kolaente 1391b42c07 refactor(frontend): migrate LinkSharing to FormField component
Migrate LinkSharing component to use the new FormField component
for permission select, name, password, and share URL fields.
2026-01-10 21:59:06 +01:00
kolaente 9a3e79af8e
feat(frontend): add danger prop to XButton component (#2078)
The is-danger class no longer worked on XButton because the component uses scoped CSS. This adds a proper danger boolean prop that applies danger styling (red background) as a color modifier that works alongside any variant (primary, secondary, tertiary).
2026-01-10 17:22:19 +00:00
Copilot 25827f432e
feat: hide link share creation form by default in sharing dialogue (#1827)
The link share creation form is now hidden by default and only shown when users explicitly click the "Create" button. This reduces confusion in the sharing dialogue where users might mistake link sharing for team sharing.

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: kolaente <13721712+kolaente@users.noreply.github.com>
2025-11-15 19:05:28 +00:00
kolaente a81a3ee0e5
feat!: rename right to permission (#1277) 2025-08-13 11:05:05 +02:00
kolaente d290f2e99c feat: add logical utils 2025-08-03 15:05:48 +02:00
kolaente 16f7fa087a fix: convert all css properties to logical 2025-08-03 15:05:48 +02:00
kolaente 2fd3046acc chore: rename user_id field to username
The field is actually the username, but it was called user_id for some reason. This change makes this more clear
2025-07-28 10:56:36 +02:00
Dominik Pschenitschni 454418ee63 chore: fix indentation 2025-06-19 10:53:35 +02:00
Dominik Pschenitschni 6e6c93f413
chore(frontend): migrate vue component options (#917) 2025-06-17 11:50:23 +02:00
Dominik Pschenitschni 1f56b3615c feat: unify component name 2025-05-28 15:13:08 +02:00
Dominik Pschenitschni bb9dc03351
fix: add newline at end of line (#827) 2025-05-24 13:57:47 +02:00
kolaente 3f4bf59283 fix: correctly set default props in UserTeam 2025-05-13 22:01:54 +02:00
kolaente 9eb5c62b01
fix: do not fail to load projects without views via link share
Resolves https://community.vikunja.io/t/undefined-error-when-sharing-an-empty-project/3126
2024-12-18 21:47:41 +01:00
Dominik Pschenitschni 6a2a8c106b fix: LinkSharing race condition (#2932)
This fixes a race condition and should potential fix some flaky Cypress tests:

<img width="630" alt="Screenshot 2024-12-12 at 10.53.56.png" src="attachments/21dce132-7f1a-4e19-b14c-b0a868daa20e">

-----

Before `selectedView` was filled with an initial value that depended on the the related project being loaded before the shared links, since the assignment happened directly after the views have been loaded.

This fix ensures that the correct project has been loaded before it's accessed to look up the id of the first view.

-----

@konrad: Now that I finished this PR I'm a bit unsure if it's the "correct" way to solve this.

Because for existing share links it might be better if the links save the selected view as a property. Currently a change of the view only changes the created link in the frontend. When you change the view and reload the link stays the same.

I'm unsure if editing the selected view is something that we want (or is even possible depending on what the hash represents).
So maybe we should only support the following: The user selects a view when creating a linkShare and and different from before it will be saved.

Even with those additional changes we still need something similar to the changes of this PR, since we would still need to load the available view ids for the creation of a new link share.

Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/2932
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Co-committed-by: Dominik Pschenitschni <mail@celement.de>
2024-12-13 20:44:33 +00:00
kolaente 703c641aeb fix: lint issues 2024-10-29 09:57:53 +00:00
Dominik Pschenitschni f2fdbad7d4 feat: use withDefaults for UserTeam 2024-07-16 21:37:28 +00:00
Dominik Pschenitschni f36115871c feat: camelcase global components 2024-06-19 14:02:14 +00:00
Dominik Pschenitschni 23707fc493 feat: eslint enforce vue/component-name-in-template-casing 2024-06-17 21:01:36 +00:00
Dominik Pschenitschni 920f8f0c5a
feat(components): align component name casing UserTeam 2024-06-17 13:41:37 +02:00
Dominik Pschenitschni d7fe8c2fab
feat(components): align component name casing LinkSharing 2024-06-17 13:41:37 +02:00
Dominik Pschenitschni fdd780f645
feat(components): align component name casing User 2024-06-17 13:41:36 +02:00
Dominik Pschenitschni f939328531
feat(components): align component name casing Nothing 2024-06-17 13:41:35 +02:00
Dominik Pschenitschni 1ed99d9ebc feat(components): align component name casing multiselect 2024-06-17 09:31:43 +00:00
Dominik Pschenitschni 2004d129c3 feat: reduce eslint warnings (#2396)
Also added `Destructuring the 'props' will cause the value to lose reactivity` as a warning to prepare for the removal of the propsDestructure option in vite.

Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/2396
Reviewed-by: konrad <k@knt.li>
Co-authored-by: Dominik Pschenitschni <mail@celement.de>
Co-committed-by: Dominik Pschenitschni <mail@celement.de>
2024-06-17 09:18:02 +00:00
kolaente bf5088e546
fix(sharing): show user display name and avatar when displaying search results
Resolves https://community.vikunja.io/t/autogenerated-username-using-google-openid/2183/12
2024-04-02 14:29:22 +02:00
kolaente a3714c74fd
feat(views): load views when navigating with link share 2024-03-19 00:47:49 +01:00
waza-ari ffa82556e0 feat(teams): add public flags to teams to allow easier sharing with other teams (#2179)
Resolves #2173
Co-authored-by: Daniel Herrmann <daniel.herrmann1@gmail.com>
Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/2179
Reviewed-by: konrad <k@knt.li>
Co-authored-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
Co-committed-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
2024-03-10 14:04:32 +00:00
kolaente fc4676315d
chore: move frontend files 2024-02-07 14:56:56 +01:00