-
Notifications
You must be signed in to change notification settings - Fork 214
Expand file tree
/
Copy pathindex.jsx
More file actions
70 lines (65 loc) · 2.39 KB
/
index.jsx
File metadata and controls
70 lines (65 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
* Copyright (c) 2021, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause
*/
import React from 'react'
import PropTypes from 'prop-types'
import {Dialog, CloseButton} from '@chakra-ui/react'
import ProductView from '../../components/product-view'
import {useProductViewModal} from '../../hooks/use-product-view-modal'
import SafePortal from '../safe-portal'
import {useIntl} from 'react-intl'
/**
* A Dialog that contains Product View
*/
const ProductViewModal = ({product, isOpen, onClose, ...props}) => {
const productViewModalData = useProductViewModal(product)
const intl = useIntl()
const label = intl.formatMessage(
{
defaultMessage: 'Edit modal for {productName}',
id: 'cart.product_edit_modal.modal_label'
},
{productName: productViewModalData?.product?.name}
)
return (
<Dialog.Root
lazyMount
open={isOpen}
onOpenChange={() => onClose()}
size="xl"
closeOnInteractOutside={false}
>
<SafePortal>
<Dialog.Backdrop />
<Dialog.Positioner>
<Dialog.Content data-testid="product-view-modal" aria-label={label}>
<Dialog.CloseTrigger />
<Dialog.Body pb={8} bg="white" paddingBottom={6} marginTop={6}>
<ProductView
showFullLink={true}
imageSize="sm"
product={productViewModalData.product}
isLoading={productViewModalData.isFetching}
{...props}
/>
</Dialog.Body>
<Dialog.CloseTrigger asChild>
<CloseButton size="sm" />
</Dialog.CloseTrigger>
</Dialog.Content>
</Dialog.Positioner>
</SafePortal>
</Dialog.Root>
)
}
ProductViewModal.propTypes = {
isOpen: PropTypes.bool.isRequired,
onOpen: PropTypes.func.isRequired,
onClose: PropTypes.func.isRequired,
product: PropTypes.object,
isLoading: PropTypes.bool
}
export default ProductViewModal