1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-10-18 11:14:57 +02:00
Commit Graph

24 Commits

Author SHA1 Message Date
Tymoteusz Czech
37548c3436
feat: rename health to technical debt (#10063)
On insights and project status, we would like to show "technica debt"
instead of "health". New value is that of `1/health`, or simplified:
`healthy flags / total flags`
2025-06-04 11:01:17 +02:00
Gastón Fournier
abe160eb7d
feat: Unleash v7 ESM migration (#9877)
We're migrating to ESM, which will allow us to import the latest
versions of our dependencies.

Co-Authored-By: Christopher Kolstad <chriswk@getunleash.io>
2025-05-14 09:47:12 +02:00
Thomas Heartman
134c32589a
fix(1-3375): Fix unintended scroll on dashboard (#9316)
Fixes a bug where the dashboard would scroll you down from the top of
the page on load if your window was too short too see both the
selected flag and the selected project.

This solves it by immediately scrolling to the top of the page after
scrolling your selected element into view. Because this hook only runs
on page load, it shouldn't be safe. (At least I couldn't make this
misbehave with manual testing).

It also changes the list scroll behavior to scroll your selected item
to the top of the list instead of to the bottom (effectively). During
testing, that seems like a better solution to me.

## Background (or why do we auto-scroll here?)

The dashboard's flag and projects panels stores your last selection,
so that when you return to the page you'll be shown what you were
looking at last. This is especially useful if you have a lot of flags
but you're focusing on one in particular.

However, if you **do** have a lot of flags, then it's also quite
likely that your selection will be "below the fold" of the panel, and
you won't see your selected flag/project immediately in the
list (without scrolling).

It seemed like a nice UI affordance to automatically bring your
selected item into view (especially because without it, there's no way
to see what flag/project) you're looking at, so I added the

[`scrollIntoView`](https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView)
hook.

What I didn't realize, however, is that it scrolls all scrollable
ancestor containers, which means that if your screen is too short,
it'll scroll you down the page.

From my reading of the docs and some local testing, I don't think
there is a way to limit the scrolling to only the nearest ancestor, so
the easiest way to ensure that we're always at the top seemed to be to
just scroll to the immediately after.
2025-02-17 12:07:35 +01:00
Jaanus Sellin
21c44a4d42
fix: dashboard onboarding flow correct conditions (#8676)
Previously it never went to else clause. Because it was always
onboardingStarted.
2024-11-06 15:21:42 +02:00
Thomas Heartman
a8206f5118
fix: handle loading states for project details for a single project (#8492)
This PR updates the use of references on the project details page to
handle the loading state for a single project.

Now, if a project is loading, it'll show skeleton loaders for the
relevant boxes:


![image](https://github.com/user-attachments/assets/a156cc88-e4bf-421a-8afe-2b46e26d5544)

I've also updated the state type we use for this to be more accurate. Shamelessly
stolen from Elm.

```ts
type RemoteData<T> = 
  | { state: 'error', error: Error } 
  | { state: 'loading' } 
  | { state: 'success', data: T } 
```

After refactoring: 

![image](https://github.com/user-attachments/assets/03d655de-1ab8-4289-9f0c-d158ede8e116)
2024-10-21 14:27:43 +02:00
Thomas Heartman
e4cfb29adc
refactor: front end code pt II (#8444)
This PR continues the refactoring of the front end code for dashboards. 

The main points are:
- Extracts the `ActionBox` component that we used in a lot of places.
There were some minor differences between the various incarnations, so
this also better aligns them.
- Extract other components (`AskOwnerToAddYouToTheirProject`,
`YourAdmins`)
- Move the `NeutralCircleContainer` into `SharedComponents`
- Delete the separate no content grid (this is now handled in projects
instead)
- extract my projects grid contents into a single function so that it's
easier to understand what content you get for what states

Here's all the states side by side:

![image](https://github.com/user-attachments/assets/c5abc406-7374-41e4-8ff6-d48fe61cd7c8)
2024-10-15 09:14:24 +00:00
Thomas Heartman
9d49070cee
refactor: refactor personal dashboard front end code pt1 (#8440)
This is the first step in refactoring the front end code for personal
dashboards.

At this point:
- extract `useDashboardState` to its own file
- extract my flags to its own file
- Rename `Grid.tsx` to `SharedComponents.tsx` as it contains more than
just the grid.
2024-10-14 13:51:23 +02:00
Thomas Heartman
5a036997dc
Revert "Refactor front end code pt 1 (#8438)"
This reverts commit 8c2ed5dc30.
2024-10-14 11:46:09 +02:00
Thomas Heartman
8c2ed5dc30
Refactor front end code pt 1 (#8438)
This PR is the first in the front end code refactoring. It moves My
Flags out into a separate file and includes some extra error handling
(such as if the name of the flag causes problems for the API).


![image](https://github.com/user-attachments/assets/5aec8f0c-de79-4b7d-b56b-42297b872ec5)
2024-10-14 11:45:37 +02:00
Thomas Heartman
01b2a15b8a
fix: adjust the height of the flag section (#8426)
This commit adjusts the height of the flag section in the personal
dashboard, so that the chart doesn't cause scrolling on the widest
version.

Before:

![image](https://github.com/user-attachments/assets/32a30338-b647-4458-bc09-604e821b30c7)

After:

![image](https://github.com/user-attachments/assets/c4760900-ef1b-4c45-b8aa-f81dff2a3a55)

Also fixes some issues in regards to super big lists when it goes into
flex mode and makes the chart more responsive
2024-10-11 10:09:26 +02:00
Thomas Heartman
74370468d1
fix: section sizes (#8423)
This PR fixes issues with section sizes including:
- Jank when they change suddenly
- Overflowing list of admins / events
- Short lists that should stretch to the height of their container.
2024-10-11 09:10:21 +02:00
Thomas Heartman
fcce0f852c
chore: track personal dashboard navigation (#8417)
This PR adds plausible tracking for navigating to items from the
personal dashboard.

It tracks:

- Navigating to projects from the list
- Navigating to projects from the onboarding screen
- Navigating to flags from the list
- Opening the key concepts dialog
2024-10-10 13:30:47 +02:00
Thomas Heartman
23b0401381
feat: make panels collapsible (#8395)
This PR makes the projects and flags panels collapsible. The panels are
expanded by default and can be collapsed by clicking on the panel
header. The state of the panels is saved in localstorage.

As part of this, it also:
- moves the flag exposure metrics next to the metric selectors
- fixes the alignment of the "no exposure" line


![image](https://github.com/user-attachments/assets/b41ca808-f5f0-4e17-8bb1-b1388256354d)

Line alignment:
before:

![image](https://github.com/user-attachments/assets/119320d6-d39d-4c34-815a-8a25c6856ad6)

after:

![image](https://github.com/user-attachments/assets/f5b0fe51-1cda-49f9-8b22-e03988429799)
2024-10-09 14:25:58 +02:00
Thomas Heartman
b190efce53
chore: removes setup badge from personal dashboard (#8384)
The badge has been removed from the onboarding flow, so we don't need
to show it here. This also prepares it for the collapsible sections.
2024-10-08 12:28:31 +02:00
Thomas Heartman
8a7bf865d3
fix: handle project fetching error (#8375)
Work in progress
2024-10-08 08:46:14 +02:00
Thomas Heartman
67f036c0ab
feat: store dashboard state (#8382)
This PR stores the dashboard state (selected project and flag) in
localstorage so that you get taken back to the same project and flag
when you refresh the page or navigate away and back.

It also handles scrolling the selected items into view in case they're
below the fold.
2024-10-08 08:21:23 +02:00
Mateusz Kwasniewski
ec1fe6278a
feat: make personal dashboard UI more compact (#8359) 2024-10-03 16:20:45 +02:00
Thomas Heartman
aec888a160
fix: add back flex container. (#8356)
The flex styling was deleted by mistake. This adds it back in.
2024-10-03 12:23:38 +00:00
Thomas Heartman
f5c78605ed
refactor: use css grid for flags and no content grid (#8347)
This PR uses the new CSS grid layout for the flag grid and the no
content grid.

In doing so, it also improves how you use the grid item (giving them a
`gridArea` prop) and extracts the breakpoint handling so that all
sections that use breakpoints use the same breakpoints.

As with the previous PR, here's screenies of the same screen width, but
with open and closed sidebar:
Open:

![image](https://github.com/user-attachments/assets/2d41d412-5072-4c66-9a48-e7aa0d8cff45)

Closed:

![image](https://github.com/user-attachments/assets/994e3f2c-6f4c-4db1-9f10-e1d1a4d96540)
2024-10-03 07:54:27 +00:00
Thomas Heartman
35a73a5b8e
fix: add grid w/container query for projects (#8344)
The main goals of this are:

1. Make it so that the layout grid doesn't break on small screens
2. Fix an issue where the border of the box didn't fit the outline
3. (Bonus): make the layout of the info box depend on the **box's**
size, not the screen size.

To achieve those goals, this PR:
1. Switches to using a native CSS grid instead of MUI's grid component.
This gives us more power over the layout in various different sizes.
2. Switches from putting borders on the boxes inside the grid, instead
makes the grid container the color of the border and uses gaps to create
borders.
3. If your browser supports it, it will use container queries to
determine whether we should display the layout as a multi-column grid or
in a single column.


Container query demo (both with the same screen sizes):

Sidebar closed: 

![image](https://github.com/user-attachments/assets/9a7d9a78-de92-4429-bf06-8e98fbf40ed0)

Sidebar open:

![image](https://github.com/user-attachments/assets/90e790ba-13db-485c-8f5e-ee60fe36dabb)
2024-10-03 07:02:12 +00:00
Mateusz Kwasniewski
e0ea1ff34a
fix: event styling personal dashboard (#8337) 2024-10-02 14:24:50 +02:00
Mateusz Kwasniewski
b975919395
feat: health trend insight (#8335) 2024-10-02 13:50:31 +02:00
Thomas Heartman
6936da7403
feat: handle owners and project roles in the UI (#8315)
This commit uses the now-included project owner and role information
to populate the owner/role section. If you have no roles, we'll tell
you that you don't instead of displaying an empty set of badges.
2024-10-02 09:37:02 +02:00
Mateusz Kwasniewski
739ad07798
refactor: extract my projects component (#8317) 2024-10-01 11:33:03 +02:00