@eventlook/sdk 1.4.51-beta.3 → 1.4.52
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/tickets/TicketSelectionMobile.js +1 -0
- package/dist/cjs/form/tickets/TicketSelectionMobile.js.map +1 -1
- package/dist/esm/form/tickets/TicketSelectionMobile.js +1 -0
- package/dist/esm/form/tickets/TicketSelectionMobile.js.map +1 -1
- package/package.json +1 -1
- package/src/form/tickets/TicketSelectionMobile.tsx +1 -1
|
@@ -87,6 +87,7 @@ const TicketSelectionMobile = ({ event, activeReleases, showLoading, tickets, is
|
|
|
87
87
|
release.price === 0
|
|
88
88
|
? t('free')
|
|
89
89
|
: formatNumber.fCurrency(release.price, lang, event.currency),
|
|
90
|
+
' ',
|
|
90
91
|
"- ",
|
|
91
92
|
release.name),
|
|
92
93
|
React.createElement(ReleaseDescription.default, { description: release.description, isExpanded: Boolean(expandedReleaseIds[release.id]), onToggle: () => toggleReleaseDescription(release.id), moreInfoLabel: t('more_info') })),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TicketSelectionMobile.js","sources":["../../../../src/form/tickets/TicketSelectionMobile.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Box, Skeleton, Stack, Typography, useTheme } from '@mui/material';\nimport { fCurrency } from '@utils/formatNumber';\nimport { IEvent } from '@utils/types/event.type';\nimport { IReleaseShort } from '@utils/types/release.type';\nimport { ITicketFormTicket } from '@utils/types/ticket.type';\nimport { MAX_TICKETS_PER_ORDER } from '@utils/data/ticket';\nimport useGlobal from '@hooks/useGlobal';\nimport ReleaseDescription from './ReleaseDescription';\nimport TicketQuantityControl from './TicketQuantityControl';\n\ninterface Props {\n event: IEvent;\n activeReleases?: IReleaseShort[];\n showLoading: boolean;\n tickets: ITicketFormTicket[];\n isQuantityDisabled: (value: number, releaseId: number | '') => boolean;\n setValue: (name: string, value: any) => void;\n removeTicket: (indexToRemove: number) => void;\n getExtraFields: (releaseId: number | '', index: number) => React.ReactNode;\n}\n\nconst TicketSelectionMobile: React.FC<Props> = ({\n event,\n activeReleases,\n showLoading,\n tickets,\n isQuantityDisabled,\n setValue,\n removeTicket,\n getExtraFields,\n}) => {\n const { t, lang } = useGlobal();\n const [expandedReleaseIds, setExpandedReleaseIds] = useState<Record<number, boolean>>({});\n const theme = useTheme();\n const isLight = theme.palette.mode === 'light';\n\n const getReleaseTitle = (release: IReleaseShort) =>\n release.releaseCategoryName || release.name || '';\n\n const getTicketIndexByRelease = (releaseId: number) =>\n tickets.findIndex((ticket) => ticket.releaseId === releaseId);\n\n const getReleaseQuantity = (releaseId: number) => {\n const ticket = tickets.find((t) => t.releaseId === releaseId);\n return Number(ticket?.quantity || 0);\n };\n\n const isReleaseVisible = (release: IReleaseShort) =>\n !release.locked || getReleaseQuantity(release.id) > 0;\n\n const updateReleaseQuantity = (release: IReleaseShort, nextQuantity: number) => {\n const maxAvailable = Math.min(release.availableTickets || 0, MAX_TICKETS_PER_ORDER);\n const clampedQuantity = Math.max(0, Math.min(nextQuantity, maxAvailable));\n const ticketIndex = getTicketIndexByRelease(release.id);\n\n if (clampedQuantity <= 0) {\n if (ticketIndex >= 0) removeTicket(ticketIndex);\n return;\n }\n\n if (ticketIndex >= 0) {\n setValue(`tickets.${event.id}.${ticketIndex}.quantity`, clampedQuantity);\n return;\n }\n\n setValue(`tickets.${event.id}`, [\n ...tickets,\n {\n releaseId: release.id,\n quantity: clampedQuantity,\n itemName: getReleaseTitle(release),\n price: release.price || 0,\n products: [],\n extraFields: [],\n },\n ]);\n };\n\n const toggleReleaseDescription = (releaseId: number) =>\n setExpandedReleaseIds((prev) => ({\n ...prev,\n [releaseId]: !prev[releaseId],\n }));\n\n if (showLoading) {\n return (\n <Stack spacing={2}>\n {[...Array(2)].map((_, index) => (\n <Skeleton\n key={index}\n variant=\"rounded\"\n sx={{\n width: '100%',\n height: (theme) => theme.spacing(12),\n }}\n />\n ))}\n </Stack>\n );\n }\n\n return (\n <Stack spacing={2}>\n {activeReleases\n ?.filter((release) => isReleaseVisible(release))\n .map((release) => {\n const quantity = getReleaseQuantity(release.id);\n const ticketIndex = getTicketIndexByRelease(release.id);\n const maxAvailable = Math.min(release.availableTickets || 0, MAX_TICKETS_PER_ORDER);\n const isLocked = release.locked;\n const nextRelease = activeReleases?.find(\n (item) =>\n item.releaseCategoryName === release.releaseCategoryName &&\n item.order === release.order + 1\n );\n const hasSelectedNextRelease = !!nextRelease && getReleaseQuantity(nextRelease.id) > 0;\n const isDisabled = hasSelectedNextRelease || (isLocked && quantity === 0);\n const canAddFirst = maxAvailable > 0 && !isQuantityDisabled(1, release.id);\n const canAddMore =\n quantity < maxAvailable && !isQuantityDisabled(quantity + 1, release.id);\n\n return (\n <Box\n key={release.id}\n sx={{\n pt: 1,\n pr: 0.5,\n pb: 0.5,\n pl: 2,\n borderRadius: 1,\n bgcolor: (theme) => (isLight ? theme.palette.grey[100] : theme.palette.grey[800]),\n }}\n >\n <Stack spacing={0}>\n <Box>\n <Typography variant=\"subtitle2\" fontWeight={700}>\n {getReleaseTitle(release)}\n </Typography>\n </Box>\n\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\">\n <Stack>\n <Typography variant=\"body2\">\n {release.price === 0\n ? t('free')\n : fCurrency(release.price, lang, event.currency)}\n - {release.name}\n </Typography>\n\n <ReleaseDescription\n description={release.description}\n isExpanded={Boolean(expandedReleaseIds[release.id])}\n onToggle={() => toggleReleaseDescription(release.id)}\n moreInfoLabel={t('more_info')}\n />\n </Stack>\n\n <TicketQuantityControl\n quantity={quantity}\n isDisabled={isDisabled}\n canAddFirst={canAddFirst}\n canAddMore={canAddMore}\n addLabel={t('add')}\n onDecrement={() => updateReleaseQuantity(release, quantity - 1)}\n onIncrement={() => updateReleaseQuantity(release, quantity + 1)}\n onAddFirst={() => updateReleaseQuantity(release, 1)}\n />\n </Stack>\n\n <ReleaseDescription\n description={release.description}\n isExpanded={Boolean(expandedReleaseIds[release.id])}\n onToggle={() => toggleReleaseDescription(release.id)}\n moreInfoLabel={t('more_info')}\n showCollapse\n />\n\n {ticketIndex >= 0 && getExtraFields(release.id, ticketIndex)}\n </Stack>\n </Box>\n );\n })}\n </Stack>\n );\n};\n\nexport default TicketSelectionMobile;\n"],"names":["useGlobal","useState","useTheme","MAX_TICKETS_PER_ORDER","Stack","Skeleton","Box","Typography","fCurrency","ReleaseDescription","TicketQuantityControl"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TicketSelectionMobile.js","sources":["../../../../src/form/tickets/TicketSelectionMobile.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Box, Skeleton, Stack, Typography, useTheme } from '@mui/material';\nimport { fCurrency } from '@utils/formatNumber';\nimport { IEvent } from '@utils/types/event.type';\nimport { IReleaseShort } from '@utils/types/release.type';\nimport { ITicketFormTicket } from '@utils/types/ticket.type';\nimport { MAX_TICKETS_PER_ORDER } from '@utils/data/ticket';\nimport useGlobal from '@hooks/useGlobal';\nimport ReleaseDescription from './ReleaseDescription';\nimport TicketQuantityControl from './TicketQuantityControl';\n\ninterface Props {\n event: IEvent;\n activeReleases?: IReleaseShort[];\n showLoading: boolean;\n tickets: ITicketFormTicket[];\n isQuantityDisabled: (value: number, releaseId: number | '') => boolean;\n setValue: (name: string, value: any) => void;\n removeTicket: (indexToRemove: number) => void;\n getExtraFields: (releaseId: number | '', index: number) => React.ReactNode;\n}\n\nconst TicketSelectionMobile: React.FC<Props> = ({\n event,\n activeReleases,\n showLoading,\n tickets,\n isQuantityDisabled,\n setValue,\n removeTicket,\n getExtraFields,\n}) => {\n const { t, lang } = useGlobal();\n const [expandedReleaseIds, setExpandedReleaseIds] = useState<Record<number, boolean>>({});\n const theme = useTheme();\n const isLight = theme.palette.mode === 'light';\n\n const getReleaseTitle = (release: IReleaseShort) =>\n release.releaseCategoryName || release.name || '';\n\n const getTicketIndexByRelease = (releaseId: number) =>\n tickets.findIndex((ticket) => ticket.releaseId === releaseId);\n\n const getReleaseQuantity = (releaseId: number) => {\n const ticket = tickets.find((t) => t.releaseId === releaseId);\n return Number(ticket?.quantity || 0);\n };\n\n const isReleaseVisible = (release: IReleaseShort) =>\n !release.locked || getReleaseQuantity(release.id) > 0;\n\n const updateReleaseQuantity = (release: IReleaseShort, nextQuantity: number) => {\n const maxAvailable = Math.min(release.availableTickets || 0, MAX_TICKETS_PER_ORDER);\n const clampedQuantity = Math.max(0, Math.min(nextQuantity, maxAvailable));\n const ticketIndex = getTicketIndexByRelease(release.id);\n\n if (clampedQuantity <= 0) {\n if (ticketIndex >= 0) removeTicket(ticketIndex);\n return;\n }\n\n if (ticketIndex >= 0) {\n setValue(`tickets.${event.id}.${ticketIndex}.quantity`, clampedQuantity);\n return;\n }\n\n setValue(`tickets.${event.id}`, [\n ...tickets,\n {\n releaseId: release.id,\n quantity: clampedQuantity,\n itemName: getReleaseTitle(release),\n price: release.price || 0,\n products: [],\n extraFields: [],\n },\n ]);\n };\n\n const toggleReleaseDescription = (releaseId: number) =>\n setExpandedReleaseIds((prev) => ({\n ...prev,\n [releaseId]: !prev[releaseId],\n }));\n\n if (showLoading) {\n return (\n <Stack spacing={2}>\n {[...Array(2)].map((_, index) => (\n <Skeleton\n key={index}\n variant=\"rounded\"\n sx={{\n width: '100%',\n height: (theme) => theme.spacing(12),\n }}\n />\n ))}\n </Stack>\n );\n }\n\n return (\n <Stack spacing={2}>\n {activeReleases\n ?.filter((release) => isReleaseVisible(release))\n .map((release) => {\n const quantity = getReleaseQuantity(release.id);\n const ticketIndex = getTicketIndexByRelease(release.id);\n const maxAvailable = Math.min(release.availableTickets || 0, MAX_TICKETS_PER_ORDER);\n const isLocked = release.locked;\n const nextRelease = activeReleases?.find(\n (item) =>\n item.releaseCategoryName === release.releaseCategoryName &&\n item.order === release.order + 1\n );\n const hasSelectedNextRelease = !!nextRelease && getReleaseQuantity(nextRelease.id) > 0;\n const isDisabled = hasSelectedNextRelease || (isLocked && quantity === 0);\n const canAddFirst = maxAvailable > 0 && !isQuantityDisabled(1, release.id);\n const canAddMore =\n quantity < maxAvailable && !isQuantityDisabled(quantity + 1, release.id);\n\n return (\n <Box\n key={release.id}\n sx={{\n pt: 1,\n pr: 0.5,\n pb: 0.5,\n pl: 2,\n borderRadius: 1,\n bgcolor: (theme) => (isLight ? theme.palette.grey[100] : theme.palette.grey[800]),\n }}\n >\n <Stack spacing={0}>\n <Box>\n <Typography variant=\"subtitle2\" fontWeight={700}>\n {getReleaseTitle(release)}\n </Typography>\n </Box>\n\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\">\n <Stack>\n <Typography variant=\"body2\">\n {release.price === 0\n ? t('free')\n : fCurrency(release.price, lang, event.currency)}{' '}\n - {release.name}\n </Typography>\n\n <ReleaseDescription\n description={release.description}\n isExpanded={Boolean(expandedReleaseIds[release.id])}\n onToggle={() => toggleReleaseDescription(release.id)}\n moreInfoLabel={t('more_info')}\n />\n </Stack>\n\n <TicketQuantityControl\n quantity={quantity}\n isDisabled={isDisabled}\n canAddFirst={canAddFirst}\n canAddMore={canAddMore}\n addLabel={t('add')}\n onDecrement={() => updateReleaseQuantity(release, quantity - 1)}\n onIncrement={() => updateReleaseQuantity(release, quantity + 1)}\n onAddFirst={() => updateReleaseQuantity(release, 1)}\n />\n </Stack>\n\n <ReleaseDescription\n description={release.description}\n isExpanded={Boolean(expandedReleaseIds[release.id])}\n onToggle={() => toggleReleaseDescription(release.id)}\n moreInfoLabel={t('more_info')}\n showCollapse\n />\n\n {ticketIndex >= 0 && getExtraFields(release.id, ticketIndex)}\n </Stack>\n </Box>\n );\n })}\n </Stack>\n );\n};\n\nexport default TicketSelectionMobile;\n"],"names":["useGlobal","useState","useTheme","MAX_TICKETS_PER_ORDER","Stack","Skeleton","Box","Typography","fCurrency","ReleaseDescription","TicketQuantityControl"],"mappings":"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"}
|
|
@@ -83,6 +83,7 @@ const TicketSelectionMobile = ({ event, activeReleases, showLoading, tickets, is
|
|
|
83
83
|
release.price === 0
|
|
84
84
|
? t('free')
|
|
85
85
|
: fCurrency(release.price, lang, event.currency),
|
|
86
|
+
' ',
|
|
86
87
|
"- ",
|
|
87
88
|
release.name),
|
|
88
89
|
React.createElement(ReleaseDescription, { description: release.description, isExpanded: Boolean(expandedReleaseIds[release.id]), onToggle: () => toggleReleaseDescription(release.id), moreInfoLabel: t('more_info') })),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TicketSelectionMobile.js","sources":["../../../../src/form/tickets/TicketSelectionMobile.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Box, Skeleton, Stack, Typography, useTheme } from '@mui/material';\nimport { fCurrency } from '@utils/formatNumber';\nimport { IEvent } from '@utils/types/event.type';\nimport { IReleaseShort } from '@utils/types/release.type';\nimport { ITicketFormTicket } from '@utils/types/ticket.type';\nimport { MAX_TICKETS_PER_ORDER } from '@utils/data/ticket';\nimport useGlobal from '@hooks/useGlobal';\nimport ReleaseDescription from './ReleaseDescription';\nimport TicketQuantityControl from './TicketQuantityControl';\n\ninterface Props {\n event: IEvent;\n activeReleases?: IReleaseShort[];\n showLoading: boolean;\n tickets: ITicketFormTicket[];\n isQuantityDisabled: (value: number, releaseId: number | '') => boolean;\n setValue: (name: string, value: any) => void;\n removeTicket: (indexToRemove: number) => void;\n getExtraFields: (releaseId: number | '', index: number) => React.ReactNode;\n}\n\nconst TicketSelectionMobile: React.FC<Props> = ({\n event,\n activeReleases,\n showLoading,\n tickets,\n isQuantityDisabled,\n setValue,\n removeTicket,\n getExtraFields,\n}) => {\n const { t, lang } = useGlobal();\n const [expandedReleaseIds, setExpandedReleaseIds] = useState<Record<number, boolean>>({});\n const theme = useTheme();\n const isLight = theme.palette.mode === 'light';\n\n const getReleaseTitle = (release: IReleaseShort) =>\n release.releaseCategoryName || release.name || '';\n\n const getTicketIndexByRelease = (releaseId: number) =>\n tickets.findIndex((ticket) => ticket.releaseId === releaseId);\n\n const getReleaseQuantity = (releaseId: number) => {\n const ticket = tickets.find((t) => t.releaseId === releaseId);\n return Number(ticket?.quantity || 0);\n };\n\n const isReleaseVisible = (release: IReleaseShort) =>\n !release.locked || getReleaseQuantity(release.id) > 0;\n\n const updateReleaseQuantity = (release: IReleaseShort, nextQuantity: number) => {\n const maxAvailable = Math.min(release.availableTickets || 0, MAX_TICKETS_PER_ORDER);\n const clampedQuantity = Math.max(0, Math.min(nextQuantity, maxAvailable));\n const ticketIndex = getTicketIndexByRelease(release.id);\n\n if (clampedQuantity <= 0) {\n if (ticketIndex >= 0) removeTicket(ticketIndex);\n return;\n }\n\n if (ticketIndex >= 0) {\n setValue(`tickets.${event.id}.${ticketIndex}.quantity`, clampedQuantity);\n return;\n }\n\n setValue(`tickets.${event.id}`, [\n ...tickets,\n {\n releaseId: release.id,\n quantity: clampedQuantity,\n itemName: getReleaseTitle(release),\n price: release.price || 0,\n products: [],\n extraFields: [],\n },\n ]);\n };\n\n const toggleReleaseDescription = (releaseId: number) =>\n setExpandedReleaseIds((prev) => ({\n ...prev,\n [releaseId]: !prev[releaseId],\n }));\n\n if (showLoading) {\n return (\n <Stack spacing={2}>\n {[...Array(2)].map((_, index) => (\n <Skeleton\n key={index}\n variant=\"rounded\"\n sx={{\n width: '100%',\n height: (theme) => theme.spacing(12),\n }}\n />\n ))}\n </Stack>\n );\n }\n\n return (\n <Stack spacing={2}>\n {activeReleases\n ?.filter((release) => isReleaseVisible(release))\n .map((release) => {\n const quantity = getReleaseQuantity(release.id);\n const ticketIndex = getTicketIndexByRelease(release.id);\n const maxAvailable = Math.min(release.availableTickets || 0, MAX_TICKETS_PER_ORDER);\n const isLocked = release.locked;\n const nextRelease = activeReleases?.find(\n (item) =>\n item.releaseCategoryName === release.releaseCategoryName &&\n item.order === release.order + 1\n );\n const hasSelectedNextRelease = !!nextRelease && getReleaseQuantity(nextRelease.id) > 0;\n const isDisabled = hasSelectedNextRelease || (isLocked && quantity === 0);\n const canAddFirst = maxAvailable > 0 && !isQuantityDisabled(1, release.id);\n const canAddMore =\n quantity < maxAvailable && !isQuantityDisabled(quantity + 1, release.id);\n\n return (\n <Box\n key={release.id}\n sx={{\n pt: 1,\n pr: 0.5,\n pb: 0.5,\n pl: 2,\n borderRadius: 1,\n bgcolor: (theme) => (isLight ? theme.palette.grey[100] : theme.palette.grey[800]),\n }}\n >\n <Stack spacing={0}>\n <Box>\n <Typography variant=\"subtitle2\" fontWeight={700}>\n {getReleaseTitle(release)}\n </Typography>\n </Box>\n\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\">\n <Stack>\n <Typography variant=\"body2\">\n {release.price === 0\n ? t('free')\n : fCurrency(release.price, lang, event.currency)}\n - {release.name}\n </Typography>\n\n <ReleaseDescription\n description={release.description}\n isExpanded={Boolean(expandedReleaseIds[release.id])}\n onToggle={() => toggleReleaseDescription(release.id)}\n moreInfoLabel={t('more_info')}\n />\n </Stack>\n\n <TicketQuantityControl\n quantity={quantity}\n isDisabled={isDisabled}\n canAddFirst={canAddFirst}\n canAddMore={canAddMore}\n addLabel={t('add')}\n onDecrement={() => updateReleaseQuantity(release, quantity - 1)}\n onIncrement={() => updateReleaseQuantity(release, quantity + 1)}\n onAddFirst={() => updateReleaseQuantity(release, 1)}\n />\n </Stack>\n\n <ReleaseDescription\n description={release.description}\n isExpanded={Boolean(expandedReleaseIds[release.id])}\n onToggle={() => toggleReleaseDescription(release.id)}\n moreInfoLabel={t('more_info')}\n showCollapse\n />\n\n {ticketIndex >= 0 && getExtraFields(release.id, ticketIndex)}\n </Stack>\n </Box>\n );\n })}\n </Stack>\n );\n};\n\nexport default TicketSelectionMobile;\n"],"names":[],"mappings":";;;;;;;;AAsBA,MAAM,qBAAqB,GAAoB,CAAC,EAC9C,KAAK,EACL,cAAc,EACd,WAAW,EACX,OAAO,EACP,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,cAAc,GACf,KAAI;IACH,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE;IAC/B,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAA0B,EAAE,CAAC;AACzF,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE;IACxB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;AAE9C,IAAA,MAAM,eAAe,GAAG,CAAC,OAAsB,KAC7C,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE;IAEnD,MAAM,uBAAuB,GAAG,CAAC,SAAiB,KAChD,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC;AAE/D,IAAA,MAAM,kBAAkB,GAAG,CAAC,SAAiB,KAAI;AAC/C,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;QAC7D,OAAO,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC,CAAC;AACtC,KAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,OAAsB,KAC9C,CAAC,OAAO,CAAC,MAAM,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;AAEvD,IAAA,MAAM,qBAAqB,GAAG,CAAC,OAAsB,EAAE,YAAoB,KAAI;AAC7E,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,EAAE,qBAAqB,CAAC;AACnF,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;AAEvD,QAAA,IAAI,eAAe,IAAI,CAAC,EAAE;YACxB,IAAI,WAAW,IAAI,CAAC;gBAAE,YAAY,CAAC,WAAW,CAAC;YAC/C;;AAGF,QAAA,IAAI,WAAW,IAAI,CAAC,EAAE;YACpB,QAAQ,CAAC,CAAA,QAAA,EAAW,KAAK,CAAC,EAAE,CAAA,CAAA,EAAI,WAAW,CAAA,SAAA,CAAW,EAAE,eAAe,CAAC;YACxE;;AAGF,QAAA,QAAQ,CAAC,CAAA,QAAA,EAAW,KAAK,CAAC,EAAE,EAAE,EAAE;AAC9B,YAAA,GAAG,OAAO;AACV,YAAA;gBACE,SAAS,EAAE,OAAO,CAAC,EAAE;AACrB,gBAAA,QAAQ,EAAE,eAAe;AACzB,gBAAA,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC;AAClC,gBAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AACzB,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,WAAW,EAAE,EAAE;AAChB,aAAA;AACF,SAAA,CAAC;AACJ,KAAC;AAED,IAAA,MAAM,wBAAwB,GAAG,CAAC,SAAiB,KACjD,qBAAqB,CAAC,CAAC,IAAI,MAAM;AAC/B,QAAA,GAAG,IAAI;AACP,QAAA,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAA,CAAC,CAAC;IAEL,IAAI,WAAW,EAAE;AACf,QAAA,QACE,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EAAC,OAAO,EAAE,CAAC,EAAA,EACd,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,MAC1B,oBAAC,QAAQ,EAAA,EACP,GAAG,EAAE,KAAK,EACV,OAAO,EAAC,SAAS,EACjB,EAAE,EAAE;AACF,gBAAA,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;AACrC,aAAA,EAAA,CACD,CACH,CAAC,CACI;;IAIZ,QACE,oBAAC,KAAK,EAAA,EAAC,OAAO,EAAE,CAAC,IACd;UACG,MAAM,CAAC,CAAC,OAAO,KAAK,gBAAgB,CAAC,OAAO,CAAC;AAC9C,SAAA,GAAG,CAAC,CAAC,OAAO,KAAI;QACf,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;AACvD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,EAAE,qBAAqB,CAAC;AACnF,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM;AAC/B,QAAA,MAAM,WAAW,GAAG,cAAc,EAAE,IAAI,CACtC,CAAC,IAAI,KACH,IAAI,CAAC,mBAAmB,KAAK,OAAO,CAAC,mBAAmB;YACxD,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,GAAG,CAAC,CACnC;AACD,QAAA,MAAM,sBAAsB,GAAG,CAAC,CAAC,WAAW,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC;QACtF,MAAM,UAAU,GAAG,sBAAsB,KAAK,QAAQ,IAAI,QAAQ,KAAK,CAAC,CAAC;AACzE,QAAA,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;AAC1E,QAAA,MAAM,UAAU,GACd,QAAQ,GAAG,YAAY,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;QAE1E,QACE,KAAA,CAAA,aAAA,CAAC,GAAG,EAAA,EACF,GAAG,EAAE,OAAO,CAAC,EAAE,EACf,EAAE,EAAE;AACF,gBAAA,EAAE,EAAE,CAAC;AACL,gBAAA,EAAE,EAAE,GAAG;AACP,gBAAA,EAAE,EAAE,GAAG;AACP,gBAAA,EAAE,EAAE,CAAC;AACL,gBAAA,YAAY,EAAE,CAAC;AACf,gBAAA,OAAO,EAAE,CAAC,KAAK,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClF,aAAA,EAAA;AAED,YAAA,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EAAC,OAAO,EAAE,CAAC,EAAA;AACf,gBAAA,KAAA,CAAA,aAAA,CAAC,GAAG,EAAA,IAAA;AACF,oBAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,OAAO,EAAC,WAAW,EAAC,UAAU,EAAE,GAAG,IAC5C,eAAe,CAAC,OAAO,CAAC,CACd,CACT;AAEN,gBAAA,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,eAAe,EAAA;AACvE,oBAAA,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,IAAA;AACJ,wBAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,OAAO,EAAC,OAAO,EAAA;4BACxB,OAAO,CAAC,KAAK,KAAK;AACjB,kCAAE,CAAC,CAAC,MAAM;AACV,kCAAE,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC;;4BAC/C,OAAO,CAAC,IAAI,CACJ;AAEb,wBAAA,KAAA,CAAA,aAAA,CAAC,kBAAkB,EAAA,EACjB,WAAW,EAAE,OAAO,CAAC,WAAW,EAChC,UAAU,EAAE,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EACnD,QAAQ,EAAE,MAAM,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC,EACpD,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC,GAC7B,CACI;AAER,oBAAA,KAAA,CAAA,aAAA,CAAC,qBAAqB,EAAA,EACpB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,EAClB,WAAW,EAAE,MAAM,qBAAqB,CAAC,OAAO,EAAE,QAAQ,GAAG,CAAC,CAAC,EAC/D,WAAW,EAAE,MAAM,qBAAqB,CAAC,OAAO,EAAE,QAAQ,GAAG,CAAC,CAAC,EAC/D,UAAU,EAAE,MAAM,qBAAqB,CAAC,OAAO,EAAE,CAAC,CAAC,GACnD,CACI;AAER,gBAAA,KAAA,CAAA,aAAA,CAAC,kBAAkB,EAAA,EACjB,WAAW,EAAE,OAAO,CAAC,WAAW,EAChC,UAAU,EAAE,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EACnD,QAAQ,EAAE,MAAM,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC,EACpD,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC,EAC7B,YAAY,EAAA,IAAA,EAAA,CACZ;AAED,gBAAA,WAAW,IAAI,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,CACtD,CACJ;KAET,CAAC,CACE;AAEZ;;;;"}
|
|
1
|
+
{"version":3,"file":"TicketSelectionMobile.js","sources":["../../../../src/form/tickets/TicketSelectionMobile.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Box, Skeleton, Stack, Typography, useTheme } from '@mui/material';\nimport { fCurrency } from '@utils/formatNumber';\nimport { IEvent } from '@utils/types/event.type';\nimport { IReleaseShort } from '@utils/types/release.type';\nimport { ITicketFormTicket } from '@utils/types/ticket.type';\nimport { MAX_TICKETS_PER_ORDER } from '@utils/data/ticket';\nimport useGlobal from '@hooks/useGlobal';\nimport ReleaseDescription from './ReleaseDescription';\nimport TicketQuantityControl from './TicketQuantityControl';\n\ninterface Props {\n event: IEvent;\n activeReleases?: IReleaseShort[];\n showLoading: boolean;\n tickets: ITicketFormTicket[];\n isQuantityDisabled: (value: number, releaseId: number | '') => boolean;\n setValue: (name: string, value: any) => void;\n removeTicket: (indexToRemove: number) => void;\n getExtraFields: (releaseId: number | '', index: number) => React.ReactNode;\n}\n\nconst TicketSelectionMobile: React.FC<Props> = ({\n event,\n activeReleases,\n showLoading,\n tickets,\n isQuantityDisabled,\n setValue,\n removeTicket,\n getExtraFields,\n}) => {\n const { t, lang } = useGlobal();\n const [expandedReleaseIds, setExpandedReleaseIds] = useState<Record<number, boolean>>({});\n const theme = useTheme();\n const isLight = theme.palette.mode === 'light';\n\n const getReleaseTitle = (release: IReleaseShort) =>\n release.releaseCategoryName || release.name || '';\n\n const getTicketIndexByRelease = (releaseId: number) =>\n tickets.findIndex((ticket) => ticket.releaseId === releaseId);\n\n const getReleaseQuantity = (releaseId: number) => {\n const ticket = tickets.find((t) => t.releaseId === releaseId);\n return Number(ticket?.quantity || 0);\n };\n\n const isReleaseVisible = (release: IReleaseShort) =>\n !release.locked || getReleaseQuantity(release.id) > 0;\n\n const updateReleaseQuantity = (release: IReleaseShort, nextQuantity: number) => {\n const maxAvailable = Math.min(release.availableTickets || 0, MAX_TICKETS_PER_ORDER);\n const clampedQuantity = Math.max(0, Math.min(nextQuantity, maxAvailable));\n const ticketIndex = getTicketIndexByRelease(release.id);\n\n if (clampedQuantity <= 0) {\n if (ticketIndex >= 0) removeTicket(ticketIndex);\n return;\n }\n\n if (ticketIndex >= 0) {\n setValue(`tickets.${event.id}.${ticketIndex}.quantity`, clampedQuantity);\n return;\n }\n\n setValue(`tickets.${event.id}`, [\n ...tickets,\n {\n releaseId: release.id,\n quantity: clampedQuantity,\n itemName: getReleaseTitle(release),\n price: release.price || 0,\n products: [],\n extraFields: [],\n },\n ]);\n };\n\n const toggleReleaseDescription = (releaseId: number) =>\n setExpandedReleaseIds((prev) => ({\n ...prev,\n [releaseId]: !prev[releaseId],\n }));\n\n if (showLoading) {\n return (\n <Stack spacing={2}>\n {[...Array(2)].map((_, index) => (\n <Skeleton\n key={index}\n variant=\"rounded\"\n sx={{\n width: '100%',\n height: (theme) => theme.spacing(12),\n }}\n />\n ))}\n </Stack>\n );\n }\n\n return (\n <Stack spacing={2}>\n {activeReleases\n ?.filter((release) => isReleaseVisible(release))\n .map((release) => {\n const quantity = getReleaseQuantity(release.id);\n const ticketIndex = getTicketIndexByRelease(release.id);\n const maxAvailable = Math.min(release.availableTickets || 0, MAX_TICKETS_PER_ORDER);\n const isLocked = release.locked;\n const nextRelease = activeReleases?.find(\n (item) =>\n item.releaseCategoryName === release.releaseCategoryName &&\n item.order === release.order + 1\n );\n const hasSelectedNextRelease = !!nextRelease && getReleaseQuantity(nextRelease.id) > 0;\n const isDisabled = hasSelectedNextRelease || (isLocked && quantity === 0);\n const canAddFirst = maxAvailable > 0 && !isQuantityDisabled(1, release.id);\n const canAddMore =\n quantity < maxAvailable && !isQuantityDisabled(quantity + 1, release.id);\n\n return (\n <Box\n key={release.id}\n sx={{\n pt: 1,\n pr: 0.5,\n pb: 0.5,\n pl: 2,\n borderRadius: 1,\n bgcolor: (theme) => (isLight ? theme.palette.grey[100] : theme.palette.grey[800]),\n }}\n >\n <Stack spacing={0}>\n <Box>\n <Typography variant=\"subtitle2\" fontWeight={700}>\n {getReleaseTitle(release)}\n </Typography>\n </Box>\n\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\">\n <Stack>\n <Typography variant=\"body2\">\n {release.price === 0\n ? t('free')\n : fCurrency(release.price, lang, event.currency)}{' '}\n - {release.name}\n </Typography>\n\n <ReleaseDescription\n description={release.description}\n isExpanded={Boolean(expandedReleaseIds[release.id])}\n onToggle={() => toggleReleaseDescription(release.id)}\n moreInfoLabel={t('more_info')}\n />\n </Stack>\n\n <TicketQuantityControl\n quantity={quantity}\n isDisabled={isDisabled}\n canAddFirst={canAddFirst}\n canAddMore={canAddMore}\n addLabel={t('add')}\n onDecrement={() => updateReleaseQuantity(release, quantity - 1)}\n onIncrement={() => updateReleaseQuantity(release, quantity + 1)}\n onAddFirst={() => updateReleaseQuantity(release, 1)}\n />\n </Stack>\n\n <ReleaseDescription\n description={release.description}\n isExpanded={Boolean(expandedReleaseIds[release.id])}\n onToggle={() => toggleReleaseDescription(release.id)}\n moreInfoLabel={t('more_info')}\n showCollapse\n />\n\n {ticketIndex >= 0 && getExtraFields(release.id, ticketIndex)}\n </Stack>\n </Box>\n );\n })}\n </Stack>\n );\n};\n\nexport default TicketSelectionMobile;\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -144,7 +144,7 @@ const TicketSelectionMobile: React.FC<Props> = ({
|
|
|
144
144
|
<Typography variant="body2">
|
|
145
145
|
{release.price === 0
|
|
146
146
|
? t('free')
|
|
147
|
-
: fCurrency(release.price, lang, event.currency)}
|
|
147
|
+
: fCurrency(release.price, lang, event.currency)}{' '}
|
|
148
148
|
- {release.name}
|
|
149
149
|
</Typography>
|
|
150
150
|
|