@eventlook/sdk 1.4.49-beta.4 → 1.4.49-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/form/PaymentOverviewBox.js +5 -4
- package/dist/cjs/form/PaymentOverviewBox.js.map +1 -1
- package/dist/cjs/form/PaymentOverviewDrawer.js +220 -60
- package/dist/cjs/form/PaymentOverviewDrawer.js.map +1 -1
- package/dist/cjs/form/Shipping.js +13 -10
- package/dist/cjs/form/Shipping.js.map +1 -1
- package/dist/cjs/form/TicketForm.js +5 -8
- package/dist/cjs/form/TicketForm.js.map +1 -1
- package/dist/cjs/form/product/ProductCard.js +45 -38
- package/dist/cjs/form/product/ProductCard.js.map +1 -1
- package/dist/cjs/form/product/ProductVariantsDialog.js +13 -4
- package/dist/cjs/form/product/ProductVariantsDialog.js.map +1 -1
- package/dist/cjs/form/style.js +6 -1
- package/dist/cjs/form/style.js.map +1 -1
- package/dist/cjs/form/tickets/TicketQuantityControl.js +5 -3
- package/dist/cjs/form/tickets/TicketQuantityControl.js.map +1 -1
- package/dist/cjs/hooks/useScrollToFirstError.js +19 -10
- package/dist/cjs/hooks/useScrollToFirstError.js.map +1 -1
- package/dist/cjs/locales/cs.js +7 -0
- package/dist/cjs/locales/cs.js.map +1 -1
- package/dist/cjs/locales/en.js +7 -0
- package/dist/cjs/locales/en.js.map +1 -1
- package/dist/cjs/locales/es.js +7 -0
- package/dist/cjs/locales/es.js.map +1 -1
- package/dist/cjs/locales/pl.js +7 -0
- package/dist/cjs/locales/pl.js.map +1 -1
- package/dist/cjs/locales/sk.js +7 -0
- package/dist/cjs/locales/sk.js.map +1 -1
- package/dist/cjs/locales/uk.js +7 -0
- package/dist/cjs/locales/uk.js.map +1 -1
- package/dist/esm/form/PaymentOverviewBox.js +5 -4
- package/dist/esm/form/PaymentOverviewBox.js.map +1 -1
- package/dist/esm/form/PaymentOverviewDrawer.js +220 -60
- package/dist/esm/form/PaymentOverviewDrawer.js.map +1 -1
- package/dist/esm/form/Shipping.js +13 -10
- package/dist/esm/form/Shipping.js.map +1 -1
- package/dist/esm/form/TicketForm.js +6 -9
- package/dist/esm/form/TicketForm.js.map +1 -1
- package/dist/esm/form/product/ProductCard.js +46 -39
- package/dist/esm/form/product/ProductCard.js.map +1 -1
- package/dist/esm/form/product/ProductVariantsDialog.js +13 -4
- package/dist/esm/form/product/ProductVariantsDialog.js.map +1 -1
- package/dist/esm/form/style.js +6 -1
- package/dist/esm/form/style.js.map +1 -1
- package/dist/esm/form/tickets/TicketQuantityControl.js +5 -3
- package/dist/esm/form/tickets/TicketQuantityControl.js.map +1 -1
- package/dist/esm/hooks/useScrollToFirstError.js +19 -10
- package/dist/esm/hooks/useScrollToFirstError.js.map +1 -1
- package/dist/esm/locales/cs.js +7 -0
- package/dist/esm/locales/cs.js.map +1 -1
- package/dist/esm/locales/en.js +7 -0
- package/dist/esm/locales/en.js.map +1 -1
- package/dist/esm/locales/es.js +7 -0
- package/dist/esm/locales/es.js.map +1 -1
- package/dist/esm/locales/pl.js +7 -0
- package/dist/esm/locales/pl.js.map +1 -1
- package/dist/esm/locales/sk.js +7 -0
- package/dist/esm/locales/sk.js.map +1 -1
- package/dist/esm/locales/uk.js +7 -0
- package/dist/esm/locales/uk.js.map +1 -1
- package/package.json +1 -3
- package/rollup.config.mjs +0 -1
- package/src/form/PaymentOverviewBox.tsx +19 -13
- package/src/form/PaymentOverviewDrawer.tsx +314 -106
- package/src/form/Shipping.tsx +19 -16
- package/src/form/TicketForm.tsx +7 -8
- package/src/form/product/ProductCard.tsx +75 -70
- package/src/form/product/ProductVariantsDialog.tsx +19 -2
- package/src/form/style.ts +7 -1
- package/src/form/tickets/TicketQuantityControl.tsx +6 -0
- package/src/hooks/useScrollToFirstError.ts +22 -17
- package/src/locales/cs.tsx +7 -0
- package/src/locales/en.tsx +7 -0
- package/src/locales/es.tsx +7 -0
- package/src/locales/pl.tsx +7 -0
- package/src/locales/sk.tsx +7 -0
- package/src/locales/uk.tsx +7 -0
- package/src/hooks/useConsentScrollOnDrawerOpen.ts +0 -73
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductCard.js","sources":["../../../../src/form/product/ProductCard.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Card,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Link,\n Stack,\n Typography,\n} from '@mui/material';\nimport Image from '@components/Image';\nimport { IEventProduct } from '@utils/types/event-product.type';\nimport React, { useMemo, useState } from 'react';\nimport ProductVariantsDialog from '@form/product/ProductVariantsDialog';\nimport { IEventProductForm } from '@utils/types/product.type';\nimport { useFormContext, useWatch } from 'react-hook-form';\nimport { ITicketForm, ITicketFormTicket } from '@utils/types/ticket.type';\nimport { getSelectedQuantityByVariant } from '@utils/product';\nimport useGlobal from '@hooks/useGlobal.ts';\nimport { fCurrency } from '@utils/formatNumber';\n\ninterface Props {\n eventProduct: IEventProduct;\n eventId: number;\n isOnlyMerchandise?: boolean;\n}\n\nconst ProductCard: React.FC<Props> = ({ eventProduct, eventId, isOnlyMerchandise }) => {\n const { t, lang } = useGlobal();\n const [openVariantDialog, setOpenVariantDialog] = useState<boolean>(false);\n const [openSimpleProductDialog, setOpenSimpleProductDialog] = useState<boolean>(false);\n const { setValue, getValues } = useFormContext<ITicketForm>();\n const tickets: ITicketFormTicket[] = useWatch({ name: `tickets.${eventId}`, defaultValue: [] });\n const products: IEventProductForm[] = useWatch({ name: `products.${eventId}`, defaultValue: [] });\n const isSimpleProduct = eventProduct.eventProductVariants.length === 1;\n const simpleVariant = isSimpleProduct ? eventProduct.eventProductVariants[0] : undefined;\n\n const onSelectVariant = (selectedVariants: IEventProductForm[] | IEventProductForm) => {\n const normalized = Array.isArray(selectedVariants) ? selectedVariants : [selectedVariants];\n const currentProducts =\n (getValues(`products.${eventId}`) as IEventProductForm[] | undefined) ?? [];\n const nextProducts = [...currentProducts];\n\n normalized.forEach((selectedVariant) => {\n const index = nextProducts.findIndex(\n (product) => product.eventProductVariantId === selectedVariant.eventProductVariantId\n );\n\n if (index >= 0) {\n if (selectedVariant.quantity <= 0) {\n nextProducts.splice(index, 1);\n } else {\n nextProducts[index] = {\n ...nextProducts[index],\n quantity: selectedVariant.quantity,\n };\n }\n } else {\n if (selectedVariant.quantity > 0) {\n nextProducts.push(selectedVariant);\n }\n }\n });\n\n setValue(`products.${eventId}`, nextProducts, {\n shouldDirty: true,\n shouldValidate: true,\n });\n };\n\n const eventNotEmpty = useMemo(() => {\n const variantIds = new Set(eventProduct.eventProductVariants.map((variant) => variant.id));\n return products.some(\n (product) => product?.quantity && variantIds.has(product.eventProductVariantId)\n );\n }, [products, eventProduct.eventProductVariants]);\n\n const selectedQuantityByVariant = useMemo(\n () => getSelectedQuantityByVariant(products, tickets),\n [products, tickets]\n );\n\n const simpleProductQuantity = useMemo(() => {\n if (!simpleVariant) return 0;\n const matched = products.find((product) => product.eventProductVariantId === simpleVariant.id);\n return matched?.quantity ?? 0;\n }, [products, simpleVariant]);\n\n const simpleProductMaxAvailable = useMemo(() => {\n if (!simpleVariant) return 0;\n const { quantity, sold } = simpleVariant.productVariant;\n if (!quantity) return Number.POSITIVE_INFINITY;\n const used = selectedQuantityByVariant[simpleVariant.id] ?? 0;\n return quantity - sold - used;\n }, [simpleVariant, selectedQuantityByVariant]);\n\n const onChangeSimpleProductQuantity = (nextQuantity: number) => {\n if (!simpleVariant) return;\n if (nextQuantity < 0 || nextQuantity > 10) return;\n if (\n nextQuantity > simpleProductQuantity &&\n nextQuantity - simpleProductQuantity > simpleProductMaxAvailable\n )\n return;\n\n onSelectVariant({\n eventProductVariantId: simpleVariant.id,\n productVariantId: simpleVariant.productVariant.id,\n quantity: nextQuantity,\n price: simpleVariant.priceWithVat,\n excludedShippingMethodIds: eventProduct.excludedShippingMethods.map((method) => method.id),\n });\n };\n\n return (\n <>\n <Card\n sx={{\n p: 0,\n borderRadius: 0,\n boxShadow: 'none',\n background: 'none',\n }}\n >\n <Stack spacing={0}>\n <Image\n src={eventProduct.product.previewImage.url}\n ratio=\"21/9\"\n sx={{ borderRadius: 1, maxHeight: 96 }}\n />\n <Typography variant=\"h5\" sx={{ fontSize: '14px', fontWeight: 700 }}>\n {eventProduct.product.name}\n </Typography>\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" spacing={1}>\n <Typography variant=\"body2\" color=\"text.primary\">\n {eventProduct.product.priceWithVat > 0\n ? fCurrency(eventProduct.product.priceWithVat, lang, eventProduct.product.currency)\n : t('free')}\n </Typography>\n {isSimpleProduct && (\n <Link\n onClick={() => setOpenSimpleProductDialog(true)}\n color=\"inherit\"\n underline=\"always\"\n fontSize={12}\n >\n {t('more_info')}\n </Link>\n )}\n </Stack>\n {isSimpleProduct ? (\n simpleProductQuantity > 0 ? (\n <Stack direction=\"row\" spacing={1} alignItems=\"center\" width=\"100%\">\n <IconButton\n onClick={() => onChangeSimpleProductQuantity(simpleProductQuantity - 1)}\n disabled={simpleProductQuantity <= 0}\n sx={{\n flex: '1 1 0',\n height: 36,\n p: 0,\n borderRadius: 1,\n border: '1px solid',\n borderColor: 'grey.300',\n }}\n >\n -\n </IconButton>\n <Box\n sx={{\n flex: '1 1 0',\n height: 36,\n borderRadius: 1,\n border: '1px solid',\n borderColor: 'grey.300',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 700,\n }}\n >\n {simpleProductQuantity}\n </Box>\n <IconButton\n onClick={() => onChangeSimpleProductQuantity(simpleProductQuantity + 1)}\n disabled={simpleProductQuantity >= 10 || simpleProductMaxAvailable <= 0}\n sx={{\n flex: '1 1 0',\n height: 36,\n p: 0,\n borderRadius: 1,\n bgcolor: 'primary.main',\n color: 'primary.contrastText',\n '&:hover': { bgcolor: 'primary.dark' },\n '&.Mui-disabled': {\n bgcolor: 'action.disabledBackground',\n color: 'action.disabled',\n },\n }}\n >\n +\n </IconButton>\n </Stack>\n ) : (\n <Button\n variant=\"contained\"\n onClick={() => onChangeSimpleProductQuantity(1)}\n disabled={simpleProductMaxAvailable <= 0}\n fullWidth\n >\n {t('add')}\n </Button>\n )\n ) : (\n <Button\n variant={eventNotEmpty ? 'contained' : 'outlined'}\n onClick={() => setOpenVariantDialog(true)}\n fullWidth\n sx={{\n color: eventNotEmpty ? (theme) => theme.palette.common.white : 'inherit',\n borderColor: (theme) => theme.palette.grey[300],\n }}\n >\n {eventNotEmpty\n ? t('event.tickets.merchandise.show_added')\n : t('event.tickets.merchandise.show_sizes')}\n </Button>\n )}\n </Stack>\n </Card>\n <ProductVariantsDialog\n eventProduct={eventProduct}\n eventId={eventId}\n openDialog={openVariantDialog && !isSimpleProduct}\n onClose={() => setOpenVariantDialog(false)}\n callback={onSelectVariant}\n selectedQuantityByVariant={selectedQuantityByVariant}\n isOnlyMerchandise={isOnlyMerchandise}\n />\n <Dialog\n open={openSimpleProductDialog && isSimpleProduct}\n onClose={() => setOpenSimpleProductDialog(false)}\n fullWidth\n maxWidth=\"sm\"\n >\n <DialogTitle\n sx={{\n textAlign: 'center',\n fontWeight: 700,\n fontSize: { xs: '1.5rem', sm: '2rem' },\n mb: 2,\n }}\n >\n {eventProduct.product.name}\n </DialogTitle>\n <DialogContent sx={{ pb: 0 }}>\n <Stack spacing={2}>\n <Typography\n variant=\"body2\"\n dangerouslySetInnerHTML={{ __html: eventProduct.product.description }}\n />\n <Typography variant=\"body1\" color=\"text.primary\">\n {eventProduct.product.priceWithVat > 0\n ? fCurrency(eventProduct.product.priceWithVat, lang, eventProduct.product.currency)\n : t('free')}\n </Typography>\n </Stack>\n </DialogContent>\n <DialogActions sx={{ px: 3, pb: 3 }}>\n <Stack spacing={1} width=\"100%\">\n <Button\n variant=\"contained\"\n onClick={() => {\n onChangeSimpleProductQuantity(simpleProductQuantity + 1);\n setOpenSimpleProductDialog(false);\n }}\n disabled={simpleProductQuantity >= 10 || simpleProductMaxAvailable <= 0}\n fullWidth\n >\n {t('add')}\n </Button>\n <Button variant=\"outlined\" onClick={() => setOpenSimpleProductDialog(false)} fullWidth>\n {t('close')}\n </Button>\n </Stack>\n </DialogActions>\n </Dialog>\n </>\n );\n};\n\nexport default ProductCard;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProductCard.js","sources":["../../../../src/form/product/ProductCard.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Card,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Link,\n Stack,\n Typography,\n} from '@mui/material';\nimport Image from '@components/Image';\nimport { Iconify } from '@components/iconify';\nimport { IEventProduct } from '@utils/types/event-product.type';\nimport React, { useMemo, useState } from 'react';\nimport ProductVariantsDialog from '@form/product/ProductVariantsDialog';\nimport { IEventProductForm } from '@utils/types/product.type';\nimport { useFormContext, useWatch } from 'react-hook-form';\nimport { ITicketForm, ITicketFormTicket } from '@utils/types/ticket.type';\nimport { getSelectedQuantityByVariant } from '@utils/product';\nimport useGlobal from '@hooks/useGlobal.ts';\nimport { fCurrency } from '@utils/formatNumber';\n\ninterface Props {\n eventProduct: IEventProduct;\n eventId: number;\n isOnlyMerchandise?: boolean;\n}\n\nconst ProductCard: React.FC<Props> = ({ eventProduct, eventId, isOnlyMerchandise }) => {\n const { t, lang } = useGlobal();\n const [openVariantDialog, setOpenVariantDialog] = useState<boolean>(false);\n const [openSimpleProductDialog, setOpenSimpleProductDialog] = useState<boolean>(false);\n const { setValue, getValues } = useFormContext<ITicketForm>();\n const tickets: ITicketFormTicket[] = useWatch({ name: `tickets.${eventId}`, defaultValue: [] });\n const products: IEventProductForm[] = useWatch({ name: `products.${eventId}`, defaultValue: [] });\n const isSimpleProduct = eventProduct.eventProductVariants.length === 1;\n const simpleVariant = isSimpleProduct ? eventProduct.eventProductVariants[0] : undefined;\n\n const onSelectVariant = (selectedVariants: IEventProductForm[] | IEventProductForm) => {\n const normalized = Array.isArray(selectedVariants) ? selectedVariants : [selectedVariants];\n const currentProducts =\n (getValues(`products.${eventId}`) as IEventProductForm[] | undefined) ?? [];\n const nextProducts = [...currentProducts];\n\n normalized.forEach((selectedVariant) => {\n const index = nextProducts.findIndex(\n (product) => product.eventProductVariantId === selectedVariant.eventProductVariantId\n );\n\n if (index >= 0) {\n if (selectedVariant.quantity <= 0) {\n nextProducts.splice(index, 1);\n } else {\n nextProducts[index] = {\n ...nextProducts[index],\n quantity: selectedVariant.quantity,\n };\n }\n } else {\n if (selectedVariant.quantity > 0) {\n nextProducts.push(selectedVariant);\n }\n }\n });\n\n setValue(`products.${eventId}`, nextProducts, {\n shouldDirty: true,\n shouldValidate: true,\n });\n };\n\n const eventNotEmpty = useMemo(() => {\n const variantIds = new Set(eventProduct.eventProductVariants.map((variant) => variant.id));\n return products.some(\n (product) => product?.quantity && variantIds.has(product.eventProductVariantId)\n );\n }, [products, eventProduct.eventProductVariants]);\n\n const selectedQuantityByVariant = useMemo(\n () => getSelectedQuantityByVariant(products, tickets),\n [products, tickets]\n );\n\n const simpleProductQuantity = useMemo(() => {\n if (!simpleVariant) return 0;\n const matched = products.find((product) => product.eventProductVariantId === simpleVariant.id);\n return matched?.quantity ?? 0;\n }, [products, simpleVariant]);\n\n const simpleProductMaxAvailable = useMemo(() => {\n if (!simpleVariant) return 0;\n const { quantity, sold } = simpleVariant.productVariant;\n if (!quantity) return Number.POSITIVE_INFINITY;\n const used = selectedQuantityByVariant[simpleVariant.id] ?? 0;\n return quantity - sold - used;\n }, [simpleVariant, selectedQuantityByVariant]);\n\n const onChangeSimpleProductQuantity = (nextQuantity: number) => {\n if (!simpleVariant) return;\n if (nextQuantity < 0 || nextQuantity > 10) return;\n if (\n nextQuantity > simpleProductQuantity &&\n nextQuantity - simpleProductQuantity > simpleProductMaxAvailable\n )\n return;\n\n onSelectVariant({\n eventProductVariantId: simpleVariant.id,\n productVariantId: simpleVariant.productVariant.id,\n quantity: nextQuantity,\n price: simpleVariant.priceWithVat,\n excludedShippingMethodIds: eventProduct.excludedShippingMethods.map((method) => method.id),\n });\n };\n\n const simpleProductQuantityControl =\n simpleProductQuantity > 0 ? (\n <Stack direction=\"row\" spacing={1} alignItems=\"center\" width=\"100%\">\n <IconButton\n onClick={() => onChangeSimpleProductQuantity(simpleProductQuantity - 1)}\n disabled={simpleProductQuantity <= 0}\n sx={{\n flex: '1 1 0',\n height: 36,\n p: 0,\n borderRadius: 1,\n border: '1px solid',\n borderColor: 'grey.300',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Iconify icon=\"eva:minus-fill\" width={18} height={18} />\n </IconButton>\n <Box\n sx={{\n flex: '1 1 0',\n height: 36,\n borderRadius: 1,\n border: '1px solid',\n borderColor: 'grey.300',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 700,\n }}\n >\n {simpleProductQuantity}\n </Box>\n <IconButton\n onClick={() => onChangeSimpleProductQuantity(simpleProductQuantity + 1)}\n disabled={simpleProductQuantity >= 10 || simpleProductMaxAvailable <= 0}\n sx={{\n flex: '1 1 0',\n height: 36,\n p: 0,\n borderRadius: 1,\n bgcolor: 'primary.main',\n color: 'primary.contrastText',\n '&:hover': { bgcolor: 'primary.dark' },\n '&.Mui-disabled': {\n bgcolor: 'action.disabledBackground',\n color: 'action.disabled',\n },\n }}\n >\n <Iconify icon=\"eva:plus-fill\" width={18} height={18} />\n </IconButton>\n </Stack>\n ) : (\n <Button\n variant=\"contained\"\n onClick={() => onChangeSimpleProductQuantity(1)}\n disabled={simpleProductMaxAvailable <= 0}\n fullWidth\n >\n {t('add')}\n </Button>\n );\n\n return (\n <>\n <Card\n sx={{\n p: 0,\n borderRadius: 0,\n boxShadow: 'none',\n background: 'none',\n }}\n >\n <Stack spacing={0}>\n <Image\n src={eventProduct.product.previewImage.url}\n ratio=\"21/9\"\n sx={{ borderRadius: 1, maxHeight: 96 }}\n />\n <Typography variant=\"h5\" sx={{ fontSize: '14px', fontWeight: 700 }}>\n {eventProduct.product.name}\n </Typography>\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" spacing={1}>\n <Typography variant=\"body2\" color=\"text.primary\">\n {eventProduct.product.priceWithVat > 0\n ? fCurrency(eventProduct.product.priceWithVat, lang, eventProduct.product.currency)\n : t('free')}\n </Typography>\n {isSimpleProduct && (\n <Link\n onClick={() => setOpenSimpleProductDialog(true)}\n color=\"inherit\"\n underline=\"always\"\n fontSize={12}\n >\n {t('more_info')}\n </Link>\n )}\n </Stack>\n {isSimpleProduct ? (\n simpleProductQuantityControl\n ) : (\n <Button\n variant={eventNotEmpty ? 'contained' : 'outlined'}\n onClick={() => setOpenVariantDialog(true)}\n fullWidth\n sx={{\n color: eventNotEmpty ? (theme) => theme.palette.common.white : 'inherit',\n borderColor: (theme) => theme.palette.grey[300],\n }}\n >\n {eventNotEmpty\n ? t('event.tickets.merchandise.show_added')\n : t('event.tickets.merchandise.show_sizes')}\n </Button>\n )}\n </Stack>\n </Card>\n <ProductVariantsDialog\n eventProduct={eventProduct}\n eventId={eventId}\n openDialog={openVariantDialog && !isSimpleProduct}\n onClose={() => setOpenVariantDialog(false)}\n callback={onSelectVariant}\n selectedQuantityByVariant={selectedQuantityByVariant}\n isOnlyMerchandise={isOnlyMerchandise}\n />\n <Dialog\n open={openSimpleProductDialog && isSimpleProduct}\n onClose={() => setOpenSimpleProductDialog(false)}\n fullWidth\n maxWidth=\"sm\"\n >\n <DialogTitle\n sx={{\n textAlign: 'center',\n fontWeight: 700,\n fontSize: { xs: '1.5rem', sm: '2rem' },\n mb: 2,\n }}\n >\n {eventProduct.product.name}\n </DialogTitle>\n <DialogContent sx={{ pb: 0 }}>\n <Stack spacing={2}>\n <Typography\n variant=\"body2\"\n dangerouslySetInnerHTML={{ __html: eventProduct.product.description }}\n />\n <Typography variant=\"body1\" color=\"text.primary\">\n {eventProduct.product.priceWithVat > 0\n ? fCurrency(eventProduct.product.priceWithVat, lang, eventProduct.product.currency)\n : t('free')}\n </Typography>\n </Stack>\n </DialogContent>\n <DialogActions sx={{ px: 3, pb: 3 }}>\n <Stack spacing={1} width=\"100%\">\n {simpleProductQuantityControl}\n <Button\n variant=\"outlined\"\n onClick={() => setOpenSimpleProductDialog(false)}\n fullWidth\n sx={{\n color: 'inherit',\n borderColor: (theme) => theme.palette.grey[300],\n }}\n >\n {t('close')}\n </Button>\n </Stack>\n </DialogActions>\n </Dialog>\n </>\n );\n};\n\nexport default ProductCard;\n"],"names":[],"mappings":"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"}
|
|
@@ -28,8 +28,13 @@ const ProductVariantsDialog = ({ eventProduct, openDialog, onClose, callback, se
|
|
|
28
28
|
.map((variant) => {
|
|
29
29
|
const quantity = draftQuantities[variant.id] ?? 0;
|
|
30
30
|
const selectedQty = selectedQuantityByVariant?.[variant.id] ?? 0;
|
|
31
|
-
if (
|
|
31
|
+
if (canAddOnlyOneAtATime) {
|
|
32
|
+
if (quantity <= 0)
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
else if (quantity <= 0 && selectedQty <= 0) {
|
|
32
36
|
return null;
|
|
37
|
+
}
|
|
33
38
|
return {
|
|
34
39
|
eventProductVariantId: variant.id,
|
|
35
40
|
productVariantId: variant.productVariant.id,
|
|
@@ -184,7 +189,7 @@ const ProductVariantsDialog = ({ eventProduct, openDialog, onClose, callback, se
|
|
|
184
189
|
gap: 1,
|
|
185
190
|
alignItems: 'center',
|
|
186
191
|
} },
|
|
187
|
-
React.createElement(Button, { variant: "outlined", onClick: () => handleRemoveQuantity(variant), disabled: draftQty < 1, sx: {
|
|
192
|
+
React.createElement(Button, { variant: "outlined", onClick: () => handleRemoveQuantity(variant), "aria-label": t('components.product_variant_dialog.decrease_quantity'), disabled: draftQty < 1, sx: {
|
|
188
193
|
minWidth: 0,
|
|
189
194
|
height: 36,
|
|
190
195
|
borderRadius: 1,
|
|
@@ -206,7 +211,7 @@ const ProductVariantsDialog = ({ eventProduct, openDialog, onClose, callback, se
|
|
|
206
211
|
fontWeight: 700,
|
|
207
212
|
color: 'text.primary',
|
|
208
213
|
} }, draftQty),
|
|
209
|
-
!canAddOnlyOneAtATime && (React.createElement(Button, { variant: "contained", onClick: () => handleAddQuantity(variant), disabled: draftQty >= 10 || draftQty >= maxAvailable, sx: { minWidth: 0, height: 36, borderRadius: 1, fontWeight: 700 } }, "+")))) : (React.createElement(Button, { variant: "contained", onClick: () => handleAddQuantity(variant), disabled: isOnlyMerchandise ? false : isAddDisabled || isAnotherSelected, sx: {
|
|
214
|
+
!canAddOnlyOneAtATime && (React.createElement(Button, { variant: "contained", onClick: () => handleAddQuantity(variant), "aria-label": t('components.product_variant_dialog.increase_quantity'), disabled: draftQty >= 10 || draftQty >= maxAvailable, sx: { minWidth: 0, height: 36, borderRadius: 1, fontWeight: 700 } }, "+")))) : (React.createElement(Button, { variant: "contained", onClick: () => handleAddQuantity(variant), disabled: isOnlyMerchandise ? false : isAddDisabled || isAnotherSelected, sx: {
|
|
210
215
|
flex: 1,
|
|
211
216
|
height: 36,
|
|
212
217
|
borderRadius: 1,
|
|
@@ -222,7 +227,11 @@ const ProductVariantsDialog = ({ eventProduct, openDialog, onClose, callback, se
|
|
|
222
227
|
React.createElement(Typography, { variant: "body2", fontWeight: 600 }, fCurrency(totalDraftPrice, lang, eventProduct.product.currency))),
|
|
223
228
|
React.createElement(Stack, { direction: "row", spacing: 1, justifyContent: "flex-end", width: "100%" },
|
|
224
229
|
hasSelectedVariants && !canAddOnlyOneAtATime && (React.createElement(Button, { variant: "outlined", color: "error", onClick: handleRemoveProduct }, t('remove'))),
|
|
225
|
-
onClose && React.createElement(Button, { onClick: onClose
|
|
230
|
+
onClose && (React.createElement(Button, { onClick: onClose, sx: {
|
|
231
|
+
border: 1,
|
|
232
|
+
color: 'inherit',
|
|
233
|
+
borderColor: (theme) => theme.palette.grey[300],
|
|
234
|
+
} }, t('cancel'))),
|
|
226
235
|
React.createElement(Button, { variant: "contained", onClick: handleOnAdd, disabled: !hasDraftSelection }, t('confirm')))))));
|
|
227
236
|
};
|
|
228
237
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductVariantsDialog.js","sources":["../../../../src/form/product/ProductVariantsDialog.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Stack,\n Typography,\n} from '@mui/material';\nimport { IEventProduct, IEventProductVariant } from '@utils/types/event-product.type';\nimport Image from '@components/Image';\nimport { useWatch } from 'react-hook-form';\nimport { ITicketFormTicket } from '@utils/types/ticket.type';\nimport { IEventProductForm } from '@utils/types/product.type';\nimport { fCurrency } from '@utils/formatNumber';\nimport useGlobal from '@hooks/useGlobal.ts';\n\ninterface Props {\n eventProduct: IEventProduct;\n eventId: number;\n openDialog: boolean;\n callback: (variants: IEventProductForm[]) => void;\n onClose?: () => void;\n selectedQuantityByVariant?: Record<number, number>;\n isOnlyMerchandise?: boolean;\n canAddOnlyOneAtATime?: boolean;\n}\n\nconst ProductVariantsDialog: React.FC<Props> = ({\n eventProduct,\n openDialog,\n onClose,\n callback,\n selectedQuantityByVariant,\n isOnlyMerchandise,\n eventId,\n canAddOnlyOneAtATime,\n}) => {\n const { t, lang, options } = useGlobal();\n const { showSnackbar } = useGlobal();\n const [draftQuantities, setDraftQuantities] = useState<Record<number, number>>({});\n const tickets: ITicketFormTicket[] = useWatch({ name: `tickets.${eventId}`, defaultValue: [] });\n const products: IEventProductForm[] = useWatch({ name: `products.${eventId}`, defaultValue: [] });\n\n useEffect(() => {\n if (openDialog) {\n const urlParams = new URLSearchParams(new URL(window.location.href).search);\n const elementId = urlParams.get('elementId');\n parent.postMessage({ type: 'eventlookFrameOpenDialog', name: elementId }, '*');\n }\n }, [openDialog]);\n\n useEffect(() => {\n if (openDialog) {\n setDraftQuantities(canAddOnlyOneAtATime ? {} : (selectedQuantityByVariant ?? {}));\n }\n }, [openDialog, selectedQuantityByVariant, canAddOnlyOneAtATime]);\n\n const handleOnAdd = () => {\n const selectedVariants = eventProduct.eventProductVariants\n .map((variant) => {\n const quantity = draftQuantities[variant.id] ?? 0;\n const selectedQty = selectedQuantityByVariant?.[variant.id] ?? 0;\n if (quantity <= 0 && selectedQty <= 0) return null;\n return {\n eventProductVariantId: variant.id,\n productVariantId: variant.productVariant.id,\n quantity,\n price: variant.priceWithVat,\n excludedShippingMethodIds: eventProduct.excludedShippingMethods.map(\n (method) => method.id\n ),\n } as IEventProductForm;\n })\n .filter((variant): variant is IEventProductForm => Boolean(variant));\n\n if (selectedVariants.length === 0) {\n showSnackbar(t('components.product_variant_dialog.select_variant'), { variant: 'error' });\n return;\n }\n\n callback(selectedVariants);\n setDraftQuantities({});\n onClose?.();\n };\n\n const getUsedCount = (variant: IEventProductVariant) => {\n let countUsed = 0;\n\n for (const product of products) {\n if (product.productVariantId === variant.productVariant.id) {\n countUsed += product.quantity;\n }\n }\n\n for (const ticket of tickets) {\n if (ticket.products) {\n for (const product of ticket.products) {\n if (product.productVariantId === variant.productVariant.id) {\n countUsed += product.quantity;\n }\n }\n }\n }\n return countUsed;\n };\n\n const getMaxAvailable = (variant: IEventProductVariant) => {\n if (!variant.productVariant.quantity) return Number.POSITIVE_INFINITY;\n return variant.productVariant.quantity - variant.productVariant.sold - getUsedCount(variant);\n };\n\n const isVariantDisabled = (variant: IEventProductVariant) => {\n if (!variant.productVariant.quantity) return false;\n return getMaxAvailable(variant) <= 0;\n };\n\n const handleAddQuantity = (variant: IEventProductVariant) => {\n setDraftQuantities((prev) => {\n const current = prev[variant.id] ?? 0;\n const next = current + 1;\n const maxAvailable = getMaxAvailable(variant);\n if (next > 10 || next > maxAvailable) return prev;\n if (canAddOnlyOneAtATime) {\n // Only allow one variant to be selected\n return { [variant.id]: 1 };\n }\n return { ...prev, [variant.id]: next };\n });\n };\n\n const handleRemoveQuantity = (variant: IEventProductVariant) => {\n setDraftQuantities((prev) => {\n const current = prev[variant.id] ?? 0;\n const next = current - 1;\n if (next <= 0) {\n const rest = { ...prev };\n delete rest[variant.id];\n return rest;\n }\n if (canAddOnlyOneAtATime) {\n // Remove the only variant\n return {};\n }\n return { ...prev, [variant.id]: next };\n });\n };\n\n const handleRemoveProduct = () => {\n const variantsToRemove = eventProduct.eventProductVariants\n .filter((variant) => (selectedQuantityByVariant?.[variant.id] ?? 0) > 0)\n .map(\n (variant) =>\n ({\n eventProductVariantId: variant.id,\n productVariantId: variant.productVariant.id,\n quantity: 0,\n price: variant.priceWithVat,\n excludedShippingMethodIds: eventProduct.excludedShippingMethods.map(\n (method) => method.id\n ),\n }) as IEventProductForm\n );\n\n if (variantsToRemove.length === 0) {\n return;\n }\n\n callback(variantsToRemove);\n setDraftQuantities({});\n onClose?.();\n };\n\n const hasSelectedVariants = eventProduct.eventProductVariants.some(\n (variant) => (selectedQuantityByVariant?.[variant.id] ?? 0) > 0\n );\n\n const variantsById = useMemo(\n () => new Map(eventProduct.eventProductVariants.map((variant) => [variant.id, variant])),\n [eventProduct.eventProductVariants]\n );\n\n const totalDraftPrice = useMemo(\n () =>\n Object.entries(draftQuantities).reduce((total, [variantId, qty]) => {\n const variant = variantsById.get(Number(variantId));\n if (!variant) return total;\n return total + variant.priceWithVat * qty;\n }, 0),\n [draftQuantities, variantsById]\n );\n\n const hasDraftSelection = useMemo(\n () =>\n eventProduct.eventProductVariants.some((variant) => (draftQuantities[variant.id] ?? 0) > 0),\n [eventProduct.eventProductVariants, draftQuantities]\n );\n\n return (\n <Dialog\n open={openDialog}\n onClose={() => onClose && onClose()}\n fullWidth\n sx={{\n mx: 'auto',\n width: {\n xs: '100%',\n sm: 'calc(100vh - 300px)',\n },\n minWidth: 300,\n maxWidth: 444,\n '& .MuiDialog-container': {\n height: options?.isIframe ? 'auto' : '100%',\n },\n }}\n >\n <DialogTitle\n sx={{ textAlign: 'center', fontWeight: 700, fontSize: { xs: '1.5rem', sm: '1.5rem' } }}\n >\n {eventProduct.product.name}\n </DialogTitle>\n <DialogContent sx={{ pb: 0 }}>\n <Stack spacing={1}>\n <Image\n src={eventProduct.product.previewImage.url}\n alt={eventProduct.product.name}\n ratio=\"16/9\"\n sx={{ borderRadius: 1 }}\n />\n <Typography variant=\"body2\" color=\"primary\">\n {t('form.labels.category')}: {eventProduct.product.category.value.text}\n </Typography>\n <Typography\n variant=\"caption\"\n dangerouslySetInnerHTML={{ __html: eventProduct.product.description }}\n />\n </Stack>\n </DialogContent>\n <DialogActions sx={{ justifyContent: 'flex-start' }}>\n <Stack spacing={1} width=\"100%\">\n <Stack spacing={1}>\n {eventProduct.eventProductVariants.map((variant) => {\n const draftQty = draftQuantities[variant.id] ?? 0;\n const maxAvailable = getMaxAvailable(variant);\n const isAddDisabled = isVariantDisabled(variant) || maxAvailable <= 0;\n const isAnotherSelected =\n canAddOnlyOneAtATime &&\n Object.keys(draftQuantities).length > 0 &&\n !draftQuantities[variant.id];\n return (\n <Stack\n key={variant.id}\n direction=\"row\"\n spacing={1}\n alignItems=\"center\"\n width=\"100%\"\n >\n <Box\n sx={{\n minWidth: 64,\n maxWidth: 64,\n height: 36,\n borderRadius: 1,\n border: 1,\n borderColor: 'divider',\n bgcolor: 'background.paper',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Typography variant=\"body2\" fontWeight={600}>\n {variant.productVariant.value}\n </Typography>\n </Box>\n {draftQty > 0 ? (\n <Box\n sx={{\n flex: 1,\n display: 'grid',\n gridTemplateColumns: canAddOnlyOneAtATime\n ? 'repeat(2, minmax(0, 1fr))'\n : 'repeat(3, minmax(0, 1fr))',\n gap: 1,\n alignItems: 'center',\n }}\n >\n <Button\n variant=\"outlined\"\n onClick={() => handleRemoveQuantity(variant)}\n disabled={draftQty < 1}\n sx={{\n minWidth: 0,\n height: 36,\n borderRadius: 1,\n fontWeight: 700,\n borderColor: 'grey.300',\n color: 'text.primary',\n }}\n >\n -\n </Button>\n <Typography\n sx={{\n minWidth: 0,\n height: 36,\n borderRadius: 1,\n border: 1,\n borderColor: 'divider',\n boxSizing: 'border-box',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n fontWeight: 700,\n color: 'text.primary',\n }}\n >\n {draftQty}\n </Typography>\n {!canAddOnlyOneAtATime && (\n <Button\n variant=\"contained\"\n onClick={() => handleAddQuantity(variant)}\n disabled={draftQty >= 10 || draftQty >= maxAvailable}\n sx={{ minWidth: 0, height: 36, borderRadius: 1, fontWeight: 700 }}\n >\n +\n </Button>\n )}\n </Box>\n ) : (\n <Button\n variant=\"contained\"\n onClick={() => handleAddQuantity(variant)}\n disabled={isOnlyMerchandise ? false : isAddDisabled || isAnotherSelected}\n sx={{\n flex: 1,\n height: 36,\n borderRadius: 1,\n fontWeight: 700,\n textTransform: 'none',\n }}\n >\n {t('add')}\n </Button>\n )}\n\n <Typography variant=\"body2\">\n {variant.priceWithVat > 0\n ? fCurrency(variant.priceWithVat, lang, eventProduct.product.currency)\n : t('free')}\n </Typography>\n </Stack>\n );\n })}\n </Stack>\n <Stack\n direction=\"row\"\n spacing={1}\n justifyContent=\"space-between\"\n alignItems=\"center\"\n width=\"100%\"\n >\n <Typography variant=\"body2\">{t('form.labels.total')}</Typography>\n <Typography variant=\"body2\" fontWeight={600}>\n {fCurrency(totalDraftPrice, lang, eventProduct.product.currency)}\n </Typography>\n </Stack>\n <Stack direction=\"row\" spacing={1} justifyContent=\"flex-end\" width=\"100%\">\n {hasSelectedVariants && !canAddOnlyOneAtATime && (\n <Button variant=\"outlined\" color=\"error\" onClick={handleRemoveProduct}>\n {t('remove')}\n </Button>\n )}\n {onClose && <Button onClick={onClose}>{t('cancel')}</Button>}\n <Button variant=\"contained\" onClick={handleOnAdd} disabled={!hasDraftSelection}>\n {t('confirm')}\n </Button>\n </Stack>\n </Stack>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default ProductVariantsDialog;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProductVariantsDialog.js","sources":["../../../../src/form/product/ProductVariantsDialog.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Stack,\n Typography,\n} from '@mui/material';\nimport { IEventProduct, IEventProductVariant } from '@utils/types/event-product.type';\nimport Image from '@components/Image';\nimport { useWatch } from 'react-hook-form';\nimport { ITicketFormTicket } from '@utils/types/ticket.type';\nimport { IEventProductForm } from '@utils/types/product.type';\nimport { fCurrency } from '@utils/formatNumber';\nimport useGlobal from '@hooks/useGlobal.ts';\n\ninterface Props {\n eventProduct: IEventProduct;\n eventId: number;\n openDialog: boolean;\n callback: (variants: IEventProductForm[]) => void;\n onClose?: () => void;\n selectedQuantityByVariant?: Record<number, number>;\n isOnlyMerchandise?: boolean;\n canAddOnlyOneAtATime?: boolean;\n}\n\nconst ProductVariantsDialog: React.FC<Props> = ({\n eventProduct,\n openDialog,\n onClose,\n callback,\n selectedQuantityByVariant,\n isOnlyMerchandise,\n eventId,\n canAddOnlyOneAtATime,\n}) => {\n const { t, lang, options } = useGlobal();\n const { showSnackbar } = useGlobal();\n const [draftQuantities, setDraftQuantities] = useState<Record<number, number>>({});\n const tickets: ITicketFormTicket[] = useWatch({ name: `tickets.${eventId}`, defaultValue: [] });\n const products: IEventProductForm[] = useWatch({ name: `products.${eventId}`, defaultValue: [] });\n\n useEffect(() => {\n if (openDialog) {\n const urlParams = new URLSearchParams(new URL(window.location.href).search);\n const elementId = urlParams.get('elementId');\n parent.postMessage({ type: 'eventlookFrameOpenDialog', name: elementId }, '*');\n }\n }, [openDialog]);\n\n useEffect(() => {\n if (openDialog) {\n setDraftQuantities(canAddOnlyOneAtATime ? {} : (selectedQuantityByVariant ?? {}));\n }\n }, [openDialog, selectedQuantityByVariant, canAddOnlyOneAtATime]);\n\n const handleOnAdd = () => {\n const selectedVariants = eventProduct.eventProductVariants\n .map((variant) => {\n const quantity = draftQuantities[variant.id] ?? 0;\n const selectedQty = selectedQuantityByVariant?.[variant.id] ?? 0;\n if (canAddOnlyOneAtATime) {\n if (quantity <= 0) return null;\n } else if (quantity <= 0 && selectedQty <= 0) {\n return null;\n }\n return {\n eventProductVariantId: variant.id,\n productVariantId: variant.productVariant.id,\n quantity,\n price: variant.priceWithVat,\n excludedShippingMethodIds: eventProduct.excludedShippingMethods.map(\n (method) => method.id\n ),\n } as IEventProductForm;\n })\n .filter((variant): variant is IEventProductForm => Boolean(variant));\n\n if (selectedVariants.length === 0) {\n showSnackbar(t('components.product_variant_dialog.select_variant'), { variant: 'error' });\n return;\n }\n\n callback(selectedVariants);\n setDraftQuantities({});\n onClose?.();\n };\n\n const getUsedCount = (variant: IEventProductVariant) => {\n let countUsed = 0;\n\n for (const product of products) {\n if (product.productVariantId === variant.productVariant.id) {\n countUsed += product.quantity;\n }\n }\n\n for (const ticket of tickets) {\n if (ticket.products) {\n for (const product of ticket.products) {\n if (product.productVariantId === variant.productVariant.id) {\n countUsed += product.quantity;\n }\n }\n }\n }\n return countUsed;\n };\n\n const getMaxAvailable = (variant: IEventProductVariant) => {\n if (!variant.productVariant.quantity) return Number.POSITIVE_INFINITY;\n return variant.productVariant.quantity - variant.productVariant.sold - getUsedCount(variant);\n };\n\n const isVariantDisabled = (variant: IEventProductVariant) => {\n if (!variant.productVariant.quantity) return false;\n return getMaxAvailable(variant) <= 0;\n };\n\n const handleAddQuantity = (variant: IEventProductVariant) => {\n setDraftQuantities((prev) => {\n const current = prev[variant.id] ?? 0;\n const next = current + 1;\n const maxAvailable = getMaxAvailable(variant);\n if (next > 10 || next > maxAvailable) return prev;\n if (canAddOnlyOneAtATime) {\n // Only allow one variant to be selected\n return { [variant.id]: 1 };\n }\n return { ...prev, [variant.id]: next };\n });\n };\n\n const handleRemoveQuantity = (variant: IEventProductVariant) => {\n setDraftQuantities((prev) => {\n const current = prev[variant.id] ?? 0;\n const next = current - 1;\n if (next <= 0) {\n const rest = { ...prev };\n delete rest[variant.id];\n return rest;\n }\n if (canAddOnlyOneAtATime) {\n // Remove the only variant\n return {};\n }\n return { ...prev, [variant.id]: next };\n });\n };\n\n const handleRemoveProduct = () => {\n const variantsToRemove = eventProduct.eventProductVariants\n .filter((variant) => (selectedQuantityByVariant?.[variant.id] ?? 0) > 0)\n .map(\n (variant) =>\n ({\n eventProductVariantId: variant.id,\n productVariantId: variant.productVariant.id,\n quantity: 0,\n price: variant.priceWithVat,\n excludedShippingMethodIds: eventProduct.excludedShippingMethods.map(\n (method) => method.id\n ),\n }) as IEventProductForm\n );\n\n if (variantsToRemove.length === 0) {\n return;\n }\n\n callback(variantsToRemove);\n setDraftQuantities({});\n onClose?.();\n };\n\n const hasSelectedVariants = eventProduct.eventProductVariants.some(\n (variant) => (selectedQuantityByVariant?.[variant.id] ?? 0) > 0\n );\n\n const variantsById = useMemo(\n () => new Map(eventProduct.eventProductVariants.map((variant) => [variant.id, variant])),\n [eventProduct.eventProductVariants]\n );\n\n const totalDraftPrice = useMemo(\n () =>\n Object.entries(draftQuantities).reduce((total, [variantId, qty]) => {\n const variant = variantsById.get(Number(variantId));\n if (!variant) return total;\n return total + variant.priceWithVat * qty;\n }, 0),\n [draftQuantities, variantsById]\n );\n\n const hasDraftSelection = useMemo(\n () =>\n eventProduct.eventProductVariants.some((variant) => (draftQuantities[variant.id] ?? 0) > 0),\n [eventProduct.eventProductVariants, draftQuantities]\n );\n\n return (\n <Dialog\n open={openDialog}\n onClose={() => onClose && onClose()}\n fullWidth\n sx={{\n mx: 'auto',\n width: {\n xs: '100%',\n sm: 'calc(100vh - 300px)',\n },\n minWidth: 300,\n maxWidth: 444,\n '& .MuiDialog-container': {\n height: options?.isIframe ? 'auto' : '100%',\n },\n }}\n >\n <DialogTitle\n sx={{ textAlign: 'center', fontWeight: 700, fontSize: { xs: '1.5rem', sm: '1.5rem' } }}\n >\n {eventProduct.product.name}\n </DialogTitle>\n <DialogContent sx={{ pb: 0 }}>\n <Stack spacing={1}>\n <Image\n src={eventProduct.product.previewImage.url}\n alt={eventProduct.product.name}\n ratio=\"16/9\"\n sx={{ borderRadius: 1 }}\n />\n <Typography variant=\"body2\" color=\"primary\">\n {t('form.labels.category')}: {eventProduct.product.category.value.text}\n </Typography>\n <Typography\n variant=\"caption\"\n dangerouslySetInnerHTML={{ __html: eventProduct.product.description }}\n />\n </Stack>\n </DialogContent>\n <DialogActions sx={{ justifyContent: 'flex-start' }}>\n <Stack spacing={1} width=\"100%\">\n <Stack spacing={1}>\n {eventProduct.eventProductVariants.map((variant) => {\n const draftQty = draftQuantities[variant.id] ?? 0;\n const maxAvailable = getMaxAvailable(variant);\n const isAddDisabled = isVariantDisabled(variant) || maxAvailable <= 0;\n const isAnotherSelected =\n canAddOnlyOneAtATime &&\n Object.keys(draftQuantities).length > 0 &&\n !draftQuantities[variant.id];\n return (\n <Stack\n key={variant.id}\n direction=\"row\"\n spacing={1}\n alignItems=\"center\"\n width=\"100%\"\n >\n <Box\n sx={{\n minWidth: 64,\n maxWidth: 64,\n height: 36,\n borderRadius: 1,\n border: 1,\n borderColor: 'divider',\n bgcolor: 'background.paper',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Typography variant=\"body2\" fontWeight={600}>\n {variant.productVariant.value}\n </Typography>\n </Box>\n {draftQty > 0 ? (\n <Box\n sx={{\n flex: 1,\n display: 'grid',\n gridTemplateColumns: canAddOnlyOneAtATime\n ? 'repeat(2, minmax(0, 1fr))'\n : 'repeat(3, minmax(0, 1fr))',\n gap: 1,\n alignItems: 'center',\n }}\n >\n <Button\n variant=\"outlined\"\n onClick={() => handleRemoveQuantity(variant)}\n aria-label={t('components.product_variant_dialog.decrease_quantity')}\n disabled={draftQty < 1}\n sx={{\n minWidth: 0,\n height: 36,\n borderRadius: 1,\n fontWeight: 700,\n borderColor: 'grey.300',\n color: 'text.primary',\n }}\n >\n -\n </Button>\n <Typography\n sx={{\n minWidth: 0,\n height: 36,\n borderRadius: 1,\n border: 1,\n borderColor: 'divider',\n boxSizing: 'border-box',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n fontWeight: 700,\n color: 'text.primary',\n }}\n >\n {draftQty}\n </Typography>\n {!canAddOnlyOneAtATime && (\n <Button\n variant=\"contained\"\n onClick={() => handleAddQuantity(variant)}\n aria-label={t('components.product_variant_dialog.increase_quantity')}\n disabled={draftQty >= 10 || draftQty >= maxAvailable}\n sx={{ minWidth: 0, height: 36, borderRadius: 1, fontWeight: 700 }}\n >\n +\n </Button>\n )}\n </Box>\n ) : (\n <Button\n variant=\"contained\"\n onClick={() => handleAddQuantity(variant)}\n disabled={isOnlyMerchandise ? false : isAddDisabled || isAnotherSelected}\n sx={{\n flex: 1,\n height: 36,\n borderRadius: 1,\n fontWeight: 700,\n textTransform: 'none',\n }}\n >\n {t('add')}\n </Button>\n )}\n\n <Typography variant=\"body2\">\n {variant.priceWithVat > 0\n ? fCurrency(variant.priceWithVat, lang, eventProduct.product.currency)\n : t('free')}\n </Typography>\n </Stack>\n );\n })}\n </Stack>\n <Stack\n direction=\"row\"\n spacing={1}\n justifyContent=\"space-between\"\n alignItems=\"center\"\n width=\"100%\"\n >\n <Typography variant=\"body2\">{t('form.labels.total')}</Typography>\n <Typography variant=\"body2\" fontWeight={600}>\n {fCurrency(totalDraftPrice, lang, eventProduct.product.currency)}\n </Typography>\n </Stack>\n <Stack direction=\"row\" spacing={1} justifyContent=\"flex-end\" width=\"100%\">\n {hasSelectedVariants && !canAddOnlyOneAtATime && (\n <Button variant=\"outlined\" color=\"error\" onClick={handleRemoveProduct}>\n {t('remove')}\n </Button>\n )}\n {onClose && (\n <Button\n onClick={onClose}\n sx={{\n border: 1,\n color: 'inherit',\n borderColor: (theme) => theme.palette.grey[300],\n }}\n >\n {t('cancel')}\n </Button>\n )}\n <Button variant=\"contained\" onClick={handleOnAdd} disabled={!hasDraftSelection}>\n {t('confirm')}\n </Button>\n </Stack>\n </Stack>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default ProductVariantsDialog;\n"],"names":[],"mappings":"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"}
|
package/dist/esm/form/style.js
CHANGED
|
@@ -4,6 +4,11 @@ import { Card, Box, FormControl } from '@mui/material';
|
|
|
4
4
|
const OverviewCard = styled(Card)(({ theme, stickyHeaderTop }) => ({
|
|
5
5
|
position: 'sticky',
|
|
6
6
|
top: stickyHeaderTop,
|
|
7
|
+
borderRadius: theme.spacing(2),
|
|
8
|
+
[theme.breakpoints.down('sm')]: {
|
|
9
|
+
borderRadius: theme.spacing(1),
|
|
10
|
+
boxShadow: 'none',
|
|
11
|
+
},
|
|
7
12
|
}));
|
|
8
13
|
const ShippingMethodItem = styled(Box, {
|
|
9
14
|
shouldForwardProp: (prop) => prop !== 'active' && prop !== 'hasError',
|
|
@@ -16,7 +21,7 @@ const ShippingMethodItem = styled(Box, {
|
|
|
16
21
|
: theme.palette.grey.A200}`,
|
|
17
22
|
marginTop: theme.spacing(1),
|
|
18
23
|
width: '100%',
|
|
19
|
-
padding: `0 ${theme.spacing(2)}`,
|
|
24
|
+
padding: `0 0 0 ${theme.spacing(2)}`,
|
|
20
25
|
transitionDuration: '.3s',
|
|
21
26
|
'& > .MuiFormControlLabel-root': {
|
|
22
27
|
width: '100%',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","sources":["../../../src/form/style.ts"],"sourcesContent":["import { styled } from '@mui/material/styles';\nimport { Box, Card, FormControl } from '@mui/material';\n\nexport const OverviewCard = styled(Card)<{ stickyHeaderTop: number }>(\n ({ theme, stickyHeaderTop }) => ({\n position: 'sticky',\n top: stickyHeaderTop,\n })\n);\n\nexport const ShippingMethodItem = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'active' && prop !== 'hasError',\n})<{ active: boolean; hasError?: boolean }>(({ theme, active, hasError }) => ({\n borderRadius: theme.spacing(1),\n border: `1px solid ${\n hasError\n ? theme.palette.error.main\n : active\n ? theme.palette.primary.main\n : theme.palette.grey.A200\n }`,\n marginTop: theme.spacing(1),\n width: '100%',\n padding: `0 ${theme.spacing(2)}`,\n transitionDuration: '.3s',\n\n '& > .MuiFormControlLabel-root': {\n width: '100%',\n padding: `${theme.spacing(1)} 0`,\n },\n}));\n\nexport const PaymentWrapper = styled(FormControl)(() => ({\n width: '100%',\n}));\n\nexport const PaymentItem = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'active',\n})<{ active: boolean }>(({ theme, active }) => ({\n borderRadius: theme.spacing(1),\n border: `1px solid ${active ? theme.palette.primary.main : theme.palette.grey.A200}`,\n marginTop: theme.spacing(1),\n width: '100%',\n padding: `0 ${theme.spacing(2)}`,\n transitionDuration: '.3s',\n\n '& > .MuiFormControlLabel-root': {\n width: '100%',\n padding: `${theme.spacing(1)} 0`,\n },\n}));\n\nexport const PaymentSwiftWrapper = styled(Box)(() => ({\n width: '100%',\n}));\n"],"names":[],"mappings":";;;AAGO,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CACtC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM;AAC/B,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,GAAG,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"style.js","sources":["../../../src/form/style.ts"],"sourcesContent":["import { styled } from '@mui/material/styles';\nimport { Box, Card, FormControl } from '@mui/material';\n\nexport const OverviewCard = styled(Card)<{ stickyHeaderTop: number }>(\n ({ theme, stickyHeaderTop }) => ({\n position: 'sticky',\n top: stickyHeaderTop,\n borderRadius: theme.spacing(2),\n\n [theme.breakpoints.down('sm')]: {\n borderRadius: theme.spacing(1),\n boxShadow: 'none',\n },\n })\n);\n\nexport const ShippingMethodItem = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'active' && prop !== 'hasError',\n})<{ active: boolean; hasError?: boolean }>(({ theme, active, hasError }) => ({\n borderRadius: theme.spacing(1),\n border: `1px solid ${\n hasError\n ? theme.palette.error.main\n : active\n ? theme.palette.primary.main\n : theme.palette.grey.A200\n }`,\n marginTop: theme.spacing(1),\n width: '100%',\n padding: `0 0 0 ${theme.spacing(2)}`,\n transitionDuration: '.3s',\n\n '& > .MuiFormControlLabel-root': {\n width: '100%',\n padding: `${theme.spacing(1)} 0`,\n },\n}));\n\nexport const PaymentWrapper = styled(FormControl)(() => ({\n width: '100%',\n}));\n\nexport const PaymentItem = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'active',\n})<{ active: boolean }>(({ theme, active }) => ({\n borderRadius: theme.spacing(1),\n border: `1px solid ${active ? theme.palette.primary.main : theme.palette.grey.A200}`,\n marginTop: theme.spacing(1),\n width: '100%',\n padding: `0 ${theme.spacing(2)}`,\n transitionDuration: '.3s',\n\n '& > .MuiFormControlLabel-root': {\n width: '100%',\n padding: `${theme.spacing(1)} 0`,\n },\n}));\n\nexport const PaymentSwiftWrapper = styled(Box)(() => ({\n width: '100%',\n}));\n"],"names":[],"mappings":";;;AAGO,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CACtC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM;AAC/B,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,GAAG,EAAE,eAAe;AACpB,IAAA,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAE9B,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAC9B,QAAA,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,QAAA,SAAS,EAAE,MAAM;AAClB,KAAA;AACF,CAAA,CAAC;AAGG,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,EAAE;AAC5C,IAAA,iBAAiB,EAAE,CAAC,IAAI,KAAK,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU;AACtE,CAAA,CAAC,CAA0C,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;AAC5E,IAAA,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,aACN;AACE,UAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACtB,UAAE;AACA,cAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;cACtB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAC3B,CAAA,CAAE;AACF,IAAA,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3B,IAAA,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,SAAS,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE;AACpC,IAAA,kBAAkB,EAAE,KAAK;AAEzB,IAAA,+BAA+B,EAAE;AAC/B,QAAA,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,CAAI;AACjC,KAAA;AACF,CAAA,CAAC;AAEK,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO;AACvD,IAAA,KAAK,EAAE,MAAM;AACd,CAAA,CAAC;AAEK,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,EAAE;IACrC,iBAAiB,EAAE,CAAC,IAAI,KAAK,IAAI,KAAK,QAAQ;CAC/C,CAAC,CAAsB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;AAC9C,IAAA,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,aAAa,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA,CAAE;AACpF,IAAA,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3B,IAAA,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE;AAChC,IAAA,kBAAkB,EAAE,KAAK;AAEzB,IAAA,+BAA+B,EAAE;AAC/B,QAAA,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,CAAI;AACjC,KAAA;AACF,CAAA,CAAC;AAEK,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO;AACpD,IAAA,KAAK,EAAE,MAAM;AACd,CAAA,CAAC;;;;"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Stack, IconButton, Box, Button } from '@mui/material';
|
|
3
3
|
import Iconify from '../../components/iconify/Iconify.js';
|
|
4
|
+
import useGlobal from '../../hooks/useGlobal.js';
|
|
4
5
|
|
|
5
6
|
const TicketQuantityControl = ({ quantity, isDisabled, canAddFirst, canAddMore, addLabel, onDecrement, onIncrement, onAddFirst, }) => {
|
|
7
|
+
const { t } = useGlobal();
|
|
6
8
|
if (quantity > 0) {
|
|
7
9
|
return (React.createElement(Stack, { direction: "row", spacing: { xs: 0.5, md: 1 }, alignItems: "center" },
|
|
8
|
-
React.createElement(IconButton, { onClick: onDecrement, disabled: isDisabled || quantity <= 0, sx: {
|
|
10
|
+
React.createElement(IconButton, { onClick: onDecrement, "aria-label": t('form.labels.ticket_quantity_decrease'), disabled: isDisabled || quantity <= 0, sx: {
|
|
9
11
|
width: { xs: 36, md: 40 },
|
|
10
12
|
height: { xs: 36, md: 40 },
|
|
11
13
|
borderRadius: 1,
|
|
@@ -24,7 +26,7 @@ const TicketQuantityControl = ({ quantity, isDisabled, canAddFirst, canAddMore,
|
|
|
24
26
|
justifyContent: 'center',
|
|
25
27
|
fontWeight: 600,
|
|
26
28
|
} }, quantity),
|
|
27
|
-
React.createElement(IconButton, { onClick: onIncrement, disabled: isDisabled || !canAddMore, sx: {
|
|
29
|
+
React.createElement(IconButton, { onClick: onIncrement, "aria-label": t('form.labels.ticket_quantity_increase'), disabled: isDisabled || !canAddMore, sx: {
|
|
28
30
|
width: { xs: 36, md: 40 },
|
|
29
31
|
height: { xs: 36, md: 40 },
|
|
30
32
|
borderRadius: 1,
|
|
@@ -34,7 +36,7 @@ const TicketQuantityControl = ({ quantity, isDisabled, canAddFirst, canAddMore,
|
|
|
34
36
|
} },
|
|
35
37
|
React.createElement(Iconify, { icon: "eva:plus-fill" }))));
|
|
36
38
|
}
|
|
37
|
-
return (React.createElement(Button, { variant: "contained", onClick: onAddFirst, disabled: isDisabled || !canAddFirst, sx: {
|
|
39
|
+
return (React.createElement(Button, { variant: "contained", onClick: onAddFirst, "aria-label": addLabel, disabled: isDisabled || !canAddFirst, sx: {
|
|
38
40
|
height: { xs: 36, md: 40 },
|
|
39
41
|
width: { xs: 116, md: 136 },
|
|
40
42
|
borderRadius: 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TicketQuantityControl.js","sources":["../../../../src/form/tickets/TicketQuantityControl.tsx"],"sourcesContent":["import React from 'react';\nimport { Box, Button, IconButton, Stack } from '@mui/material';\nimport { Iconify } from '@components/iconify';\n\ninterface TicketQuantityControlProps {\n quantity: number;\n isDisabled: boolean;\n canAddFirst: boolean;\n canAddMore: boolean;\n addLabel: string;\n onDecrement: () => void;\n onIncrement: () => void;\n onAddFirst: () => void;\n}\n\nconst TicketQuantityControl: React.FC<TicketQuantityControlProps> = ({\n quantity,\n isDisabled,\n canAddFirst,\n canAddMore,\n addLabel,\n onDecrement,\n onIncrement,\n onAddFirst,\n}) => {\n if (quantity > 0) {\n return (\n <Stack direction=\"row\" spacing={{ xs: 0.5, md: 1 }} alignItems=\"center\">\n <IconButton\n onClick={onDecrement}\n disabled={isDisabled || quantity <= 0}\n sx={{\n width: { xs: 36, md: 40 },\n height: { xs: 36, md: 40 },\n borderRadius: 1,\n border: '1px solid',\n borderColor: 'grey.300',\n }}\n >\n <Iconify icon=\"eva:minus-fill\" />\n </IconButton>\n <Box\n sx={{\n width: { xs: 36, md: 40 },\n height: { xs: 36, md: 40 },\n borderRadius: 1,\n border: '1px solid',\n borderColor: 'grey.300',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 600,\n }}\n >\n {quantity}\n </Box>\n <IconButton\n onClick={onIncrement}\n disabled={isDisabled || !canAddMore}\n sx={{\n width: { xs: 36, md: 40 },\n height: { xs: 36, md: 40 },\n borderRadius: 1,\n bgcolor: 'primary.main',\n color: 'primary.contrastText',\n '&:hover': { bgcolor: 'primary.dark' },\n }}\n >\n <Iconify icon=\"eva:plus-fill\" />\n </IconButton>\n </Stack>\n );\n }\n\n return (\n <Button\n variant=\"contained\"\n onClick={onAddFirst}\n disabled={isDisabled || !canAddFirst}\n sx={{\n height: { xs: 36, md: 40 },\n width: { xs: 116, md: 136 },\n borderRadius: 1,\n px: 3,\n textTransform: 'none',\n fontWeight: 600,\n }}\n >\n {addLabel}\n </Button>\n );\n};\n\nexport default TicketQuantityControl;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TicketQuantityControl.js","sources":["../../../../src/form/tickets/TicketQuantityControl.tsx"],"sourcesContent":["import React from 'react';\nimport { Box, Button, IconButton, Stack } from '@mui/material';\nimport { Iconify } from '@components/iconify';\nimport useGlobal from '@hooks/useGlobal';\n\ninterface TicketQuantityControlProps {\n quantity: number;\n isDisabled: boolean;\n canAddFirst: boolean;\n canAddMore: boolean;\n addLabel: string;\n onDecrement: () => void;\n onIncrement: () => void;\n onAddFirst: () => void;\n}\n\nconst TicketQuantityControl: React.FC<TicketQuantityControlProps> = ({\n quantity,\n isDisabled,\n canAddFirst,\n canAddMore,\n addLabel,\n onDecrement,\n onIncrement,\n onAddFirst,\n}) => {\n const { t } = useGlobal();\n\n if (quantity > 0) {\n return (\n <Stack direction=\"row\" spacing={{ xs: 0.5, md: 1 }} alignItems=\"center\">\n <IconButton\n onClick={onDecrement}\n aria-label={t('form.labels.ticket_quantity_decrease')}\n disabled={isDisabled || quantity <= 0}\n sx={{\n width: { xs: 36, md: 40 },\n height: { xs: 36, md: 40 },\n borderRadius: 1,\n border: '1px solid',\n borderColor: 'grey.300',\n }}\n >\n <Iconify icon=\"eva:minus-fill\" />\n </IconButton>\n <Box\n sx={{\n width: { xs: 36, md: 40 },\n height: { xs: 36, md: 40 },\n borderRadius: 1,\n border: '1px solid',\n borderColor: 'grey.300',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 600,\n }}\n >\n {quantity}\n </Box>\n <IconButton\n onClick={onIncrement}\n aria-label={t('form.labels.ticket_quantity_increase')}\n disabled={isDisabled || !canAddMore}\n sx={{\n width: { xs: 36, md: 40 },\n height: { xs: 36, md: 40 },\n borderRadius: 1,\n bgcolor: 'primary.main',\n color: 'primary.contrastText',\n '&:hover': { bgcolor: 'primary.dark' },\n }}\n >\n <Iconify icon=\"eva:plus-fill\" />\n </IconButton>\n </Stack>\n );\n }\n\n return (\n <Button\n variant=\"contained\"\n onClick={onAddFirst}\n aria-label={addLabel}\n disabled={isDisabled || !canAddFirst}\n sx={{\n height: { xs: 36, md: 40 },\n width: { xs: 116, md: 136 },\n borderRadius: 1,\n px: 3,\n textTransform: 'none',\n fontWeight: 600,\n }}\n >\n {addLabel}\n </Button>\n );\n};\n\nexport default TicketQuantityControl;\n"],"names":[],"mappings":"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"}
|
|
@@ -38,22 +38,31 @@ const escapeSelectorValue = (value) => {
|
|
|
38
38
|
if (typeof CSS !== 'undefined' && typeof CSS.escape === 'function') {
|
|
39
39
|
return CSS.escape(value);
|
|
40
40
|
}
|
|
41
|
-
|
|
41
|
+
// Fallback: escape all CSS special characters manually
|
|
42
|
+
return value.replace(/([!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g, '\\$1');
|
|
42
43
|
};
|
|
43
|
-
function useScrollToFirstError(
|
|
44
|
+
function useScrollToFirstError({ setFocus, }) {
|
|
44
45
|
return useCallback((errors) => {
|
|
45
46
|
const firstError = getFirstError(errors);
|
|
46
47
|
if (!firstError) {
|
|
47
48
|
return;
|
|
48
49
|
}
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
50
|
+
// Re-query the DOM instead of relying on potentially stale refs
|
|
51
|
+
const fieldName = String(firstError.name);
|
|
52
|
+
const scrollTarget = document.querySelector(`[name="${escapeSelectorValue(fieldName)}"]`) ||
|
|
53
|
+
document.getElementById(fieldName);
|
|
54
|
+
if (scrollTarget) {
|
|
55
|
+
scrollTarget.scrollIntoView({
|
|
56
|
+
behavior: 'smooth',
|
|
57
|
+
block: 'center',
|
|
58
|
+
});
|
|
59
|
+
scrollTarget.focus({ preventScroll: true });
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// Fallback to RHF's setFocus if no DOM element found
|
|
63
|
+
setFocus(firstError.name);
|
|
64
|
+
}
|
|
65
|
+
}, [setFocus]);
|
|
57
66
|
}
|
|
58
67
|
|
|
59
68
|
export { useScrollToFirstError as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScrollToFirstError.js","sources":["../../../src/hooks/useScrollToFirstError.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport { FieldError, FieldErrors, FieldValues, Path, UseFormReturn } from 'react-hook-form';\n\ntype FirstError<T extends FieldValues> = {\n name: Path<T>;\n ref?: HTMLElement | null;\n};\n\nconst isFieldError = (value: unknown): value is FieldError =>\n !!value && typeof value === 'object' && ('type' in value || 'message' in value);\n\nconst getFirstError = <T extends FieldValues>(\n errors: FieldErrors<T>,\n parentPath = ''\n): FirstError<T> | null => {\n for (const [key, value] of Object.entries(errors)) {\n if (!value) {\n continue;\n }\n\n const fieldPath = parentPath ? `${parentPath}.${key}` : key;\n\n if (isFieldError(value)) {\n return {\n name: fieldPath as Path<T>,\n ref: value.ref instanceof HTMLElement ? value.ref : null,\n };\n }\n\n if (Array.isArray(value)) {\n for (let index = 0; index < value.length; index++) {\n const nestedError = value[index] as FieldErrors<T> | undefined;\n if (!nestedError) {\n continue;\n }\n\n const firstNestedError = getFirstError(\n nestedError,\n parentPath ? `${parentPath}.${key}.${index}` : `${key}.${index}`\n );\n if (firstNestedError) {\n return firstNestedError;\n }\n }\n } else if (typeof value === 'object') {\n const firstNestedError = getFirstError(value as FieldErrors<T>, fieldPath);\n if (firstNestedError) {\n return firstNestedError;\n }\n }\n }\n\n return null;\n};\n\nconst escapeSelectorValue = (value: string) => {\n if (typeof CSS !== 'undefined' && typeof CSS.escape === 'function') {\n return CSS.escape(value);\n }\n\n return value.replace(
|
|
1
|
+
{"version":3,"file":"useScrollToFirstError.js","sources":["../../../src/hooks/useScrollToFirstError.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport { FieldError, FieldErrors, FieldValues, Path, UseFormReturn } from 'react-hook-form';\n\ntype FirstError<T extends FieldValues> = {\n name: Path<T>;\n ref?: HTMLElement | null;\n};\n\nconst isFieldError = (value: unknown): value is FieldError =>\n !!value && typeof value === 'object' && ('type' in value || 'message' in value);\n\nconst getFirstError = <T extends FieldValues>(\n errors: FieldErrors<T>,\n parentPath = ''\n): FirstError<T> | null => {\n for (const [key, value] of Object.entries(errors)) {\n if (!value) {\n continue;\n }\n\n const fieldPath = parentPath ? `${parentPath}.${key}` : key;\n\n if (isFieldError(value)) {\n return {\n name: fieldPath as Path<T>,\n ref: value.ref instanceof HTMLElement ? value.ref : null,\n };\n }\n\n if (Array.isArray(value)) {\n for (let index = 0; index < value.length; index++) {\n const nestedError = value[index] as FieldErrors<T> | undefined;\n if (!nestedError) {\n continue;\n }\n\n const firstNestedError = getFirstError(\n nestedError,\n parentPath ? `${parentPath}.${key}.${index}` : `${key}.${index}`\n );\n if (firstNestedError) {\n return firstNestedError;\n }\n }\n } else if (typeof value === 'object') {\n const firstNestedError = getFirstError(value as FieldErrors<T>, fieldPath);\n if (firstNestedError) {\n return firstNestedError;\n }\n }\n }\n\n return null;\n};\n\nconst escapeSelectorValue = (value: string): string => {\n if (typeof CSS !== 'undefined' && typeof CSS.escape === 'function') {\n return CSS.escape(value);\n }\n\n // Fallback: escape all CSS special characters manually\n return value.replace(/([!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~])/g, '\\\\$1');\n};\n\ntype ScrollToFirstErrorMethods<T extends FieldValues> = Pick<\n UseFormReturn<T, object, undefined>,\n 'setFocus'\n>;\n\nexport default function useScrollToFirstError<T extends FieldValues>({\n setFocus,\n}: ScrollToFirstErrorMethods<T>) {\n return useCallback(\n (errors: FieldErrors<T>) => {\n const firstError = getFirstError(errors);\n if (!firstError) {\n return;\n }\n\n // Re-query the DOM instead of relying on potentially stale refs\n const fieldName = String(firstError.name);\n const scrollTarget =\n document.querySelector<HTMLElement>(`[name=\"${escapeSelectorValue(fieldName)}\"]`) ||\n document.getElementById(fieldName);\n\n if (scrollTarget) {\n scrollTarget.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n });\n scrollTarget.focus({ preventScroll: true });\n } else {\n // Fallback to RHF's setFocus if no DOM element found\n setFocus(firstError.name);\n }\n },\n [setFocus]\n );\n}\n"],"names":[],"mappings":"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"}
|
package/dist/esm/locales/cs.js
CHANGED
|
@@ -56,6 +56,8 @@ const cs = {
|
|
|
56
56
|
open_map: 'Otevřít mapu',
|
|
57
57
|
payment_overview_open: 'Otevřít přehled platby',
|
|
58
58
|
payment_overview_close: 'Zavřít přehled platby',
|
|
59
|
+
ticket_quantity_decrease: 'Snížit počet vstupenek',
|
|
60
|
+
ticket_quantity_increase: 'Zvýšit počet vstupenek',
|
|
59
61
|
},
|
|
60
62
|
validation: {
|
|
61
63
|
required: 'Toto pole je povinné.',
|
|
@@ -135,6 +137,9 @@ const cs = {
|
|
|
135
137
|
services: {
|
|
136
138
|
add_tickets_first: 'Nejdříve prosím přidejte vstupenky',
|
|
137
139
|
},
|
|
140
|
+
shipping: {
|
|
141
|
+
choose_address: 'Vybrat adresu',
|
|
142
|
+
},
|
|
138
143
|
order_success: {
|
|
139
144
|
title: 'Vstupenky byly úspěšně zarezervovány. Teď už zbývá jenom zaplatit.',
|
|
140
145
|
description: 'Odpočet běží {{countdown}}. Pokud k přesměrování nedojde automaticky, klikněte na tlačítko Zaplatit níže.',
|
|
@@ -166,6 +171,8 @@ const cs = {
|
|
|
166
171
|
components: {
|
|
167
172
|
product_variant_dialog: {
|
|
168
173
|
select_variant: 'Musíte vybrat variantu produktu.',
|
|
174
|
+
decrease_quantity: 'Snížit množství varianty produktu',
|
|
175
|
+
increase_quantity: 'Zvýšit množství varianty produktu',
|
|
169
176
|
},
|
|
170
177
|
},
|
|
171
178
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cs.js","sources":["../../../src/locales/cs.tsx"],"sourcesContent":["const cs = {\n and: 'a',\n choose: 'Vyberte',\n apply: 'Použít',\n buy: 'Zakoupit',\n verify: 'Ověřit',\n add: 'Přidat',\n confirm: 'Potvrdit',\n cancel: 'Zrušit',\n close: 'Zavřít',\n remove: 'Odstranit',\n pay: 'Zaplatit',\n change: 'Změnit',\n free: 'Zdarma',\n back_to_tickets: 'Zpět na vstupenky',\n unselected: 'Nevybráno',\n go_home: 'Přejít na úvodní stránku',\n apple_wallet: 'Stáhnout do Apple Wallet',\n google_wallet: 'Stáhnout do Google Wallet',\n more_info: 'Více informací',\n shipping_method: {\n types: {\n PACKETA: 'Zásilkovna',\n PICK_UP: 'Vyzvednutí na místě',\n },\n },\n form: {\n labels: {\n release_category_price: 'Kategorie vstupenek a cena',\n add_another_release: 'Přidat další kategorii',\n quantity: 'Počet',\n first_name: 'Jméno',\n last_name: 'Příjmení',\n email: 'E-mailová adresa',\n phone: 'Telefon',\n birthdate: 'Datum narození',\n gender: 'Pohlaví',\n male: 'Muž',\n female: 'Žena',\n other: 'Jiné',\n promo_code: 'Slevový kód',\n start_date: 'Datum konání',\n organizer: 'Pořadatel',\n total: 'Celkem',\n with_fee: 'vč. servisního poplatku',\n service_fee: 'Servisní poplatek',\n shipping_fee: 'Doprava',\n ticket_insurance: 'Pojištění vstupenek',\n price_including_service_fee: 'Cena zahrnuje servisní poplatek v hodnotě {{fee}}.',\n price_including_service_fee_percentage:\n 'Cena zahrnuje servisní poplatek v výši {{percentage}} z celkové částky.',\n terms_and_conditions: 'Souhlasím se zpracováním osobních údajů',\n original_price: 'Původní cena',\n ticket: 'Vstupenka',\n category: 'Kategorie',\n sms_notification: 'SMS notifikace',\n open_map: 'Otevřít mapu',\n payment_overview_open: 'Otevřít přehled platby',\n payment_overview_close: 'Zavřít přehled platby',\n },\n validation: {\n required: 'Toto pole je povinné.',\n email: 'E-mail musí být validní E-mailová adresa.',\n phone: 'Telefon není validní.',\n invalid_date: 'Datum není platné.',\n terms_and_conditions: 'Musíte souhlasit s obchodními podmínkami.',\n promo_code_invalid: 'Slevový kód není platný.',\n promo_code_applied: 'Tento slevový kód již byl použit.',\n promo_code_cant_combine: 'Tento slevový kód nelze kombinovat s jinými kódy.',\n min_purchase_not_met: 'Minimální částka nákupu nebyla dosažena: ',\n count_tickets_or_products: 'Musíte vybrat alespoň 1 vstupenku nebo produkt.',\n },\n },\n event: {\n tickets: {\n title: 'Vstupenky',\n error: {\n order: 'Objednávku se nepodařilo dokončit. Zkuste to prosím znovu.',\n },\n stepper: {\n 1: {\n title: 'Výběr vstupenek',\n reserve: 'vstupenky máte zarezervované ještě na {{minutes}}:{{seconds}}',\n quantity_select: 'Nejdříve musíte vybrat kategorii',\n max_ticket_quantity:\n 'Je povoleno zakoupit až 10 vstupenek na jednu osobu, s možností volby z různých kategorií.',\n no_tickets: 'Pro tuto událost nejsou k dispozici žádné vstupenky.',\n select_timeslot: 'Nejdříve musíte vybrat časový slot',\n },\n 2: {\n title: 'Kontaktní osoba',\n },\n 3: {\n title: 'Způsoby platby',\n title_verify: 'Způsoby ověření',\n subtitle: 'Platební metody',\n },\n 4: {\n title: 'Produkty',\n },\n 5: {\n title: 'Způsob dopravy',\n error:\n 'Pro tuto kombinaci produktů nejsou k dispozici žádné způsoby dopravy. Zkuste jinou kombinaci.',\n },\n 6: {\n title: 'Výběr časového slotu',\n },\n 7: {\n title: 'Přidružené eventy',\n },\n 8: {\n title: 'EventLook služby',\n additional_info: 'Více informací ke službám',\n },\n },\n terms_and_conditions:\n 'Souhlasím s <0>Obchodními podmínkami</0> {{termsAndConditionsCompanies}} a <1>Zásady soukromí</1>.',\n insurance: {\n label: 'Pojištění vstupenek',\n per_ticket: 'ks',\n modal: {\n description:\n 'Pojištění vstupenek Vám poskytuje ochranu v případě, že se nebudete moci zúčastnit akce z důvodu nemoci, úrazu nebo jiných nepředvídatelných událostí.',\n coverage:\n 'Pojištění pokrývá: nemoc, úraz, náhlá hospitalizace, karanténa nebo jiné nepředvídatelné události, které Vám zabrání v účasti na akci.',\n price: 'Cena pojištění',\n },\n },\n sms_notification: {\n label: 'SMS připomenutí termínu',\n modal: {\n description:\n 'Připomínka akce den předem: SMS vás upozorní na blížící se událost, abyste na ni nezapomněli a stihli se včas připravit.',\n price: 'Cena SMS připomenutí termínu akce',\n },\n },\n merchandise: {\n show_sizes: 'Zobrazit velikosti',\n show_added: 'Zobrazit přidané',\n },\n services: {\n add_tickets_first: 'Nejdříve prosím přidejte vstupenky',\n },\n order_success: {\n title: 'Vstupenky byly úspěšně zarezervovány. Teď už zbývá jenom zaplatit.',\n description:\n 'Odpočet běží {{countdown}}. Pokud k přesměrování nedojde automaticky, klikněte na tlačítko Zaplatit níže.',\n },\n payment_success: {\n loading: 'Zpracováváme platbu. Ještě chvilku strpení... ⏳',\n paid: {\n status: 'Vaše platba byla schválena!',\n title: 'Děkujeme za <br/> Váš nákup!',\n subtitle:\n 'Na E-mail jsme Vám zaslali vstupenky. V případě problémů nás neváhejte kontaktovat.',\n tickets: 'Vaše vstupenky',\n button: 'Stáhnout vstupenku',\n products: 'Vaše produkty',\n },\n unpaid: 'Platba neproběhla',\n unpaid_description: 'Zkuste to prosím znovu kliknutím na tlačítko Zaplatit.',\n },\n payment_pending: 'Kontaktuji poskytovatele bankovních služeb...',\n email_confirmation: {\n title: 'Zkontrolujte prosím Vaši e-mailovou adresu, na kterou Vám zašleme vstupenky.',\n description: '',\n },\n release_countdown: {\n title: 'Předprodej již brzy!',\n countdown:\n '{{days}}d<span>:</span>{{hours}}h<span>:</span>{{minutes}}m<span>:</span>{{seconds}}s',\n },\n },\n },\n components: {\n product_variant_dialog: {\n select_variant: 'Musíte vybrat variantu produktu.',\n },\n },\n};\n\nexport default cs;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cs.js","sources":["../../../src/locales/cs.tsx"],"sourcesContent":["const cs = {\n and: 'a',\n choose: 'Vyberte',\n apply: 'Použít',\n buy: 'Zakoupit',\n verify: 'Ověřit',\n add: 'Přidat',\n confirm: 'Potvrdit',\n cancel: 'Zrušit',\n close: 'Zavřít',\n remove: 'Odstranit',\n pay: 'Zaplatit',\n change: 'Změnit',\n free: 'Zdarma',\n back_to_tickets: 'Zpět na vstupenky',\n unselected: 'Nevybráno',\n go_home: 'Přejít na úvodní stránku',\n apple_wallet: 'Stáhnout do Apple Wallet',\n google_wallet: 'Stáhnout do Google Wallet',\n more_info: 'Více informací',\n shipping_method: {\n types: {\n PACKETA: 'Zásilkovna',\n PICK_UP: 'Vyzvednutí na místě',\n },\n },\n form: {\n labels: {\n release_category_price: 'Kategorie vstupenek a cena',\n add_another_release: 'Přidat další kategorii',\n quantity: 'Počet',\n first_name: 'Jméno',\n last_name: 'Příjmení',\n email: 'E-mailová adresa',\n phone: 'Telefon',\n birthdate: 'Datum narození',\n gender: 'Pohlaví',\n male: 'Muž',\n female: 'Žena',\n other: 'Jiné',\n promo_code: 'Slevový kód',\n start_date: 'Datum konání',\n organizer: 'Pořadatel',\n total: 'Celkem',\n with_fee: 'vč. servisního poplatku',\n service_fee: 'Servisní poplatek',\n shipping_fee: 'Doprava',\n ticket_insurance: 'Pojištění vstupenek',\n price_including_service_fee: 'Cena zahrnuje servisní poplatek v hodnotě {{fee}}.',\n price_including_service_fee_percentage:\n 'Cena zahrnuje servisní poplatek v výši {{percentage}} z celkové částky.',\n terms_and_conditions: 'Souhlasím se zpracováním osobních údajů',\n original_price: 'Původní cena',\n ticket: 'Vstupenka',\n category: 'Kategorie',\n sms_notification: 'SMS notifikace',\n open_map: 'Otevřít mapu',\n payment_overview_open: 'Otevřít přehled platby',\n payment_overview_close: 'Zavřít přehled platby',\n ticket_quantity_decrease: 'Snížit počet vstupenek',\n ticket_quantity_increase: 'Zvýšit počet vstupenek',\n },\n validation: {\n required: 'Toto pole je povinné.',\n email: 'E-mail musí být validní E-mailová adresa.',\n phone: 'Telefon není validní.',\n invalid_date: 'Datum není platné.',\n terms_and_conditions: 'Musíte souhlasit s obchodními podmínkami.',\n promo_code_invalid: 'Slevový kód není platný.',\n promo_code_applied: 'Tento slevový kód již byl použit.',\n promo_code_cant_combine: 'Tento slevový kód nelze kombinovat s jinými kódy.',\n min_purchase_not_met: 'Minimální částka nákupu nebyla dosažena: ',\n count_tickets_or_products: 'Musíte vybrat alespoň 1 vstupenku nebo produkt.',\n },\n },\n event: {\n tickets: {\n title: 'Vstupenky',\n error: {\n order: 'Objednávku se nepodařilo dokončit. Zkuste to prosím znovu.',\n },\n stepper: {\n 1: {\n title: 'Výběr vstupenek',\n reserve: 'vstupenky máte zarezervované ještě na {{minutes}}:{{seconds}}',\n quantity_select: 'Nejdříve musíte vybrat kategorii',\n max_ticket_quantity:\n 'Je povoleno zakoupit až 10 vstupenek na jednu osobu, s možností volby z různých kategorií.',\n no_tickets: 'Pro tuto událost nejsou k dispozici žádné vstupenky.',\n select_timeslot: 'Nejdříve musíte vybrat časový slot',\n },\n 2: {\n title: 'Kontaktní osoba',\n },\n 3: {\n title: 'Způsoby platby',\n title_verify: 'Způsoby ověření',\n subtitle: 'Platební metody',\n },\n 4: {\n title: 'Produkty',\n },\n 5: {\n title: 'Způsob dopravy',\n error:\n 'Pro tuto kombinaci produktů nejsou k dispozici žádné způsoby dopravy. Zkuste jinou kombinaci.',\n },\n 6: {\n title: 'Výběr časového slotu',\n },\n 7: {\n title: 'Přidružené eventy',\n },\n 8: {\n title: 'EventLook služby',\n additional_info: 'Více informací ke službám',\n },\n },\n terms_and_conditions:\n 'Souhlasím s <0>Obchodními podmínkami</0> {{termsAndConditionsCompanies}} a <1>Zásady soukromí</1>.',\n insurance: {\n label: 'Pojištění vstupenek',\n per_ticket: 'ks',\n modal: {\n description:\n 'Pojištění vstupenek Vám poskytuje ochranu v případě, že se nebudete moci zúčastnit akce z důvodu nemoci, úrazu nebo jiných nepředvídatelných událostí.',\n coverage:\n 'Pojištění pokrývá: nemoc, úraz, náhlá hospitalizace, karanténa nebo jiné nepředvídatelné události, které Vám zabrání v účasti na akci.',\n price: 'Cena pojištění',\n },\n },\n sms_notification: {\n label: 'SMS připomenutí termínu',\n modal: {\n description:\n 'Připomínka akce den předem: SMS vás upozorní na blížící se událost, abyste na ni nezapomněli a stihli se včas připravit.',\n price: 'Cena SMS připomenutí termínu akce',\n },\n },\n merchandise: {\n show_sizes: 'Zobrazit velikosti',\n show_added: 'Zobrazit přidané',\n },\n services: {\n add_tickets_first: 'Nejdříve prosím přidejte vstupenky',\n },\n shipping: {\n choose_address: 'Vybrat adresu',\n },\n order_success: {\n title: 'Vstupenky byly úspěšně zarezervovány. Teď už zbývá jenom zaplatit.',\n description:\n 'Odpočet běží {{countdown}}. Pokud k přesměrování nedojde automaticky, klikněte na tlačítko Zaplatit níže.',\n },\n payment_success: {\n loading: 'Zpracováváme platbu. Ještě chvilku strpení... ⏳',\n paid: {\n status: 'Vaše platba byla schválena!',\n title: 'Děkujeme za <br/> Váš nákup!',\n subtitle:\n 'Na E-mail jsme Vám zaslali vstupenky. V případě problémů nás neváhejte kontaktovat.',\n tickets: 'Vaše vstupenky',\n button: 'Stáhnout vstupenku',\n products: 'Vaše produkty',\n },\n unpaid: 'Platba neproběhla',\n unpaid_description: 'Zkuste to prosím znovu kliknutím na tlačítko Zaplatit.',\n },\n payment_pending: 'Kontaktuji poskytovatele bankovních služeb...',\n email_confirmation: {\n title: 'Zkontrolujte prosím Vaši e-mailovou adresu, na kterou Vám zašleme vstupenky.',\n description: '',\n },\n release_countdown: {\n title: 'Předprodej již brzy!',\n countdown:\n '{{days}}d<span>:</span>{{hours}}h<span>:</span>{{minutes}}m<span>:</span>{{seconds}}s',\n },\n },\n },\n components: {\n product_variant_dialog: {\n select_variant: 'Musíte vybrat variantu produktu.',\n decrease_quantity: 'Snížit množství varianty produktu',\n increase_quantity: 'Zvýšit množství varianty produktu',\n },\n },\n};\n\nexport default cs;\n"],"names":[],"mappings":"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"}
|
package/dist/esm/locales/en.js
CHANGED
|
@@ -56,6 +56,8 @@ const en = {
|
|
|
56
56
|
open_map: 'Open map',
|
|
57
57
|
payment_overview_open: 'Open payment overview',
|
|
58
58
|
payment_overview_close: 'Close payment overview',
|
|
59
|
+
ticket_quantity_decrease: 'Decrease ticket quantity',
|
|
60
|
+
ticket_quantity_increase: 'Increase ticket quantity',
|
|
59
61
|
},
|
|
60
62
|
validation: {
|
|
61
63
|
required: 'This field is required.',
|
|
@@ -136,6 +138,9 @@ const en = {
|
|
|
136
138
|
services: {
|
|
137
139
|
add_tickets_first: 'Please add tickets first',
|
|
138
140
|
},
|
|
141
|
+
shipping: {
|
|
142
|
+
choose_address: 'Choose address',
|
|
143
|
+
},
|
|
139
144
|
order_success: {
|
|
140
145
|
title: 'Tickets have been successfully reserved. Now you just need to pay.',
|
|
141
146
|
description: 'The countdown is running {{countdown}}. If you are not redirected automatically, please click the Pay button below.',
|
|
@@ -167,6 +172,8 @@ const en = {
|
|
|
167
172
|
components: {
|
|
168
173
|
product_variant_dialog: {
|
|
169
174
|
select_variant: 'You must select a product variant',
|
|
175
|
+
decrease_quantity: 'Decrease product variant quantity',
|
|
176
|
+
increase_quantity: 'Increase product variant quantity',
|
|
170
177
|
},
|
|
171
178
|
},
|
|
172
179
|
};
|