@licklist/design 0.72.3 → 0.72.5

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.
Files changed (84) hide show
  1. package/dist/auth/Layout/AuthNavComponent.d.ts.map +1 -1
  2. package/dist/auth/Login/LoginComponent.d.ts.map +1 -1
  3. package/dist/auth/Login/LoginFormComponent.d.ts.map +1 -1
  4. package/dist/auth/Logout/Logout.js +1 -0
  5. package/dist/auth/Register/RegisterComponent.d.ts.map +1 -1
  6. package/dist/auth/Register/RegisterFormComponent.d.ts.map +1 -1
  7. package/dist/auth/ResetPassword/ResetPasswordFormComponent.d.ts.map +1 -1
  8. package/dist/auth/Router.d.ts.map +1 -1
  9. package/dist/auth/Router.js +2 -0
  10. package/dist/calendar/utils/index.d.ts +1 -1
  11. package/dist/calendar/utils/index.d.ts.map +1 -1
  12. package/dist/events/edit-event-modal/component/SaleDeadline/SaleDeadline.d.ts.map +1 -1
  13. package/dist/events/event-card/utils.d.ts.map +1 -1
  14. package/dist/events/event-statistic-modal/utils/index.d.ts.map +1 -1
  15. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetForm.js +1 -1
  16. package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/SummaryTotal.d.ts.map +1 -1
  17. package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/SummaryTotal.js +3 -3
  18. package/dist/iframe/order-process/components/BookingSummary/utils/index.d.ts.map +1 -1
  19. package/dist/iframe/page/components/PageBody/hooks/useResizePageBody.d.ts.map +1 -1
  20. package/dist/iframe/payment/payment-status-page/PaymentStatusPage.d.ts.map +1 -1
  21. package/dist/iframe/payment/payment-status-page/PaymentStatusPage.js +2 -2
  22. package/dist/iframe/ryft/RyftPaymentForm.js +1 -0
  23. package/dist/index.js +1 -0
  24. package/dist/notification/email-template/card/EmailTemplateCard.d.ts.map +1 -1
  25. package/dist/notification/sms-template/card/SmsTemplateCard.d.ts.map +1 -1
  26. package/dist/product-set/control/DateAndRecurrenceInput.d.ts.map +1 -1
  27. package/dist/product-set/control/DateInput.d.ts.map +1 -1
  28. package/dist/product-set/form/VenueMapsControl.d.ts +1 -1
  29. package/dist/product-set/form/VenueMapsControl.d.ts.map +1 -1
  30. package/dist/report/ReportRunnerModal/ReportRunnerModal.js +1 -0
  31. package/dist/sales/life-time-sales/LifeTimeSalesChart.js +1 -0
  32. package/dist/sales/manual-booking/select-event/SelectEvent.js +1 -0
  33. package/dist/sales/manual-booking/select-menu/SelectMenu.js +1 -0
  34. package/dist/sales/manual-booking/summary/ManualBookingSummary.js +1 -0
  35. package/dist/setting/admin/AdminSettingForm.d.ts.map +1 -1
  36. package/dist/setting/dashboard/snippet-templates/card/SnippetTemplateCard.d.ts.map +1 -1
  37. package/dist/snippet/snippet-template/preview/Preview.d.ts.map +1 -1
  38. package/dist/snippet/snippet-template/preview/Preview.js +3 -1
  39. package/dist/static/date-range-input/utils/index.d.ts +1 -1
  40. package/dist/static/date-range-input/utils/index.d.ts.map +1 -1
  41. package/dist/static/loader/FullScreenLoader.d.ts +8 -0
  42. package/dist/static/loader/FullScreenLoader.d.ts.map +1 -0
  43. package/dist/static/loader/FullScreenLoader.js +41 -0
  44. package/dist/static/loader/LoaderIndicator.d.ts +2 -3
  45. package/dist/static/loader/LoaderIndicator.d.ts.map +1 -1
  46. package/dist/static/loader/LoaderIndicator.js +4 -2
  47. package/dist/static/loader/index.d.ts +1 -0
  48. package/dist/static/loader/index.d.ts.map +1 -1
  49. package/dist/styles/availability-indicator/AvailabilityIndicator.scss +1 -4
  50. package/dist/styles/ryft-payment-form/RyftPaymentForm.scss +1 -1
  51. package/dist/styles/static/Loader.scss +9 -0
  52. package/package.json +5 -5
  53. package/src/auth/Layout/AuthNavComponent.tsx +4 -0
  54. package/src/auth/Login/LoginComponent.tsx +2 -0
  55. package/src/auth/Login/LoginFormComponent.tsx +2 -0
  56. package/src/auth/Register/RegisterComponent.tsx +2 -0
  57. package/src/auth/Register/RegisterFormComponent.tsx +4 -0
  58. package/src/auth/ResetPassword/ResetPasswordFormComponent.tsx +4 -0
  59. package/src/auth/Router.tsx +2 -0
  60. package/src/calendar/Calendar.stories.tsx +2 -2
  61. package/src/calendar/utils/index.ts +1 -1
  62. package/src/events/edit-event-modal/component/SaleDeadline/SaleDeadline.tsx +9 -7
  63. package/src/events/event-card/utils.ts +10 -9
  64. package/src/events/event-statistic-modal/utils/index.ts +2 -1
  65. package/src/iframe/order-process/components/BookingSummary/components/SummaryTotal/SummaryTotal.tsx +13 -11
  66. package/src/iframe/order-process/components/BookingSummary/utils/index.ts +2 -2
  67. package/src/iframe/page/components/PageBody/hooks/useResizePageBody.ts +1 -2
  68. package/src/iframe/payment/payment-status-page/PaymentStatusPage.tsx +19 -20
  69. package/src/notification/email-template/card/EmailTemplateCard.tsx +2 -0
  70. package/src/notification/sms-template/card/SmsTemplateCard.tsx +2 -0
  71. package/src/product-set/control/DateAndRecurrenceInput.tsx +3 -4
  72. package/src/product-set/control/DateInput.tsx +3 -4
  73. package/src/product-set/form/VenueMapsControl.tsx +1 -1
  74. package/src/setting/admin/AdminSettingForm.tsx +4 -0
  75. package/src/setting/dashboard/snippet-templates/card/SnippetTemplateCard.tsx +2 -0
  76. package/src/snippet/snippet-template/preview/Preview.tsx +1 -2
  77. package/src/static/date-range-input/utils/index.ts +1 -1
  78. package/src/static/loader/FullScreenLoader.tsx +16 -0
  79. package/src/static/loader/LoaderIndicator.tsx +6 -3
  80. package/src/static/loader/index.ts +1 -0
  81. package/src/styles/availability-indicator/AvailabilityIndicator.scss +1 -4
  82. package/src/styles/ryft-payment-form/RyftPaymentForm.scss +1 -1
  83. package/src/styles/static/Loader.scss +9 -0
  84. package/yarn.lock +33 -61
@@ -97,6 +97,8 @@ function ResetPasswordFormComponent(props: ResetPasswordFormComponentProps) {
97
97
  <p className='text-center mb-0 mt-3'>
98
98
  <Trans t={t} i18nKey='User:signinPromo'>
99
99
  Already a user?{' '}
100
+ {/* TODO fix issue react router types
101
+ @ts-expect-error */}
100
102
  <Link to='/login' className={[isLoading && 'disabled'].join(' ')}>
101
103
  Sign in
102
104
  </Link>
@@ -106,6 +108,8 @@ function ResetPasswordFormComponent(props: ResetPasswordFormComponentProps) {
106
108
  <p className='text-center mb-0 mt-3'>
107
109
  <Trans t={t} i18nKey='User:loginPromo'>
108
110
  Don&apos;t have an account?{' '}
111
+ {/* TODO fix issue react router types
112
+ @ts-expect-error */}
109
113
  <Link
110
114
  to='/register'
111
115
  className={[isLoading && 'disabled'].join(' ')}
@@ -29,6 +29,8 @@ function Router(props: RouterProps) {
29
29
  }
30
30
  }, [])
31
31
 
32
+ // TODO fix issue react router types
33
+ // @ts-expect-error
32
34
  return <BrowserRouter history={history}>{children}</BrowserRouter>
33
35
  }
34
36
 
@@ -28,7 +28,7 @@ Default.args = {
28
28
  fromPrice: 'from £10',
29
29
  selectedDate: null,
30
30
  setSelectedDate: () => null,
31
- calendarDates: getMonthCalendarDates(now),
31
+ calendarDates: getMonthCalendarDates({ initialDate: now }),
32
32
  currentDate: now,
33
33
  getDateTimeButtonProps: () => ({
34
34
  resources: [],
@@ -50,7 +50,7 @@ Loading.args = {
50
50
  fromPrice: 'from £10',
51
51
  selectedDate: null,
52
52
  setSelectedDate: () => null,
53
- calendarDates: getMonthCalendarDates(now),
53
+ calendarDates: getMonthCalendarDates({ initialDate: now }),
54
54
  currentDate: now,
55
55
  getDateTimeButtonProps: () => ({
56
56
  resources: [],
@@ -3,7 +3,7 @@ import { DateTime, Interval } from 'luxon'
3
3
 
4
4
  type Builder = (args: {
5
5
  initialDate?: DateTime
6
- timeZone: TimeZone['name']
6
+ timeZone?: TimeZone['name']
7
7
  }) => DateTime[]
8
8
 
9
9
  export const getMonthCalendarDates: Builder = ({
@@ -28,11 +28,13 @@ export const DEADLINE_NAME = [
28
28
 
29
29
  export type DeadLineNameType = (typeof DEADLINE_NAME)[number]
30
30
 
31
- type SaleDeadlineType = {
32
- saleDeadline: null | number
33
- } | {
34
- [key: string] : null | number
35
- }
31
+ type SaleDeadlineType =
32
+ | {
33
+ saleDeadline: null | number
34
+ }
35
+ | {
36
+ [key: string]: null | number
37
+ }
36
38
 
37
39
  export const SaleDeadline = ({
38
40
  disabled = false,
@@ -52,8 +54,8 @@ export const SaleDeadline = ({
52
54
  const [deadlineType, setDeadlineType] = useState<DeadlineType>(
53
55
  SALE_DEADLINE_BEFORE_TYPE,
54
56
  )
55
-
56
- const saleDeadline = watch(deadLineCategory || SALE_DEADLINE_NAME)
57
+
58
+ const saleDeadline = watch(deadLineCategory || SALE_DEADLINE_NAME)
57
59
 
58
60
  useEffect(() => {
59
61
  if (onlyBefore) return
@@ -2,24 +2,25 @@ import { DATE_FORMAT, DATE_TIME_FULL_FORMAT } from '@licklist/core/dist/Config'
2
2
  import { EventStatistic } from '@licklist/core/dist/DataMapper/Provider/EventStatisticDataMapper'
3
3
  import { DateTime } from 'luxon'
4
4
 
5
- export const MIN_EVENT_DESCRIPTION_SIZE = 150;
6
- export const EVENT_DESCRIPTION_SIZE = 350;
7
- export const EMOJI_REGEX = /<span data-emoji-replacer=""><img[^>]*alt="([^"]+)"[^>]*><\/span>/g;
5
+ export const MIN_EVENT_DESCRIPTION_SIZE = 150
6
+ export const EVENT_DESCRIPTION_SIZE = 350
7
+ export const EMOJI_REGEX =
8
+ /<span data-emoji-replacer=""><img[^>]*alt="([^"]+)"[^>]*><\/span>/g
8
9
 
9
10
  export const formatContent = (content, maxLength = EVENT_DESCRIPTION_SIZE) => {
10
- if (!content) return '';
11
+ if (!content) return ''
11
12
 
12
- const replacedContent = replaceEmojiImagesWithText(content);
13
+ const replacedContent = replaceEmojiImagesWithText(content)
13
14
 
14
15
  if (replacedContent.length <= maxLength) {
15
- return replacedContent;
16
+ return replacedContent
16
17
  }
17
18
 
18
- return replacedContent.slice(0, maxLength).concat('...');
19
- };
19
+ return replacedContent.slice(0, maxLength).concat('...')
20
+ }
20
21
 
21
22
  function replaceEmojiImagesWithText(text) {
22
- return text.replace(EMOJI_REGEX, (_, emojiText) => emojiText);
23
+ return text.replace(EMOJI_REGEX, (_, emojiText) => emojiText)
23
24
  }
24
25
 
25
26
  /**
@@ -100,7 +100,8 @@ export const convertEventStatisticToTableData = (
100
100
 
101
101
  const maxTotalQuantity = maxBy(overrides, 'id')?.totalQuantity
102
102
 
103
- const totalQuantity = maxTotalQuantity || productSummary?.totalQuantity
103
+ const totalQuantity =
104
+ maxTotalQuantity || productSummary?.totalQuantity
104
105
 
105
106
  summaryMap.set(`${categoryName}.${productSummary.name}`, {
106
107
  name: productSummary.name,
@@ -22,24 +22,23 @@ export const SummaryTotal = ({
22
22
 
23
23
  const cartSum = isFreePayment
24
24
  ? 0
25
- : cartSumByOrderProducts({orderProducts}) + transactionFee
25
+ : cartSumByOrderProducts({ orderProducts }) + transactionFee
26
26
 
27
-
28
- const totalSum = isFreePayment
27
+ const totalSum = isFreePayment
29
28
  ? 0
30
- : cartSumByOrderProducts({orderProducts, isTotalSum: true}) +
31
- transactionFee;
32
-
33
- const hasRemaingToPay = totalSum > cartSum;
29
+ : cartSumByOrderProducts({ orderProducts, isTotalSum: true }) +
30
+ transactionFee
31
+
32
+ const hasRemaingToPay = totalSum > cartSum
34
33
 
35
34
  if (!orderProducts.length) {
36
35
  return null
37
36
  }
38
37
 
39
38
  return (
40
- <div className="d-flex flex-column justify-content-between">
39
+ <div className='d-flex flex-column justify-content-between'>
41
40
  <SummaryTotalBlock
42
- label={t(hasRemaingToPay ? "payNow" : "total")}
41
+ label={t(hasRemaingToPay ? 'payNow' : 'total')}
43
42
  amount={cartSum}
44
43
  />
45
44
  {!!totalWithDiscount && !isFreePayment && (
@@ -50,9 +49,12 @@ export const SummaryTotal = ({
50
49
  )}
51
50
  {hasRemaingToPay && (
52
51
  <>
53
- <SummaryTotalBlock label={t("remaining")} amount={totalSum - cartSum} />
52
+ <SummaryTotalBlock
53
+ label={t('remaining')}
54
+ amount={totalSum - cartSum}
55
+ />
54
56
 
55
- <SummaryTotalBlock label={t("total")} amount={totalSum} />
57
+ <SummaryTotalBlock label={t('total')} amount={totalSum} />
56
58
  </>
57
59
  )}
58
60
  </div>
@@ -9,8 +9,8 @@ export const cartSumByOrderProducts = ({
9
9
  orderProducts,
10
10
  isTotalSum,
11
11
  }: {
12
- orderProducts?: OrderItem[];
13
- isTotalSum?: boolean;
12
+ orderProducts?: OrderItem[]
13
+ isTotalSum?: boolean
14
14
  }) => {
15
15
  if (!orderProducts || !orderProducts.length) {
16
16
  return 0
@@ -69,8 +69,7 @@ export const useResizePageBody = () => {
69
69
  rightBlockHeight -
70
70
  CALENDAR_WRAPPER_HEIGHT,
71
71
  }
72
-
73
- }
72
+ }
74
73
  return {
75
74
  maxHeight:
76
75
  height -
@@ -59,20 +59,19 @@ export const PaymentStatusPage = ({
59
59
 
60
60
  if (isLoading) return <LoaderIndicator isLoaded={false} />
61
61
 
62
-
63
- const orderCartAmountByFormValues = cartSumByOrderProducts({
64
- orderProducts:
65
- bookingSummaryProps?.formValues &&
66
- Object.values(bookingSummaryProps?.formValues),
67
- });
68
- const orderTotalAmountByFormValues = cartSumByOrderProducts({
69
- orderProducts:
70
- bookingSummaryProps?.formValues &&
71
- Object.values(bookingSummaryProps?.formValues),
72
- isTotalSum: true,
73
- });
74
- const hasRemaingToPay =
75
- orderTotalAmountByFormValues > orderCartAmountByFormValues;
62
+ const orderCartAmountByFormValues = cartSumByOrderProducts({
63
+ orderProducts:
64
+ bookingSummaryProps?.formValues &&
65
+ Object.values(bookingSummaryProps?.formValues),
66
+ })
67
+ const orderTotalAmountByFormValues = cartSumByOrderProducts({
68
+ orderProducts:
69
+ bookingSummaryProps?.formValues &&
70
+ Object.values(bookingSummaryProps?.formValues),
71
+ isTotalSum: true,
72
+ })
73
+ const hasRemaingToPay =
74
+ orderTotalAmountByFormValues > orderCartAmountByFormValues
76
75
 
77
76
  // User can fill promocode only in iframe appcliation.
78
77
  // It didn't possible via payment link. This check will
@@ -81,9 +80,9 @@ const hasRemaingToPay =
81
80
  // For payment status page booking summary props can be empty
82
81
  // so we should also check for them
83
82
  const isCalculatedAmountGreaterThanOrderAmount =
84
- !hasRemaingToPay &&
85
- bookingSummaryProps &&
86
- orderCartAmountByFormValues > totalAmount;
83
+ !hasRemaingToPay &&
84
+ bookingSummaryProps &&
85
+ orderCartAmountByFormValues > totalAmount
87
86
 
88
87
  return (
89
88
  <Page
@@ -140,7 +139,7 @@ const hasRemaingToPay =
140
139
  <>
141
140
  {isCalculatedAmountGreaterThanOrderAmount && (
142
141
  <SummaryTotalBlock
143
- label={t(hasRemaingToPay ? "payNow" : "total")}
142
+ label={t(hasRemaingToPay ? 'payNow' : 'total')}
144
143
  amount={
145
144
  orderCartAmountByFormValues +
146
145
  (bookingSummaryProps?.transactionFee || 0)
@@ -159,9 +158,9 @@ const hasRemaingToPay =
159
158
  (bookingSummaryProps?.transactionFee || 0)
160
159
  }
161
160
  />
162
- {hasRemaingToPay && (
161
+ {hasRemaingToPay && (
163
162
  <SummaryTotalBlock
164
- label={t("remaining")}
163
+ label={t('remaining')}
165
164
  amount={
166
165
  orderTotalAmountByFormValues -
167
166
  orderCartAmountByFormValues
@@ -35,6 +35,8 @@ export function EmailTemplateCard({
35
35
  return (
36
36
  <div className='snippet-template-card'>
37
37
  <div className='snippet-template-card-header'>
38
+ {/* TODO fix issue react router types
39
+ @ts-expect-error */}
38
40
  <Link to={href}>{name}</Link>
39
41
  {hasPermission && Boolean(onRemove) && (
40
42
  <ConfirmModal
@@ -33,6 +33,8 @@ export function SmsTemplateCard({
33
33
  return (
34
34
  <div className='snippet-template-card'>
35
35
  <div className='snippet-template-card-header'>
36
+ {/* TODO fix issue react router types
37
+ @ts-expect-error */}
36
38
  <Link to={href}>{name}</Link>
37
39
  {hasPermission && Boolean(onRemove) && (
38
40
  <ConfirmModal
@@ -198,7 +198,8 @@ export const DateAndRecurrenceInput = ({
198
198
  move(prevIndex, nextIndex)
199
199
  }
200
200
 
201
- const errorMessage = errors.menuRecurrences?.message || errors.menuRecurrences?.root?.message
201
+ const errorMessage =
202
+ errors.menuRecurrences?.message || errors.menuRecurrences?.root?.message
202
203
 
203
204
  useEffect(() => {
204
205
  if (fields.length) {
@@ -308,9 +309,7 @@ export const DateAndRecurrenceInput = ({
308
309
  })}
309
310
  />
310
311
 
311
- <div className='manual-form-error'>
312
- {errorMessage}
313
- </div>
312
+ <div className='manual-form-error'>{errorMessage}</div>
314
313
  </div>
315
314
  </OverlayTrigger>
316
315
  </Form.Group>
@@ -195,7 +195,8 @@ export const DateInput = ({
195
195
  }, 100)
196
196
  }
197
197
 
198
- const errorMessage = errors.menuRecurrences?.message || errors.menuRecurrences?.root?.message
198
+ const errorMessage =
199
+ errors.menuRecurrences?.message || errors.menuRecurrences?.root?.message
199
200
 
200
201
  return (
201
202
  <Form.Group>
@@ -284,9 +285,7 @@ export const DateInput = ({
284
285
  })}
285
286
  />
286
287
 
287
- <div className='manual-form-error'>
288
- {errorMessage}
289
- </div>
288
+ <div className='manual-form-error'>{errorMessage}</div>
290
289
  </div>
291
290
  </OverlayTrigger>
292
291
  </Form.Group>
@@ -3,9 +3,9 @@ import { Button } from 'react-bootstrap'
3
3
  import { VenueMap } from '@licklist/core/dist/DataMapper/Product/VenueMapDataMapper'
4
4
  import MediaService from '@licklist/plugins/dist/services/Media/MediaService'
5
5
  import { PointProduct } from '@licklist/core/dist/DataMapper/Product/PointProductDataMapper'
6
+ import { Product } from '@licklist/core/dist/DataMapper/Product/ProductDataMapper'
6
7
  import { FullscreenModal } from '../../modals/fullscreen'
7
8
  import { EventVenueMap } from '../../events/event-venue-map'
8
- import { Product } from '../types'
9
9
 
10
10
  type VenueMapsControlProps = {
11
11
  venueMaps?: VenueMap[]
@@ -145,10 +145,14 @@ export const AdminSettingForm = ({
145
145
  ) && (
146
146
  <>
147
147
  {t('noCountryIsProvided')}
148
+ {/* TODO fix issue react router types
149
+ @ts-expect-error */}
148
150
  <Link
149
151
  role='button'
150
152
  to={`/provider/${providerMetadata?.providerType}/${providerMetadata?.providableId}/update`}
151
153
  >
154
+ {/* TODO fix issue react router types
155
+ @ts-expect-error */}
152
156
  {t('here')}
153
157
  </Link>
154
158
  </>
@@ -24,6 +24,8 @@ export function SnippetTemplateCard({
24
24
  return (
25
25
  <div className='snippet-template-card'>
26
26
  <div className='snippet-template-card-header'>
27
+ {/* TODO fix issue react router types
28
+ @ts-expect-error */}
27
29
  <Link to={href}>{name}</Link>
28
30
  {hasPermission && !isDefault && (
29
31
  <button
@@ -29,7 +29,6 @@ import {
29
29
  import { NumberInput } from '../../../iframe/order-process/components/CategoryProduct/components/NumberInput'
30
30
  import { SnippetTemplateContext } from '../context/snippetTemplate'
31
31
 
32
-
33
32
  const DEFAULT_IMAGE =
34
33
  'https://images.unsplash.com/photo-1638988319382-90e61be77c59?ixlib=rb-1.2.1&auto=format&fit=crop&w=687&q=80'
35
34
 
@@ -58,7 +57,7 @@ export function Preview({
58
57
 
59
58
  const [currentDate, setCurrentDate] = useState<DateTime>(defaultStartDay)
60
59
  const [selectedDate, setSelectedDate] = useState<DateTime | null>(null)
61
- const calendarDates = getMonthCalendarDates(currentDate)
60
+ const calendarDates = getMonthCalendarDates({ initialDate: currentDate })
62
61
 
63
62
  return (
64
63
  <div className='w-100 h-100 snippet-template-preview'>
@@ -58,7 +58,7 @@ export const stringDatesToInputValue = ({
58
58
  )} - ${DateTime.fromJSDate(nextEndDate).toFormat(INPUT_DATE_FORMAT)}`
59
59
  }
60
60
 
61
- export const getDateParams = (date: Date) => {
61
+ export const getDateParams = (date: Date): [number, number, number] => {
62
62
  const year = date.getFullYear()
63
63
  const month = date.getMonth() + 1
64
64
  const monthDate = date.getDate()
@@ -0,0 +1,16 @@
1
+ import clsx from 'clsx'
2
+ import { LoaderIndicator, LoaderIndicatorProps } from './LoaderIndicator'
3
+
4
+ interface FullScreenLoaderProps {
5
+ containerClassName?: string
6
+ indicatorProps?: LoaderIndicatorProps
7
+ }
8
+
9
+ export const FullScreenLoader = ({
10
+ containerClassName,
11
+ indicatorProps,
12
+ }: FullScreenLoaderProps) => (
13
+ <div className={clsx('fullscreen-loader', containerClassName)}>
14
+ <LoaderIndicator {...indicatorProps} />
15
+ </div>
16
+ )
@@ -1,16 +1,17 @@
1
1
  /* eslint-disable react/jsx-pascal-case */
2
- import { ReactNode } from 'react'
2
+ import { PropsWithChildren } from 'react'
3
3
  import * as ReactLoader from 'react-loader'
4
4
  import ILoaderOptions from '../../types/static/ILoaderOptions'
5
5
 
6
6
  export interface LoaderIndicatorProps {
7
- children?: ReactNode | ReactNode[]
8
7
  isLoaded?: boolean
9
8
  options?: ILoaderOptions
10
9
  className?: string
11
10
  }
12
11
 
13
- export function LoaderIndicator(props: LoaderIndicatorProps) {
12
+ export function LoaderIndicator(
13
+ props: PropsWithChildren<LoaderIndicatorProps>,
14
+ ) {
14
15
  const { children, isLoaded, options, className = '' } = props
15
16
 
16
17
  const defaultOptions: ILoaderOptions = {
@@ -37,6 +38,8 @@ export function LoaderIndicator(props: LoaderIndicatorProps) {
37
38
  } as ILoaderOptions
38
39
 
39
40
  return (
41
+ // TODO Remove this library, it's deprecated and even removed from npm packages
42
+ // @ts-expect-error
40
43
  <ReactLoader.default
41
44
  loaded={isLoaded!}
42
45
  options={mergedOptions}
@@ -5,3 +5,4 @@ export { ButtonLoader } from './ButtonLoader'
5
5
  export { SnippetLoader } from './SnippetLoader'
6
6
  export { PaymentLoader } from './PaymentLoader'
7
7
  export type { PaymentLoaderProps } from './PaymentLoader'
8
+ export { FullScreenLoader } from './FullScreenLoader'
@@ -4,8 +4,7 @@
4
4
  align-items: center;
5
5
  gap: 0.5rem;
6
6
  font-weight: 300;
7
- max-width: 100%;
8
-
7
+ width: 100%;
9
8
 
10
9
  .indicator-label {
11
10
  text-overflow: ellipsis;
@@ -25,8 +24,6 @@
25
24
  }
26
25
  }
27
26
 
28
-
29
-
30
27
  .activity-card {
31
28
  .availability-indicator {
32
29
  margin-top: 0.5rem;
@@ -180,7 +180,7 @@
180
180
  .form-disable-box {
181
181
  top: 20rem;
182
182
  }
183
- }
183
+ }
184
184
  }
185
185
 
186
186
  @include media-breakpoint-up(md) {
@@ -27,6 +27,15 @@
27
27
  }
28
28
  }
29
29
 
30
+ .fullscreen-loader {
31
+ width: 100vw;
32
+ height: 100vh;
33
+ position: fixed;
34
+ z-index: 5000;
35
+ top: 0;
36
+ left: 0;
37
+ }
38
+
30
39
  .payment-loader {
31
40
  position: absolute;
32
41
  top: 50%;