{"version":3,"file":"CouponDialog-CSe86gxx.js","sources":["../../../frontend/src/components/CouponDialog/components/CouponCodeFormFields/CouponCodeFormFields.tsx","../../../frontend/src/components/CouponDialog/components/ApplyCouponDialog/ApplyCouponDialog.tsx","../../../frontend/src/components/CouponDialog/components/CouponAppliedDialog/CouponAppliedDialog.tsx","../../../frontend/src/components/CouponDialog/components/CouponDialogIcon/graphics/check.svg?raw","../../../frontend/src/components/CouponDialog/components/CouponDialogIcon/graphics/coupon.svg?raw","../../../frontend/src/components/CouponDialog/components/CouponDialogIcon/graphics/invalid.svg?raw","../../../frontend/src/components/CouponDialog/components/CouponDialogIcon/CouponDialogIcon.tsx","../../../frontend/src/components/CouponDialog/components/CouponInvalidDialog/CouponInvalidDialog.tsx","../../../frontend/src/helpers/forms/mergeIntoFormData.ts","../../../frontend/src/components/CouponDialog/components/ValidateCouponDialog/ValidateCouponDialog.tsx","../../../frontend/src/components/CouponDialog/helpers/determineIconStatus.ts","../../../frontend/src/components/CouponDialog/helpers/determineStatus.ts","../../../frontend/src/components/CouponDialog/CouponDialog.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport useTrans from '../../../../hooks/ui/useTrans';\nimport Row from '../../../Row/Row';\nimport Spacer from '../../../Spacer/Spacer';\nimport Stack from '../../../Stack/Stack';\nimport SubmitButton from '../../../SubmitButton/SubmitButton';\nimport TextField from '../../../TextField/TextField';\nimport Title from '../../../Title/Title';\n\ntype CouponCodeFormFieldsProps = {\n trans: ReturnType;\n};\n\nconst CouponCodeFormFields = ({ trans }: CouponCodeFormFieldsProps) => {\n const [couponInputValue, setCouponInputValue] = useState('');\n const textFieldRef = useRef(null);\n\n const handleCouponCodeChange = (value: string) => {\n setCouponInputValue(value.toUpperCase());\n };\n\n useEffect(() => {\n setTimeout(() => {\n if (!textFieldRef.current) {\n return;\n }\n textFieldRef.current.focus();\n }, 100);\n }, [textFieldRef]);\n\n return (\n \n \n {trans('ApplyCouponDialog.Title')}\n \n\n \n \n \n\n \n\n \n \n {trans('ApplyCouponDialog.SubmitButton')}\n \n \n \n );\n};\n\nexport default CouponCodeFormFields;\n","import { ComponentProps } from 'react';\n\nimport Form from '../../../Form/Form';\nimport CouponCodeFormFields from '../CouponCodeFormFields/CouponCodeFormFields';\n\ntype ApplyCouponDialogProps = {\n url: string;\n onSuccess?: (code: string | undefined) => void;\n} & ComponentProps;\n\ntype Response = {\n code: string;\n};\n\nconst ApplyCouponDialog = ({\n url,\n onSuccess,\n ...fieldsProps\n}: ApplyCouponDialogProps) => {\n return (\n \n action={url}\n method=\"post\"\n onSuccess={(data) => onSuccess && onSuccess(data.code)}\n >\n \n \n );\n};\n\nexport default ApplyCouponDialog;\n","import useTrans from '../../../../hooks/ui/useTrans';\nimport AppliedCouponCode from '../../../../types/AppliedCouponCode';\nimport Button from '../../../Button/Button';\nimport CleanButton from '../../../CleanButton/CleanButton';\nimport CouponTypeLabel from '../../../CouponTypeLabel/CouponTypeLabel';\nimport HiddenField from '../../../HiddenField/HiddenField';\nimport Row from '../../../Row/Row';\nimport Stack from '../../../Stack/Stack';\nimport Text from '../../../Text/Text';\nimport Title from '../../../Title/Title';\n\ntype CouponAppliedDialogProps = {\n trans: ReturnType;\n coupon: AppliedCouponCode;\n currencyCode: string;\n onUndo: () => void;\n onClose: () => void;\n};\n\nconst CouponAppliedDialog = ({\n trans,\n coupon,\n currencyCode,\n onUndo,\n onClose,\n}: CouponAppliedDialogProps) => {\n return (\n \n \n \n {trans('CouponAppliedDialog.Title')}\n \n\n \n \n \n \n {trans('CouponAppliedDialog.DetachButton')}\n \n \n \n \n\n \n\n \n \n \n \n );\n};\n\nexport default CouponAppliedDialog;\n","export default \"\\n \\n \\n \\n\\n\"","export default \"\\n \\n \\n \\n\\n\"","export default \"\\n \\n \\n \\n \\n\\n\"","import Relative from '../../../Relative/Relative';\nimport Row from '../../../Row/Row';\nimport SVG from '../../../SVG/SVG';\n\nimport checkIcon from './graphics/check.svg?raw';\nimport couponIcon from './graphics/coupon.svg?raw';\nimport invalidIcon from './graphics/invalid.svg?raw';\n\nimport styles from './CouponDialogIcon.module.css';\n\nexport type IconStatus = 'default' | 'applied' | 'invalid';\n\ntype CouponDialogIconProps = {\n status: IconStatus;\n};\n\nconst CouponDialogIcon = ({ status }: CouponDialogIconProps) => {\n return (\n \n \n \n\n {status === 'applied' && (\n \n )}\n\n {status === 'invalid' && (\n \n )}\n \n \n );\n};\n\nexport default CouponDialogIcon;\n","import useTrans from '../../../../hooks/ui/useTrans';\nimport ErrorList from '../../../../types/UI/ErrorList';\nimport Button from '../../../Button/Button';\nimport Paragraph from '../../../Paragraph/Paragraph';\nimport Row from '../../../Row/Row';\nimport Stack from '../../../Stack/Stack';\nimport Title from '../../../Title/Title';\n\ntype CouponInvalidDialogProps = {\n errors: ErrorList;\n onBack: () => void;\n trans: ReturnType;\n};\n\nconst CouponInvalidDialog = ({\n errors,\n onBack,\n trans,\n}: CouponInvalidDialogProps) => {\n return (\n \n \n {trans('CouponInvalidDialog.Title')}\n \n\n \n \n {trans('CouponInvalidDialog.Intro')}\n \n\n {errors}\n \n\n \n \n \n \n );\n};\n\nexport default CouponInvalidDialog;\n","const mergeIntoFormData = (formData: FormData, data: Record) => {\n Object.keys(data).forEach((key) => {\n formData.append(key, data[key]);\n });\n\n return formData;\n};\n\nexport default mergeIntoFormData;\n","import { ComponentProps } from 'react';\n\nimport mergeIntoFormData from '../../../../helpers/forms/mergeIntoFormData';\nimport filterObjectProperties from '../../../../helpers/objects/filterObjectProperties';\nimport AppliedCouponCode from '../../../../types/AppliedCouponCode';\nimport ErrorList from '../../../../types/UI/ErrorList';\nimport ValidationErrors from '../../../../types/UI/ValidationErrors';\nimport JsonForm from '../../../Form/JsonForm';\nimport CouponCodeFormFields from '../CouponCodeFormFields/CouponCodeFormFields';\n\ntype ValidateCouponDialogProps = {\n url: string;\n parameters: Record;\n onSuccess?: (code: string | undefined) => void;\n onError?: (errors: ErrorList) => void;\n} & ComponentProps;\n\nconst ValidateCouponDialog = ({\n url,\n parameters,\n onSuccess,\n onError,\n ...fieldsProps\n}: ValidateCouponDialogProps) => {\n const handleError = (errors: ValidationErrors) => {\n if (!onError) {\n return;\n }\n\n onError(errors.couponCode ?? ['An unknown error occurred.']);\n };\n\n const { dock, boatModel, couponCode, ...relevantParameters } =\n filterObjectProperties(\n parameters,\n (key, value) => value !== null && value !== undefined\n );\n\n return (\n \n action={url}\n method=\"post\"\n onBeforeSubmit={(data) => {\n mergeIntoFormData(data, relevantParameters);\n }}\n onSuccess={(data) => onSuccess && onSuccess(data.code)}\n onError={(response) => handleError(response?.errors ?? {})}\n >\n \n \n );\n};\n\nexport default ValidateCouponDialog;\n","import { IconStatus } from '../components/CouponDialogIcon/CouponDialogIcon';\n\nimport { CouponStatus } from './determineStatus';\n\nconst determineIconStatus = (status: CouponStatus): IconStatus => {\n if (status === 'error') {\n return 'invalid';\n }\n\n if (status === 'applied' || status === 'validated') {\n return 'applied';\n }\n\n return 'default';\n};\n\nexport default determineIconStatus;\n","import AppliedCouponCode from '../../../types/AppliedCouponCode';\nimport ErrorList from '../../../types/UI/ErrorList';\n\nexport type CouponStatus =\n | 'canApply'\n | 'applied'\n | 'canValidate'\n | 'validated'\n | 'error';\n\nconst determineStatus = (\n applyCouponCodeUrl: string | undefined,\n appliedCouponCode: AppliedCouponCode | undefined,\n errors: ErrorList | undefined\n): CouponStatus => {\n if (errors) {\n return 'error';\n }\n\n if (applyCouponCodeUrl) {\n return appliedCouponCode ? 'applied' : 'canApply';\n }\n\n return appliedCouponCode ? 'validated' : 'canValidate';\n};\n\nexport default determineStatus;\n","import { router } from '@inertiajs/react';\nimport { ReactNode, useEffect, useState } from 'react';\n\nimport compileUrl from '../../helpers/url/compileUrl';\nimport useTrans from '../../hooks/ui/useTrans';\nimport AppliedCouponCode from '../../types/AppliedCouponCode';\nimport ErrorList from '../../types/UI/ErrorList';\nimport Card from '../Card/Card';\nimport DialogModal from '../DialogModal/DialogModal';\n\nimport ApplyCouponDialog from './components/ApplyCouponDialog/ApplyCouponDialog';\nimport CouponAppliedDialog from './components/CouponAppliedDialog/CouponAppliedDialog';\nimport CouponDialogIcon from './components/CouponDialogIcon/CouponDialogIcon';\nimport CouponInvalidDialog from './components/CouponInvalidDialog/CouponInvalidDialog';\nimport ValidateCouponDialog from './components/ValidateCouponDialog/ValidateCouponDialog';\nimport determineIconStatus from './helpers/determineIconStatus';\nimport determineStatus, { CouponStatus } from './helpers/determineStatus';\n\ntype CouponDialogProps = {\n visible: boolean;\n onClose: () => void;\n appliedCouponCode: AppliedCouponCode | undefined;\n mode: 'dashboard' | 'customer-area';\n currencyCode: string;\n currentUrl: string;\n applyCouponCodeUrl?: string;\n validateCouponCodeUrl?: string;\n validationParameters?: Record;\n errors?: ErrorList;\n};\n\nconst CouponDialog = ({\n visible,\n onClose,\n appliedCouponCode,\n currencyCode,\n mode,\n currentUrl,\n applyCouponCodeUrl,\n validateCouponCodeUrl,\n validationParameters,\n errors,\n}: CouponDialogProps) => {\n const [localErrors, setLocalErrors] = useState();\n useEffect(() => {\n if (errors) {\n setLocalErrors(errors);\n }\n }, [errors]);\n\n const trans = useTrans(\n mode === 'dashboard'\n ? 'TenantDashboard.Bookings.CouponDialog.'\n : 'CustomerArea.BookingForm.CouponDialog.'\n );\n\n if (!visible) {\n return null;\n }\n\n const status = determineStatus(\n applyCouponCodeUrl,\n appliedCouponCode,\n localErrors\n );\n\n const suppressErrorsAndClose = () => {\n setLocalErrors(undefined);\n onClose();\n };\n\n const componentByStatus = (status: CouponStatus): ReactNode => {\n switch (status) {\n case 'error':\n return (\n \n );\n\n case 'canValidate':\n return (\n {\n const url = compileUrl(currentUrl, {\n ...validationParameters,\n couponCode: code,\n });\n router.get(url);\n }}\n onError={setLocalErrors}\n />\n );\n\n case 'validated':\n return (\n {\n const url = compileUrl(currentUrl, {\n ...validationParameters,\n couponCode: undefined,\n });\n router.get(url);\n\n onClose();\n }}\n onClose={onClose}\n />\n );\n\n case 'applied':\n return (\n {\n router.post(applyCouponCodeUrl!, {});\n\n onClose();\n }}\n onClose={onClose}\n />\n );\n\n case 'canApply':\n return (\n \n );\n }\n\n return

Unhandled coupon status

;\n };\n\n return (\n \n \n \n {componentByStatus(status)}\n \n \n );\n};\n\nexport default CouponDialog;\n"],"names":["CouponCodeFormFields","trans","couponInputValue","setCouponInputValue","useState","textFieldRef","useRef","handleCouponCodeChange","value","useEffect","Stack","jsx","Title","Row","TextField","Spacer","SubmitButton","ApplyCouponDialog","url","onSuccess","fieldsProps","Form","data","CouponAppliedDialog","coupon","currencyCode","onUndo","onClose","jsxs","HiddenField","CleanButton","Text","CouponTypeLabel","Button","checkIcon","couponIcon","invalidIcon","CouponDialogIcon","status","Relative","SVG","styles","CouponInvalidDialog","errors","onBack","Paragraph","mergeIntoFormData","formData","key","ValidateCouponDialog","parameters","onError","handleError","dock","boatModel","couponCode","relevantParameters","filterObjectProperties","JsonForm","response","determineIconStatus","determineStatus","applyCouponCodeUrl","appliedCouponCode","CouponDialog","visible","mode","currentUrl","validateCouponCodeUrl","validationParameters","localErrors","setLocalErrors","useTrans","suppressErrorsAndClose","componentByStatus","code","compileUrl","router","DialogModal","Card"],"mappings":"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"}