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 #20 from commercelayer/add-metadata
Browse files Browse the repository at this point in the history
Add `Metadata` in tag dropdown
  • Loading branch information
pfferrari authored Apr 16, 2024
2 parents 81cc535 + 4083fa0 commit cc7b5dc
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 57 deletions.
2 changes: 1 addition & 1 deletion packages/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"prepare": "touch ./public/config.local.js"
},
"dependencies": {
"@commercelayer/app-elements": "^1.20.1",
"@commercelayer/app-elements": "^1.22.2",
"@commercelayer/sdk": "5.36.0",
"@hookform/resolvers": "^3.3.4",
"lodash": "^4.17.21",
Expand Down
87 changes: 54 additions & 33 deletions packages/app/src/components/ListItemTag.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { appRoutes } from '#data/routes'
import { isMock, makeTag } from '#mocks'
import { isMock, isMockedId, makeTag } from '#mocks'
import {
Button,
Dropdown,
Expand All @@ -10,6 +10,7 @@ import {
PageLayout,
Text,
useCoreSdkProvider,
useEditMetadataOverlay,
useOverlay,
useTokenProvider,
withSkeletonTemplate
Expand All @@ -28,39 +29,54 @@ export const ListItemTag = withSkeletonTemplate<

const { Overlay, open, close } = useOverlay()

const { Overlay: EditMetadataOverlay, show: showEditMetadataOverlay } =
useEditMetadataOverlay()

const [isDeleteting, setIsDeleting] = useState(false)

const contextMenuEdit = canUser('update', 'tags') && !isMock(resource) && (
<DropdownItem
label='Edit'
onClick={() => {
setLocation(appRoutes.edit.makePath(resource.id))
}}
/>
)
const dropdownItems: JSX.Element[] = []

const contextMenuDivider = canUser('update', 'tags') &&
canUser('destroy', 'tags') && <DropdownDivider />
if (canUser('update', 'tags') && !isMock(resource)) {
dropdownItems.push(
<DropdownItem
label='Edit'
onClick={() => {
setLocation(appRoutes.edit.makePath(resource.id))
}}
/>
)
}

const contextMenuDelete = canUser('destroy', 'tags') && (
<DropdownItem
label='Delete'
onClick={() => {
open()
}}
/>
)
if (canUser('update', 'tags')) {
dropdownItems.push(
<DropdownItem
label='Set metadata'
onClick={() => {
showEditMetadataOverlay()
}}
/>
)
}

if (canUser('destroy', 'tags')) {
if (dropdownItems.length > 0) {
dropdownItems.push(<DropdownDivider />)
}

dropdownItems.push(
<DropdownItem
label='Delete'
onClick={() => {
open()
}}
/>
)
}

const contextMenu = (
<Dropdown
dropdownLabel={<Icon name='dotsThree' size='24' />}
dropdownItems={
<>
{contextMenuEdit}
{contextMenuDivider}
{contextMenuDelete}
</>
}
dropdownItems={dropdownItems}
/>
)

Expand All @@ -72,6 +88,14 @@ export const ListItemTag = withSkeletonTemplate<
{resource.name}
</Text>
</div>
{!isMockedId(resource.id) && (
<EditMetadataOverlay
resourceType={resource.type}
resourceId={resource.id}
title='Edit metadata'
description={`${resource.name}`}
/>
)}
{contextMenu}
</ListItem>
{canUser('destroy', 'tags') && (
Expand All @@ -95,13 +119,10 @@ export const ListItemTag = withSkeletonTemplate<
onClick={(e) => {
setIsDeleting(true)
e.stopPropagation()
void sdkClient.tags
.delete(resource.id)
.then(() => {
remove?.()
close()
})
.catch(() => {})
void sdkClient.tags.delete(resource.id).then(() => {
remove?.()
close()
})
}}
>
Delete tag
Expand Down
66 changes: 43 additions & 23 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 cc7b5dc

Please sign in to comment.