{"version":3,"file":"46.0762b8fcdb5d6ea68677.chunk.js","mappings":"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WACVC,MAAO,QACPC,OAAQ,SACRC,gBAAiB,kBACjBC,kBAAmB,oBACnBC,iBAAkB,mBAClBC,qBAAsB,uBACtBC,YAAa,eAEFC,EAAuB,CAClC,CACEC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,QACNzC,MAAO,SAET,CACEyC,KAAM,QACNzC,MAAO,SAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,QACNzC,MAAO,SAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,QACNzC,MAAO,SAET,CACEyC,KAAM,KACNzC,MAAO,MAET,CACEyC,KAAM,QACNzC,MAAO,SAET,CACEyC,KAAM,QACNzC,MAAO,SAET,CACEyC,KAAM,QACNzC,MAAO,SAET,CACEyC,KAAM,QACNzC,MAAO,SAET,CACEyC,KAAM,QACNzC,MAAO,SAET,CACEyC,KAAM,QACNzC,MAAO,SAET,CACEyC,KAAM,QACNzC,MAAO,SAET,CACEyC,KAAM,QACNz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KACR,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,KAAQ,KACR,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,KAAQ,KACR,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,KAAQ,KACR,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,KAAQ,KACR,IAAO,KACP,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,KAAQ,KACR,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,KAAQ,KACR,IAAO,KACP,IAAO,KACP,IAAO,KACP,KAAQ,KACR,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,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","sources":["webpack://AlfaLaval/./assets/icons/common/Profile.tsx","webpack://AlfaLaval/./assets/icons/common/IconContainer.tsx","webpack://AlfaLaval/./assets/icons/common/Facebook.tsx","webpack://AlfaLaval/./assets/icons/common/Twitter.tsx","webpack://AlfaLaval/./assets/icons/common/ExternalLink.tsx","webpack://AlfaLaval/./assets/icons/common/Arrow.tsx","webpack://AlfaLaval/./assets/icons/common/Cross.tsx","webpack://AlfaLaval/./assets/icons/common/Delete.tsx","webpack://AlfaLaval/./assets/icons/common/Email.tsx","webpack://AlfaLaval/./assets/icons/common/Phone.tsx","webpack://AlfaLaval/./components/Button/Button.tsx","webpack://AlfaLaval/./components/Checkbox/Checkbox.tsx","webpack://AlfaLaval/./components/Input/Input.tsx","webpack://AlfaLaval/./components/QuoteItem/QuoteItem.tsx","webpack://AlfaLaval/./components/RadioButton/RadioButton.tsx","webpack://AlfaLaval/./helpers/consts.ts","webpack://AlfaLaval/./helpers/generateTransactionId.ts","webpack://AlfaLaval/./helpers/stringHelpers.ts","webpack://AlfaLaval/./components/Form/Form.tsx","webpack://AlfaLaval/./components/TextArea/TextArea.tsx","webpack://AlfaLaval/./components/Form/components/Toggle/Toggle.tsx","webpack://AlfaLaval/./components/FileUpload/FileUpload.helpers.ts","webpack://AlfaLaval/./components/FileUpload/FileUpload.tsx","webpack://AlfaLaval/./components/Form/components/FormSelect/FormSelect.tsx","webpack://AlfaLaval/./components/Form/components/TextBoxList/TextBoxList.tsx","webpack://AlfaLaval/./modules/EnquiryForm/EnquiryForm.service.ts","webpack://AlfaLaval/./components/Form/components/SerialLink/SerialLink.tsx","webpack://AlfaLaval/./components/PhoneNumber/PhoneNumber.tsx","webpack://AlfaLaval/./components/PhoneNumber/countryCodes.ts","webpack://AlfaLaval/./components/Form/Form.hooks.tsx","webpack://AlfaLaval/./modules/EnquiryForm/components/EnquiryTypeForm/EnquiryTypeForm.helpers.ts","webpack://AlfaLaval/./modules/EnquiryForm/components/EnquiryTypeForm/EnquiryTypeForm.tsx","webpack://AlfaLaval/./modules/EnquiryForm/components/EnquiryTypeForm/EnquiryTypeForm.hooks.tsx","webpack://AlfaLaval/./modules/EnquiryForm/EnquiryForm.helpers.ts","webpack://AlfaLaval/./modules/EnquiryForm/EnquiryForm.tsx","webpack://AlfaLaval/./modules/EnquiryForm/index.ts","webpack://AlfaLaval/./modules/EnquiryForm/ContactUsBlock.tsx","webpack://AlfaLaval/./services/endpoints.ts"],"sourcesContent":["import React from 'react';\r\n\r\nexport const Profile = () => (\r\n  <svg\r\n    xmlns='http://www.w3.org/2000/svg'\r\n    width='21'\r\n    height='21'\r\n    viewBox='0 0 21 21'\r\n    fill='none'\r\n    stroke='#11387f'\r\n    strokeWidth='2'\r\n    strokeLinecap='round'\r\n    strokeLinejoin='round'\r\n  >\r\n    <circle cx='12' cy='7' r='4' />\r\n    <path d='M12 14s-8-1.5-8 4h16c0-5.5-8-4-8-4z' />\r\n  </svg>\r\n);\r\n","import React, { ReactNode } from 'react';\r\n\r\ninterface IconContainerProps {\r\n  icon: ReactNode;\r\n  className?: string;\r\n}\r\n\r\nexport const IconContainer = ({ icon, className }: IconContainerProps) => {\r\n  return (\r\n    <i className={className} aria-hidden=\"true\">\r\n      {icon}\r\n    </i>\r\n  )\r\n};","import React from 'react';\r\n\r\nexport const Facebook = () => (\r\n  <svg xmlns=\"http://www.w3.org/2000/svg\" enable-background=\"new 0 0 24 24\" height=\"20\" viewBox=\"0 0 24 24\" width=\"20\">\r\n    <rect fill=\"none\" height=\"20\" width=\"20\" />\r\n    <path d=\"M22,12c0-5.52-4.48-10-10-10S2,6.48,2,12c0,4.84,3.44,8.87,8,9.8V15H8v-3h2V9.5C10,7.57,11.57,6,13.5,6H16v3h-2 c-0.55,0-1,0.45-1,1v2h3v3h-3v6.95C18.05,21.45,22,17.19,22,12z\" />\r\n  </svg>\r\n);\r\n\r\n\r\n","import React from 'react';\r\n\r\nexport const Twitter = () => (\r\n  <svg xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\">\r\n    <path d=\"M 2.3671875 3 L 9.4628906 13.140625 L 2.7402344 21 L 5.3808594 21 L 10.644531 14.830078 L 14.960938 21 L 21.871094 21 L 14.449219 10.375 L 20.740234 3 L 18.140625 3 L 13.271484 8.6875 L 9.2988281 3 L 2.3671875 3 z M 6.2070312 5 L 8.2558594 5 L 18.033203 19 L 16.001953 19 L 6.2070312 5 z\"></path>\r\n  </svg>\r\n);","import React from 'react';\r\n\r\nexport const ExternalLink = () => (\r\n  <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n    <g id=\"external-link\">\r\n      <path id=\"Vector\" d=\"M18 13V17C18 18.0609 17.5786 19.0783 16.8284 19.8284C16.0783 20.5786 15.0609 21 14 21H3V6H11\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n      <path id=\"Vector_2\" d=\"M15 3H21V9\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n      <path id=\"Vector_3\" d=\"M10 14L21 3\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n    </g>\r\n  </svg>\r\n);\r\n","import React from 'react';\r\n\r\nexport const Arrow = ({ stroke = '#10387F', rotate = 0 }) => {\r\n  return (\r\n    <svg\r\n      xmlns='http://www.w3.org/2000/svg'\r\n      width='24'\r\n      height='24'\r\n      viewBox='0 0 24 24'\r\n      fill='none'\r\n      style={{\r\n        transformBox: 'fill-box',\r\n        transformOrigin: 'center',\r\n        transform: `rotate(${rotate}deg)`,\r\n      }}\r\n    >\r\n      <path d='M9 18.5L15 12.5L9 6.5' stroke={stroke} strokeWidth='2' />\r\n    </svg>\r\n  );\r\n};\r\n","import React from 'react';\r\n\r\nexport const Cross = () => (\r\n  <svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'>\r\n    <path\r\n      d='M18 6L6 18'\r\n      stroke='currentColor'\r\n      strokeWidth='2'\r\n      strokeLinecap='round'\r\n      strokeLinejoin='round'\r\n    />\r\n    <path\r\n      d='M6 6L18 18'\r\n      stroke='currentColor'\r\n      strokeWidth='2'\r\n      strokeLinecap='round'\r\n      strokeLinejoin='round'\r\n    />\r\n  </svg>\r\n);\r\n","import React from 'react';\r\n\r\nexport const Delete = () => (\r\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n    <path d=\"M3 6H5H21\" stroke=\"#3D3935\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n    <path d=\"M8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M19 6V18C19 19.0609 18.5786 20.0783 17.8284 20.8284C17.0783 21.5786 16.0609 22 15 22H5V6H19Z\" stroke=\"#3D3935\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n    <path d=\"M10 11V17\" stroke=\"#3D3935\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n    <path d=\"M14 11V17\" stroke=\"#3D3935\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n  </svg>\r\n);\r\n","import React from 'react';\r\n\r\nexport const EmailSvg = () => (\r\n  <svg width='20' height='15' viewBox='0 0 20 15' fill='none' xmlns='http://www.w3.org/2000/svg'>\r\n    <path\r\n      d='M0.833496 2.74939C0.833496 1.64482 1.72893 0.74939 2.8335 0.74939H17.1668C18.2714 0.74939 19.1668 1.64482 19.1668 2.74939V3.50801L11.7086 8.675C10.6809 9.38697 9.31942 9.38697 8.29173 8.675L0.833496 3.50801V2.74939Z'\r\n      fill='#3D3935'\r\n    />\r\n    <path\r\n      d='M0.833496 4.42755L8.29173 9.59454C9.31942 10.3065 10.6809 10.3065 11.7086 9.59454L19.1668 4.42755V12.0827C19.1668 13.1873 18.2714 14.0827 17.1668 14.0827H2.8335C1.72893 14.0827 0.833496 13.1873 0.833496 12.0827V4.42755Z'\r\n      fill='#3D3935'\r\n    />\r\n  </svg>\r\n);\r\n","import React from 'react';\r\n\r\nexport const PhoneSvg = () => (\r\n  <svg width='18' height='17' viewBox='0 0 18 17' fill='none' xmlns='http://www.w3.org/2000/svg'>\r\n    <path\r\n      fillRule='evenodd'\r\n      clipRule='evenodd'\r\n      d='M17.3327 12.5608V15.0698C17.3336 15.3028 17.2857 15.5333 17.1923 15.7468C17.0988 15.9602 16.9617 16.1517 16.7896 16.3092C16.6177 16.4667 16.4146 16.5865 16.1936 16.6611C15.9725 16.7358 15.7382 16.7635 15.5058 16.7425C12.9272 16.4629 10.4502 15.5835 8.27395 14.175C6.24917 12.8909 4.53255 11.1777 3.24595 9.15694C1.82971 6.97511 0.948369 4.49104 0.673306 1.90593C0.652365 1.67465 0.679901 1.44157 0.754173 1.22149C0.828436 1.00143 0.947808 0.799203 1.10467 0.627696C1.26154 0.456188 1.45247 0.319163 1.66532 0.225335C1.87815 0.131506 2.10824 0.0829403 2.34091 0.0827228H4.8549C5.26157 0.0787251 5.65584 0.222458 5.9642 0.487116C6.27256 0.751775 6.47396 1.11931 6.53088 1.52122C6.63701 2.32415 6.83377 3.11253 7.11751 3.87132C7.23022 4.17066 7.25461 4.49599 7.18782 4.80875C7.12095 5.12151 6.96567 5.4086 6.74042 5.63599L5.67613 6.69811C6.86905 8.79196 8.60613 10.5256 10.7041 11.7161L11.7684 10.654C11.9961 10.4292 12.2838 10.2742 12.5972 10.2075C12.9106 10.1408 13.2365 10.1651 13.5365 10.2776C14.2968 10.5608 15.0868 10.7572 15.8913 10.8631C16.2983 10.9204 16.6701 11.125 16.9359 11.438C17.2016 11.7511 17.3428 12.1507 17.3327 12.5608Z'\r\n      fill='#3D3935'\r\n    />\r\n  </svg>\r\n);\r\n","import { createElement, ReactNode, MouseEvent } from 'react';\r\nimport classNames from 'classnames';\r\n\r\nexport interface ButtonProps extends React.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement> {\r\n  text: string;\r\n  className?: string;\r\n  type?: 'button' | 'submit' | 'reset';\r\n  onClick?: (e: MouseEvent<HTMLButtonElement>) => void;\r\n  href?: string;\r\n  size?: 'xs' | 'small' | 'medium' | 'large';\r\n  disabled?: boolean;\r\n  color?: 'grey' | 'default' | 'primary' | 'cta';\r\n  border?: boolean;\r\n  children?: ReactNode;\r\n}\r\n\r\nexport const Button = ({\r\n  text,\r\n  className = '',\r\n  onClick = () => {},\r\n  href,\r\n  size = 'medium',\r\n  disabled = false,\r\n  color = 'default',\r\n  border = false,\r\n  children,\r\n  type,\r\n  ...props\r\n}: ButtonProps) => {\r\n  const tag = href ? 'a' : 'button';\r\n\r\n  return createElement(\r\n    tag,\r\n    {\r\n      onClick,\r\n      className:\r\n        classNames('c-button', {\r\n          'is-xs': size === 'xs',\r\n          'is-small': size === 'small',\r\n          'is-medium': size === 'medium',\r\n          'is-large': size === 'large',\r\n          'is-disabled': !!disabled,\r\n          'is-grey': color === 'grey',\r\n          'is-default': color === 'default',\r\n          'is-primary': color === 'primary',\r\n          'is-cta': color === 'cta',\r\n          'is-border': !!border,\r\n        }) +\r\n        ' ' +\r\n        className,\r\n      href,\r\n      ...(tag === 'a' && { target: '_blank' }),\r\n      type,\r\n      ...props,\r\n    },\r\n    [text, children]\r\n  );\r\n};\r\n","import React, { ChangeEventHandler, forwardRef } from 'react';\r\nimport './Checkbox.scss';\r\n\r\ninterface CheckboxProps {\r\n  label?: string;\r\n  value?: string;\r\n  required?: boolean;\r\n  id: string;\r\n  name: string;\r\n  onChange: ChangeEventHandler<HTMLInputElement>;\r\n  onBlur?: ChangeEventHandler<HTMLInputElement>;\r\n  checked?: boolean;\r\n}\r\n\r\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\r\n  ({ label, value = label, id, name, onChange, onBlur, checked, required }, ref) => {\r\n    return (\r\n      <label>\r\n        <input\r\n          ref={ref}\r\n          type='checkbox'\r\n          onChange={onChange}\r\n          onBlur={onBlur}\r\n          className='c-checkbox-input'\r\n          name={name}\r\n          value={value}\r\n          id={id}\r\n          defaultChecked={checked}\r\n        />\r\n      </label>\r\n    );\r\n  }\r\n);\r\n","import React, { forwardRef } from 'react';\r\nimport './Input.scss';\r\n\r\ninterface InputProps extends React.HTMLAttributes<HTMLInputElement> {\r\n  type: 'text' | 'email';\r\n  label?: string;\r\n  name: string;\r\n  placeholder?: string;\r\n  required?: boolean;\r\n  value?: string;\r\n  defaultValue?: string;\r\n}\r\n\r\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\r\n  (\r\n    {\r\n      type = 'text',\r\n      label,\r\n      name,\r\n      placeholder,\r\n      required,\r\n      className = '',\r\n      defaultValue = '',\r\n      value,\r\n      ...props\r\n    },\r\n    ref\r\n  ) => {\r\n    return (\r\n      <label className={'c-input ' + className}>\r\n        {label && <span className='c-input-label'>{`${label} ${required ? '*' : ''}`}</span>}\r\n        <input\r\n          ref={ref}\r\n          type={type}\r\n          name={name}\r\n          id={name}\r\n          placeholder={placeholder}\r\n          className='c-input-field'\r\n          defaultValue={defaultValue}\r\n          value={value}\r\n          {...props}\r\n        />\r\n      </label>\r\n    );\r\n  }\r\n);\r\n","import React from 'react';\r\nimport { Delete } from '@icons/common';\r\nimport { RadioButton } from '@components/RadioButton';\r\nimport classNames from 'classnames';\r\nimport './QuoteItem.scss';\r\n\r\ninterface QuoteItemProps {\r\n  itemImage: string;\r\n  itemName: string;\r\n  itemDescription?: string;\r\n  buttonType: string;\r\n  className?: string;\r\n  onSelect?: (itemName: string) => void;\r\n  onButtonClick?: (itemName: string) => void;\r\n}\r\n\r\nexport const QuoteItem = ({\r\n  itemImage,\r\n  itemName,\r\n  itemDescription,\r\n  buttonType,\r\n  className,\r\n  onSelect,\r\n  onButtonClick = () => {},\r\n}: QuoteItemProps) => {\r\n  const renderButtonComponent = () => {\r\n    switch (buttonType) {\r\n      case 'delete':\r\n        return <Delete />;\r\n      case 'radio':\r\n        return <RadioButton id='quote_radio' name='quote_item' />;\r\n      default:\r\n        return null;\r\n    }\r\n  };\r\n\r\n  return (\r\n    <label\r\n      className={classNames(`quote-item ${className}`)}\r\n      onClick={() => onSelect && onSelect(itemName)}\r\n    >\r\n      <div className='quote-image-container'>\r\n        <img loading='lazy' src={itemImage} alt={itemName} />\r\n      </div>\r\n\r\n      <div className='quote-item-text'>\r\n        <div className='title'>{itemName}</div>\r\n        {itemDescription && <p className='description'>{itemDescription}</p>}\r\n      </div>\r\n      <div className='quote-item-button' onClick={() => onButtonClick(itemName)}>\r\n        {renderButtonComponent()}\r\n      </div>\r\n    </label>\r\n  );\r\n};\r\n","import React, { forwardRef } from 'react';\r\nimport classNames from 'classnames';\r\n\r\ninterface RadioButtonProps {\r\n  title?: string;\r\n  id: string;\r\n  name: string;\r\n  onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\r\n  checked?: boolean;\r\n  value?: string;\r\n}\r\n\r\nexport const RadioButton = forwardRef<HTMLInputElement, RadioButtonProps>(\r\n  ({ title, id, name, onChange, checked = false, value, ...props }, ref) => {\r\n    return (\r\n      <div className='c-radio-button'>\r\n        <label className='c-radio-button-container'>\r\n          <input\r\n            ref={ref}\r\n            type='radio'\r\n            onChange={onChange}\r\n            className='checkmark'\r\n            name={name}\r\n            value={value || title}\r\n            id={id}\r\n            defaultChecked={checked}\r\n            {...props}\r\n          />\r\n          {title}\r\n        </label>\r\n      </div>\r\n    );\r\n  }\r\n);\r\n","export const HEADER_HEIGHT = 88;\r\nexport const TOP_BAR_HEIGHT = 32;\r\nexport const FULL_HEADER_HEIGHT = 120;\r\nexport const pageType = {\r\n  column: 'MegaMenuColumnPage',\r\n  section: 'MegaMenuSectionPage',\r\n  otherColumn: 'MegaMenuOtherPage',\r\n};\r\n\r\ntype LangType = {\r\n  code: string;\r\n  value: string;\r\n};\r\n\r\nexport const formFieldType = {\r\n  quoteitem: \"quoteitem\",\r\n  textbox: \"textbox\",\r\n  textboxlist: \"textboxlist\",\r\n  textarea: \"textarea\",\r\n  email: \"textboxemail\",\r\n  phone: 'phonenumber',\r\n  file: \"fileupload\",\r\n  checkbox: \"checkbox\",\r\n  radio: \"radio\",\r\n  toggle: \"toggle\",\r\n  regionselection: \"regionselection\",\r\n  industryselection: \"industryselection\",\r\n  productselection: \"productselection\",\r\n  applicationselection: \"applicationselection\",\r\n  optiongroup: \"optiongroup\",\r\n};\r\nexport const langJson: LangType[] = [\r\n  {\r\n    code: 'en', // what episerver has\r\n    value: 'en', // bc7 standared\r\n  },\r\n  {\r\n    code: 'sv',\r\n    value: 'sv',\r\n  },\r\n  {\r\n    code: 'de',\r\n    value: 'de',\r\n  },\r\n  {\r\n    code: 'fr',\r\n    value: 'fr',\r\n  },\r\n  {\r\n    code: 'es',\r\n    value: 'es',\r\n  },\r\n  {\r\n    code: 'no',\r\n    value: 'no',\r\n  },\r\n  {\r\n    code: 'da',\r\n    value: 'da',\r\n  },\r\n  {\r\n    code: 'fi',\r\n    value: 'fi',\r\n  },\r\n  {\r\n    code: 'nl',\r\n    value: 'nl',\r\n  },\r\n  {\r\n    code: 'en-ca',\r\n    value: 'en-ca',\r\n  },\r\n  {\r\n    code: 'fr-ca',\r\n    value: 'fr-ca',\r\n  },\r\n  {\r\n    code: 'pt',\r\n    value: 'pt',\r\n  },\r\n  {\r\n    code: 'ru',\r\n    value: 'ru',\r\n  },\r\n  {\r\n    code: 'it',\r\n    value: 'it',\r\n  },\r\n  {\r\n    code: 'sk',\r\n    value: 'sk',\r\n  },\r\n  {\r\n    code: 'cs',\r\n    value: 'cs',\r\n  },\r\n  {\r\n    code: 'hu',\r\n    value: 'hu',\r\n  },\r\n  {\r\n    code: 'zh',\r\n    value: 'zh',\r\n  },\r\n  {\r\n    code: 'pl',\r\n    value: 'pl',\r\n  },\r\n  {\r\n    code: 'ja',\r\n    value: 'ja',\r\n  },\r\n  {\r\n    code: 'ko',\r\n    value: 'ko',\r\n  },\r\n  {\r\n    code: 'el',\r\n    value: 'el',\r\n  },\r\n  {\r\n    code: 'tr',\r\n    value: 'tr',\r\n  },\r\n  {\r\n    code: 'zh-tw',\r\n    value: 'zh-tw',\r\n  },\r\n  {\r\n    code: 'lv',\r\n    value: 'lv',\r\n  },\r\n  {\r\n    code: 'lt',\r\n    value: 'lt',\r\n  },\r\n  {\r\n    code: 'ro',\r\n    value: 'ro',\r\n  },\r\n  {\r\n    code: 'sl',\r\n    value: 'sl',\r\n  },\r\n  {\r\n    code: 'en-gb',\r\n    value: 'en-gb',\r\n  },\r\n  {\r\n    code: 'he',\r\n    value: 'he',\r\n  },\r\n  {\r\n    code: 'fr-be',\r\n    value: 'fr-be',\r\n  },\r\n  {\r\n    code: 'en-bz',\r\n    value: 'en-bz',\r\n  },\r\n  {\r\n    code: 'es-mx',\r\n    value: 'es-mx',\r\n  },\r\n  {\r\n    code: 'es-ar',\r\n    value: 'es-ar',\r\n  },\r\n  {\r\n    code: 'en-us',\r\n    value: 'en-us',\r\n  },\r\n  {\r\n    code: 'en-au',\r\n    value: 'en-au',\r\n  },\r\n  {\r\n    code: 'en-nz',\r\n    value: 'en-nz',\r\n  },\r\n  {\r\n    code: 'en-sg',\r\n    value: 'en-sg',\r\n  },\r\n  {\r\n    code: 'es-co',\r\n    value: 'es-co',\r\n  },\r\n  {\r\n    code: 'en-in',\r\n    value: 'en-in',\r\n  },\r\n  {\r\n    code: 'en-tt',\r\n    value: 'en-tt',\r\n  },\r\n  {\r\n    code: 'en-za',\r\n    value: 'en-za',\r\n  },\r\n  {\r\n    code: 'uk',\r\n    value: 'uk',\r\n  },\r\n  {\r\n    code: 'en-my',\r\n    value: 'en-my',\r\n  },\r\n  {\r\n    code: 'id',\r\n    value: 'id',\r\n  },\r\n  {\r\n    code: 'th',\r\n    value: 'th',\r\n  },\r\n  {\r\n    code: 'bg',\r\n    value: 'bg',\r\n  },\r\n  {\r\n    code: 'en-fr',\r\n    value: 'en-fr',\r\n  },\r\n];\r\n\r\n//Story 365068 - Added to check for the links that contains \"shop.alfalaval.com\"\r\nexport const productShopUrl = \"shop.alfalaval.com\";","export const generateTransactionId = (useCurrentTime: boolean, formId?: string): string => {\r\n  const transctionElement = document.getElementById('TransactionId') as HTMLInputElement | null;\r\n  const Id = transctionElement ? transctionElement.value : '';\r\n  const timestamp = useCurrentTime\r\n    ? new Date().getTime() * 10000\r\n    : window.localStorage.getItem('timestamp');\r\n  window.localStorage.setItem('timestamp', timestamp as string);\r\n  const transactionId = Id\r\n    ? Id.replace(/Timestamp/, timestamp?.toString())\r\n        .replace(/PageId/, formId)\r\n    : '';\r\n  return transactionId;\r\n};\r\n","// replaces all spaces with -\r\nexport const getComputerName = (str: string): string => {\r\n  if (!str) return '';\r\n  const computerName = str.replace(/\\s+/g, '-').toLowerCase();\r\n  return computerName;\r\n};\r\n\r\nexport const truncateString = (str: string, limit: number): string => {\r\n  if (!str) return '';\r\n  let truncated = str.substring(0, limit);\r\n  truncated += '...';\r\n  return truncated;\r\n};\r\n\r\nexport const normalizeInput = (value: string): string => {\r\n  return value.toLowerCase().trim();\r\n};\r\n\r\nexport const interpolateString = (str: string, ...args: string[]): string => {\r\n  let interpolatedString = str;\r\n  args.forEach((arg, index) => {\r\n    interpolatedString = interpolatedString.replace(`{${index}}`, arg);\r\n  });\r\n  return interpolatedString;\r\n};\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { Button } from '@components/Button';\r\nimport { FormData } from './Form.types';\r\nimport { useFormLoader } from './Form.hooks';\r\nimport './Form.scss';\r\n\r\ninterface EnquiryTypeFormProps {\r\n  formData: FormData;\r\n  sendBtnLabel?: string;\r\n  isSubmitDisabled?: boolean;\r\n  fieldLoader: ReturnType<typeof useFormLoader>;\r\n  onSubmit: React.FormEventHandler<HTMLFormElement>;\r\n  errors: Record<string, any>;\r\n  formError: string | boolean;\r\n  isSubmitting: boolean;\r\n}\r\n\r\nexport const Form = ({\r\n  formData,\r\n  sendBtnLabel = 'Send',\r\n  isSubmitDisabled,\r\n  fieldLoader,\r\n  onSubmit,\r\n  errors,\r\n  formError,\r\n  isSubmitting,\r\n}: EnquiryTypeFormProps) => {\r\n  return (\r\n    <form\r\n      className='c-form-submit'\r\n      encType='multipart/form-data'\r\n      method='post'\r\n      onSubmit={(e) => onSubmit(e)}\r\n    >\r\n      {formData?.FormSections?.map(({ SubHeading, FormField = [] }, index) => {\r\n        return (\r\n          <div key={index}>\r\n            {SubHeading && <h3>{SubHeading}</h3>}\r\n            {FormField.map((formField, index) => {\r\n              const name = formField.Name;\r\n\r\n              const Field = fieldLoader(formField, index);\r\n\r\n              return (\r\n                <div\r\n                  key={index}\r\n                  className={classNames('c-form-field-wrapper', {\r\n                    'c-form-field-wrapper--error': errors[name],\r\n                  })}\r\n                >\r\n                  {Field}\r\n                  {Field && errors[name] && (\r\n                    <span\r\n                      className='c-common-validation c-common-validation-danger'\r\n                      id={`error_${name}`}\r\n                    >\r\n                      {errors[name].message}\r\n                    </span>\r\n                  )}\r\n                </div>\r\n              );\r\n            })}\r\n          </div>\r\n        );\r\n      })}\r\n      {!isSubmitting ? (\r\n        <Button\r\n          className='c-send-btn'\r\n          color='primary'\r\n          text={sendBtnLabel}\r\n          disabled={isSubmitDisabled}\r\n        />\r\n      ) : (\r\n        <div className='c-form-spinner'>\r\n          <img className='inline-block' src='/ui/css/img/loader.gif' alt='Loading...' />\r\n        </div>\r\n      )}\r\n\r\n      {formError && (\r\n        <div\r\n          className='c-err-msg'\r\n          dangerouslySetInnerHTML={{\r\n            __html: typeof formError === 'string' ? formError : 'Please try again later!',\r\n          }}\r\n        />\r\n      )}\r\n    </form>\r\n  );\r\n};\r\n","import React, { ChangeEvent, forwardRef } from 'react';\r\nimport './TextArea.scss';\r\n\r\ninterface TextAreaProps extends React.HTMLAttributes<HTMLTextAreaElement> {\r\n  label: string;\r\n  name: string;\r\n  placeholder?: string;\r\n  required?: boolean;\r\n  value?: string;\r\n  onChange?: (e: ChangeEvent<HTMLTextAreaElement>) => void;\r\n}\r\n\r\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\r\n  ({ label, name, placeholder, required, value, onChange, className = '', ...props }, ref) => {\r\n    return (\r\n      <label className={'c-textarea ' + className}>\r\n        <span className='c-textarea-label'>{`${label || ''} ${required ? '*' : ''}`}</span>\r\n        <textarea\r\n          ref={ref}\r\n          name={name}\r\n          id={name}\r\n          placeholder={placeholder}\r\n          value={value}\r\n          onChange={onChange}\r\n          className='c-textarea-field'\r\n          {...props}\r\n        />\r\n      </label>\r\n    );\r\n  }\r\n);\r\n","import React, { forwardRef, HTMLAttributes, ChangeEvent } from 'react';\r\nimport './Toggle.scss';\r\n\r\ninterface ToggleProps extends HTMLAttributes<HTMLInputElement> {\r\n  id: string;\r\n  name: string;\r\n  label: string;\r\n  onText: string;\r\n  offText: string;\r\n  onChange: (e: ChangeEvent<HTMLInputElement>) => void;\r\n}\r\n\r\nexport const Toggle = forwardRef<HTMLInputElement, ToggleProps>(\r\n  ({ id, name, onChange, label, onText, offText, ...props }, ref) => {\r\n    return (\r\n      <div className='btn-container'>\r\n        <div className='switch btn-color-mode-switch'>\r\n          <input type='checkbox' ref={ref} name={name} id={id} onChange={onChange} {...props} />\r\n          <label\r\n            htmlFor={id}\r\n            className='btn-color-mode-switch-inner'\r\n            data-on={onText}\r\n            data-off={offText}\r\n          />\r\n        </div>\r\n      </div>\r\n    );\r\n  }\r\n);\r\n","export const getFileExtension = (fileName: string) => {\r\n  return fileName.split('.').pop();\r\n};\r\n\r\nexport const formatExtensions = (extensions: string[]) => {\r\n  return extensions.map((ext) => `.${ext}`).join(', ');\r\n};\r\n\r\nexport const isFileExists = (files: File[], inputFiles: File[]) => {\r\n  return files.some(\r\n    (f) =>\r\n      inputFiles.filter((ipFile) => ipFile.name.toLowerCase() === f.name.toLowerCase()).length >\r\n      0\r\n  );\r\n};\r\n\r\nexport const loadFileTypeIcon = (type) => {\r\n  const ext = getFileExtension(type);\r\n  let iconClass = 'icon-file-empty';\r\n  switch (ext) {\r\n    case 'pdf':\r\n      iconClass = 'icon-pdf';\r\n      break;\r\n    case 'xlsx':\r\n    case 'xls':\r\n      iconClass = 'icon-file-excel';\r\n      break;\r\n    case 'jpg':\r\n    case 'jpeg':\r\n    case 'png':\r\n      iconClass = 'icon-file-img';\r\n      break;\r\n\r\n    default:\r\n      iconClass = 'icon-file-empty';\r\n  }\r\n  return iconClass;\r\n};\r\n\r\nexport const getFilesSize = (files: File[]) => {\r\n  return files.reduce((acc, file) => acc + file.size, 0) / Math.pow(1024, 2);\r\n}\r\n\r\nexport const isValidExtension = (files: File[], extensions: string[]) => {\r\n  return files.every((file) => extensions.includes(getFileExtension(file.name)));\r\n}","import React, { ChangeEvent, forwardRef, useState, MouseEvent, Fragment, useEffect } from 'react';\r\nimport './FileUpload.scss';\r\nimport {\r\n  formatExtensions,\r\n  getFilesSize,\r\n  isFileExists,\r\n  isValidExtension,\r\n  loadFileTypeIcon,\r\n} from './FileUpload.helpers';\r\n\r\nexport interface FileUploadData {\r\n  FileSize: number;\r\n  FileExtensions: string;\r\n  FileSizeValidationMessage: string;\r\n  FileUploadButtonLabel: string;\r\n  ValidationMessage?: string;\r\n}\r\n\r\nexport interface FileUploadProps {\r\n  name: string;\r\n  label: string;\r\n  placeholder?: string;\r\n  required: boolean;\r\n  btnLabel: string;\r\n  extensions: string;\r\n  maxSize: number;\r\n  validationErrorMsg: string;\r\n  sizeValidationMsg: string;\r\n  onFilesUpdate: (files: File[]) => void;\r\n  onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\r\n}\r\n\r\nexport const FileUpload = forwardRef<HTMLInputElement, FileUploadProps>(\r\n  (\r\n    {\r\n      name = 'ImageUpload',\r\n      label,\r\n      placeholder,\r\n      required,\r\n      extensions,\r\n      btnLabel,\r\n      maxSize,\r\n      onFilesUpdate,\r\n      validationErrorMsg,\r\n      sizeValidationMsg,\r\n      onChange,\r\n      ...props\r\n    },\r\n    ref\r\n  ) => {\r\n    const [files, setFiles] = useState<File[]>([]);\r\n    const [errors, setErrors] = useState({\r\n      fileExistsError: false,\r\n      validFileError: false,\r\n      isMaxFileSizeError: false,\r\n    });\r\n\r\n    useEffect(() => {\r\n      //submit to the form\r\n      onFilesUpdate(files);\r\n    }, [files]);\r\n\r\n    const getIsValid = (err: typeof errors) => {\r\n      return Object.values(err).every((e) => e === false);\r\n    };\r\n\r\n    const handleUpload = (e: ChangeEvent<HTMLInputElement>) => {\r\n      const newFiles = Array.from(e.target.files);\r\n      const allFiles = [...newFiles, ...files];\r\n      const errors = {\r\n        fileExistsError: isFileExists(files, newFiles),\r\n        validFileError: !isValidExtension(newFiles, extensions.split(',')),\r\n        isMaxFileSizeError: !!(maxSize && getFilesSize(allFiles) > maxSize),\r\n      };\r\n\r\n      const isValid = getIsValid(errors);\r\n      setErrors(errors);\r\n\r\n      if (isValid) {\r\n        setFiles(allFiles);\r\n      }\r\n    };\r\n\r\n    const onClick = (e: MouseEvent<HTMLInputElement>) => {\r\n      const target = e.target as HTMLInputElement;\r\n      target.value = '';\r\n    };\r\n\r\n    const removeFile = (arrIndex: number) => {\r\n      const updatedArr = files.filter((_, index) => index !== arrIndex);\r\n      setFiles(updatedArr);\r\n    };\r\n\r\n    return (\r\n      <div className='c-common-input'>\r\n        <div className='c-contact-upload-row'>\r\n          <div className='c-contact-upload-ico'>\r\n            <div className='upload-btn-wrapper'>\r\n              <button className='btn'>\r\n                <i>\r\n                  <div className='icon-file-upload' />\r\n                </i>\r\n                <span>{btnLabel || 'Upload files'}</span>\r\n              </button>\r\n              <input\r\n                ref={ref}\r\n                onChange={handleUpload}\r\n                onClick={onClick}\r\n                type='file'\r\n                name={name}\r\n                multiple\r\n                placeholder={placeholder}\r\n                accept={formatExtensions(extensions.split(','))}\r\n                {...props}\r\n              />\r\n            </div>\r\n          </div>\r\n          <div className='c-file-upload-label'>\r\n            {label && (\r\n              <label htmlFor={name}>\r\n                {label}\r\n                {required && ' *'}\r\n              </label>\r\n            )}\r\n          </div>\r\n        </div>\r\n\r\n        <div>\r\n          {errors.fileExistsError && (\r\n            <>\r\n              <span className='c-common-validation c-common-validation-danger'>\r\n                File already exists\r\n              </span>\r\n              <br />\r\n            </>\r\n          )}\r\n          {errors.validFileError && (\r\n            <>\r\n              <span className='c-common-validation c-common-validation-danger'>\r\n                {validationErrorMsg\r\n                  ? validationErrorMsg.replace('{0}', extensions)\r\n                  : 'Error while uploading the file'}\r\n              </span>\r\n              <br />\r\n            </>\r\n          )}\r\n          {errors.isMaxFileSizeError && (\r\n            <>\r\n              <span className='c-common-validation c-common-validation-danger'>\r\n                {sizeValidationMsg\r\n                  ? sizeValidationMsg.replace('{1}', maxSize.toString())\r\n                  : 'File size error'}\r\n              </span>\r\n              <br />\r\n            </>\r\n          )}\r\n        </div>\r\n        {files.length > 0 && (\r\n          <div className='c-common-validation c-upload-files'>\r\n            {files.map(({ name }, index) => {\r\n              const iconClass = loadFileTypeIcon(name);\r\n              return (\r\n                <Fragment key={index.toString()}>\r\n                  <label>\r\n                    <div className='c-upload-flexdir-left'>\r\n                      <span className='c-file-icon'>\r\n                        <i className={`${iconClass}`}></i>\r\n                      </span>\r\n                      <span className='c-upload-file-label'>{name}</span>\r\n                    </div>\r\n                    <div className='c-upload-flexdir-right'>\r\n                      <span className='c-icon-close'>\r\n                        <i\r\n                          className='icon-cancel-circle'\r\n                          onClick={() => {\r\n                            removeFile(index);\r\n                          }}\r\n                        ></i>\r\n                      </span>\r\n                    </div>\r\n                  </label>\r\n                  <hr />\r\n                </Fragment>\r\n              );\r\n            })}\r\n          </div>\r\n        )}\r\n      </div>\r\n    );\r\n  }\r\n);\r\n","import { Options, RegionSelectOption } from '@modules/EnquiryForm/EnquiryForm.types';\r\nimport React, { forwardRef } from 'react';\r\nimport './FormSelect.scss';\r\n\r\ntype FormSelectProps = {\r\n  label: string;\r\n  required: boolean;\r\n  selectText: string;\r\n  hasGroups?: boolean;\r\n  options: Options | RegionSelectOption[];\r\n};\r\n\r\nexport const FormSelect = forwardRef<HTMLSelectElement, FormSelectProps>(\r\n  ({ label, options, required, selectText, hasGroups = true, ...props }, ref) => {\r\n    return (\r\n      <div className='c-form-top'>\r\n        <label htmlFor='' className='c-select-field-label'>\r\n          {label}\r\n          {required ? ' *' : ''}\r\n        </label>\r\n        <select ref={ref} className='c-form-select' required={required} {...props}>\r\n          <option value='select'>{selectText}</option>\r\n          {hasGroups &&\r\n            options.map((group, index) => (\r\n              <optgroup label={group.GroupHeading} key={index}>\r\n                {group.Options.map((option, i) => (\r\n                  <option key={i} value={option.Value}>\r\n                    {option.Text}\r\n                  </option>\r\n                ))}\r\n              </optgroup>\r\n            ))}\r\n\r\n          {!hasGroups &&\r\n            options.map((option, index) => (\r\n              <option key={index} value={option.Value}>\r\n                {option.Text}\r\n              </option>\r\n            ))}\r\n        </select>\r\n      </div>\r\n    );\r\n  }\r\n);\r\n","import React, { useState, useEffect, ChangeEvent } from 'react';\r\nimport './TextBoxList.scss';\r\n\r\ninterface TextBoxListProps {\r\n  name: string;\r\n  placeholder: string;\r\n  addInputBtnText: string;\r\n  onBlur?: (e: ChangeEvent<HTMLInputElement>) => void;\r\n  onChange: (value: string[]) => void;\r\n}\r\n\r\nexport const TextBoxList = ({\r\n  name,\r\n  placeholder,\r\n  onChange,\r\n  onBlur,\r\n  addInputBtnText,\r\n}: TextBoxListProps) => {\r\n  const [inputs, setInputs] = useState<string[]>(['']);\r\n\r\n  const removeInput = (index: number) => {\r\n    const newInputs = [...inputs];\r\n    newInputs.splice(index, 1);\r\n    setInputs(newInputs);\r\n  };\r\n\r\n  const addInput = () => {\r\n    setInputs([...inputs, '']);\r\n  };\r\n\r\n  const onChangeInput = (e: React.ChangeEvent<HTMLInputElement>, index: number) => {\r\n    const { value } = e.target;\r\n    const newInputs = [...inputs];\r\n    newInputs[index] = value;\r\n    setInputs(newInputs);\r\n  };\r\n\r\n  useEffect(() => {\r\n    onChange(inputs);\r\n  }, [inputs]);\r\n\r\n  return (\r\n    <>\r\n      {inputs.map((value, index) => (\r\n        <div key={index} style={{ display: 'flex' }}>\r\n          <input\r\n            type='text'\r\n            className='c-common-input c-form-serial-input-val'\r\n            name={name}\r\n            placeholder={placeholder}\r\n            value={value}\r\n            onChange={(e) => {\r\n              onChangeInput(e, index);\r\n            }}\r\n            onBlur={onBlur}\r\n          />\r\n          {index !== 0 && (\r\n            <span style={{ margin: '10px', flexBasis: '2%' }}>\r\n              <i\r\n                className='icon-cancel-circle'\r\n                onClick={() => {\r\n                  removeInput(index);\r\n                }}\r\n              />\r\n            </span>\r\n          )}\r\n        </div>\r\n      ))}\r\n\r\n      {addInputBtnText && (\r\n        <span className='c-contact-us-field-label c-contact-link-btn-label' onClick={addInput}>\r\n          + {addInputBtnText}\r\n        </span>\r\n      )}\r\n    </>\r\n  );\r\n};\r\n","import { apiSlice } from '@services/apiSlice';\r\nimport { ContactUs as endpoints } from '@services/endpoints';\r\nimport { SerialLinkData, Enquiry } from './EnquiryForm.types';\r\n\r\nexport interface SubmitFormResponse {\r\n  success: boolean;\r\n  message: string;\r\n}\r\n\r\nconst enquiryApi = apiSlice.injectEndpoints({\r\n  endpoints: (build) => ({\r\n    fetchSerialLinkData: build.query<\r\n      SerialLinkData,\r\n      {\r\n        pageId?: string;\r\n      }\r\n    >({\r\n      query: (params) => ({\r\n        url: endpoints.fetchEnquirySerialLinkData,\r\n        params: {\r\n          language: window.lang,\r\n          pageId: params.pageId ?? window.pageId,\r\n        },\r\n      }),\r\n    }),\r\n    fetchEnquiryForm: build.query<\r\n      Enquiry,\r\n      {\r\n        pageId?: string;\r\n        enquiryType: string;\r\n        categoryId?: string;\r\n      }\r\n    >({\r\n      query: (params) => {\r\n        const searchParams = new URLSearchParams(window.location.search);\r\n        const hasProductData = !!history.state?.product;\r\n        return {\r\n          url: endpoints.fetchEnquiryForm,\r\n          params: {\r\n            language: window.lang,\r\n            pageId: params.pageId ?? window.pageId,\r\n            enquiryType: params.enquiryType,\r\n            countryId: window.countryId,\r\n            CategoryID: params.categoryId || localStorage.getItem('CategoryID') || null,\r\n            productLineId: hasProductData ? '' : searchParams.get('productLine') || '',\r\n            productModelId: hasProductData ? '' : searchParams.get('productModel') || '',\r\n            productLinePageId: hasProductData ? '' : searchParams.get('productLinePageId') || '',\r\n          },\r\n        };\r\n      },\r\n      transformResponse: (response: Enquiry) => {\r\n        const hasProductData = !!history.state?.product;\r\n        const productData = history.state?.product;\r\n\r\n        const productSection = hasProductData\r\n          ? [\r\n              {\r\n                SubHeading: response.Page.ProductSelectedTitle,\r\n                FormField: [\r\n                  {\r\n                    DataType: 'QuoteItem',\r\n                    Name: productData.name,\r\n                    ProductDescription: productData.description,\r\n                    ImageSrc: productData.imageSrc,\r\n                  },\r\n                ],\r\n              },\r\n            ]\r\n          : [];\r\n        return {\r\n          ...response,\r\n          FormData: {\r\n            ...response.FormData,\r\n            FormSections: [...productSection, ...response.FormData.FormSections],\r\n          },\r\n        };\r\n      },\r\n    }),\r\n    fetchEnquiryApplicationList: build.query<{ ApplicationJsonList: string }, number>({\r\n      query: (industryId) => ({\r\n        url: endpoints.fetchEnquiryApplicationList,\r\n        params: {\r\n          lang: window.lang,\r\n          ID: industryId,\r\n        },\r\n      }),\r\n    }),\r\n    submitEnquiryForm: build.mutation<SubmitFormResponse, FormData>({\r\n      query: (data) => ({\r\n        url: endpoints.submitEnquiryForm,\r\n        method: 'POST',\r\n        body: data,\r\n      }),\r\n    }),\r\n  }),\r\n  overrideExisting: false,\r\n});\r\n\r\nexport const {\r\n  useFetchSerialLinkDataQuery,\r\n  useLazyFetchEnquiryFormQuery,\r\n  useFetchEnquiryApplicationListQuery,\r\n  useSubmitEnquiryFormMutation,\r\n} = enquiryApi;\r\n","import React, { useState } from 'react';\r\nimport { useFetchSerialLinkDataQuery } from '@modules/EnquiryForm/EnquiryForm.service';\r\nimport './SerialLink.scss';\r\n\r\ninterface SerialLinkProps {\r\n  linkLabel: string;\r\n}\r\n\r\nexport const SerialLink = ({ linkLabel }: SerialLinkProps) => {\r\n  const [isModalOpen, setIsModalOpen] = useState(false);\r\n  const contactUsBlock = document.getElementById('ContactUsBlock');\r\n  const pageId = contactUsBlock?.dataset?.data\r\n    ? JSON.parse(contactUsBlock?.dataset?.data)?.pageId\r\n    : window.pageId;\r\n  const { data } = useFetchSerialLinkDataQuery({\r\n    pageId: pageId,\r\n  });\r\n  const serialLink = data ? JSON.parse(data.JsonMessage) : null;\r\n\r\n  const openModal = () => {\r\n    setIsModalOpen(true);\r\n  };\r\n\r\n  const closeModal = () => {\r\n    setIsModalOpen(false);\r\n  };\r\n\r\n  if (!linkLabel || !serialLink) {\r\n    return null;\r\n  }\r\n\r\n  return (\r\n    <>\r\n      <label className='c-form-serial-link' onClick={openModal}>\r\n        {linkLabel}\r\n      </label>\r\n      {serialLink && isModalOpen && (\r\n        <div className='c-form-modal'>\r\n          <div className='c-form-popup-container'>\r\n            <div className='c-form-popup-header'>\r\n              <p className='c-form-popup-title'>{serialLink.Title}</p>\r\n              <span className='icon-symbol-close c-form-popup-close' onClick={closeModal}></span>\r\n            </div>\r\n\r\n            <div className='c-form-popup-body'>\r\n              <div className='c-form-popup-body-left'>\r\n                <img\r\n                  src={serialLink.Image}\r\n                  alt={serialLink.ImageAltText}\r\n                  className='c-product-card'\r\n                ></img>\r\n              </div>\r\n\r\n              <div\r\n                className='c-form-popup-body-right'\r\n                dangerouslySetInnerHTML={{\r\n                  __html: serialLink.Description,\r\n                }}\r\n              />\r\n            </div>\r\n          </div>\r\n        </div>\r\n      )}\r\n    </>\r\n  );\r\n};\r\n","import React, { ChangeEvent, forwardRef, useState } from 'react';\r\nimport PhoneInput from 'react-phone-input-2';\r\nimport classNames from 'classnames';\r\nimport './PhoneNumber.scss';\r\n\r\ninterface PhoneNumberProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange'> {\r\n  label?: string;\r\n  name: string;\r\n  country?: string;\r\n  onChange?: (value: string, data?: unknown, e?: ChangeEvent<HTMLInputElement>) => void;\r\n  className?: string;\r\n}\r\n\r\nexport const PhoneNumber = forwardRef<HTMLInputElement, PhoneNumberProps>(\r\n  (\r\n    { label, name, country, required, className = '', value, placeholder, onChange, ...props },\r\n    ref\r\n  ) => {\r\n    const [formattedInput, setFormattedInput] = useState('');\r\n\r\n    const handleInputChange = (value: string) => {\r\n      setFormattedInput(value);\r\n      onChange && onChange(value);\r\n    };\r\n\r\n    const handleBackspaceKey = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n      if (e.key === 'Backspace') {\r\n        e.preventDefault(); // Prevent the default behavior of the backspace key\r\n        setFormattedInput((initialInput) => {\r\n          const formattedValue = initialInput.slice(0, -1);\r\n          onChange && onChange(formattedValue);\r\n          return formattedValue;\r\n        });\r\n      }\r\n    };\r\n\r\n    return (\r\n      <label className={classNames('c-input', 'c-phone-input', className)}>\r\n        {label && <span className='c-input-label'>{`${label} ${required ? '*' : ''}`}</span>}\r\n        <PhoneInput\r\n          value={formattedInput}\r\n          onChange={handleInputChange}\r\n          onKeyDown={handleBackspaceKey}\r\n          country={country || window.lang}\r\n          inputProps={{\r\n            name,           \r\n            placeholder,\r\n            ref,\r\n            className: 'c-input-field',\r\n            ...props,\r\n          }}\r\n        />\r\n      </label>\r\n    );\r\n  }\r\n);\r\n","const codes = {\r\n  '754': 'dz',\r\n  '755': 'ao',\r\n  '756': 'am',\r\n  '757': 'bj',\r\n  '758': 'bw',\r\n  '759': 'bf',\r\n  '760': 'bi',\r\n  '2025': 'cm',\r\n  '761': 'cv',\r\n  '762': 'cf',\r\n  '763': 'td',\r\n  '764': 'cg',\r\n  '765': 'cd',\r\n  '767': 'dj',\r\n  '768': 'eg',\r\n  '769': 'gq',\r\n  '770': 'er',\r\n  '771': 'et',\r\n  '772': 'ga',\r\n  '773': 'gm',\r\n  '774': 'gh',\r\n  '775': 'gw',\r\n  '2026': 'ci',\r\n  '777': 'ke',\r\n  '778': 'ls',\r\n  '779': 'lr',\r\n  '780': 'ly',\r\n  '781': 'mg',\r\n  '782': 'mw',\r\n  '783': 'ml',\r\n  '784': 'mr',\r\n  '785': 'mu',\r\n  '786': 'ma',\r\n  '787': 'mz',\r\n  '788': 'na',\r\n  '789': 'ne',\r\n  '790': 'ng',\r\n  '791': 're',\r\n  '792': 'rw',\r\n  '793': 'sn',\r\n  '794': 'sc',\r\n  '795': 'sl',\r\n  '796': 'so',\r\n  '797': 'za',\r\n  '2631': 'sd',\r\n  '2632': 'ss',\r\n  '798': 'sz',\r\n  '799': 'tz',\r\n  '800': 'tg',\r\n  '801': 'tn',\r\n  '802': 'ug',\r\n  '803': 'eh',\r\n  '804': 'zm',\r\n  '805': 'zw',\r\n  '807': 'af',\r\n  '808': 'bh',\r\n  '809': 'bd',\r\n  '810': 'bt',\r\n  '811': 'bn',\r\n  '812': 'kh',\r\n  '814': 'cn',\r\n  '815': 'tl',\r\n  '816': 'in',\r\n  '817': 'id',\r\n  '818': 'ir',\r\n  '819': 'iq',\r\n  '820': 'il',\r\n  '821': 'jp',\r\n  '1481': 'jo',\r\n  '822': 'kz',\r\n  '823': 'kr',\r\n  '824': 'kw',\r\n  '825': 'kg',\r\n  '826': 'la',\r\n  '827': 'lb',\r\n  '828': 'mo',\r\n  '829': 'my',\r\n  '830': 'mv',\r\n  '1999': 'me',\r\n  '831': 'mn',\r\n  '832': 'mm',\r\n  '833': 'np',\r\n  '834': 'om',\r\n  '835': 'pk',\r\n  '1934': 'ps',\r\n  '836': 'ph',\r\n  '837': 'qa',\r\n  '838': 'sa',\r\n  '839': 'sg',\r\n  '840': 'lk',\r\n  '841': 'sy',\r\n  '842': 'tw',\r\n  '843': 'tj',\r\n  '844': 'th',\r\n  '845': 'tm',\r\n  '846': 'ae',\r\n  '847': 'uz',\r\n  '848': 'vn',\r\n  '2538': 'vn',\r\n  '849': 'ye',\r\n  '2566': 'ag',\r\n  '2567': 'aw',\r\n  '2569': 'bb',\r\n  '2559': 'bz',\r\n  '2560': 'cr',\r\n  '2572': 'cu',\r\n  '2573': 'cw',\r\n  '2579': 'dm',\r\n  '2574': 'do',\r\n  '2590': 'bq',\r\n  '2561': 'sv',\r\n  '2575': 'gd',\r\n  '2576': 'gp',\r\n  '2562': 'gt',\r\n  '2578': 'ht',\r\n  '2563': 'hn',\r\n  '2581': 'mq',\r\n  '2582': 'ms',\r\n  '2564': 'ni',\r\n  '2565': 'pa',\r\n  '2584': 'kn',\r\n  '2583': 'lc',\r\n  '2577': 'mf',\r\n  '2585': 'pm',\r\n  '2586': 'vc',\r\n  '2587': 'sx',\r\n  '2588': 'tt',\r\n  '2589': 'tc',\r\n  '1882': 'al',\r\n  '851': 'at',\r\n  '852': 'az',\r\n  '853': 'by',\r\n  '854': 'be',\r\n  '855': 'ba',\r\n  '856': 'bg',\r\n  '857': 'hr',\r\n  '858': 'cy',\r\n  '859': 'cz',\r\n  '860': 'dk',\r\n  '861': 'ee',\r\n  '862': 'fi',\r\n  '863': 'fr',\r\n  '864': 'ge',\r\n  '865': 'de',\r\n  '866': 'gr',\r\n  '867': 'hu',\r\n  '868': 'is',\r\n  '2086': 'ie',\r\n  '869': 'it',\r\n  '870': 'xk',\r\n  '871': 'lv',\r\n  '872': 'lt',\r\n  '2076': 'lu',\r\n  '874': 'mt',\r\n  '875': 'md',\r\n  '876': 'mc',\r\n  '2767': 'me',\r\n  '877': 'nl',\r\n  '873': 'mk',\r\n  '878': 'no',\r\n  '879': 'pl',\r\n  '880': 'pt',\r\n  '881': 'ro',\r\n  '882': 'ru',\r\n  '883': 'rs',\r\n  '884': 'sk',\r\n  '885': 'si',\r\n  '886': 'es',\r\n  '887': 'se',\r\n  '888': 'ch',\r\n  '889': 'tr',\r\n  '890': 'ua',\r\n  '891': 'gb',\r\n  '893': 'bs',\r\n  '895': 'bm',\r\n  '896': 'ca',\r\n  '897': 'ky',\r\n  '908': 'jm',\r\n  '910': 'mx',\r\n  '2591': 'pr',\r\n  '915': 'us',\r\n  '917': 'ar',\r\n  '918': 'bo',\r\n  '919': 'br',\r\n  '920': 'cl',\r\n  '1480': 'co',\r\n  '2062': 'ec',\r\n  '921': 'gf',\r\n  '922': 'gy',\r\n  '923': 'py',\r\n  '924': 'pe',\r\n  '925': 'sr',\r\n  '926': 'uy',\r\n  '927': 've',\r\n  '929': 'au',\r\n  '930': 'pf',\r\n  '931': 'nr',\r\n  '932': 'nc',\r\n  '933': 'nz',\r\n  '934': 'pg',\r\n  '935': 'xx',\r\n};\r\n\r\nexport default codes;\r\n","import React, { ReactNode, useEffect } from 'react';\r\nimport { formFieldType } from '@helpers/consts';\r\nimport { RadioButton } from '@components/RadioButton';\r\nimport { TextArea } from '@components/TextArea';\r\nimport { Toggle } from './components/Toggle';\r\nimport { Input } from '@components/Input';\r\nimport {\r\n  Path,\r\n  UseFormRegister,\r\n  UseFormSetValue,\r\n  UseFormTrigger,\r\n  UseFormWatch,\r\n} from 'react-hook-form';\r\nimport { FormValues, FileFormField, FormField, Options } from './Form.types';\r\nimport { FileUpload } from '@components/FileUpload';\r\nimport { Checkbox } from '@components/Checkbox';\r\nimport { FormSelect } from './components/FormSelect';\r\nimport { TextBoxList } from './components/TextBoxList';\r\nimport { SerialLink } from './components/SerialLink';\r\nimport { useFetchEnquiryApplicationListQuery } from '@modules/EnquiryForm/EnquiryForm.service';\r\nimport { QuoteItem } from '@components/QuoteItem';\r\nimport { PhoneNumber, countryCodes } from '@components/PhoneNumber';\r\n\r\nconst useApplicationFieldState = ({\r\n  watchIndustriesSelector,\r\n  onFetchApplicationData,\r\n}: {\r\n  watchIndustriesSelector: string;\r\n  onFetchApplicationData: () => void;\r\n}) => {\r\n  const { data: applicationDataResponse } = useFetchEnquiryApplicationListQuery(\r\n    +watchIndustriesSelector,\r\n    { skip: !watchIndustriesSelector || watchIndustriesSelector === 'select' }\r\n  );\r\n  let applicationData = JSON.parse(applicationDataResponse?.ApplicationJsonList || '[]') as Options;\r\n\r\n  if (watchIndustriesSelector === 'select') {\r\n    applicationData = [] as Options;\r\n  }\r\n  useEffect(() => {\r\n    onFetchApplicationData();\r\n  }, [applicationDataResponse?.ApplicationJsonList]);\r\n\r\n  return applicationData;\r\n};\r\n\r\nexport function useFormLoader(\r\n  register: UseFormRegister<FormValues>,\r\n  watch: UseFormWatch<FormValues>,\r\n  setFormValue: UseFormSetValue<FormValues>,\r\n  trigger: UseFormTrigger<FormValues>,\r\n  hasToggleField: boolean,\r\n  madeFirstSubmit: boolean,\r\n  dropdownToDisable?: string\r\n): (formField: FormField | FileFormField, index: number) => ReactNode {\r\n  const watchToggle = watch('Toggle', false);\r\n  const watchCountry = watch('Country');\r\n  const selectedProductNames = watch('selectedProductNames');\r\n\r\n  const applicationData = useApplicationFieldState({\r\n    watchIndustriesSelector: watch('Industry'),\r\n    onFetchApplicationData: () => {\r\n      setFormValue('Application', 'select');\r\n    },\r\n  });\r\n\r\n  return (formField: FormField | FileFormField, index: number) => {\r\n    const dataType = formField.DataType?.toLowerCase() || '';\r\n    const name = formField.Name as Path<FormValues>;\r\n    const productIsRemoved = !selectedProductNames?.includes(formField.Name);\r\n\r\n    switch (dataType) {\r\n      case formFieldType.quoteitem: {\r\n        if (!selectedProductNames?.length || productIsRemoved) {\r\n          return null;\r\n        }\r\n        return (\r\n          <QuoteItem\r\n            itemImage={formField.ImageSrc}\r\n            itemName={formField.Name}\r\n            itemDescription={formField.ProductDescription}\r\n            buttonType='delete'\r\n            className='form-product has-border'\r\n            onButtonClick={() => {\r\n              setFormValue(\r\n                'selectedProductNames',\r\n                selectedProductNames.filter((name) => name !== formField.Name)\r\n              );\r\n            }}\r\n          />\r\n        );\r\n      }\r\n      case formFieldType.textbox:\r\n      case formFieldType.email:\r\n        return (\r\n          <div key={index} className='c-contact-us-field-label'>\r\n            <Input\r\n              label={formField.Label}\r\n              type={formFieldType.textbox ? 'text' : 'email'}\r\n              className='c-contact-us-field-label'\r\n              placeholder={formField.Placeholder}\r\n              required={formField.IsMandatory}\r\n              {...register(name, {\r\n                required: { value: formField.IsMandatory, message: formField.MandatoryMessage },\r\n                pattern: {\r\n                  value: new RegExp(formField.ValidationRegex?.replace('\\\\\\\\', '\\\\'), 'gu'),\r\n                  message: formField.ValidationMessage,\r\n                },\r\n              })}\r\n            />\r\n          </div>\r\n        );\r\n      case formFieldType.phone:\r\n        return (\r\n          <div key={index} className='c-contact-us-field-label'>\r\n            <PhoneNumber\r\n              name={name}\r\n              label={formField.Label}\r\n              className='c-contact-us-field-label'\r\n              placeholder={formField.Placeholder}\r\n              country={countryCodes[watchCountry.toString()]}\r\n              required={formField.IsMandatory}\r\n              {...register(name, {\r\n                required: { value: formField.IsMandatory, message: formField.MandatoryMessage },\r\n              })}\r\n              onChange={(value) => {\r\n                setFormValue(name, value);\r\n              }}\r\n            />\r\n          </div>\r\n        );\r\n      case formFieldType.textarea:\r\n        return (\r\n          <div key={index} className='c-contact-us-field-label'>\r\n            <TextArea\r\n              label={formField.Label}\r\n              className='c-contact-us-field-label c-contact-us-textarea'\r\n              placeholder={formField.Placeholder}\r\n              required={formField.IsMandatory}\r\n              {...register(name, {\r\n                required: { value: formField.IsMandatory, message: formField.MandatoryMessage },\r\n                pattern: {\r\n                  value: new RegExp(formField.ValidationRegex?.replace('\\\\\\\\', '\\\\'), 'gu'),\r\n                  message: formField.ValidationMessage,\r\n                },\r\n              })}\r\n            />\r\n          </div>\r\n        );\r\n\r\n      case formFieldType.radio:\r\n        const radioName = name || 'ServiceType';\r\n\r\n        return (\r\n          <div key={index} className='c-contact-radio-main'>\r\n            {formField.Options.map((opt, index) => (\r\n              <div className='c-contact-radio' key={index}>\r\n                <RadioButton\r\n                  title={opt.Text}\r\n                  id={opt.Value}\r\n                  {...register(radioName, {\r\n                    required: { value: formField.IsMandatory, message: formField.MandatoryMessage },\r\n                  })}\r\n                  value={opt.Text}\r\n                />\r\n              </div>\r\n            ))}\r\n          </div>\r\n        );\r\n      case formFieldType.toggle: {\r\n        const sparePartText = formField.Options.find((item) => item.Value === 'Spareparts').Text;\r\n        const newQuoteText = formField.Options.find((item) => item.Value === 'Newquote').Text;\r\n\r\n        return (\r\n          <Toggle\r\n            id='service_type'\r\n            label={formField.Label}\r\n            onText={sparePartText}\r\n            offText={newQuoteText}\r\n            {...register(name)}\r\n          />\r\n        );\r\n      }\r\n      case formFieldType.textboxlist: {\r\n        if (hasToggleField && !watchToggle) {\r\n          return null;\r\n        }\r\n\r\n        register(name, {\r\n          validate: (value) => {\r\n            if (!formField.IsMandatory) {\r\n              return true;\r\n            }\r\n\r\n            const val = value as string[];\r\n            // if array of serial numbers is empty, return error message\r\n            return !val.join('') ? formField.MandatoryMessage : true;\r\n          },\r\n        });\r\n\r\n        const onBlur = () => {\r\n          // trigger validation on blur if form was submitted at least once\r\n          if (madeFirstSubmit) {\r\n            trigger(name);\r\n          }\r\n        };\r\n\r\n        return (\r\n          <div className='c-contact-us-serial'>\r\n            <label className='c-contact-us-field-label'>{formField.Label}</label>\r\n            <br />\r\n            <SerialLink linkLabel={formField.LinkLabel} />\r\n            <TextBoxList\r\n              name={name}\r\n              placeholder={formField.Placeholder}\r\n              addInputBtnText={formField.LinkButtonLabel}\r\n              onChange={(value) => {\r\n                setFormValue(name, value);\r\n              }}\r\n              onBlur={onBlur}\r\n            />\r\n          </div>\r\n        );\r\n      }\r\n      case formFieldType.file:\r\n        const field = formField as FileFormField;\r\n        register(name);\r\n        return (\r\n          <FileUpload\r\n            name={name}\r\n            key={index}\r\n            label={field.Label}\r\n            required={field.IsMandatory}\r\n            extensions={field.FileExtensions || 'jpg,jpeg,png,xlsx,pdf'}\r\n            btnLabel={field.FileUploadButtonLabel}\r\n            maxSize={field.FileSize}\r\n            validationErrorMsg={field.ValidationMessage}\r\n            sizeValidationMsg={field.FileSizeValidationMessage}\r\n            onFilesUpdate={(files) => {\r\n              setFormValue(name, files);\r\n            }}\r\n          />\r\n        );\r\n      case formFieldType.checkbox:\r\n        return (\r\n          <div key={index} className='c-form-checkbox'>\r\n            <Checkbox\r\n              label=''\r\n              id={name}\r\n              {...register(name, {\r\n                validate: (value) => {\r\n                  if (formField.IsMandatory && !value) {\r\n                    return formField.MandatoryMessage;\r\n                  }\r\n                  return true;\r\n                },\r\n                onChange: () => {\r\n                  if (name === 'GDPR') {\r\n                    trigger(name);\r\n                  }\r\n                },\r\n              })}\r\n            />\r\n            <div\r\n              className='c-form-checkbox-label'\r\n              dangerouslySetInnerHTML={{ __html: formField.Label }}\r\n            />\r\n          </div>\r\n        );\r\n      case formFieldType.regionselection:\r\n      case formFieldType.industryselection:\r\n      case formFieldType.productselection: {\r\n        const options =\r\n          formField.IndustrySelectOptions ||\r\n          formField.RegionSelectOptions ||\r\n          formField.ProductSelectOptions;\r\n\r\n        return (\r\n          <FormSelect\r\n            hasGroups\r\n            key={index}\r\n            label={formField.Label}\r\n            selectText={formField.SelectLabel}\r\n            options={options}\r\n            required={formField.IsMandatory}\r\n            disabled={!options.length || dropdownToDisable === formField.DataType}\r\n            {...register(name, {\r\n              validate: (value) => {\r\n                const isValid = formField.IsMandatory ? value !== 'select' : true;\r\n                return isValid || formField.MandatoryMessage;\r\n              },\r\n            })}\r\n          />\r\n        );\r\n      }\r\n      case formFieldType.applicationselection:\r\n        if (!applicationData.length) {\r\n          return null;\r\n        }\r\n        return (\r\n          <FormSelect\r\n            key={index}\r\n            label={formField.Label}\r\n            selectText={formField.SelectLabel}\r\n            hasGroups={false}\r\n            options={applicationData}\r\n            required={formField.IsMandatory}\r\n            {...register(name, {\r\n              validate: (value) => {\r\n                const isValid = formField.IsMandatory ? value !== 'select' : true;\r\n                return isValid || formField.MandatoryMessage;\r\n              },\r\n            })}\r\n          />\r\n        );\r\n    }\r\n  };\r\n}\r\n","import { formFieldType } from '@helpers/consts';\r\nimport { generateTransactionId } from '@helpers/generateTransactionId';\r\nimport {\r\n  EnquiryFormData,\r\n  Options,\r\n  RegionSelectOption,\r\n} from '@modules/EnquiryForm/EnquiryForm.types';\r\nimport { EnquiryForm } from './EnquiryTypeForm';\r\nimport { interpolateString } from '@helpers/stringHelpers';\r\n\r\nconst getAllFields = (formData: EnquiryFormData) => {\r\n  return formData.FormSections.flatMap((section) => section.FormField);\r\n};\r\n\r\nexport const getDefaultSelected = (\r\n  options: RegionSelectOption[],\r\n  isApplicationSelection: boolean\r\n) => {\r\n  if (isApplicationSelection) return 'select';\r\n\r\n  // finds the first selected option\r\n  const allGroups = options.reduce((acc, curr) => [...acc, ...curr.Options], [] as Options);\r\n  const selected = allGroups.find((option) => option.Selected);\r\n\r\n  return selected ? selected.Value : 'select';\r\n};\r\n\r\nexport const getFormDefaultValues = (formData: EnquiryFormData) => {\r\n  const defaultValues = {} as EnquiryForm;\r\n  const allFields = getAllFields(formData);\r\n\r\n  formData.FormSections.forEach((section) => {\r\n    section.FormField.forEach((field) => {\r\n      const dataType = field.DataType?.toLowerCase() || '';\r\n      const name = field.Name;\r\n      switch (dataType) {\r\n        case formFieldType.quoteitem: {\r\n          const namesArr = defaultValues.selectedProductNames\r\n            ? [...defaultValues.selectedProductNames]\r\n            : [];\r\n          defaultValues.selectedProductNames = [...namesArr, name];\r\n          break;\r\n        }\r\n        case formFieldType.regionselection:\r\n        case formFieldType.industryselection:\r\n        case formFieldType.productselection:\r\n        case formFieldType.applicationselection:\r\n          const isApplicationSelection = dataType === formFieldType.applicationselection;\r\n          const options =\r\n            field.IndustrySelectOptions || field.RegionSelectOptions || field.ProductSelectOptions;\r\n          defaultValues[name] = getDefaultSelected(options, isApplicationSelection);\r\n          break;\r\n        case formFieldType.toggle:\r\n          // if serial number is required, toggling 'spare parts' state by default\r\n          const serialNrField = allFields.find((f) => f.Name === 'SerialNr');\r\n\r\n          if (serialNrField && serialNrField.IsMandatory) {\r\n            defaultValues[name] = true;\r\n          }\r\n          break;\r\n        default:\r\n          defaultValues[name] = undefined;\r\n      }\r\n    });\r\n  });\r\n\r\n  return defaultValues;\r\n};\r\n\r\nexport const createFormData = (\r\n  type: string,\r\n  data: EnquiryForm,\r\n  recaptchaToken: string,\r\n  parentPage: {\r\n    Id: string;\r\n    Url: string;\r\n  },\r\n  i18n: Record<string, string>,\r\n  ParentPageID\r\n) => {\r\n  const formDataPayload = new FormData();\r\n  const { selectedProductNames, ...formData } = data;\r\n  const selectedProductsString = data.selectedProductNames?.map((name) =>\r\n    interpolateString(i18n.ProductSelectedMessage, name)\r\n  );\r\n\r\n  const formValues = {\r\n    ...formData,\r\n\r\n    recaptcha: recaptchaToken,\r\n    Comments: (selectedProductsString ? selectedProductsString + ' ' : '') + formData.Comments,\r\n    QuoteType: type,\r\n    ContactUs: type,\r\n    PageUrl: parentPage.Url,\r\n    PageId: window.pageId,\r\n    ParentPageId: parentPage.Id || ParentPageID,\r\n    FormUrl: window.location.href,\r\n    Lang: window.lang,\r\n    transactionId: generateTransactionId(true),\r\n  };\r\n\r\n  Object.entries(formValues).forEach(([key, value]) => {\r\n    switch (key) {\r\n      case 'ImageUpload':\r\n        const files = value as File[];\r\n\r\n        files.forEach((file) => {\r\n          formDataPayload.append('ImageUpload', file);\r\n          formDataPayload.append('EmailAttachment', file);\r\n        });\r\n        break;\r\n      case 'SerialNr':\r\n        const serialNumbers = (value as string[]) || [];\r\n        formDataPayload.append(key, serialNumbers.filter((value) => !!value).join(','));\r\n        break;\r\n      case 'Application':\r\n        if (value === 'select') {\r\n          formDataPayload.append(key, '');\r\n        } else {\r\n          formDataPayload.append(key, value?.toString() || '');\r\n        }\r\n        break;\r\n      default:\r\n        formDataPayload.append(key, value?.toString() || '');\r\n    }\r\n  });\r\n\r\n  return { formDataPayload, formValues };\r\n};\r\n","import React, { BaseSyntheticEvent, useMemo, useState } from 'react';\r\nimport { FieldErrors, SubmitHandler, useForm } from 'react-hook-form';\r\nimport { Form } from '@components/Form';\r\nimport { useFormLoader } from '@components/Form/Form.hooks';\r\nimport { EnquiryFormData } from '@modules/EnquiryForm/EnquiryForm.types';\r\nimport {\r\n  SubmitFormResponse,\r\n  useSubmitEnquiryFormMutation,\r\n} from '@modules/EnquiryForm/EnquiryForm.service';\r\nimport { useOnSubmitError, useParentPageState } from './EnquiryTypeForm.hooks';\r\nimport { createFormData, getFormDefaultValues } from './EnquiryTypeForm.helpers';\r\nimport './EnquiryTypeForm.scss';\r\n\r\ninterface EnquiryTypeFormProps {\r\n  formData: EnquiryFormData;\r\n  type: string;\r\n  dropdownToDisable?: string;\r\n  pageId?: string;\r\n  parentPageID: string;\r\n  i18n: Record<string, string>;\r\n  onFormSubmit: (data: SubmitFormResponse, formValues: EnquiryForm, e: BaseSyntheticEvent) => void;\r\n}\r\n\r\nexport type EnquiryForm = Partial<{\r\n  Comments: string;\r\n  ImageUpload: File[];\r\n  recaptcha: string;\r\n  Name: string;\r\n  Email: string;\r\n  Phone: string;\r\n  Company: string;\r\n  Country: string;\r\n  City: string;\r\n  Address: string;\r\n  PostalCode: string;\r\n  SerialNr: string[];\r\n  Industry: string;\r\n  Application: string;\r\n  Product: string;\r\n  Region: string;\r\n  ServiceType: string;\r\n  Toggle: boolean;\r\n  GDPR: boolean;\r\n  selectedProductNames: string[];\r\n}>;\r\n\r\nexport const EnquiryTypeForm = ({\r\n  formData,\r\n  i18n,\r\n  onFormSubmit,\r\n  dropdownToDisable,\r\n  type,\r\n  pageId,\r\n  parentPageID,\r\n}: EnquiryTypeFormProps) => {\r\n  const [formSubmitError, setFormSubmitError] = useOnSubmitError();\r\n  const [doFormSubmit] = useSubmitEnquiryFormMutation();\r\n  const [firstSuccess, setFirstSuccess] = useState(false);\r\n  const defaultValues = getFormDefaultValues(formData);\r\n  const formFields = Object.keys(defaultValues);\r\n\r\n  const throughModel =\r\n    formData.FormSections[0].FormField[0].DataType === 'QuoteItem' ? 'through-modal' : '';\r\n\r\n  const {\r\n    register,\r\n    handleSubmit,\r\n    setValue,\r\n    watch,\r\n    trigger,\r\n    formState: { errors, isSubmitting, isSubmitted },\r\n  } = useForm({\r\n    reValidateMode: 'onBlur',\r\n    defaultValues,\r\n    shouldFocusError: false,\r\n  });\r\n  const gdpr = watch('GDPR');\r\n  const hasToggleField = useMemo(\r\n    () =>\r\n      formData?.FormSections?.some((section) =>\r\n        section.FormField.find((field) => field.DataType === 'Toggle')\r\n      ),\r\n    [formData]\r\n  );\r\n\r\n  const { parentPageId, parentPageUrl } = useParentPageState();\r\n  //To render the form field elements based on the type - Dynamic elements\r\n  const loadFieldElements = useFormLoader(\r\n    register,\r\n    watch,\r\n    setValue,\r\n    trigger,\r\n    hasToggleField,\r\n    isSubmitted === true,\r\n    dropdownToDisable\r\n  );\r\n\r\n  const focusOnFirstError = () => {\r\n    const firstFieldWithError = formFields.find((field) => errors[field]);\r\n    const firstFieldWithErrorElement: HTMLElement = document.querySelector(\r\n      `[name=${firstFieldWithError}]`\r\n    );\r\n\r\n    firstFieldWithErrorElement?.scrollIntoView({\r\n      behavior: 'smooth',\r\n      block: 'center',\r\n    });\r\n    firstFieldWithErrorElement?.focus();\r\n  };\r\n\r\n  const onSubmit: SubmitHandler<EnquiryForm> = async (data, event) => {\r\n    event.stopPropagation();\r\n    const recaptchaToken = await window.onLoadContact();\r\n\r\n    const { formDataPayload, formValues } = createFormData(\r\n      type,\r\n      data,\r\n      recaptchaToken,\r\n      {\r\n        Id: parentPageId,\r\n        Url: parentPageUrl,\r\n      },\r\n      i18n,\r\n      parentPageID\r\n    );\r\n\r\n    if (pageId) {\r\n      formDataPayload.delete('PageId');\r\n      formDataPayload.append('PageId', pageId);\r\n    }\r\n\r\n    return doFormSubmit(formDataPayload)\r\n      .unwrap()\r\n      .then((result) => {\r\n        if (!(result && result.success)) {\r\n          setFormSubmitError(result?.message || true);\r\n        } else {\r\n          setFirstSuccess(true); //To disable send button after 1st successful api request\r\n          onFormSubmit(result, formValues, event);\r\n        }\r\n      })\r\n      .catch((err) => {\r\n        console.log(err);\r\n      });\r\n  };\r\n\r\n  const onFormValidationError = (errors: FieldErrors<EnquiryForm>) => {\r\n    focusOnFirstError();\r\n\r\n    if (hasToggleField && errors?.SerialNr) {\r\n      setValue('Toggle', true, { shouldValidate: false });\r\n    }\r\n  };\r\n  \r\n  return (\r\n    <div className={`c-contact-enquiry-right ${throughModel}`}>\r\n      <Form\r\n        formData={formData}\r\n        sendBtnLabel={i18n.SendButtonLabel}\r\n        isSubmitDisabled={gdpr === false || firstSuccess}\r\n        fieldLoader={loadFieldElements}\r\n        onSubmit={handleSubmit(onSubmit, onFormValidationError)}\r\n        errors={errors}\r\n        formError={formSubmitError}\r\n        isSubmitting={isSubmitting}\r\n      />\r\n    </div>\r\n  );\r\n};\r\n","import { useEffect, useState } from 'react';\r\n\r\nexport const useParentPageState = () => {\r\n  const [parentPageId, setParentPageID] = useState<string>(null);\r\n  const [parentPageUrl, setParentPageUrl] = useState<string>(null);\r\n\r\n  useEffect(() => {\r\n    // QuoteOriginPageId is set in the parent page of this form. When enquiry type form is rendered in multiple tabs at the same time,\r\n    // it is required to maintian state individual to each tab/component. The state is maintianed in react component and also in session\r\n    // storage in case the page reloads/refreshes.\r\n    const parentId = localStorage.getItem('quoteOriginPageID') || null;\r\n    const sessionParentId = sessionStorage.getItem('quoteOriginPageID') || null;\r\n    const parentUrl = localStorage.getItem('quoteOriginPageUrl') || null;\r\n    const sessionParentUrl = sessionStorage.getItem('quoteOriginPageUrl') || null;\r\n    const isReloadEvent =\r\n      (window.performance.getEntriesByType('navigation')[0] as PerformanceNavigationTiming)\r\n        ?.type === 'reload';\r\n\r\n    // update parentId from local storage if state does not have parentPageId already\r\n    if (parentId && !parentPageId) {\r\n      setParentPageID(parentId);\r\n      sessionStorage.setItem('quoteOriginPageID', parentId);\r\n      localStorage.removeItem('quoteOriginPageID');\r\n    } else if (sessionParentId && !parentId) {\r\n      if (isReloadEvent) {\r\n        // use the session storage data only in case of page reload event.\r\n        setParentPageID(sessionParentId);\r\n      } else {\r\n        // clear the session storage for other types of navigation other than reload\r\n        sessionStorage.removeItem('quoteOriginPageID');\r\n      }\r\n    }\r\n\r\n    if (parentUrl && !parentPageUrl) {\r\n      setParentPageUrl(parentUrl);\r\n      sessionStorage.setItem('quoteOriginPageUrl', parentUrl);\r\n      localStorage.removeItem('quoteOriginPageUrl');\r\n    } else if (sessionParentUrl && !parentUrl) {\r\n      // use the session storage data only in case of page reload event.\r\n      if (isReloadEvent) {\r\n        setParentPageUrl(sessionParentUrl);\r\n      } else {\r\n        // clear the session storage for other types of navigation other than reload\r\n        sessionStorage.removeItem('quoteOriginPageUrl');\r\n      }\r\n    } else {\r\n      setParentPageUrl(window.location.href);\r\n    }\r\n\r\n    const handlePopState = () => {\r\n      window.location.reload();\r\n    };\r\n\r\n    window.addEventListener('popstate', handlePopState);\r\n\r\n    return () => {\r\n      window.removeEventListener('popstate', handlePopState);\r\n    };\r\n  }, []);\r\n\r\n  return { parentPageId, parentPageUrl };\r\n};\r\n\r\nexport const useOnSubmitError = () => {\r\n  const [formSubmitError, setFormSubmitError] = useState<string | boolean>(false);\r\n\r\n  useEffect(() => {\r\n    const timeout = setTimeout(() => {\r\n      setFormSubmitError(false);\r\n    }, 2000);\r\n\r\n    return () => {\r\n      clearTimeout(timeout);\r\n    };\r\n  }, [formSubmitError]);\r\n\r\n  return [formSubmitError, setFormSubmitError] as const;\r\n};\r\n","import dataLayer from '@helpers/dataLayer';\r\nimport { BaseSyntheticEvent } from 'react';\r\nimport { EnquiryForm } from './components/EnquiryTypeForm';\r\n\r\nconst getSelectContents = (event: BaseSyntheticEvent) => {\r\n  const selectedTexts: Record<string, string> = {};\r\n\r\n  Array.from<HTMLSelectElement>(event.target.elements)\r\n    .filter((el) => el.tagName === 'SELECT')\r\n    .forEach((el) => {\r\n      const selectedItem = el.options[el.selectedIndex];\r\n      selectedTexts[el.name] = selectedItem.text;\r\n    });\r\n\r\n  return selectedTexts;\r\n};\r\n\r\nexport const doDataLayerPush = (\r\n  formValues: EnquiryForm & { transactionId: string },\r\n  pageTitle: string,\r\n  event: BaseSyntheticEvent\r\n) => {\r\n  const selectedContents = getSelectContents(event);\r\n\r\n  dataLayer.push('generate_lead', {\r\n    form_enquiry: window.pageId,\r\n    form_enquiryname: pageTitle.length ? pageTitle : undefined,\r\n    form_company: formValues.Company || '',\r\n    form_country: selectedContents.Country,\r\n    form_industry: selectedContents.Industry,\r\n    form_product: selectedContents.ProductCategory,\r\n    form_spareparts: formValues.Toggle,\r\n    form_servicetype: formValues.ServiceType?.length ? formValues.ServiceType : undefined,\r\n    form_serial_number: formValues.SerialNr?.length ? formValues.SerialNr.toString() : undefined,\r\n    form_application: selectedContents.Application,\r\n    transaction_id: formValues.transactionId,\r\n  });\r\n};\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { EnquiryTypeForm } from '../../modules/EnquiryForm/components/EnquiryTypeForm';\r\nimport { doDataLayerPush } from './EnquiryForm.helpers';\r\nimport { EnquiryFormProps } from './EnquiryForm.types';\r\nimport './EnquiryForm.scss';\r\n\r\nexport function EnquiryForm({\r\n  type,\r\n  formData,\r\n  pageId,\r\n  parentPageID,\r\n  dropdownToDisable,\r\n  isContactUsBlock,\r\n  onSubmitSuccess = () => { },\r\n  onBackClick = () => { },\r\n}: EnquiryFormProps) {\r\n  const successMsgRef = useRef(null);\r\n  const [successMsg, setSuccessMsg] = useState('');\r\n\r\n  const onFormSubmit = (data, formValues, e) => {\r\n    if (data.success) {\r\n      setSuccessMsg(data.message);\r\n      doDataLayerPush(formValues, formData.Page.Title, e);\r\n      onSubmitSuccess();\r\n    }\r\n  };\r\n\r\n  useEffect(() => {\r\n    if (successMsg && successMsgRef.current) {\r\n      successMsgRef.current.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n    }\r\n  }, [successMsg]);\r\n\r\n  // Clearing the state when page is refreshed\r\n  window.addEventListener('beforeunload', function (event) {\r\n    if (window.location.reload) {\r\n      window.history.replaceState(null, '', window.location.href);\r\n    }\r\n  });\r\n\r\n  if (successMsg) {\r\n    return (\r\n      <>\r\n        {!isContactUsBlock && (\r\n          <i\r\n            className='icon-arrow-left'\r\n            onClick={() => {\r\n              setSuccessMsg('');\r\n              onBackClick();\r\n            }}\r\n          />\r\n        )}\r\n        <div ref={successMsgRef} id='successMsg' className='enquiry-section-left'>\r\n          <div\r\n            dangerouslySetInnerHTML={{\r\n              __html: successMsg,\r\n            }}\r\n          />\r\n        </div>\r\n      </>\r\n    );\r\n  }\r\n\r\n  return (\r\n    <div id='enqFormPage'>\r\n      <h2 className='header-sec'>{formData?.Page?.Title || ''}</h2>\r\n      <div className='enquiry-section'>\r\n        {!isContactUsBlock && (\r\n          <div className='enquiry-section-left'>\r\n            <p>{formData?.Page?.FormDescription || ''}</p>\r\n          </div>\r\n        )}\r\n        <div className='enquiry-section-right'>\r\n          {formData && (\r\n            <EnquiryTypeForm\r\n              formData={formData.FormData}\r\n              type={type}\r\n              i18n={formData.Page}\r\n              pageId={pageId}\r\n              parentPageID={parentPageID}\r\n              dropdownToDisable={dropdownToDisable}\r\n              onFormSubmit={onFormSubmit}\r\n            />\r\n          )}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n","export * from './EnquiryForm';\r\nexport * from './EnquiryForm.service';\r\nimport { ContactUsBlock } from './ContactUsBlock';\r\nexport default ContactUsBlock;\r\n","import React, { useEffect } from 'react';\r\nimport { useLazyFetchEnquiryFormQuery } from './EnquiryForm.service';\r\nimport { EnquiryForm } from './EnquiryForm';\r\n\r\nexport const ContactUsBlock = () => {\r\n  const contactUsBlock = document.getElementById('ContactUsBlock');\r\n  const data = JSON.parse(contactUsBlock?.dataset.data);\r\n  const enqType = data.enquiryType;\r\n  const pageId = data.pageId;\r\n  const categoryId = data.CategoryId;\r\n  const dropdownToDisable = data.dropdownToDisable;\r\n  const isContactUsBlock = data.isContactUsBlock;\r\n  const parentPageID = data.currentPageId;\r\n\r\n  const [fetchEnquiryForm, { data: formData }] = useLazyFetchEnquiryFormQuery();\r\n\r\n  useEffect(() => {\r\n    fetchEnquiryForm({ enquiryType: enqType, pageId, categoryId });\r\n  }, []);\r\n\r\n  return (\r\n    <EnquiryForm\r\n      dropdownToDisable={dropdownToDisable}\r\n      formData={formData}\r\n      type={enqType}\r\n      pageId={pageId}\r\n      isContactUsBlock={isContactUsBlock}\r\n      parentPageID={parentPageID}\r\n    />\r\n  );\r\n};\r\n","export const Breadcrumb = {\r\n  fetchBreadcrumb: '/webapi/Breadcrumb/Get',\r\n};\r\n\r\nexport const Footer = {\r\n  fetchFooter: '/api/footer',\r\n};\r\n\r\nexport const CountrySelector = {\r\n  fetchCountrySelectList: '/webapi/CountrySelector/Get',\r\n};\r\n\r\nexport const RelatedTabs = {\r\n  fetchRelatedTabs: '/webapi/RelatedTabs/Get',\r\n  relatedTabs: '/webapi/RelatedTabs/GetTabs', // NOT IN USE\r\n};\r\n\r\nexport const Search = {\r\n  doSearch: '/webapi/SearchApi/SearchFor',\r\n  doSearchAutocomplete: '/webapi/SearchApi/GetAutocomplete',\r\n};\r\n\r\nexport const NewsAndStories = {\r\n  fetchNewsAndStoriesData: '/webapi/NewsListingApi/GetNewsListItems',\r\n  fetchNews: '/webapi/NewsListingApi/GetNewsList',\r\n  fetchStories: '/webapi/StoriesList/Get',\r\n};\r\n\r\nexport const Webinars = {\r\n  fetchWebinarBanner: '/webapi/WebinarLandingPage/Get',\r\n  fetchWebinarList: '/webapi/WebinarPage/Get',\r\n};\r\n\r\nexport const Header = {\r\n  fetchHeader: '/webapi/Header/Get', //NOT IN USE\r\n  fetchSubNavigation: '/webapi/SubNavigation/Get',\r\n  fetchMegaMenuNavigation: '/api/mainmenu',\r\n  fetchGeolocation: '/api/Geolocation',\r\n  fetchTopMenu: '/api/TopNavigation/',\r\n  fetchMegaMenuColumn: '/webapi/menuitems/columns',\r\n};\r\n\r\nexport const Stories = {\r\n  fetchStories: '/webapi/StoriesList/Get',\r\n};\r\n\r\nexport const News = {\r\n  fetchNews: '/webapi/NewsListPage/Get',\r\n};\r\n\r\nexport const Vacancies = {\r\n  fetchVacancies: '/webapi/Vacancy/Get', // NOT IN USE\r\n};\r\n\r\nexport const Webshop = {\r\n  fetchWebshop: '/webapi/WebShop/Get', // NOT IN USE\r\n};\r\n\r\nexport const ContactUs = {\r\n  fetchContactUsForm: '/webapi/ContactUsForm/GetForm',\r\n  fetchFindOfficeData: '/webapi/CountriesCategories/Get',\r\n  fetchEnquiryForm: '/webapi/contactus/getenquiryform',\r\n  fetchEnquirySerialLinkData: '/webapi/contactus/GetModalPopUp',\r\n  submitEnquiryForm: '/Quote/ProcessForm',\r\n  fetchEnquiryApplicationList: '/webapi/contactus/GetIndustryApplication',\r\n};\r\n\r\nexport const InvestorRelations = {\r\n  fetchPressReleaseFilterData: '/api/v1/ir/pressrelease',\r\n  fetchInvestorRelationsNews: '/api/v1/ir/news',\r\n  fetchInvestorRelationsPage: '/api/v1/ir/page2',\r\n  fetchInvestorRelationsMenu: '/api/v1/ir/menu2',\r\n  makeSubscription: '//publish.ne.cision.com/Subscription/SubscribeWithCaptcha',\r\n};\r\n\r\nexport const CoolCalc = {\r\n  getCoolCalc: '/webapi/CoolCalc/Get', // NOT IN USE\r\n  shareCoolCalc: '/webapi/CoolCalc/Save',\r\n};\r\n\r\nexport const Hexpert = {\r\n  fetchHexpertPage: '/api/v1/hex/page',\r\n  getAntiForgeryToken: '/api/v1/hex/GetAntiForgery',\r\n  submitHexpertForm: '/EPiServer.Forms/DataSubmit/Submit',\r\n  createHexpertPdf: '/api/v1/hex/CreatePdf',\r\n  getIsMatchingProducts: '/api/v1/hex/IsMatchingProduct',\r\n  getHexpertResult: '/api/v1/hex/GetResult',\r\n  mailResult: '/api/v1/hex/SendMail',\r\n};\r\n\r\nexport const SafetyDatasheet = {\r\n  fetchSafetyDatasheet: '/webapi/SafetyDataSheet/GetSafetyDataSheetResult',\r\n};\r\n"],"names":["Profile","xmlns","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","cx","cy","r","d","IconContainer","icon","className","Facebook","Twitter","x","y","ExternalLink","id","Arrow","rotate","style","transformBox","transformOrigin","transform","Cross","Delete","EmailSvg","PhoneSvg","fillRule","clipRule","Button","text","onClick","href","size","disabled","color","border","children","type","props","tag","createElement","target","Checkbox","forwardRef","label","value","name","onChange","onBlur","checked","required","ref","defaultChecked","Input","placeholder","defaultValue","QuoteItem","itemImage","itemName","itemDescription","buttonType","onSelect","onButtonClick","loading","src","alt","RadioButton","renderButtonComponent","title","formFieldType","quoteitem","textbox","textboxlist","textarea","email","phone","file","checkbox","radio","toggle","regionselection","industryselection","productselection","applicationselection","optiongroup","langJson","code","productShopUrl","generateTransactionId","useCurrentTime","formId","transctionElement","document","getElementById","Id","timestamp","Date","getTime","window","localStorage","getItem","setItem","replace","toString","getComputerName","str","toLowerCase","truncateString","limit","truncated","substring","interpolateString","args","interpolatedString","forEach","arg","index","Form","formData","sendBtnLabel","isSubmitDisabled","fieldLoader","onSubmit","errors","formError","isSubmitting","encType","method","e","FormSections","map","SubHeading","FormField","key","formField","Name","Field","message","dangerouslySetInnerHTML","__html","TextArea","Toggle","onText","offText","htmlFor","getFileExtension","fileName","split","pop","formatExtensions","extensions","ext","join","isFileExists","files","inputFiles","some","f","filter","ipFile","length","getFilesSize","reduce","acc","Math","pow","isValidExtension","every","includes","FileUpload","btnLabel","maxSize","onFilesUpdate","validationErrorMsg","sizeValidationMsg","setFiles","useState","setErrors","fileExistsError","validFileError","isMaxFileSizeError","useEffect","newFiles","Array","from","allFiles","isValid","err","Object","values","multiple","accept","iconClass","loadFileTypeIcon","Fragment","arrIndex","updatedArr","_","removeFile","FormSelect","options","selectText","hasGroups","group","GroupHeading","Options","option","i","Value","Text","TextBoxList","addInputBtnText","inputs","setInputs","display","newInputs","onChangeInput","margin","flexBasis","splice","removeInput","enquiryApi","apiSlice","endpoints","build","fetchSerialLinkData","query","params","url","language","lang","pageId","fetchEnquiryForm","searchParams","URLSearchParams","location","search","hasProductData","history","state","product","enquiryType","countryId","CategoryID","categoryId","productLineId","get","productModelId","productLinePageId","transformResponse","response","productData","productSection","Page","ProductSelectedTitle","DataType","ProductDescription","description","ImageSrc","imageSrc","FormData","fetchEnquiryApplicationList","industryId","ID","submitEnquiryForm","mutation","data","body","overrideExisting","useFetchSerialLinkDataQuery","useLazyFetchEnquiryFormQuery","useFetchEnquiryApplicationListQuery","useSubmitEnquiryFormMutation","SerialLink","linkLabel","isModalOpen","setIsModalOpen","contactUsBlock","dataset","JSON","parse","serialLink","JsonMessage","Title","Image","ImageAltText","Description","PhoneNumber","country","formattedInput","setFormattedInput","onKeyDown","preventDefault","initialInput","formattedValue","slice","inputProps","useFormLoader","register","watch","setFormValue","trigger","hasToggleField","madeFirstSubmit","dropdownToDisable","watchToggle","watchCountry","selectedProductNames","applicationData","watchIndustriesSelector","onFetchApplicationData","applicationDataResponse","skip","ApplicationJsonList","useApplicationFieldState","dataType","productIsRemoved","I","Label","Placeholder","IsMandatory","MandatoryMessage","pattern","RegExp","ValidationRegex","ValidationMessage","countryCodes","radioName","opt","sparePartText","find","item","newQuoteText","validate","LinkLabel","LinkButtonLabel","field","FileExtensions","FileUploadButtonLabel","FileSize","FileSizeValidationMessage","IndustrySelectOptions","RegionSelectOptions","ProductSelectOptions","SelectLabel","EnquiryTypeForm","i18n","onFormSubmit","parentPageID","formSubmitError","setFormSubmitError","timeout","setTimeout","clearTimeout","useOnSubmitError","doFormSubmit","firstSuccess","setFirstSuccess","defaultValues","allFields","flatMap","section","getAllFields","namesArr","isApplicationSelection","selected","curr","Selected","getDefaultSelected","serialNrField","undefined","getFormDefaultValues","formFields","keys","throughModel","handleSubmit","setValue","formState","isSubmitted","reValidateMode","shouldFocusError","gdpr","useMemo","parentPageId","parentPageUrl","setParentPageID","setParentPageUrl","parentId","sessionParentId","sessionStorage","parentUrl","sessionParentUrl","isReloadEvent","performance","getEntriesByType","removeItem","handlePopState","reload","addEventListener","removeEventListener","useParentPageState","loadFieldElements","focusOnFirstError","firstFieldWithError","firstFieldWithErrorElement","querySelector","scrollIntoView","behavior","block","focus","SendButtonLabel","async","event","stopPropagation","recaptchaToken","onLoadContact","formDataPayload","formValues","parentPage","ParentPageID","selectedProductsString","ProductSelectedMessage","recaptcha","Comments","QuoteType","ContactUs","PageUrl","Url","PageId","ParentPageId","FormUrl","Lang","transactionId","entries","append","serialNumbers","createFormData","delete","unwrap","then","result","success","catch","console","log","SerialNr","shouldValidate","doDataLayerPush","pageTitle","selectedContents","selectedTexts","elements","el","tagName","selectedItem","selectedIndex","getSelectContents","dataLayer","form_enquiry","form_enquiryname","form_company","Company","form_country","Country","form_industry","Industry","form_product","ProductCategory","form_spareparts","form_servicetype","ServiceType","form_serial_number","form_application","Application","transaction_id","EnquiryForm","isContactUsBlock","onSubmitSuccess","onBackClick","successMsgRef","useRef","successMsg","setSuccessMsg","current","replaceState","FormDescription","enqType","CategoryId","currentPageId","Breadcrumb","fetchBreadcrumb","Footer","fetchFooter","CountrySelector","fetchCountrySelectList","RelatedTabs","fetchRelatedTabs","relatedTabs","Search","doSearch","doSearchAutocomplete","NewsAndStories","fetchNewsAndStoriesData","fetchNews","fetchStories","Webinars","fetchWebinarBanner","fetchWebinarList","Header","fetchHeader","fetchSubNavigation","fetchMegaMenuNavigation","fetchGeolocation","fetchTopMenu","fetchMegaMenuColumn","Stories","News","fetchContactUsForm","fetchFindOfficeData","fetchEnquirySerialLinkData","InvestorRelations","fetchPressReleaseFilterData","fetchInvestorRelationsNews","fetchInvestorRelationsPage","fetchInvestorRelationsMenu","makeSubscription","CoolCalc","getCoolCalc","shareCoolCalc","Hexpert","fetchHexpertPage","getAntiForgeryToken","submitHexpertForm","createHexpertPdf","getIsMatchingProducts","getHexpertResult","mailResult","SafetyDatasheet","fetchSafetyDatasheet"],"sourceRoot":""}