Skip to content
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
ad59835
Unify ResponsiveTable design; Fix visual consistency of Shipping Methods
mirekm Jan 22, 2026
89f45bf
WIP
mirekm Jan 22, 2026
1824e08
Updating ReactiveTable across the entire Dashboard
mirekm Jan 23, 2026
6103855
Improve the ResponsiveTable styling; Stick variants list
mirekm Jan 24, 2026
d8e5e90
Improve variants page
mirekm Jan 24, 2026
0459dfa
Unify the loading phases pattern for all ResponsiveTables
mirekm Jan 24, 2026
c839086
Mock scrollIntoView in test fixture
mirekm Jan 24, 2026
863fdc9
Add changeset
mirekm Jan 24, 2026
c9503b4
Extract messages
mirekm Jan 24, 2026
3913f81
Remove old dead part of the code
mirekm Jan 25, 2026
acc3bc5
Merge branch 'main' into fix/responsive-table-design
mirekm Jan 26, 2026
0280cf5
Merge branch 'main' into fix/responsive-table-design
mirekm Jan 27, 2026
fdb11c1
Fix error button
mirekm Jan 27, 2026
7cc7165
Revert mistakenly overritten changelog entry
mirekm Jan 27, 2026
05ece6d
Add changeset
mirekm Jan 27, 2026
1bf7277
Trim AGENTS.MD to the minimum
mirekm Jan 27, 2026
114a479
Handle plural
mirekm Jan 27, 2026
26a281a
Remove unused styles
mirekm Jan 27, 2026
e238d52
Drop barrel index
mirekm Jan 27, 2026
a4c9f5f
Refactor
mirekm Jan 27, 2026
c0009c7
Merge branch 'main' into fix/responsive-table-design
mirekm Jan 28, 2026
03bc327
Apply suggestions from code review
witoszekdev Jan 29, 2026
8101631
Update messages
witoszekdev Jan 29, 2026
e47909f
fix messages, add plural
witoszekdev Jan 29, 2026
316db9c
apply other review comments
witoszekdev Jan 29, 2026
4974de7
Merge branch 'main' into fix/responsive-table-design
witoszekdev Jan 29, 2026
05fd85e
fix incorreclty added changeset
witoszekdev Jan 29, 2026
a950d14
Merge branch 'main' into fix/responsive-table-design
mirekm Jan 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .changeset/bumpy-jobs-clean.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
"saleor-dashboard": patch
---

Update lodash version to `4.17.23`
Improve table design consistency across the dashboard with unified styling for ResponsiveTable components, better loading states, and improved scroll behavior for variant navigation
Comment thread
mirekm marked this conversation as resolved.
15 changes: 15 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,21 @@ The codebase follows a feature-based architecture with shared components:
- Implement proper form validation with React Hook Form
- Add internationalization support for user-facing text

### UI Design Guidelines

**Before redesigning any component that displays a list, ask: "What happens with 50+ items?"**

If the list could be long:

- Add scrollable container with `max-height`
- Keep headers outside the scroll area
- Auto-scroll to active item on load

Other considerations:

- Loading states: Show skeletons
- Empty states: Handle zero items gracefully
Comment on lines +130 to +143

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.

question: maybe in general we should migrate to skills for specific tasks like this one (writing / refactoring components that display list) - I think it works better in general: agents.md tends to get ignored + we pollute our context less.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Yes - 100%. I internally use both rules and skills. Just had no time to pull it together yet as I initially did for our storefront on the Paper PR/branch.


### Testing Requirements

- Write unit tests for utility functions and complex components
Expand Down
52 changes: 29 additions & 23 deletions locale/defaultMessages.json
Original file line number Diff line number Diff line change
Expand Up @@ -528,6 +528,9 @@
"context": "sum of all pending refunds inside an order",
"string": "Pending refunds"
},
"0xMUfd": {
"string": "No results found for \"{query}\""
},
"1+ROfp": {
"string": "Transaction"
},
Expand Down Expand Up @@ -2084,6 +2087,10 @@
"context": "replaced event title",
"string": "Products were replaced"
},
"AWyKB7": {
"context": "card header title",
"string": "Channel list"
},
"AY7Tuz": {
"string": "The same object cannot be in both lists"
},
Expand Down Expand Up @@ -3392,6 +3399,10 @@
"context": "table column header, sold units preorder quantity",
"string": "Sold units"
},
"Hd3E1g": {
"context": "table header column",
"string": "Channel name"
},
"Hebup2": {
"context": "Health check subtitle when product is not published",
"string": "Product is not published. Publish it to make it visible in your store."
Expand Down Expand Up @@ -5777,10 +5788,6 @@
"VEext+": {
"string": "Are you sure you want to delete this image?"
},
"VHuzgq": {
"context": "table actions",
"string": "Actions"
},
"VIABHy": {
"context": "error message",
"string": "Default shipping zone already exists"
Expand Down Expand Up @@ -5950,10 +5957,6 @@
"WHgdsk": {
"string": "Out of stock"
},
"WIxSDm": {
"context": "card header",
"string": "{country} class rates"
},
"WK62MN": {
"string": "Fulfillment"
},
Expand Down Expand Up @@ -7412,6 +7415,10 @@
"eRqx44": {
"string": "Search collections..."
},
"eS8xZ6": {
"context": "card header",
"string": "Tax class rates: {country}"
},
"eUjFjW": {
"string": "Permission group created"
},
Expand Down Expand Up @@ -7736,10 +7743,6 @@
"gTr0qE": {
"string": "Shipping Settings"
},
"gVD1os": {
"context": "empty list message",
"string": "You haven’t assigned any member to this permission group yet."
},
"gVqSnA": {
"string": "Assign and save"
},
Expand Down Expand Up @@ -8547,6 +8550,10 @@
"context": "order return error title when cannot refund",
"string": "Couldn't refund products"
},
"lCEp2/": {
"context": "save button disabled tooltip",
"string": "Set prices for all channels to save"
},
"lCPxtT": {
"context": "resend code label",
"string": "Resend code"
Expand Down Expand Up @@ -9891,6 +9898,10 @@
"context": "voucher status",
"string": "Expired"
},
"t84lbb": {
"context": "empty list message",
"string": "You haven't assigned any member to this permission group yet."
},
"tCLTCb": {
"context": "tab name",
"string": "All products"
Expand Down Expand Up @@ -10262,6 +10273,9 @@
"v3WWK+": {
"string": "Status is invalid"
},
"v8UngX": {
"string": "Search warehouses..."
},
"v8e93p": {
"context": "hint for order total option",
"string": "Matches what customer owes"
Expand Down Expand Up @@ -10377,6 +10391,9 @@
"context": "default product variant indicator",
"string": "Default"
},
"vaFjs6": {
"string": "No warehouses available to add"
},
"vbop3G": {
"string": "Create new model"
},
Expand Down Expand Up @@ -10526,9 +10543,6 @@
"context": "refund amounts were settled",
"string": "Settled"
},
"wL7VAE": {
"string": "Actions"
},
"wL850U": {
"context": "draft order lines, section header",
"string": "Order lines"
Expand Down Expand Up @@ -10829,10 +10843,6 @@
"context": "discount value",
"string": "discount"
},
"yLfbSh": {
"context": "support label",
"string": "Channel name"
},
"yOaNWB": {
"context": "delete shipping method",
"string": "Are you sure you want to delete {name}?"
Expand Down Expand Up @@ -10966,10 +10976,6 @@
"zCb8fX": {
"string": "Weight"
},
"zD7/M6": {
"context": "empty list message",
"string": "Please use Assign Members button to do so."
},
"zDvDnG": {
"context": "modal header",
"string": "Media from the URL you supply will be shown in the media gallery. You will be able to define the order of the gallery."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,12 @@ import {
DatagridChangeStateContext,
useDatagridChangeState,
} from "@dashboard/components/Datagrid/hooks/useDatagridChange";
import { TablePaginationWithContext } from "@dashboard/components/TablePagination";
import { DatagridPagination } from "@dashboard/components/TablePagination";
import { AttributeFragment } from "@dashboard/graphql";
import { getPrevLocationState } from "@dashboard/hooks/useBackLinkWithState";
import useNavigator from "@dashboard/hooks/useNavigator";
import { ListProps, SortPage } from "@dashboard/types";
import { Item } from "@glideapps/glide-data-grid";
import { Box } from "@saleor/macaw-ui-next";
import { useCallback, useMemo } from "react";
import { useIntl } from "react-intl";
import { useLocation } from "react-router";
Expand Down Expand Up @@ -122,14 +121,12 @@ export const AttributeListDatagrid = ({
navigatorOpts={{ state: getPrevLocationState(location) }}
/>

<Box paddingX={6}>
<TablePaginationWithContext
component="div"
settings={settings}
disabled={disabled}
onUpdateListSettings={onUpdateListSettings}
/>
</Box>
<DatagridPagination
component="div"
settings={settings}
disabled={disabled}
onUpdateListSettings={onUpdateListSettings}
/>
</DatagridChangeStateContext.Provider>
);
};
Loading
Loading