Commit Graph

745 Commits

Author SHA1 Message Date
Konstantin Schaper
1d0baf48e2 Connect labels with their respective inputs for improved accessibility
Committed-by: Florian Scholdei <florian.scholdei@cloudogu.com>
2023-03-21 10:14:11 +01:00
Eduard Heimbuch
2198049cbd Improve sticky diffs
Fix page position after long sticky diffs are collapsed

Committed-by: Konstantin Schaper <konstantin.schaper@cloudogu.com>
Co-authored-by: René Pfeuffer <rene.pfeuffer@cloudogu.com>
2023-03-15 17:50:19 +01:00
Konstantin Schaper
dda52b8400 Implement new form features
Extends existing functionality, provides new fallbacks for translations and adds capabilities to manage array properties in configurations.

Committed-by: Florian Scholdei <florian.scholdei@cloudogu.com>
Co-authored-by: Florian Scholdei <florian.scholdei@cloudogu.com>
2023-03-07 11:29:10 +01:00
Eduard Heimbuch
3730434f7b Expose size for primary repository avatar extension point 2023-01-31 11:08:12 +01:00
Florian Scholdei
63d6c765ea Correct z-index equal weighting in diff header
Committed-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
2023-01-31 10:11:08 +01:00
Eduard Heimbuch
b2a253ea29 Fix tab order for primary navigation 2023-01-26 07:32:14 +01:00
Eduard Heimbuch
dc60c924ed Add copy button to codeblocks 2023-01-25 15:55:00 +01:00
Konstantin Schaper
d5e5490b53 Add new overlay ui module with tooltip component
Our current tooltip component has been causing ui glitches for over a year now because it did not use react portal to render the tooltip content outside the react render tree which interfered with html/css. The new component is based on a fully accessible component by radix-ui. The styling, for now, has been kept from the original tooltip.

Committed-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
2023-01-16 13:37:52 +01:00
Eduard Heimbuch
ac419daa3f Add ConfigurationAdapterBase and extension points for trash bin
Adds the new abstract class ConfigurationAdapterBase to simplify the creation of global configuration views. In addition there is some cleanup, interfaces and extension points for the repository trash bin plugin.

Committed-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
Co-authored-by: René Pfeuffer <rene.pfeuffer@cloudogu.com>
Co-authored-by: Konstantin Schaper <konstantin.schaper@cloudogu.com>
2023-01-13 13:08:51 +01:00
Eduard Heimbuch
5c4c759bd2 Make the diff header sticky 2023-01-11 16:04:39 +01:00
Eduard Heimbuch
72dfe80843 Introduce ui-forms framework
Adding a new ui framework to make creating forms as easy and consistent as possible. It wraps a lot of boilerplate code and enforces good practices for make the forms in the "SCM-Manager way".


Co-authored-by: Florian Scholdei <florian.scholdei@cloudogu.com>
Co-authored-by: Konstantin Schaper <konstantin.schaper@cloudogu.com>

Reviewed-by: Rene Pfeuffer <rene.pfeuffer@cloudogu.com>
2023-01-02 08:59:07 +01:00
Rene Pfeuffer
f2f2f29791 Render images from repository correctly
This adds a markdown renderer for images, so that images
that are referenced by their repository path are resolved
correctly. In this case, the content rest endpoint is
rendered as source url. For this, two new contexts
(RepositoryContext and RepositoryRevisionContext)
have been added, that make the repository and the
current revision available, so that the content url can
be resolved properly. These new contexts may be used
by plugins like the scm-readme-plugin.

Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>

Reviewed-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
2022-12-19 10:12:01 +01:00
Konstantin Schaper
19938b3af8 Add accessibility settings where you can disable keyboard shortcuts (#2157)
An accessibility requirement dictates that our custom shortcut system must be allowed to be disabled. A new accessibility settings page has been added to the user profile, similar to the theme settings. It is persisted in local storage.

Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
2022-11-16 16:50:17 +01:00
Konstantin Schaper
4a556dda8b Implement sub-iterators for list navigation (#2155)
We recently introduced shortcut-based list navigation that ran into problems when the list contained items that were loaded asynchronously but had stand at the beginning of the list. As the system is based on render order, we had to introduce a new layer in-between the main iterator and the asynchronously loaded items. This new layer is called a "sub-iterator", which functions literally like the main iterator with the exception that it can also be used as an item of a parent-iterator. This allows for more complicated use-cases and the support of keyboard iterators around extension points. This pull request also fixes an unreleased regression where usages of the deprecated confirmAlert function caused a nullpointer exception.
2022-11-16 11:01:27 +01:00
Konstantin Schaper
3e74985203 Remove forced word break from markdown view (#2142)
In `751343f` we forced words to wrap in a variety of places in the SCM-Manager to prevent unintentional overflow breaking the layout. This was also added to the markdown view which had implications for tables in these views including long headers that would now break in a not so pretty fashion. After investigating potential implications and checking other usages of the markdown view, we removed the problematic class again in this particular instance as it was seemingly not serving any positive purpose and removing it had no negative impact.
2022-11-15 18:37:03 +01:00
Konstantin Schaper
eea60deadb Add keyboard navigation for users, groups, branches, tags, sources, changesets and plugins (#2153)
Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
2022-11-10 11:44:53 +01:00
Konstantin Schaper
e74d0c9c8b Add keyboard navigation to repository overview list (#2146)
A new api is introduced to allow focus-based list iteration through keyboard shortcuts. The api is initially considered closed and only used in the repository overview.

Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
2022-11-04 18:05:16 +01:00
Konstantin Schaper
ec83de3600 Fix modal de-registration firing twice (#2145)
Global Modals as components, and as a result their registration hooks, have a lifecycle that spans the whole application. Because of this, they never get unmounted. The registration hook will simply be re-rendered with an updated "active" flag. Because the hook did not reset to its initial state when switching from "active" to "deactive", it decremented the modal count twice. Once in the cleanup of the previous hook render and once in the else block ("inactive").
2022-11-03 19:17:39 +01:00
Konstantin Schaper
da70fc0946 Expose api for declaring keyboard shortcuts (#2139)
In recent weeks we have created an api for declaring keyboard shortcuts and tested its usage in internal modules. After successfully verifying it, we are now exposing it for plugins to use. The api has also received some tweaks in the process to make it more flexible, such as allowing bound shortcuts not to appear in the documentation dialog or allowing shortcuts to explicitly allow event bubbling.
2022-10-21 08:47:42 +02:00
Florian Scholdei
33f7dd994a Fix navbar at the top of the page (#2128) 2022-10-11 16:01:22 +02:00
Konstantin Schaper
42bdd1d22e update storyshots 2022-09-29 11:41:16 +02:00
Konstantin Schaper
9b7553f44c tweak feedback urls 2022-09-29 09:15:22 +02:00
Florian Scholdei
89386928b6 Add feedback links to footer (#2125)
Add feedback links in "Support" section of the footer. The links refer to the creation of a new topic in the SCMM section of the forum.
2022-09-27 16:18:03 +02:00
Konstantin Schaper
af9aaec095 Add keyboard shortcut for global search (#2118)
Enable users to jump to the global search bar by pressing the "/" key from anywhere. Open modals block this shortcut. This PR also introduces a generic system for declaring global shortcuts by utilizing the third-party library mousetrap.
2022-09-15 14:16:22 +02:00
Konstantin Schaper
1d9cd12821 Revert changes to production environment introduced in #2098 2022-08-05 10:53:06 +02:00
Florian Scholdei
6c82142643 Fix paging for too large page numbers (#2097)
On some pages with pagination, the user is led to believe that no data is available if a page with page number which it too high is accessed. However, since we show the page number to the outside and the user can access it through the URL, we must also provide appropriate handling. The underlying data can change and so can the number of pages. Now, if a bookmark was saved from an older version, the link should still lead to a destination.
2022-08-02 10:30:07 +02:00
Konstantin Schaper
27dbcbf28d Integrate tailwind css and create new button library (#2098)
Introduce tailwind as new frontend styling library to replace bulma in the longer run. Also create the first new ui library `ui-buttons` which will be the new standard for buttons ins SCM-Manager. In this library we reconsidered which types of buttons should be used to create a clean and consistent ui.

Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
2022-08-02 08:39:37 +02:00
Florian Scholdei
f3f19426c8 Unify password validation (#2077)
Passwords should be checked when created or changed in the frontend just as they are in the backend for REST and CLI.
Also extend the password validation to allow upto 1024 characters instead of 32.

Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
2022-07-07 11:19:51 +02:00
Konstantin Schaper
84402b9722 allow card columns to omit the link (#2076)
The landing-page-plugin is using the CardColumnSmall component from ui-components to display event as tiles. Most events have a link, but some, like the RepositoryDeletedEvent do not. For a better UX it is therefore necessary, to have a CardColumnSmall that is not internally wrapped in a link.
2022-06-23 11:52:21 +02:00
Phil-Ah
6b276afb3b Icons in buttons are encapsulated in span to avoid text-decoration (#2065)
The is-text css-class adds an underline to text in buttons. To avoid icons from receiving this underline they will be encapsulated in a span.
2022-06-09 07:49:49 +02:00
Florian Scholdei
1f5ebc04d6 Arrow icon of secondary navigation is inconsistent (#2060)
The toggle icon in the secondary navigation points in the wrong direction.
In the changeset and code view, the current status is displayed with the icon. This should also be the case for this component.
2022-06-08 13:36:16 +02:00
Florian Scholdei
abaf5c8fba Missing profile link in footer (#2057)
Currently there is a link to Theme with the name Profile in the footer. Another link should be added which is called Theme and points to Theme. In addition, Profile should now point to Information.
2022-06-08 11:00:03 +02:00
Konstantin Schaper
5f9db5cf4d New diff view props for controlling hunk/line interaction (#2047)
Move hunk styling from review plugin to core and make reusable
2022-06-02 13:25:53 +02:00
Phil-Ah
b1e8bb7f98 Differentiate focused buttons in confirmation dialog (#2050)
Users need to understand which option they are choosing in an confirmation dialog. Buttons for primary and secondary actions should be visually discernible when one is focused/hovered.
The changes remove default-styling from buttons in confirmation dialogues. The style is set in the element using this dialog to better visually separate the primary and secondary action.

Resolves #2049
2022-06-01 18:10:42 +02:00
Konstantin Schaper
1b18191c57 Add plugin wizard initialization step (#2045)
Adds a new initialization step after setting up the initial administration account that allows administrators to initialize the instance with a selection of plugin sets.

Co-authored-by: René Pfeuffer <rene.pfeuffer@cloudogu.com>
Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
Co-authored-by: Matthias Thieroff <matthias.thieroff@cloudogu.com>
2022-05-31 15:15:30 +02:00
Konstantin Schaper
264e80f47c Improve visibility and contrast for focused line in syntax highlighting (#2031)
The styling for the focused line (e.g. permalink) in the source view with syntax highlighting was hard-coded and did not meet accessibility standards, especially in high-contrast mode. This pull request introduces two new css variables that are fine-tuned to meet contrast requirements for each theme. An additional "bar" with specifically high contrast has been added to the left of the focused line, because it was impossible to find one background color that would provide sufficient contrast with both the page background as well as all highlighting colors.

Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
2022-05-10 11:17:10 +02:00
Florian Scholdei
4c94235414 Remove card-table action area (#2016)
In .card-tables there was an action area that had a darker background. Now this area only contains the delete action. Also, users mistakenly assumed that the hovered area could be clicked. It has therefore been removed and the icons themselves have received a hover effect.
2022-05-06 10:01:01 +02:00
Phil-Ah
6cf8afac01 Fix jumping and broken tool tips (#2026)
The way the tool tip implements passed class names is mistakable. The passed classes broke the tool tip and are removed. The same issue led to a broken tool tip for the code search and is fixed as well. Unnecessary code is removed from help.

Fixes #2025
2022-05-05 21:51:20 +02:00
Matthias Thieroff
a0737a2c90 Fix freezing browser if syntax highlighting large files (#2010)
We unified syntax highlighting and extracted it into a low level module. Syntax highlighting from now on takes place in a web worker, so that the user interface stays responsive. The web worker stops automatically if the number of nodes which should be highlighted exceeds the defined limit we believe the browser can handle.

Co-authored-by: Sebastian Sdorra <sebastian.sdorra@cloudogu.com>
Co-authored-by: Konstantin Schaper <konstantin.schaper@cloudogu.com>
2022-04-25 16:34:40 +02:00
Eduard Heimbuch
c8207d89da Fix routing for entity names with parenthesis (#1998)
If entities like users, groups or repository namespaces contains parenthesis the frontend router gets confused and doesn't work properly. To fix this issue we escape the chars in the url which may cause such problems because they are reserved by the http url schema.

Co-authored-by: René Pfeuffer <rene.pfeuffer@cloudogu.com>
Co-authored-by: Florian Scholdei <florian.scholdei@cloudogu.com>
2022-04-13 13:06:02 +02:00
Matthias Thieroff
f34c794308 Avoid unnecessary re-rendering of markdown view (#1999)
Avoid unnecessary re-rendering of markdown view which e.g. caused an embedded secure code warrior video to reload on every page interaction.

Co-authored-by: Konstantin Schaper <konstantin.schaper@cloudogu.com>
2022-04-12 19:21:16 +02:00
Florian Scholdei
5eacb9da6a Small tweaks in darkmode (#1976)
* The scss variable $popover-border-color is now also used throughout the internal styles
* Derived css variable is exported only once
* Scss definitions are now organized and structured with descriptive comments
* Fix incorrect styling due to a too dark and at the same time very thick border in the CreateButton component
* Darken $border-light a little, so that it is not brighter than the border in dark mode
2022-04-12 12:45:23 +02:00
Phil-Ah
c265383f37 Enable wrapping of actions in code view table (#1995)
At certain screen sizes the table in code view breaks if more than one action is available in a row. The fix enables the list of actions to wrap if the table is displayed on smaller sizes.

Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
Co-authored-by: Matthias Thieroff <matthias.thieroff@cloudogu.com>
2022-04-11 16:47:32 +02:00
Eduard Heimbuch
34b4fd9740 Show cli client link in footer 2022-04-08 11:08:41 +02:00
Florian Scholdei
5505b3ce11 Correct styling of syntax highlighter .section elements (#1984)
Fixes styling of syntax highlighter .section elements which causes unsightly rendering due to a global definition by bulma.
2022-03-30 09:40:48 +02:00
Konstantin Schaper
4d203ff36f codify extension points docs (#1947)
This pull request converts the current incomplete textual documentation of the available frontend extension points to in-code definitions that act both as documentation and as type helpers for improving overall code quality. All extension points available in the SCM-Manager core are now available, but no plugin was updated and only those parts of the core codebase had the new types added that did not require runtime changes. The only exception to this is the breadcrumbs, which was a simple change that is fully backwards-compatible.
2022-03-29 15:04:14 +02:00
Eduard Heimbuch
9f9bfd6635 Fix user creation via UI 2022-03-10 17:18:17 +01:00
Florian Scholdei
9c3e9cd76d Introduce darkmode theme (#1969)
This commit introduces a new more relaxed theme, the dark theme!
In addition, the theme can now be selected according to the system defaults.
And the other themes, as well as the general structure were unified/simplified.

Co-authored-by: Philipp Ahrendt <philipp.ahrendt@cloudogu.com>
Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
Co-authored-by: René Pfeuffer <rene.pfeuffer@cloudogu.com>
Co-authored-by: Matthias Thieroff <matthias.thieroff@cloudogu.com>
2022-03-08 09:47:36 +01:00
Eduard Heimbuch
151c7bf772 Fix frontend tests and story shots after code splitting was enabled 2022-03-02 09:27:55 +01:00
Eduard Heimbuch
033238f173 Improve tooltip text padding 2022-02-24 11:44:03 +01:00