Skip to content

[upcoming] UIE-9410: Implement the Create Share Group page#13550

Merged
fabrice-akamai merged 20 commits intolinode:developfrom
fabrice-akamai:UIE-9410-create-share-group-page
Apr 7, 2026
Merged

[upcoming] UIE-9410: Implement the Create Share Group page#13550
fabrice-akamai merged 20 commits intolinode:developfrom
fabrice-akamai:UIE-9410-create-share-group-page

Conversation

@fabrice-akamai
Copy link
Copy Markdown
Contributor

@fabrice-akamai fabrice-akamai commented Mar 31, 2026

Description 📝

This PR implements the 'Create Share Group' page along with the supporting functions for querying, routing, and submitting the form. With these changes, users can now create share groups from the UI instead of relying on API requests alone. This is the first of 3 PRs for this ticket; future PRs will implement the Images and Selected images sections.

Changes 🔄

List any change(s) relevant to the reviewer.

  • Added ShareGroupsCreate page with landing header and form
  • Added ShareGroupsCreate form
  • Added ShareGroupsCreate query mutation in sharegroups.ts
  • Added new route in routes/images/index.ts
  • Added unit tests for the ShareGroupsCreate form

Scope 🚢

Upon production release, changes in this PR will be visible to:

  • All customers
  • Some customers (e.g. in Beta or Limited Availability)
  • No customers / Not applicable

Target release date 🗓️

TBD

Preview 📷

Screen.Recording.2026-03-31.at.12.55.58.PM.mov

How to test 🧪

Prerequisites

In an environment with the Private Image Sharing feature flag enabled,

  • Navigate to Images -> Share Groups tab
  • Click the 'Create Share Group' button on the landing page

Verification steps

(How to verify changes)

  • Fill the label and optionally the description field
  • Click Create Share Group
  • Verify that your share group was successfully created and appears in the table
  • Test edge cases such as submitting an empty form, missing label, spaces and special characters in label, exceeding character limit in label field, etc. Make sure the form displays the correct error message and handles errors gracefully
  • Verify that the breadcrumb and docs links work properly
Author Checklists

As an Author, to speed up the review process, I considered 🤔

👀 Doing a self review
❔ Our contribution guidelines
🤏 Splitting feature into small PRs
➕ Adding a changeset
🧪 Providing/improving test coverage
🔐 Removing all sensitive information from the code and PR description
🚩 Using a feature flag to protect the release
👣 Providing comprehensive reproduction steps
📑 Providing or updating our documentation
🕛 Scheduling a pair reviewing session
📱 Providing mobile support
♿ Providing accessibility support


  • I have read and considered all applicable items listed above.

As an Author, before moving this PR from Draft to Open, I confirmed ✅

  • All tests and CI checks are passing
  • TypeScript compilation succeeded without errors
  • Code passes all linting rules

@fabrice-akamai fabrice-akamai marked this pull request as ready for review March 31, 2026 17:04
@fabrice-akamai fabrice-akamai requested a review from a team as a code owner March 31, 2026 17:04
@dwiley-akamai dwiley-akamai added the Private Image Sharing Related to Private Image Sharing feature label Mar 31, 2026
Comment thread packages/manager/.changeset/pr-13550-upcoming-features-1774974481770.md Outdated
Comment thread packages/queries/src/images/sharegroups.ts
Comment on lines +81 to +100
<Controller
control={control}
name="description"
render={({ field, fieldState }) => (
<TextField
errorText={fieldState.error?.message}
label="Description"
multiline
noMarginTop
{...field}
onChange={(e) =>
field.onChange(
e.target.value === '' ? undefined : e.target.value
)
}
rows={1}
value={field.value ?? ''}
/>
)}
/>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's check with the API team on implementing a maximum number of characters for the description field

Image

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, I'll reach out to them about this.

Copy link
Copy Markdown
Contributor

@abailly-akamai abailly-akamai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice - PR looks good from a code/UI perspective 👍

@@ -0,0 +1,24 @@
import Grid from '@mui/material/Grid';
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's no do straight imports from @mui

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there an alternative you suggest @abailly-akamai? We do this throughout the codebase and I don't believe we have a Grid in the ui package

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤕 My bad old habit when I see a MUI import. It's one of the very few component we haven't abstracted. Carry on!

oof-the-simpsons

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Haha, no worries. Thanks for clarifying this @dwiley-akamai @abailly-akamai!

Copy link
Copy Markdown
Contributor

@dwiley-akamai dwiley-akamai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verification steps ✅
Code review ✅

@@ -0,0 +1,24 @@
import Grid from '@mui/material/Grid';
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there an alternative you suggest @abailly-akamai? We do this throughout the codebase and I don't believe we have a Grid in the ui package

@github-project-automation github-project-automation Bot moved this from Review to Approved in Cloud Manager Apr 1, 2026
@fabrice-akamai
Copy link
Copy Markdown
Contributor Author

I made a few additional changes to the ShareGroupsTable to improve the display of the Group and Description fields when the text is too large:

  • Removed line wrap so that the text overflow gets truncated with ellipses
  • Added a tooltip to show the full text
  • Made the description column wider
Same width (current) Wider description column (new)
Screenshot 2026-04-01 at 6 36 16 PM Screenshot 2026-04-01 at 6 50 27 PM

@tzmiivsk-akamai any thoughts on expanding the description column and adding a tooltip to the group cells?

cc: @dwiley-akamai @abailly-akamai

@tzmiivsk-akamai
Copy link
Copy Markdown

I made a few additional changes to the ShareGroupsTable to improve the display of the Group and Description fields when the text is too large:

  • Removed line wrap so that the text overflow gets truncated with ellipses
  • Added a tooltip to show the full text
  • Made the description column wider

@tzmiivsk-akamai any thoughts on expanding the description column and adding a tooltip to the group cells?

Looking good! A couple of small adjustments:
Let's show tooltips only when the description is truncated to avoid visual noise.
Can we narrow down 'Members'/'Images' columns and expand 'Group' instead?
Paddings (left of 'Group' and right of 'Action Menu') look a bit wider than the designs.

Could you please double-check these? Thanks!

@fabrice-akamai
Copy link
Copy Markdown
Contributor Author

fabrice-akamai commented Apr 6, 2026

Latest changes:

  • Updated the tooltip in the group and description to show only when the text gets truncated for exceeding the character limit (32 for group and 50 for description)
  • Implemented different column widths depending on screen size and column type
Screen.Recording.2026-04-06.at.5.35.26.PM.mov

Screenshot 2026-04-06 at 3 46 56 PM

@fabrice-akamai
Copy link
Copy Markdown
Contributor Author

I made a few additional changes to the ShareGroupsTable to improve the display of the Group and Description fields when the text is too large:

  • Removed line wrap so that the text overflow gets truncated with ellipses
  • Added a tooltip to show the full text
  • Made the description column wider

@tzmiivsk-akamai any thoughts on expanding the description column and adding a tooltip to the group cells?

Looking good! A couple of small adjustments: Let's show tooltips only when the description is truncated to avoid visual noise. Can we narrow down 'Members'/'Images' columns and expand 'Group' instead? Paddings (left of 'Group' and right of 'Action Menu') look a bit wider than the designs.

Could you please double-check these? Thanks!

@tzmiivsk-akamai I wasn't able to remove the horizontal padding along the table row because it's built into the CDS table we're using, and it doesn't allow us to override the default padding there. I tried a few different solutions, but none worked. I will report this issue to the CDS team so it can be addressed in the future.

@linode-gh-bot
Copy link
Copy Markdown

Cloud Manager UI test results

🔺 2 failing tests on test run #9 ↗︎

❌ Failing✅ Passing↪️ Skipped🕐 Duration
2 Failing886 Passing11 Skipped42m 43s

Details

Failing Tests
SpecTest
resize-linode.spec.tsCloud Manager Cypress Tests→resize linode » resizes a linode by increasing size: warm migration
object-storage.e2e.spec.tsCloud Manager Cypress Tests→object storage end-to-end tests » can update bucket access

Troubleshooting

Use this command to re-run the failing tests:

pnpm cy:run -s "cypress/e2e/core/linodes/resize-linode.spec.ts,cypress/e2e/core/objectStorage/object-storage.e2e.spec.ts"

@fabrice-akamai fabrice-akamai merged commit de5e148 into linode:develop Apr 7, 2026
34 of 35 checks passed
@github-project-automation github-project-automation Bot moved this from Approved to Merged in Cloud Manager Apr 7, 2026
bbanucha-akamai pushed a commit to bbanucha-akamai/linode-manager that referenced this pull request Apr 8, 2026
)

* Added missing padding around the Managed dashboard card

* changed spacing to spacingFunction

* Implement basic sharegroup create form

* Added changeset: Implement the basic share group create page

* update unit test

* Update packages/manager/.changeset/pr-13550-upcoming-features-1774974481770.md

Co-authored-by: Dajahi Wiley <114682940+dwiley-akamai@users.noreply.github.com>

* Update the createShareGroup query

* Update description cell to truncate the text overflow and use tooltips

* Update table design and tooltip appearance

* Update table cell styling

* Update the share groups table columns and add tooltips

* Update description column width

---------

Co-authored-by: Dajahi Wiley <114682940+dwiley-akamai@users.noreply.github.com>
grevanak-akamai pushed a commit that referenced this pull request Apr 23, 2026
* Added missing padding around the Managed dashboard card

* changed spacing to spacingFunction

* Implement basic sharegroup create form

* Added changeset: Implement the basic share group create page

* update unit test

* Update packages/manager/.changeset/pr-13550-upcoming-features-1774974481770.md

Co-authored-by: Dajahi Wiley <114682940+dwiley-akamai@users.noreply.github.com>

* Update the createShareGroup query

* Update description cell to truncate the text overflow and use tooltips

* Update table design and tooltip appearance

* Update table cell styling

* Update the share groups table columns and add tooltips

* Update description column width

---------

Co-authored-by: Dajahi Wiley <114682940+dwiley-akamai@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Private Image Sharing Related to Private Image Sharing feature

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants