fix(admin-ui): Inventory and order UI fixes and tweaks (#3461)

This PR aims to tackle a few different small fixes and tweaks related to inventory and order details UI, in connection to multiwarehousing features.

- Successfully deleting an allocation should now only present one toast
- Updated copy in allocation editing toasts
- Inventory table search should now be the same height as the location selection trigger
- Inventory table rows should now correctly visually indicate that they are clickable
- Removed Filters from Inventory table for the time being
- Added actions to Inventory table rows for adjusting availability (same action as clicking the row, which remains) and going to the product detail page for the inventory item

Resolves CORE-1229, CORE-1228, CORE-1227, CORE-1233, CORE-1230
This commit is contained in:
Rares Stefan
2023-03-14 10:53:13 +01:00
committed by GitHub
parent 55a1f232a3
commit 478903b55a
4 changed files with 68 additions and 19 deletions

View File

@@ -11,6 +11,7 @@ type TableRowProps = React.HTMLAttributes<HTMLTableRowElement> & {
forceDropdown?: boolean
actions?: ActionType[]
linkTo?: string
clickable?: boolean
}
type TableCellProps = React.TdHTMLAttributes<HTMLTableCellElement> & {
@@ -28,6 +29,7 @@ export type TableProps = {
filteringOptions?: FilteringOptionProps[] | React.ReactNode
tableActions?: React.ReactNode
enableSearch?: boolean
searchClassName?: string
immediateSearchFocus?: boolean
searchPlaceholder?: string
searchValue?: string
@@ -55,6 +57,7 @@ const Table = React.forwardRef<HTMLTableElement, TableProps>(
children,
tableActions,
enableSearch,
searchClassName,
immediateSearchFocus,
searchPlaceholder,
searchValue,
@@ -89,6 +92,7 @@ const Table = React.forwardRef<HTMLTableElement, TableProps>(
placeholder={searchPlaceholder}
searchValue={searchValue}
onSearch={handleSearch!}
className={searchClassName}
/>
)}
</div>
@@ -217,7 +221,18 @@ Table.Cell = React.forwardRef<HTMLTableCellElement, TableCellProps>(
)
Table.Row = React.forwardRef<HTMLTableRowElement, TableRowProps>(
({ className, actions, children, linkTo, forceDropdown, ...props }, ref) => {
(
{
className,
actions,
children,
linkTo,
forceDropdown,
clickable,
...props
},
ref
) => {
const navigate = useNavigate()
return (
<tr
@@ -225,7 +240,9 @@ Table.Row = React.forwardRef<HTMLTableRowElement, TableRowProps>(
className={clsx(
"inter-small-regular border-grey-20 text-grey-90 border-t border-b",
className,
{ "hover:bg-grey-5 cursor-pointer": linkTo !== undefined }
{
"hover:bg-grey-5 cursor-pointer": linkTo !== undefined || clickable,
}
)}
{...props}
{...(linkTo && {

View File

@@ -17,7 +17,6 @@ import Button from "../../fundamentals/button"
import ImagePlaceholder from "../../fundamentals/image-placeholder"
import InputField from "../../molecules/input"
import InputHeader from "../../fundamentals/input-header"
import InventoryFilter from "../../../domain/inventory/filter-dropdown"
import Modal from "../../molecules/modal"
import { NextSelect } from "../../molecules/select/next-select"
import Spinner from "../../atoms/spinner"
@@ -28,7 +27,7 @@ import { isEmpty } from "lodash"
import qs from "qs"
import { useInventoryFilters } from "./use-inventory-filters"
import useInventoryTableColumn from "./use-inventory-column"
import { useLocation } from "react-router-dom"
import { useLocation, useNavigate } from "react-router-dom"
import useNotification from "../../../hooks/use-notification"
import useToggleState from "../../../hooks/use-toggle-state"
@@ -237,19 +236,8 @@ const InventoryTable: React.FC<InventoryTableProps> = () => {
isLoading={isLoading}
>
<Table
filteringOptions={
<InventoryFilter
filters={filters}
submitFilters={setFilters}
clearFilters={clearFilters}
tabs={filterTabs}
onTabClick={setTab}
activeTab={activeFilterTab}
onRemoveTab={removeTab}
onSaveTab={saveTab}
/>
}
enableSearch
searchClassName="h-[40px]"
handleSearch={setQuery}
searchValue={query}
tableActions={
@@ -313,16 +301,46 @@ const InventoryRow = ({
} & TableRowProps) => {
const inventory = row.original
const navigate = useNavigate()
const {
state: isShowingAdjustAvailabilityModal,
open: showAdjustAvailabilityModal,
close: closeAdjustAvailabilityModal,
} = useToggleState()
const getRowActionables = () => {
const productId = inventory.variants?.length
? inventory.variants[0].product_id
: null
const actions = [
{
label: "Adjust Availability",
onClick: showAdjustAvailabilityModal,
},
]
if (productId) {
return [
{
label: "View Product",
onClick: () => navigate(`/a/products/${productId}`),
},
...actions,
]
}
return actions
}
return (
<Table.Row
color={"inherit"}
onClick={showAdjustAvailabilityModal}
clickable
forceDropdown
actions={getRowActionables()}
{...rest}
>
{row.cells.map((cell: Cell, index: number) => {