1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-10-27 11:02:16 +01:00
Commit Graph

915 Commits

Author SHA1 Message Date
Jaanus Sellin
d3cb8759c9
fix: make setConstraints work in editable constraints list (#9913)
Was missing implementation for addConstraint through ref.

Added it together with test.
2025-05-07 09:49:22 +03:00
Thomas Heartman
a7118e0c18
chore(1-3639): constraint validation (#9909)
Implements client-side validation of constraint values before you can
add them to a constraint.

I've removed the extra server-side validation that used to happen for
each specific constraint, because the surrounding form itself uses
server side validation to check every constraint every time there's a
change. This is what controls disabling the submit button etc.

I wanna make the next PR a bit of a followup cleanup now that it's
clearer what properties we do and don't need.
<img width="371" alt="image"
src="https://github.com/user-attachments/assets/7c98708f-fcbe-40ca-8590-bb0f5b2ad167"
/>
<img width="361" alt="image"
src="https://github.com/user-attachments/assets/503d4841-d910-4e8e-b0ef-a3d725739534"
/>
2025-05-06 15:21:33 +02:00
Jaanus Sellin
8e05c92440
chore: align recently used constraints to designs (#9904)
Now both of the recents have aligned styling.
Now ConstraintAccordionView accepts dashed and solid borders.


![image](https://github.com/user-attachments/assets/89fefaf5-4acc-41b0-aa7b-efb1d5e1eb63)
2025-05-06 15:42:38 +03:00
Tymoteusz Czech
af93f93836
refactor: remove flagOverviewRedesign flag (#9888)
Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2025-05-06 10:25:57 +02:00
Thomas Heartman
3d84001273
1-3687/input mode separation (#9882) 2025-05-02 12:30:38 +02:00
Thomas Heartman
44b4ba7f60
feat: add date type input field for constraints. (#9864)
Adds a date input method for editable constraints.

Uses a modified version of
`frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionEdit/ConstraintAccordionEditBody/DateSingleValue/DateSingleValue.tsx`,
which has been marked as deprecated.

<img width="971" alt="image"
src="https://github.com/user-attachments/assets/3c6f6e1f-6156-444c-9a73-e0c9c1c52ad6"
/>

Wraps when necessary
<img width="471" alt="image"
src="https://github.com/user-attachments/assets/786be9d0-e62e-4bc2-884d-ef6f4aaf6b51"
/>


Additionally, because I noticed how the old date input sets the error,
I've switched to using the standard way of setting input errors in
Unleash (and presumably for MUI)
<img width="359" alt="image"
src="https://github.com/user-attachments/assets/31e6ce7c-ad5d-4432-a89f-b4d9d491bd99"
/>
2025-04-30 14:42:54 +02:00
Jaanus Sellin
3c6d797234
feat: recently used constraints have use this button now (#9871)
Also splitted actions, so we have edit view actions, and view actions.


![image](https://github.com/user-attachments/assets/27220835-36d2-4782-86c4-25511f6f778f)
2025-04-30 14:12:49 +03:00
Thomas Heartman
691a9e6e57
fix: appropriately size case icon for non-editing constraints (#9869)
This fixes an issue where the "case sensitive" chip for existing
constraints was way too big. The underlying reason is that I switched
the icon for one with more padding to give it a consistent size with the
"not case sensitive" icon (PR:
https://github.com/Unleash/unleash/pull/9851).

The fix here is:
1. Add a viewBox to the SVG to let it scale properly.
2. Make the containing box stretch to fill the height of it's flex
container.
3. Use a size for height that doesn't grow too large.

Before:
<img width="137" alt="image"
src="https://github.com/user-attachments/assets/f23043f7-76a9-48c4-9f5c-c50371c24f72"
/>

After:
<img width="178" alt="image"
src="https://github.com/user-attachments/assets/cc2f8109-21ed-4070-b4bc-7c94be5b8e8d"
/>
2025-04-30 08:37:16 +00:00
Jaanus Sellin
5c483c7d8d
feat: split and clean up constraint lists (#9839) 2025-04-28 13:46:22 +03:00
Thomas Heartman
799fc1f518
1-3658/fix legal values selector issues (#9838)
Fixes an issue with the new legal values selector where selecting an
item from filtering or changing the checkbox state would move your focus
to the top of the page. I think it's because we'd re-render the whole
tree because of it, and this would clear your focus selection. To get
around it, I've used the existing ResolveInput component. We might want
to change this later as we get around to more input components (single
values, etc), but for now, I think this is good enough.

As a bonus, I get to delete the most annoying part of the
EditableConstraints file 😄

The constraint still opens in edit mode for now, but I expect that to
get resolved once we properly implement the split between editable and
non-editable constraints that was started yesterday.
2025-04-25 09:41:23 +02:00
Tymoteusz Czech
0e2f7374e5
Feat: update variants placement (#9832) 2025-04-24 16:01:35 +02:00
Jaanus Sellin
3774cf8b87
feat: separate constraint edit/view screens (#9836)
Separating constraing edit and view screens.
Next PR is to start using these.
2025-04-24 16:49:30 +03:00
Thomas Heartman
f6eb572a14
Prevent legal value selection from triggering form submit (#9831)
Use event.preventDefault to prevent the app from trying to submit the
legal values (or the strategy) form when you hit "enter" in the legal
values filter input.
2025-04-24 10:19:03 +00:00
Thomas Heartman
3bb54c5a9d
feat: 1-3652/legal value selector visual update (#9829)
Handles the visual changes for the legal value selector widget.

Before:
<img width="792" alt="image"
src="https://github.com/user-attachments/assets/0965d577-c4cf-4c1d-9fe7-f8f90d683988"
/>

After:
<img width="769" alt="image"
src="https://github.com/user-attachments/assets/33bdf40c-8bbb-4650-a6ba-c4b9e62f8cbd"
/>

I'm still working on improving the functionality of selecting from the
search input and not losing focus when you select/deselect an item (both
of these work (mostly) as expected on hosted, so we've introduced a
regression somewhere).
2025-04-24 12:17:05 +02:00
Jaanus Sellin
b05e12d028
feat: remove warning boxes for empty values (#9830)
We had issues, where when you selected the operator, these boxes were
jumping up. The problem was that the illegal value checker was marking
empty values as illegal also.

Now empty value is not included in illegal values.


![image](https://github.com/user-attachments/assets/13c6b21e-6b7e-40ac-bade-4496e65f10ba)
2025-04-24 11:41:14 +03:00
Jaanus Sellin
08c11664ce
feat: change requests, use new accordion list not legacy (#9825)
This should be final piece where old accordion is used.


![image](https://github.com/user-attachments/assets/854dfab9-4b05-4a14-bb17-0de49705079d)
2025-04-23 17:37:54 +03:00
Thomas Heartman
9977b3e0f8
fix: legal value selector chips and option updates (#9819) 2025-04-23 14:41:28 +02:00
Jaanus Sellin
a2e39a05c4
chore: clean up old accordion code path (#9813)
Remove unused code.
2025-04-23 10:52:01 +03:00
Mateusz Kwasniewski
da05c7be5c
chore: remove disable notifications UI (#9814) 2025-04-22 15:03:15 +02:00
Jaanus Sellin
bc7856a23a
feat: enter will select the first filtered value (#9807)
![image](https://github.com/user-attachments/assets/deff3204-100d-464f-8a87-f36759bdee3a)
2025-04-21 16:56:54 +03:00
Tymoteusz Czech
9d2174534f
refactor: deprecate old ConstraintAccordion and point to new version (#9613)
Code for constraint accordion was copy-pasted before previous
improvement. Old version is still in use for Segments. When we get to
improving constraint editing we should rebuild segments editing, without
use of this code.
2025-04-17 11:16:32 +02:00
Tymoteusz Czech
3fd74262bb
feat: search page - improved change request tooltip (#9750)
improved and tested tooltip for change requests and adjusted column width
2025-04-15 13:22:50 +02:00
Jaanus Sellin
5b52a6e8d1
feat: predefined values more organized (#9752) 2025-04-14 14:22:32 +03:00
Thomas Heartman
48b9be709e
Chore(1-3598): new constraint edit design iteration 1 (#9727)
Implements the first step towards implementing the new design for
constraint editing. All the edit functionalities work as and when you do
them now, but there is no validation of the values you put in that's
happening.

The inverted / not inverted button and the case sensitivity button are
placeholders. They should use icons and have proper descriptions of what
they do. I'll do that in a follow-up.

The way to enter values is currently always in the section below the
main controls. Again, more work on this is coming.

Current look:

With case sensitive options:
<img width="769" alt="image"
src="https://github.com/user-attachments/assets/bfdfbac1-cc95-4f26-bf83-277bae839518"
/>

With legal values:
<img width="772" alt="image"
src="https://github.com/user-attachments/assets/14f566cc-d02a-46dd-b433-f8b13ee55bcc"
/>
2025-04-09 14:08:04 +02:00
Mateusz Kwasniewski
f26bf2b8d1
feat: lifecycle column text (#9731) 2025-04-09 13:44:32 +02:00
Jaanus Sellin
a92c79e2dd
feat: styling of AND operator in strategies (#9726) 2025-04-09 11:00:05 +03:00
Tymoteusz Czech
5647fc916e
feat: adjust search page columns (#9722)
New columns for search page
- improved "name" with filtering by type and tag
- lifecycle
- created by (avatars) with filtering
2025-04-09 09:50:30 +02:00
Jaanus Sellin
84dbae20e8
feat: remove + from the segment dropdown (#9714) 2025-04-08 14:18:01 +03:00
Thomas Heartman
5e35a0fa22
chore: Set up the basis of the new constraint editing component. (#9701)
This PR creates/steals the logic and basic components that we need for
the new constraint editing design and shows it instead of the old one if
the flag is on.

The interface needs a lot of work, but this essentially wires everything
up so that it works with the API on direct editing:

<img width="781" alt="image"
src="https://github.com/user-attachments/assets/97489a08-5f12-47ee-98b3-aefc0b840a2b"
/>

Additionally the code here will need a lot of refactoring. This is a
first draft where I've yanked all the constraint editing logic out of a
nested hierarchy of components that handle validation and lots more. I
expect to clean this up significantly before finishing it up, so please
excuse the mess it's currently in. It turns out to have been lots and
lots more logic than I had anticipated.

This is just a PR to get started, so that the next one will be easier to
work on.
2025-04-07 14:50:42 +02:00
Thomas Heartman
645b005f29
Fix(1-3553): fix focus styles and tab navigation for segments + constraints (#9655)
Fixes a few small focus styling and tab navigation issues for the new
segments + constraints.

Before:
The segment acc header was tabbable even though you can't do anything
with it (by mouse or by keyboard)

![image](https://github.com/user-attachments/assets/de5c07ee-e55c-45f4-bd6e-3d978a0a51ca)

The focus color would stay even when you're focusing stuff inside the
accordion

![image](https://github.com/user-attachments/assets/1a75038b-256f-43b5-95ed-0a3d455d17f8)

Constraint items have focus styles that exceed the accordion borders,
causing a weird squaring effect:

![image](https://github.com/user-attachments/assets/638c9f5d-daf0-4570-8323-49141183dad8)

After:
The segment acc header isn't reachable by tab anymore.

The segment acc header doesn't change its background color on elements
inside getting focus:

![image](https://github.com/user-attachments/assets/4756e8b0-b461-49df-bf3e-ec8d26142877)

The constraint item has rounded corners for focus styles too:

![image](https://github.com/user-attachments/assets/fccf94e4-8b7a-4823-bcf5-24a0fe046cf7)

![image](https://github.com/user-attachments/assets/90020d85-990c-41de-9acb-ab2cc81a8f66)
2025-04-02 13:37:16 +02:00
Thomas Heartman
f6e786a6c0
Remove caseInsensitiveInOperators flag (#9670)
The flag has never made it out of dev, and has not been turned on
consistently since 2023. There was a project for it, but we have since
abandoned it.
2025-04-01 14:57:32 +02:00
Tymoteusz Czech
6e947a8ba6
fix: linter rule for hooks (#9660) 2025-04-01 14:33:17 +02:00
Tymoteusz Czech
ce230ba96b
Fix: separate segment and constraint accordions (#9652)
Segment accordion should not share state with constraint accordions inside
2025-03-31 12:11:34 +00:00
Fredrik Strand Oseberg
aa6c422165
Feat/tag type frontend display (#9630)
Add frontend for displaying tag colors
2025-03-31 11:55:49 +02:00
Jaanus Sellin
b55732d719
fix: tooltips not working after base element is also clicked (#9629) 2025-03-31 08:59:08 +03:00
Thomas Heartman
398246c3ec
Chore/remove badges from tab order (#9643)
Makes badges not tabbable by default instead of tabbable by default.
Turns out, badges aren't tabbable by default and they never were until I
made them as much (for some reason that I don't quite understand now).

Anyway, I've gone through the list of uses for the Badge element and
made any element that should be reachable by tab either have an explicit
tab index (if it's within a tooltip, for instance), or be wrapped in a
Link (instead of having an on-click handler). The two places I've
wrapped it in a link, I've also gone and changed the item group to be a
list (for HTML semantics). I've also updated some spacing for the
profile tab.

Application list (one is before, one is after. don't remember which is
which; it's now a list):

![image](https://github.com/user-attachments/assets/66fdabf7-7a80-46cb-b302-6242c16ad43e)

![image](https://github.com/user-attachments/assets/660506ce-0ec4-417f-bb3a-3fbf23d5591c)


Profile page (now a list + improved spacing)

Before:

![image](https://github.com/user-attachments/assets/17a841e6-d500-410e-8f11-4c78ca0e9e12)

![image](https://github.com/user-attachments/assets/38a60e67-682e-45b5-9312-f4c2013192bb)

After:

![image](https://github.com/user-attachments/assets/602f3d06-0b7e-4a10-9958-fb565fb6d06b)


![image](https://github.com/user-attachments/assets/67c7d39c-cdf9-4586-98d9-63ceff4fd867)
2025-03-28 15:05:32 +00:00
Thomas Heartman
fc0383620b
fix: focus styles for env headers (#9635)
Adds focus styles to the env accordion header only when the focus is on
the header itself (not on the env toggle inside the header). The focus
style is consistent with what we do for other accordions (dashboard,
milestones).

Middle one is focused:

![image](https://github.com/user-attachments/assets/df87bd99-8fe2-4093-afd8-4cbce9f2c943)


Focus is on the toggle inside the top one (yeh, we should have better
focus styles for toggles; but that's not for now):

![image](https://github.com/user-attachments/assets/2a046d4c-8585-4021-a58e-32ef81b1f701)

Open and focused: 

![image](https://github.com/user-attachments/assets/fdbb5bda-4be5-4354-b213-5e2c7a59eb59)

Getting the consistent background for the header when it's open is a
little tricky because the accordion container and summary are split into
different files. ~~This first iteration used a class name for the
specific header (because envs can have multiple accordion headers inside
them, e.g. release plans) and setting a CSS variable in the summary, so
that the background matches.~~ I found out that I only need to set it in
the parent anyway 😄

Without it, you get this (notice that there is a little white outside
the lower corners):

![image](https://github.com/user-attachments/assets/4d71d73c-7f45-46b5-811d-c6e36f9be5ce)
2025-03-28 15:59:25 +01:00
Tymoteusz Czech
cf053470e5
feat: improve constraints item on small screens (#9609)
Fixing constraint operator item, items alignment and padding for better presentation on mobile devices.
2025-03-27 13:33:25 +01:00
Thomas Heartman
138e93c41a
chore: drag-n-drop tooltip for strategies (#9623)
Implements the drag-n-drop tooltip the first time the user sees a
strategy drag handle on the feature env overview. It uses React Joyride,
which is the same system we use for the demo.

The design is a little different from the sketches because I couldn't
find a quick way to move the content (and the arrow) to be shifted
correctly.

If the demo is also active the first time a user visits a strategy page,
it'll render both the demo steps and this, but this tooltip doesn't
prevent the user from finishing the tour. It might be possible to avoid
that through checking state in localstorage, but I'd like to get this
approved first.

The tooltip uses the auth splash system to decide whether to show the
tooltip, meaning it's stored per user in the DB. To avoid it
re-rendering before you refetch from the back end, we also use a
temporary variable to check whether the user has closed it.

Rendered:

![image](https://github.com/user-attachments/assets/5912d055-10d5-4a1d-93f4-f12ff4ef7419)

If the tour is also active:

![image](https://github.com/user-attachments/assets/b0028a0f-3a0f-48aa-9ab9-8d7cf399055a)
2025-03-27 11:16:37 +01:00
Gastón Fournier
380d2c2c5d
feat: release template feedback module (#9614)
## About the changes

Adds a release template feedback module to release templates: 

![image](https://github.com/user-attachments/assets/848d386b-0e20-43d0-b113-51e1e26c5a13)

It uses the Card component by defining a new variant of it.

---------

Co-authored-by: Nuno Góis <github@nunogois.com>
2025-03-25 17:01:04 +01:00
Nuno Góis
b885a927e6
chore: stylable card (#9604)
https://linear.app/unleash/issue/2-3442/make-card-component-stylable

Makes the Card component introduced in
https://github.com/Unleash/unleash/pull/9096 stylable.

E.g.

```tsx
const StyledCard = styled(Card)(({ theme }) => ({
    backgroundColor: 'pink',
}));
```
2025-03-25 16:39:32 +01:00
Tymoteusz Czech
d8c7e31b18
Constraint values preview and filtering (#9603)
Restore constraint accordion to flag page.
2025-03-25 11:24:22 +01:00
Tymoteusz Czech
dd62b3dbcd
Constraint values list (#9592) 2025-03-24 14:26:58 +01:00
Thomas Heartman
b84699f563
refactor(1-3439): extract shared components and styling from Env Accordion Body to common (#9590)
Extracts the shared strategy list and list item into the `common` folder
instead of living in the environment accordion body file.

Also takes the disabled strategy handling that we use for
`StrategySeparator` and moves it into the file itself. It might be
something we want to decorate manually in the future, but we don't for
now, so this was the most straight-forward way to make it work.
2025-03-24 07:39:35 +00:00
Thomas Heartman
19d2a553f0
chore(1-3431): rework constraint equality and case sensitivity (#9591) 2025-03-21 15:26:05 +01:00
Tymoteusz Czech
2d47fb3827
feat: new constraint view for flag edit page (#9567)
Refactor components in Targeting (Edit strategy)
2025-03-20 13:04:24 +01:00
Thomas Heartman
038c10f612
chore: finish up disabled strategies (#9579)
Aligns the design of disabled strategies with the sketches. Most notable
changes:
- makes the disabled badge warning yellow
- greys out the preceding "or" separator
- makes the segment "preview" button *not* grey (because it's still
interactable)

As a bonus: uses a list for the constraint value lists instead of a div
and updates the design to match the sketches (no chips).


![image](https://github.com/user-attachments/assets/1b3ddfa0-b0e8-4856-ae01-26e507590a4f)

With strat variants:

![image](https://github.com/user-attachments/assets/dc143fbf-256b-4e96-872b-a6aa84df2111)


Bonus fix: 
Lets the constraint value list wrap so that we avoid this kind of
blowout:

![image](https://github.com/user-attachments/assets/4c0977ac-f8a4-41cc-8fb7-194e8b09c0a3)

Instead: 

![image](https://github.com/user-attachments/assets/a68ed4cf-c68c-43a1-9d6c-b90e85a0841f)
2025-03-19 15:40:23 +01:00
David Leek
890bbcaaa0
chore: rename release management to release templates (#9564) 2025-03-18 14:52:47 +01:00
Thomas Heartman
c5fa7c82fd
chore: add spacing to playground header + style segment's no constraints text (#9561)
This adds two small visual changes:
1. Add some spacing to the playground header (so that the custom
strategies info box (or other alerts) get some breathing room. (It
slightly increases the text between the header and the flag result text,
but I'll leave that as is unless we get told otherwise. It's partially
because of extra padding on the close button etc, and will be more work
than I wanna put in right now).

2. Style the "this segment has no constraints" text for empty segments
to use a smaller, less prominent font.


Playground header before:

![image](https://github.com/user-attachments/assets/821b2711-8ab4-4390-8f6b-718c7bd97731)


Playground header after:

![image](https://github.com/user-attachments/assets/08a446a7-7d8f-4c69-b539-b662a6c7be54)


Segments text before:

![image](https://github.com/user-attachments/assets/b5ad60f8-3423-406c-8b48-e28c5190f956)

Segments text after:

![image](https://github.com/user-attachments/assets/f23a640e-dcfd-441d-8fc0-c7a31c6054af)
2025-03-18 14:07:23 +01:00
Tymoteusz Czech
99fcdb1f23
fix: segment spacing in strategy constraints (#9559) 2025-03-18 13:03:52 +01:00