tf-checkout-react 1.0.101 → 1.0.102
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/billing-info-container/index.d.ts +3 -1
- package/dist/components/common/SnackbarAlert.d.ts +13 -0
- package/dist/components/confirmationContainer/index.d.ts +2 -1
- package/dist/components/ticketsContainer/index.d.ts +2 -1
- package/dist/env.d.ts +1 -0
- package/dist/images/done.svg +3 -3
- package/dist/tf-checkout-react.cjs.development.js +242 -117
- package/dist/tf-checkout-react.cjs.development.js.map +1 -1
- package/dist/tf-checkout-react.cjs.production.min.js +1 -1
- package/dist/tf-checkout-react.cjs.production.min.js.map +1 -1
- package/dist/tf-checkout-react.esm.js +243 -118
- package/dist/tf-checkout-react.esm.js.map +1 -1
- package/dist/tf-checkout-styles.css +1 -1
- package/package.json +89 -89
- package/src/.DS_Store +0 -0
- package/src/.d.ts +2 -2
- package/src/api/index.ts +278 -278
- package/src/assets/images/done.svg +3 -3
- package/src/components/.DS_Store +0 -0
- package/src/components/billing-info-container/index.tsx +796 -777
- package/src/components/billing-info-container/style.css +105 -105
- package/src/components/billing-info-container/utils.ts +224 -224
- package/src/components/common/CheckboxField.tsx +41 -41
- package/src/components/common/CustomField.tsx +84 -84
- package/src/components/common/FormikPhoneNumberField.tsx +51 -51
- package/src/components/common/Loader.tsx +9 -9
- package/src/components/common/RadioField.tsx +35 -35
- package/src/components/common/SelectField.tsx +80 -80
- package/src/components/common/SnackbarAlert.tsx +54 -0
- package/src/components/common/index.tsx +4 -4
- package/src/components/confirmModal/index.tsx +51 -51
- package/src/components/confirmModal/style.css +21 -21
- package/src/components/confirmationContainer/config.ts +72 -72
- package/src/components/confirmationContainer/index.tsx +197 -194
- package/src/components/confirmationContainer/social-buttons.tsx +94 -94
- package/src/components/confirmationContainer/style.css +202 -202
- package/src/components/countdown/index.tsx +89 -89
- package/src/components/countdown/style.css +9 -9
- package/src/components/index.ts +7 -7
- package/src/components/loginModal/index.tsx +209 -209
- package/src/components/loginModal/style.css +71 -71
- package/src/components/myTicketsContainer/index.tsx +196 -137
- package/src/components/myTicketsContainer/row.tsx +41 -41
- package/src/components/myTicketsContainer/style.css +39 -39
- package/src/components/myTicketsContainer/tableConfig.tsx +34 -34
- package/src/components/orderDetailsContainer/index.tsx +249 -249
- package/src/components/orderDetailsContainer/style.css +72 -72
- package/src/components/orderDetailsContainer/ticketsTable.tsx +124 -124
- package/src/components/paymentContainer/index.tsx +284 -284
- package/src/components/registerModal/index.tsx +190 -190
- package/src/components/stripePayment/index.tsx +253 -253
- package/src/components/stripePayment/style.css +59 -59
- package/src/components/ticketResale/index.tsx +56 -56
- package/src/components/ticketResaleModal/index.tsx +210 -210
- package/src/components/ticketResaleModal/style.css +28 -28
- package/src/components/ticketsContainer/PromoCodeSection.tsx +99 -99
- package/src/components/ticketsContainer/ReferralLogic.tsx +33 -33
- package/src/components/ticketsContainer/TicketRow.tsx +83 -83
- package/src/components/ticketsContainer/TicketsSection.tsx +81 -81
- package/src/components/ticketsContainer/index.tsx +430 -422
- package/src/components/ticketsContainer/style.css +181 -181
- package/src/components/ticketsContainer/utils.ts +11 -11
- package/src/components/timerWidget/index.tsx +70 -70
- package/src/components/timerWidget/style.css +26 -26
- package/src/components/waitingList/index.tsx +178 -178
- package/src/components/waitingList/style.css +26 -26
- package/src/env.ts +20 -19
- package/src/index.ts +13 -13
- package/src/normalizers/index.ts +45 -45
- package/src/types/billing-info-data.ts +37 -37
- package/src/types/payment-field.ts +7 -7
- package/src/types/referral-promotion.ts +7 -7
- package/src/utils/createCheckoutDataBodyWithDefaultHolder.ts +59 -59
- package/src/utils/downloadPDF.tsx +30 -30
- package/src/utils/formikErrorFocus.ts +24 -24
- package/src/utils/getImage.ts +14 -14
- package/src/utils/getQueryVariable.ts +13 -13
- package/src/utils/index.ts +5 -5
- package/src/utils/setConfigs.ts +26 -26
- package/src/utils/showZero.tsx +10 -10
- package/src/validators/index.ts +20 -20
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import FormGroup from '@mui/material/FormGroup'
|
|
3
|
-
import FormControlLabel from '@mui/material/FormControlLabel'
|
|
4
|
-
import Checkbox from '@mui/material/Checkbox'
|
|
5
|
-
import { FieldInputProps } from 'formik'
|
|
6
|
-
import { useTheme } from '@mui/styles'
|
|
7
|
-
import { FormControl, FormHelperText } from '@mui/material'
|
|
8
|
-
|
|
9
|
-
export interface ICheckboxField {
|
|
10
|
-
label: string | number | JSX.Element;
|
|
11
|
-
field?: FieldInputProps<any>;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
interface IOtherProps {
|
|
15
|
-
[key: string]: any;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export const CheckboxField = ({
|
|
19
|
-
label,
|
|
20
|
-
field,
|
|
21
|
-
selectOptions,
|
|
22
|
-
theme,
|
|
23
|
-
setFieldValue,
|
|
24
|
-
...rest
|
|
25
|
-
}: ICheckboxField & IOtherProps) => {
|
|
26
|
-
const customTheme: any = useTheme()
|
|
27
|
-
return (
|
|
28
|
-
<FormControl error={!!(rest?.form?.errors && rest.form.errors[field?.name ?? ""])}>
|
|
29
|
-
<FormGroup>
|
|
30
|
-
<FormControlLabel
|
|
31
|
-
control={<Checkbox {...field} {...rest} />}
|
|
32
|
-
label={label}
|
|
33
|
-
componentsProps={{
|
|
34
|
-
typography: customTheme?.checkbox
|
|
35
|
-
}}
|
|
36
|
-
/>
|
|
37
|
-
</FormGroup>
|
|
38
|
-
{!!(rest?.form?.errors && rest.form.errors[field?.name ?? ""]) ? <FormHelperText>Required</FormHelperText> : null}
|
|
39
|
-
</FormControl>
|
|
40
|
-
)
|
|
41
|
-
}
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import FormGroup from '@mui/material/FormGroup'
|
|
3
|
+
import FormControlLabel from '@mui/material/FormControlLabel'
|
|
4
|
+
import Checkbox from '@mui/material/Checkbox'
|
|
5
|
+
import { FieldInputProps } from 'formik'
|
|
6
|
+
import { useTheme } from '@mui/styles'
|
|
7
|
+
import { FormControl, FormHelperText } from '@mui/material'
|
|
8
|
+
|
|
9
|
+
export interface ICheckboxField {
|
|
10
|
+
label: string | number | JSX.Element;
|
|
11
|
+
field?: FieldInputProps<any>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface IOtherProps {
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const CheckboxField = ({
|
|
19
|
+
label,
|
|
20
|
+
field,
|
|
21
|
+
selectOptions,
|
|
22
|
+
theme,
|
|
23
|
+
setFieldValue,
|
|
24
|
+
...rest
|
|
25
|
+
}: ICheckboxField & IOtherProps) => {
|
|
26
|
+
const customTheme: any = useTheme()
|
|
27
|
+
return (
|
|
28
|
+
<FormControl error={!!(rest?.form?.errors && rest.form.errors[field?.name ?? ""])}>
|
|
29
|
+
<FormGroup>
|
|
30
|
+
<FormControlLabel
|
|
31
|
+
control={<Checkbox {...field} {...rest} />}
|
|
32
|
+
label={label}
|
|
33
|
+
componentsProps={{
|
|
34
|
+
typography: customTheme?.checkbox
|
|
35
|
+
}}
|
|
36
|
+
/>
|
|
37
|
+
</FormGroup>
|
|
38
|
+
{!!(rest?.form?.errors && rest.form.errors[field?.name ?? ""]) ? <FormHelperText>Required</FormHelperText> : null}
|
|
39
|
+
</FormControl>
|
|
40
|
+
)
|
|
41
|
+
}
|
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import TextField from '@mui/material/TextField'
|
|
3
|
-
import _map from 'lodash/map'
|
|
4
|
-
import _get from 'lodash/get'
|
|
5
|
-
import _includes from 'lodash/includes'
|
|
6
|
-
|
|
7
|
-
import { FieldInputProps, FormikProps } from 'formik'
|
|
8
|
-
import { useTheme } from '@mui/styles'
|
|
9
|
-
|
|
10
|
-
export interface ISelectOption {
|
|
11
|
-
label: string | number;
|
|
12
|
-
value?: string | number;
|
|
13
|
-
[key: string]: any;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export interface ICustomField {
|
|
17
|
-
label: string;
|
|
18
|
-
|
|
19
|
-
field: FieldInputProps<any>;
|
|
20
|
-
form: FormikProps<any>;
|
|
21
|
-
theme: 'dark' | 'light';
|
|
22
|
-
|
|
23
|
-
// optional
|
|
24
|
-
type?: string;
|
|
25
|
-
selectOptions?: ISelectOption[];
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
interface IOtherProps {
|
|
29
|
-
[key: string]: any;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export const CustomField = ({
|
|
33
|
-
label,
|
|
34
|
-
type = 'text',
|
|
35
|
-
field,
|
|
36
|
-
selectOptions = [] as ISelectOption[],
|
|
37
|
-
form: { touched, errors, submitCount },
|
|
38
|
-
theme,
|
|
39
|
-
}: ICustomField & IOtherProps) => {
|
|
40
|
-
const isSelectField = type === 'select'
|
|
41
|
-
const error = _get(errors, field.name)
|
|
42
|
-
const isTouched =
|
|
43
|
-
Boolean(_get(touched, field.name)) ||
|
|
44
|
-
(_includes(field.name, 'holder') && !!error && !!submitCount)
|
|
45
|
-
|
|
46
|
-
const customTheme: any = useTheme()
|
|
47
|
-
|
|
48
|
-
return (
|
|
49
|
-
<TextField
|
|
50
|
-
id={field.name}
|
|
51
|
-
label={label}
|
|
52
|
-
type={type}
|
|
53
|
-
select={isSelectField}
|
|
54
|
-
fullWidth={true}
|
|
55
|
-
error={!!error && isTouched}
|
|
56
|
-
helperText={isTouched && error}
|
|
57
|
-
SelectProps={{
|
|
58
|
-
native: true,
|
|
59
|
-
className: theme,
|
|
60
|
-
MenuProps: { className: theme },
|
|
61
|
-
}}
|
|
62
|
-
InputLabelProps={{
|
|
63
|
-
sx: customTheme?.input,
|
|
64
|
-
shrink: field.name === 'holderAge' ? true : undefined,
|
|
65
|
-
}}
|
|
66
|
-
inputProps={{
|
|
67
|
-
sx: customTheme?.input,
|
|
68
|
-
}}
|
|
69
|
-
{...field}
|
|
70
|
-
>
|
|
71
|
-
{isSelectField
|
|
72
|
-
? _map(selectOptions, option => (
|
|
73
|
-
<option
|
|
74
|
-
key={option.value}
|
|
75
|
-
value={option.value}
|
|
76
|
-
disabled={option.disabled}
|
|
77
|
-
>
|
|
78
|
-
{option.label}
|
|
79
|
-
</option>
|
|
80
|
-
))
|
|
81
|
-
: null}
|
|
82
|
-
</TextField>
|
|
83
|
-
)
|
|
84
|
-
}
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import TextField from '@mui/material/TextField'
|
|
3
|
+
import _map from 'lodash/map'
|
|
4
|
+
import _get from 'lodash/get'
|
|
5
|
+
import _includes from 'lodash/includes'
|
|
6
|
+
|
|
7
|
+
import { FieldInputProps, FormikProps } from 'formik'
|
|
8
|
+
import { useTheme } from '@mui/styles'
|
|
9
|
+
|
|
10
|
+
export interface ISelectOption {
|
|
11
|
+
label: string | number;
|
|
12
|
+
value?: string | number;
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface ICustomField {
|
|
17
|
+
label: string;
|
|
18
|
+
|
|
19
|
+
field: FieldInputProps<any>;
|
|
20
|
+
form: FormikProps<any>;
|
|
21
|
+
theme: 'dark' | 'light';
|
|
22
|
+
|
|
23
|
+
// optional
|
|
24
|
+
type?: string;
|
|
25
|
+
selectOptions?: ISelectOption[];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface IOtherProps {
|
|
29
|
+
[key: string]: any;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export const CustomField = ({
|
|
33
|
+
label,
|
|
34
|
+
type = 'text',
|
|
35
|
+
field,
|
|
36
|
+
selectOptions = [] as ISelectOption[],
|
|
37
|
+
form: { touched, errors, submitCount },
|
|
38
|
+
theme,
|
|
39
|
+
}: ICustomField & IOtherProps) => {
|
|
40
|
+
const isSelectField = type === 'select'
|
|
41
|
+
const error = _get(errors, field.name)
|
|
42
|
+
const isTouched =
|
|
43
|
+
Boolean(_get(touched, field.name)) ||
|
|
44
|
+
(_includes(field.name, 'holder') && !!error && !!submitCount)
|
|
45
|
+
|
|
46
|
+
const customTheme: any = useTheme()
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<TextField
|
|
50
|
+
id={field.name}
|
|
51
|
+
label={label}
|
|
52
|
+
type={type}
|
|
53
|
+
select={isSelectField}
|
|
54
|
+
fullWidth={true}
|
|
55
|
+
error={!!error && isTouched}
|
|
56
|
+
helperText={isTouched && error}
|
|
57
|
+
SelectProps={{
|
|
58
|
+
native: true,
|
|
59
|
+
className: theme,
|
|
60
|
+
MenuProps: { className: theme },
|
|
61
|
+
}}
|
|
62
|
+
InputLabelProps={{
|
|
63
|
+
sx: customTheme?.input,
|
|
64
|
+
shrink: field.name === 'holderAge' ? true : undefined,
|
|
65
|
+
}}
|
|
66
|
+
inputProps={{
|
|
67
|
+
sx: customTheme?.input,
|
|
68
|
+
}}
|
|
69
|
+
{...field}
|
|
70
|
+
>
|
|
71
|
+
{isSelectField
|
|
72
|
+
? _map(selectOptions, option => (
|
|
73
|
+
<option
|
|
74
|
+
key={option.value}
|
|
75
|
+
value={option.value}
|
|
76
|
+
disabled={option.disabled}
|
|
77
|
+
>
|
|
78
|
+
{option.label}
|
|
79
|
+
</option>
|
|
80
|
+
))
|
|
81
|
+
: null}
|
|
82
|
+
</TextField>
|
|
83
|
+
)
|
|
84
|
+
}
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { FieldInputProps } from 'formik'
|
|
3
|
-
import MuiPhoneNumber from 'material-ui-phone-number'
|
|
4
|
-
import _get from 'lodash/get'
|
|
5
|
-
import { removePlusSign } from '../../normalizers'
|
|
6
|
-
import { useTheme } from '@mui/styles'
|
|
7
|
-
|
|
8
|
-
export interface INumberInField {
|
|
9
|
-
label: string | number | JSX.Element;
|
|
10
|
-
field: FieldInputProps<any>;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
interface IOtherProps {
|
|
14
|
-
[key: string]: any;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export const FormikPhoneNumberField = ({
|
|
18
|
-
label,
|
|
19
|
-
field,
|
|
20
|
-
form: { touched, errors, initialValues },
|
|
21
|
-
setFieldValue,
|
|
22
|
-
selectOptions,
|
|
23
|
-
...rest
|
|
24
|
-
}: INumberInField & IOtherProps) => {
|
|
25
|
-
const error = _get(errors, field.name)
|
|
26
|
-
const isTouched = Boolean(_get(touched, field.name))
|
|
27
|
-
|
|
28
|
-
const customTheme: any = useTheme()
|
|
29
|
-
|
|
30
|
-
return (
|
|
31
|
-
<MuiPhoneNumber
|
|
32
|
-
name='phone'
|
|
33
|
-
value={initialValues.phone}
|
|
34
|
-
onChange={(e: any) => setFieldValue("phone", removePlusSign(e))}
|
|
35
|
-
variant="outlined"
|
|
36
|
-
defaultCountry='us'
|
|
37
|
-
disableDropdown={true}
|
|
38
|
-
label={label}
|
|
39
|
-
error={!!error && isTouched}
|
|
40
|
-
helperText={isTouched && error}
|
|
41
|
-
fullWidth
|
|
42
|
-
InputLabelProps={{
|
|
43
|
-
sx: customTheme?.input
|
|
44
|
-
}}
|
|
45
|
-
InputProps={{
|
|
46
|
-
sx: customTheme?.input
|
|
47
|
-
}}
|
|
48
|
-
autoFormat={false}
|
|
49
|
-
{...rest}
|
|
50
|
-
/>
|
|
51
|
-
)
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { FieldInputProps } from 'formik'
|
|
3
|
+
import MuiPhoneNumber from 'material-ui-phone-number'
|
|
4
|
+
import _get from 'lodash/get'
|
|
5
|
+
import { removePlusSign } from '../../normalizers'
|
|
6
|
+
import { useTheme } from '@mui/styles'
|
|
7
|
+
|
|
8
|
+
export interface INumberInField {
|
|
9
|
+
label: string | number | JSX.Element;
|
|
10
|
+
field: FieldInputProps<any>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
interface IOtherProps {
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const FormikPhoneNumberField = ({
|
|
18
|
+
label,
|
|
19
|
+
field,
|
|
20
|
+
form: { touched, errors, initialValues },
|
|
21
|
+
setFieldValue,
|
|
22
|
+
selectOptions,
|
|
23
|
+
...rest
|
|
24
|
+
}: INumberInField & IOtherProps) => {
|
|
25
|
+
const error = _get(errors, field.name)
|
|
26
|
+
const isTouched = Boolean(_get(touched, field.name))
|
|
27
|
+
|
|
28
|
+
const customTheme: any = useTheme()
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<MuiPhoneNumber
|
|
32
|
+
name='phone'
|
|
33
|
+
value={initialValues.phone}
|
|
34
|
+
onChange={(e: any) => setFieldValue("phone", removePlusSign(e))}
|
|
35
|
+
variant="outlined"
|
|
36
|
+
defaultCountry='us'
|
|
37
|
+
disableDropdown={true}
|
|
38
|
+
label={label}
|
|
39
|
+
error={!!error && isTouched}
|
|
40
|
+
helperText={isTouched && error}
|
|
41
|
+
fullWidth
|
|
42
|
+
InputLabelProps={{
|
|
43
|
+
sx: customTheme?.input
|
|
44
|
+
}}
|
|
45
|
+
InputProps={{
|
|
46
|
+
sx: customTheme?.input
|
|
47
|
+
}}
|
|
48
|
+
autoFormat={false}
|
|
49
|
+
{...rest}
|
|
50
|
+
/>
|
|
51
|
+
)
|
|
52
52
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import CircularProgress from '@mui/material/CircularProgress'
|
|
3
|
-
|
|
4
|
-
export function Loader() {
|
|
5
|
-
return (
|
|
6
|
-
<div className="loader-container">
|
|
7
|
-
<CircularProgress />
|
|
8
|
-
</div>
|
|
9
|
-
)
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import CircularProgress from '@mui/material/CircularProgress'
|
|
3
|
+
|
|
4
|
+
export function Loader() {
|
|
5
|
+
return (
|
|
6
|
+
<div className="loader-container">
|
|
7
|
+
<CircularProgress />
|
|
8
|
+
</div>
|
|
9
|
+
)
|
|
10
10
|
}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import FormGroup from '@mui/material/FormGroup'
|
|
3
|
-
import FormControlLabel from '@mui/material/FormControlLabel'
|
|
4
|
-
import Radio from '@mui/material/Radio';
|
|
5
|
-
import { FieldInputProps } from 'formik'
|
|
6
|
-
import { useTheme } from '@mui/styles'
|
|
7
|
-
|
|
8
|
-
export interface IRadioField {
|
|
9
|
-
label: string | number | JSX.Element;
|
|
10
|
-
field?: FieldInputProps<any>;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
interface IOtherProps {
|
|
14
|
-
[key: string]: any;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export const RadioField = ({
|
|
18
|
-
label,
|
|
19
|
-
field,
|
|
20
|
-
theme,
|
|
21
|
-
...rest
|
|
22
|
-
}: IRadioField & IOtherProps) => {
|
|
23
|
-
const customTheme: any = useTheme()
|
|
24
|
-
return (
|
|
25
|
-
<FormGroup>
|
|
26
|
-
<FormControlLabel
|
|
27
|
-
control={<Radio {...field} {...rest} />}
|
|
28
|
-
label={label}
|
|
29
|
-
componentsProps={{
|
|
30
|
-
typography: customTheme?.checkbox
|
|
31
|
-
}}
|
|
32
|
-
/>
|
|
33
|
-
</FormGroup>
|
|
34
|
-
)
|
|
35
|
-
}
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import FormGroup from '@mui/material/FormGroup'
|
|
3
|
+
import FormControlLabel from '@mui/material/FormControlLabel'
|
|
4
|
+
import Radio from '@mui/material/Radio';
|
|
5
|
+
import { FieldInputProps } from 'formik'
|
|
6
|
+
import { useTheme } from '@mui/styles'
|
|
7
|
+
|
|
8
|
+
export interface IRadioField {
|
|
9
|
+
label: string | number | JSX.Element;
|
|
10
|
+
field?: FieldInputProps<any>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
interface IOtherProps {
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const RadioField = ({
|
|
18
|
+
label,
|
|
19
|
+
field,
|
|
20
|
+
theme,
|
|
21
|
+
...rest
|
|
22
|
+
}: IRadioField & IOtherProps) => {
|
|
23
|
+
const customTheme: any = useTheme()
|
|
24
|
+
return (
|
|
25
|
+
<FormGroup>
|
|
26
|
+
<FormControlLabel
|
|
27
|
+
control={<Radio {...field} {...rest} />}
|
|
28
|
+
label={label}
|
|
29
|
+
componentsProps={{
|
|
30
|
+
typography: customTheme?.checkbox
|
|
31
|
+
}}
|
|
32
|
+
/>
|
|
33
|
+
</FormGroup>
|
|
34
|
+
)
|
|
35
|
+
}
|
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import Select from '@mui/material/Select'
|
|
3
|
-
import _map from 'lodash/map'
|
|
4
|
-
import _get from 'lodash/get'
|
|
5
|
-
|
|
6
|
-
import { FieldInputProps, FormikProps } from 'formik'
|
|
7
|
-
import { FormControl, InputLabel, FormHelperText } from '@mui/material'
|
|
8
|
-
import { useTheme } from '@mui/styles'
|
|
9
|
-
|
|
10
|
-
export interface ISelectOption {
|
|
11
|
-
label: string | number;
|
|
12
|
-
value?: string | number;
|
|
13
|
-
[key: string]: any;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export interface ISelectField {
|
|
17
|
-
label: string;
|
|
18
|
-
|
|
19
|
-
field: FieldInputProps<any>;
|
|
20
|
-
form: FormikProps<any>;
|
|
21
|
-
theme: 'dark' | 'light';
|
|
22
|
-
|
|
23
|
-
// optional
|
|
24
|
-
type?: string;
|
|
25
|
-
selectOptions?: ISelectOption[];
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
interface IOtherProps {
|
|
29
|
-
[key: string]: any;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export const SelectField = ({
|
|
33
|
-
label,
|
|
34
|
-
type = 'text',
|
|
35
|
-
field,
|
|
36
|
-
selectOptions = [] as ISelectOption[],
|
|
37
|
-
form: { touched, errors },
|
|
38
|
-
theme,
|
|
39
|
-
}: ISelectField & IOtherProps) => {
|
|
40
|
-
const isTouched = Boolean(_get(touched, field.name))
|
|
41
|
-
const error = _get(errors, field.name)
|
|
42
|
-
|
|
43
|
-
const customTheme: any = useTheme()
|
|
44
|
-
|
|
45
|
-
return (
|
|
46
|
-
<FormControl fullWidth={true}>
|
|
47
|
-
<InputLabel style={customTheme?.input} htmlFor={field.name} error={!!error && isTouched} shrink={true}>
|
|
48
|
-
{label}
|
|
49
|
-
</InputLabel>
|
|
50
|
-
<Select
|
|
51
|
-
id={field.name}
|
|
52
|
-
label={label}
|
|
53
|
-
type={type}
|
|
54
|
-
fullWidth={true}
|
|
55
|
-
error={!!error && isTouched}
|
|
56
|
-
inputProps={{
|
|
57
|
-
id: field.name,
|
|
58
|
-
}}
|
|
59
|
-
native={true}
|
|
60
|
-
className={theme}
|
|
61
|
-
MenuProps={{ className: theme }}
|
|
62
|
-
{...field}
|
|
63
|
-
style={customTheme?.input}
|
|
64
|
-
>
|
|
65
|
-
{_map(selectOptions, option => (
|
|
66
|
-
<option
|
|
67
|
-
key={option.value}
|
|
68
|
-
value={option.value}
|
|
69
|
-
disabled={option.disabled}
|
|
70
|
-
>
|
|
71
|
-
{option.label}
|
|
72
|
-
</option>
|
|
73
|
-
))}
|
|
74
|
-
</Select>
|
|
75
|
-
{isTouched && error ? (
|
|
76
|
-
<FormHelperText error={!!error && isTouched}>{error}</FormHelperText>
|
|
77
|
-
) : null}
|
|
78
|
-
</FormControl>
|
|
79
|
-
)
|
|
80
|
-
}
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import Select from '@mui/material/Select'
|
|
3
|
+
import _map from 'lodash/map'
|
|
4
|
+
import _get from 'lodash/get'
|
|
5
|
+
|
|
6
|
+
import { FieldInputProps, FormikProps } from 'formik'
|
|
7
|
+
import { FormControl, InputLabel, FormHelperText } from '@mui/material'
|
|
8
|
+
import { useTheme } from '@mui/styles'
|
|
9
|
+
|
|
10
|
+
export interface ISelectOption {
|
|
11
|
+
label: string | number;
|
|
12
|
+
value?: string | number;
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface ISelectField {
|
|
17
|
+
label: string;
|
|
18
|
+
|
|
19
|
+
field: FieldInputProps<any>;
|
|
20
|
+
form: FormikProps<any>;
|
|
21
|
+
theme: 'dark' | 'light';
|
|
22
|
+
|
|
23
|
+
// optional
|
|
24
|
+
type?: string;
|
|
25
|
+
selectOptions?: ISelectOption[];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface IOtherProps {
|
|
29
|
+
[key: string]: any;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export const SelectField = ({
|
|
33
|
+
label,
|
|
34
|
+
type = 'text',
|
|
35
|
+
field,
|
|
36
|
+
selectOptions = [] as ISelectOption[],
|
|
37
|
+
form: { touched, errors },
|
|
38
|
+
theme,
|
|
39
|
+
}: ISelectField & IOtherProps) => {
|
|
40
|
+
const isTouched = Boolean(_get(touched, field.name))
|
|
41
|
+
const error = _get(errors, field.name)
|
|
42
|
+
|
|
43
|
+
const customTheme: any = useTheme()
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<FormControl fullWidth={true}>
|
|
47
|
+
<InputLabel style={customTheme?.input} htmlFor={field.name} error={!!error && isTouched} shrink={true}>
|
|
48
|
+
{label}
|
|
49
|
+
</InputLabel>
|
|
50
|
+
<Select
|
|
51
|
+
id={field.name}
|
|
52
|
+
label={label}
|
|
53
|
+
type={type}
|
|
54
|
+
fullWidth={true}
|
|
55
|
+
error={!!error && isTouched}
|
|
56
|
+
inputProps={{
|
|
57
|
+
id: field.name,
|
|
58
|
+
}}
|
|
59
|
+
native={true}
|
|
60
|
+
className={theme}
|
|
61
|
+
MenuProps={{ className: theme }}
|
|
62
|
+
{...field}
|
|
63
|
+
style={customTheme?.input}
|
|
64
|
+
>
|
|
65
|
+
{_map(selectOptions, option => (
|
|
66
|
+
<option
|
|
67
|
+
key={option.value}
|
|
68
|
+
value={option.value}
|
|
69
|
+
disabled={option.disabled}
|
|
70
|
+
>
|
|
71
|
+
{option.label}
|
|
72
|
+
</option>
|
|
73
|
+
))}
|
|
74
|
+
</Select>
|
|
75
|
+
{isTouched && error ? (
|
|
76
|
+
<FormHelperText error={!!error && isTouched}>{error}</FormHelperText>
|
|
77
|
+
) : null}
|
|
78
|
+
</FormControl>
|
|
79
|
+
)
|
|
80
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { Alert, AlertColor, Snackbar, SnackbarOrigin } from '@mui/material'
|
|
3
|
+
|
|
4
|
+
interface ISnackbarAlertProps {
|
|
5
|
+
isOpen: boolean
|
|
6
|
+
message: string
|
|
7
|
+
type: AlertColor
|
|
8
|
+
position?: SnackbarOrigin
|
|
9
|
+
autoHideDuration?: number
|
|
10
|
+
variant?: 'filled' | 'standard' | 'outlined'
|
|
11
|
+
|
|
12
|
+
onClose: () => void
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const SnackbarAlert = ({
|
|
16
|
+
isOpen,
|
|
17
|
+
message,
|
|
18
|
+
type,
|
|
19
|
+
position,
|
|
20
|
+
autoHideDuration = 3000,
|
|
21
|
+
variant,
|
|
22
|
+
onClose,
|
|
23
|
+
}: ISnackbarAlertProps) => {
|
|
24
|
+
return (
|
|
25
|
+
<div className="snackbar-alert-container">
|
|
26
|
+
<Snackbar
|
|
27
|
+
autoHideDuration={autoHideDuration}
|
|
28
|
+
open={isOpen}
|
|
29
|
+
anchorOrigin={position || { vertical: 'top', horizontal: 'center' }}
|
|
30
|
+
onClose={onClose}
|
|
31
|
+
classes={{
|
|
32
|
+
root: 'snackbar-alert-snackbar-root',
|
|
33
|
+
}}
|
|
34
|
+
>
|
|
35
|
+
<Alert
|
|
36
|
+
severity={type}
|
|
37
|
+
onClose={onClose}
|
|
38
|
+
variant={variant || 'filled'}
|
|
39
|
+
classes={{
|
|
40
|
+
icon: 'snackbar-alert-icon',
|
|
41
|
+
root: 'snackbar-alert-alert-root',
|
|
42
|
+
action: 'snackbar-alert-action',
|
|
43
|
+
message: 'snackbar-alert-message',
|
|
44
|
+
filled: 'snackbar-alert-filled',
|
|
45
|
+
}}
|
|
46
|
+
>
|
|
47
|
+
{message}
|
|
48
|
+
</Alert>
|
|
49
|
+
</Snackbar>
|
|
50
|
+
</div>
|
|
51
|
+
)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export default SnackbarAlert
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { CheckboxField } from './CheckboxField'
|
|
2
|
-
export { CustomField } from './CustomField'
|
|
3
|
-
export { FormikPhoneNumberField } from './FormikPhoneNumberField'
|
|
4
|
-
export { Loader } from './Loader'
|
|
1
|
+
export { CheckboxField } from './CheckboxField'
|
|
2
|
+
export { CustomField } from './CustomField'
|
|
3
|
+
export { FormikPhoneNumberField } from './FormikPhoneNumberField'
|
|
4
|
+
export { Loader } from './Loader'
|
|
5
5
|
export { SelectField } from './SelectField'
|