Commit Graph

22 Commits

Author SHA1 Message Date
kolaente 1dcd27e566 feat(frontend): add soft-delete UI with Bin page and undo support
- Add deletedAt field to IProject interface and ProjectModel
- Add restore() and getDeletedProjects() to ProjectService
- Add restoreProject() and fetchDeletedProjects() to project store
- Create ProjectsBin.vue page showing deleted projects with restore
- Add Bin link to sidebar navigation
- Update delete modal text to softer language (move to bin)
- Add undo toast action after deleting a project
- Add route for /projects/bin
2026-03-30 23:21:07 +02:00
kolaente f2901deb00 refactor(shortcuts): update v-shortcut values to event.code format
Change all shortcut strings from character-based format to event.code
format:
- Single letters: 't' -> 'KeyT', 's' -> 'KeyS', etc.
- Sequences: 'g o' -> 'KeyG KeyO', etc.
- Modifiers: 'Mod+e' -> 'Mod+KeyE', 'Shift+?' -> 'Shift+Slash'
- edit-shortcut prop: 'e' -> 'KeyE'

Shortcuts like 'Escape' and 'Shift+Delete' remain unchanged as their
event.code values are identical.
2026-03-03 14:00:25 +01:00
kolaente 49af08d3f6
feat(filters): add UI for marking saved filters as favorites (#2055)
This PR adds UI support for marking saved filters as favorites. The backend already supports the `is_favorite` field for saved filters, but the frontend didn't expose this functionality. Users can now favorite/unfavorite saved filters just like regular projects.
2026-01-07 16:21:41 +00:00
kolaente 1288d0a99c
feat: make sidebar resizable (#1965)
Closes: #525

* Sidebar width is now adjustable via dragging
* The width is automatically saved to settings and restored across sessions.
2025-12-12 10:46:46 +00:00
kolaente f67af55204 fix: resolve readonly array type issue in Navigation.vue
Cast readonly project arrays from Pinia store to mutable IProject[] type.
The arrays are not actually mutated by the component, so the cast is safe.

Fixes TypeScript errors on lines 86, 97, 105 where readonly arrays were
incompatible with ProjectsNavigation component props.

Related to issue #28 from TYPECHECK_ISSUES.md
2025-11-22 17:23:03 +01:00
kolaente d3319544e3
fix(rtl): put the menu to the correct side on rtl languages
Resolves https://github.com/go-vikunja/vikunja/issues/1544
2025-10-08 18:28:54 +02:00
kolaente 63319e19ad fix: style issues 2025-08-06 10:55:23 +02:00
kolaente a9924881c2 feat: replace bottom with logical properties 2025-08-03 15:05:48 +02:00
kolaente 0159ddc313 feat: replace top with logical properties 2025-08-03 15:05:48 +02:00
kolaente a25a4a00c9 feat: replace absolute left position with inset-inline-start 2025-08-03 15:05:48 +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 654e397638 feat(rtl): basic rtl layout for rtl languages 2025-08-03 15:05:48 +02:00
Dominik Pschenitschni 866a1791da chore: remove obsolete prop 2025-06-03 11:36:37 +02:00
Dominik Pschenitschni 773644050f fix: hide empty sidebar navs 2025-06-03 11:36:23 +02:00
kolaente 8daf500b52
fix(a11y): add labels to logo 2025-01-22 09:59:38 +01:00
kolaente 204dccf08b
feat: add utm tag to powered by link 2024-09-23 12:07:06 +02:00
Dominik Pschenitschni f9e0b43707 feat: move powered by to bottom 2024-07-04 09:04:39 +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 ff7e381645
feat(components): align component name casing Loading 2024-06-17 13:09:34 +02:00
Dominik Pschenitschni 5d2c731c59
feat(components): align component name casing Navigation 2024-06-17 13:09:32 +02:00
Renamed from frontend/src/components/home/navigation.vue (Browse further)