Skip to content
This repository has been archived by the owner on Sep 24, 2024. It is now read-only.

Commit

Permalink
Merge pull request #169 from commercelayer/update-elements
Browse files Browse the repository at this point in the history
Update app-elements to 2.x
  • Loading branch information
gciotola authored May 29, 2024
2 parents bdd583d + 7519673 commit 6644e2d
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 67 deletions.
4 changes: 2 additions & 2 deletions packages/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
"prepare": "touch ./public/config.local.js"
},
"dependencies": {
"@commercelayer/app-elements": "^1.24.3",
"@commercelayer/sdk": "5.38.0",
"@commercelayer/app-elements": "^2.0.1",
"@commercelayer/sdk": "^6.3.0",
"@hookform/resolvers": "^3.3.4",
"lodash": "^4.17.21",
"react": "^18.2.0",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
import {
getTriggerAttributeName,
getTriggerAttributes
} from '#components/OrderSummary/orderDictionary'
import { appRoutes } from '#data/routes'
import { useMarketInventoryModel } from '#hooks/useMarketInventoryModel'
import { useReturnableList } from '#hooks/useReturnableList'
import { useTriggerAttribute } from '#hooks/useTriggerAttribute'
import {
Button,
Dropdown,
DropdownItem,
Icon,
useTokenProvider
useTokenProvider,
type DropdownItemProps
} from '@commercelayer/app-elements'
import type { PageHeadingToolbarProps } from '@commercelayer/app-elements/dist/ui/atoms/PageHeading/PageHeadingToolbar'
import { type Order } from '@commercelayer/sdk'
import { useMemo, type FC } from 'react'
import { useMemo } from 'react'
import { useLocation } from 'wouter'
import {
getTriggerAttributeName,
getTriggerAttributes
} from './OrderSummary/orderDictionary'

export const OrderDetailsContextMenu: FC<{ order: Order }> = ({ order }) => {
export function useOrderToolbar({
order
}: {
order: Order
}): PageHeadingToolbarProps {
const { canUser } = useTokenProvider()
const [, setLocation] = useLocation()
const { inventoryModel } = useMarketInventoryModel(order.market?.id)
Expand All @@ -30,16 +32,17 @@ export const OrderDetailsContextMenu: FC<{ order: Order }> = ({ order }) => {
orderReturnStockLocation.length > 0 &&
returnableLineItems.length > 0

const createReturnDropDownItem = useMemo(() => {
return showReturnDropDownItem ? (
<DropdownItem
key='request-return'
label='Request return'
onClick={() => {
setLocation(appRoutes.return.makePath({ orderId: order.id }))
}}
/>
) : undefined
const createReturnDropDownItem = useMemo<
DropdownItemProps | undefined
>(() => {
return showReturnDropDownItem
? {
label: 'Request return',
onClick: () => {
setLocation(appRoutes.return.makePath({ orderId: order.id }))
}
}
: undefined
}, [order, returnableLineItems, showReturnDropDownItem])

const { dispatch } = useTriggerAttribute(order.id)
Expand All @@ -51,38 +54,39 @@ export const OrderDetailsContextMenu: FC<{ order: Order }> = ({ order }) => {
)
}, [order])

const triggerDropDownItems = triggerMenuActions.map((triggerAttribute) => (
<DropdownItem
key={triggerAttribute}
label={getTriggerAttributeName(triggerAttribute)}
onClick={() => {
const triggerDropDownItems: DropdownItemProps[] = triggerMenuActions.map(
(triggerAttribute) => ({
label: getTriggerAttributeName(triggerAttribute),
onClick: () => {
// refund action has its own form page
if (triggerAttribute === '_refund') {
setLocation(appRoutes.refund.makePath({ orderId: order.id }))
return
}

void dispatch(triggerAttribute)
}}
/>
))
}
})
)

if (!showReturnDropDownItem && triggerMenuActions.length === 0) {
return null
}
const dropdownItemsGroup: DropdownItemProps[] =
createReturnDropDownItem != null
? [createReturnDropDownItem, ...triggerDropDownItems]
: [...triggerDropDownItems]

return (
<>
<Dropdown
dropdownLabel={
<Button variant='secondary' size='small'>
<Icon name='dotsThree' size={16} weight='bold' />
</Button>
}
dropdownItems={[createReturnDropDownItem, ...triggerDropDownItems]}
/>
</>
)
return {
buttons:
dropdownItemsGroup.length === 1 && dropdownItemsGroup[0] != null
? [
{
label: dropdownItemsGroup[0].label,
onClick: dropdownItemsGroup[0].onClick
}
]
: undefined,
dropdownItems:
dropdownItemsGroup.length === 1 ? undefined : [dropdownItemsGroup]
}
}

type UITriggerAttributes = Parameters<typeof getTriggerAttributeName>[0]
Expand Down
2 changes: 1 addition & 1 deletion packages/app/src/mocks/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { Resource } from '@commercelayer/sdk/lib/cjs/resource'
import type { Resource } from '@commercelayer/sdk'

export * from './resources/customers'
export * from './resources/line_items'
Expand Down
2 changes: 1 addition & 1 deletion packages/app/src/mocks/resource.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ResourceTypeLock } from '@commercelayer/sdk/lib/cjs/api'
import type { ResourceTypeLock } from '@commercelayer/sdk'

interface GenericResource<T> {
readonly type: T
Expand Down
5 changes: 3 additions & 2 deletions packages/app/src/pages/OrderDetails.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { OrderAddresses } from '#components/OrderAddresses'
import { OrderCustomer } from '#components/OrderCustomer'
import { OrderDetailsContextMenu } from '#components/OrderDetailsContextMenu'
import { OrderPayment } from '#components/OrderPayment'
import { OrderReturns } from '#components/OrderReturns'
import { OrderShipments } from '#components/OrderShipments'
Expand All @@ -10,6 +9,7 @@ import { Timeline } from '#components/Timeline'
import { appRoutes } from '#data/routes'
import { useOrderDetails } from '#hooks/useOrderDetails'
import { useOrderReturns } from '#hooks/useOrderReturns'
import { useOrderToolbar } from '#hooks/useOrderToolbar'
import { isMockedId } from '#mocks'
import { getOrderTitle } from '#utils/getOrderTitle'
import {
Expand Down Expand Up @@ -39,6 +39,7 @@ function OrderDetails(): JSX.Element {

const { order, isLoading, error } = useOrderDetails(orderId)
const { returns, isLoadingReturns } = useOrderReturns(orderId)
const toolbar = useOrderToolbar({ order })

if (orderId === undefined || !canUser('read', 'orders') || error != null) {
return (
Expand Down Expand Up @@ -82,7 +83,7 @@ function OrderDetails(): JSX.Element {
return (
<PageLayout
mode={mode}
actionButton={<OrderDetailsContextMenu order={order} />}
toolbar={toolbar}
title={
<SkeletonTemplate isLoading={isLoading}>{pageTitle}</SkeletonTemplate>
}
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/pages/OrderList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ function OrderList(): JSX.Element {
fields: ['order.*', 'billing_address.*', 'market.*']
}
}}
hideTitle={viewTitle === presets.pending.viewTitle}
emptyState={
<ListEmptyState
scope={
Expand Down
30 changes: 13 additions & 17 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 6644e2d

Please sign in to comment.