@redneckz/wildless-cms-uni-blocks 0.14.918 → 0.14.920

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 (132) hide show
  1. package/bundle/bundle.umd.js +269 -215
  2. package/bundle/bundle.umd.min.js +1 -1
  3. package/bundle/retail/hooks/useIFrameMode.d.ts +4 -0
  4. package/bundle/utils/isIFrame.d.ts +1 -0
  5. package/dist/components/ApplicationLeadForm/ApplicationLeadForm.js +2 -0
  6. package/dist/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  7. package/dist/components/ApplicationLeadForm/EsiaLoginBanner.js +8 -3
  8. package/dist/components/ApplicationLeadForm/EsiaLoginBanner.js.map +1 -1
  9. package/dist/components/ContentPage/ContentPage.js +5 -2
  10. package/dist/components/ContentPage/ContentPage.js.map +1 -1
  11. package/dist/components/CreditCardForm/CreditCardFormStep.js +2 -0
  12. package/dist/components/CreditCardForm/CreditCardFormStep.js.map +1 -1
  13. package/dist/components/CreditForm/CreditFormStep.js +2 -0
  14. package/dist/components/CreditForm/CreditFormStep.js.map +1 -1
  15. package/dist/components/DebitForm/DebitFormStep.js +2 -0
  16. package/dist/components/DebitForm/DebitFormStep.js.map +1 -1
  17. package/dist/retail/hooks/useIFrameMode.d.ts +4 -0
  18. package/dist/retail/hooks/useIFrameMode.js +39 -0
  19. package/dist/retail/hooks/useIFrameMode.js.map +1 -0
  20. package/dist/ui-kit/DatePicker/DatePickerInput.js +1 -1
  21. package/dist/ui-kit/DatePicker/DatePickerInput.js.map +1 -1
  22. package/dist/ui-kit/SearchDialog/SearchDialog.js +1 -1
  23. package/dist/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
  24. package/dist/ui-kit/TabsControl/TabItemInner.js +1 -1
  25. package/dist/ui-kit/TabsControl/TabItemInner.js.map +1 -1
  26. package/dist/utils/isIFrame.d.ts +1 -0
  27. package/dist/utils/isIFrame.js +5 -0
  28. package/dist/utils/isIFrame.js.map +1 -0
  29. package/lib/common.css +1 -1
  30. package/lib/components/ApplicationLeadForm/ApplicationLeadForm.js +2 -0
  31. package/lib/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  32. package/lib/components/ApplicationLeadForm/EsiaLoginBanner.js +8 -3
  33. package/lib/components/ApplicationLeadForm/EsiaLoginBanner.js.map +1 -1
  34. package/lib/components/ContentPage/ContentPage.js +5 -2
  35. package/lib/components/ContentPage/ContentPage.js.map +1 -1
  36. package/lib/components/CreditCardForm/CreditCardFormStep.js +2 -0
  37. package/lib/components/CreditCardForm/CreditCardFormStep.js.map +1 -1
  38. package/lib/components/CreditForm/CreditFormStep.js +2 -0
  39. package/lib/components/CreditForm/CreditFormStep.js.map +1 -1
  40. package/lib/components/DebitForm/DebitFormStep.js +2 -0
  41. package/lib/components/DebitForm/DebitFormStep.js.map +1 -1
  42. package/lib/retail/hooks/useIFrameMode.d.ts +4 -0
  43. package/lib/retail/hooks/useIFrameMode.js +36 -0
  44. package/lib/retail/hooks/useIFrameMode.js.map +1 -0
  45. package/lib/ui-kit/DatePicker/DatePickerInput.js +1 -1
  46. package/lib/ui-kit/DatePicker/DatePickerInput.js.map +1 -1
  47. package/lib/ui-kit/SearchDialog/SearchDialog.js +1 -1
  48. package/lib/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
  49. package/lib/ui-kit/TabsControl/TabItemInner.js +1 -1
  50. package/lib/ui-kit/TabsControl/TabItemInner.js.map +1 -1
  51. package/lib/utils/isIFrame.d.ts +1 -0
  52. package/lib/utils/isIFrame.js +2 -0
  53. package/lib/utils/isIFrame.js.map +1 -0
  54. package/mobile/bundle/bundle.umd.js +268 -214
  55. package/mobile/bundle/bundle.umd.min.js +1 -1
  56. package/mobile/bundle/retail/hooks/useIFrameMode.d.ts +4 -0
  57. package/mobile/bundle/utils/isIFrame.d.ts +1 -0
  58. package/mobile/dist/components/ApplicationLeadForm/ApplicationLeadForm.js +2 -0
  59. package/mobile/dist/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  60. package/mobile/dist/components/ApplicationLeadForm/EsiaLoginBanner.js +8 -3
  61. package/mobile/dist/components/ApplicationLeadForm/EsiaLoginBanner.js.map +1 -1
  62. package/mobile/dist/components/ContentPage/ContentPage.js +5 -2
  63. package/mobile/dist/components/ContentPage/ContentPage.js.map +1 -1
  64. package/mobile/dist/components/CreditCardForm/CreditCardFormStep.js +2 -0
  65. package/mobile/dist/components/CreditCardForm/CreditCardFormStep.js.map +1 -1
  66. package/mobile/dist/components/CreditForm/CreditFormStep.js +2 -0
  67. package/mobile/dist/components/CreditForm/CreditFormStep.js.map +1 -1
  68. package/mobile/dist/components/DebitForm/DebitFormStep.js +2 -0
  69. package/mobile/dist/components/DebitForm/DebitFormStep.js.map +1 -1
  70. package/mobile/dist/retail/hooks/useIFrameMode.d.ts +4 -0
  71. package/mobile/dist/retail/hooks/useIFrameMode.js +39 -0
  72. package/mobile/dist/retail/hooks/useIFrameMode.js.map +1 -0
  73. package/mobile/dist/ui-kit/DatePicker/DatePickerInput.js +1 -1
  74. package/mobile/dist/ui-kit/DatePicker/DatePickerInput.js.map +1 -1
  75. package/mobile/dist/ui-kit/SearchDialog/SearchDialog.js +1 -1
  76. package/mobile/dist/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
  77. package/mobile/dist/ui-kit/TabsControl/TabItemInner.js +1 -1
  78. package/mobile/dist/ui-kit/TabsControl/TabItemInner.js.map +1 -1
  79. package/mobile/dist/utils/isIFrame.d.ts +1 -0
  80. package/mobile/dist/utils/isIFrame.js +5 -0
  81. package/mobile/dist/utils/isIFrame.js.map +1 -0
  82. package/mobile/lib/common.css +1 -1
  83. package/mobile/lib/components/ApplicationLeadForm/ApplicationLeadForm.js +2 -0
  84. package/mobile/lib/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  85. package/mobile/lib/components/ApplicationLeadForm/EsiaLoginBanner.js +8 -3
  86. package/mobile/lib/components/ApplicationLeadForm/EsiaLoginBanner.js.map +1 -1
  87. package/mobile/lib/components/ContentPage/ContentPage.js +5 -2
  88. package/mobile/lib/components/ContentPage/ContentPage.js.map +1 -1
  89. package/mobile/lib/components/CreditCardForm/CreditCardFormStep.js +2 -0
  90. package/mobile/lib/components/CreditCardForm/CreditCardFormStep.js.map +1 -1
  91. package/mobile/lib/components/CreditForm/CreditFormStep.js +2 -0
  92. package/mobile/lib/components/CreditForm/CreditFormStep.js.map +1 -1
  93. package/mobile/lib/components/DebitForm/DebitFormStep.js +2 -0
  94. package/mobile/lib/components/DebitForm/DebitFormStep.js.map +1 -1
  95. package/mobile/lib/retail/hooks/useIFrameMode.d.ts +4 -0
  96. package/mobile/lib/retail/hooks/useIFrameMode.js +36 -0
  97. package/mobile/lib/retail/hooks/useIFrameMode.js.map +1 -0
  98. package/mobile/lib/ui-kit/DatePicker/DatePickerInput.js +1 -1
  99. package/mobile/lib/ui-kit/DatePicker/DatePickerInput.js.map +1 -1
  100. package/mobile/lib/ui-kit/SearchDialog/SearchDialog.js +1 -1
  101. package/mobile/lib/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
  102. package/mobile/lib/ui-kit/TabsControl/TabItemInner.js +1 -1
  103. package/mobile/lib/ui-kit/TabsControl/TabItemInner.js.map +1 -1
  104. package/mobile/lib/utils/isIFrame.d.ts +1 -0
  105. package/mobile/lib/utils/isIFrame.js +2 -0
  106. package/mobile/lib/utils/isIFrame.js.map +1 -0
  107. package/mobile/src/common.css +3 -0
  108. package/mobile/src/components/ApplicationLeadForm/ApplicationLeadForm.tsx +2 -1
  109. package/mobile/src/components/ApplicationLeadForm/EsiaLoginBanner.tsx +9 -4
  110. package/mobile/src/components/ContentPage/ContentPage.tsx +6 -4
  111. package/mobile/src/components/CreditCardForm/CreditCardFormStep.tsx +2 -0
  112. package/mobile/src/components/CreditForm/CreditFormStep.tsx +2 -0
  113. package/mobile/src/components/DebitForm/DebitFormStep.tsx +2 -0
  114. package/mobile/src/retail/hooks/useIFrameMode.ts +45 -0
  115. package/mobile/src/ui-kit/DatePicker/DatePickerInput.tsx +1 -1
  116. package/mobile/src/ui-kit/SearchDialog/SearchDialog.tsx +1 -1
  117. package/mobile/src/ui-kit/TabsControl/TabItemInner.tsx +1 -0
  118. package/mobile/src/utils/isIFrame.ts +1 -0
  119. package/package.json +1 -1
  120. package/src/common.css +3 -0
  121. package/src/components/ApplicationLeadForm/ApplicationLeadForm.tsx +2 -1
  122. package/src/components/ApplicationLeadForm/EsiaLoginBanner.tsx +9 -4
  123. package/src/components/ContentPage/ContentPage.tsx +6 -4
  124. package/src/components/CreditCardForm/CreditCardFormStep.tsx +2 -0
  125. package/src/components/CreditForm/CreditFormStep.tsx +2 -0
  126. package/src/components/DebitForm/DebitFormStep.tsx +2 -0
  127. package/src/retail/hooks/useIFrameMode.ts +45 -0
  128. package/src/ui-kit/DatePicker/DatePickerInput.tsx +1 -1
  129. package/src/ui-kit/SearchDialog/SearchDialog.tsx +1 -1
  130. package/src/ui-kit/TabsControl/TabItemInner.tsx +1 -0
  131. package/src/utils/isIFrame.ts +1 -0
  132. package/tailwind.config.cjs +3 -0
package/src/common.css CHANGED
@@ -19,6 +19,9 @@ html {
19
19
  --color-gradient-from: 141, 189, 76;
20
20
  --color-gradient-to: 69, 172, 69;
21
21
  --color-primary-divider: 235, 237, 240;
22
+ --border-radius-md: 0.375rem;
23
+ --border-radius-lg: 0.5rem;
24
+ --border-radius-none: 0rem;
22
25
  }
23
26
 
24
27
  /* Private clients | Green */
@@ -3,6 +3,7 @@ import { JSX } from '@redneckz/uni-jsx';
3
3
  import { useEffect, useMemo, useRef, useState } from '@redneckz/uni-jsx/lib/hooks';
4
4
  import { useForm } from '../../hooks/useForm/useForm';
5
5
  import { NoConsentDialog } from '../../retail/components/NoConsentDialog/NoConsentDialog';
6
+ import { useIFrameMode } from '../../retail/hooks/useIFrameMode';
6
7
  import { type SectionsRetailProps } from '../../retail/model/InputSectionsType';
7
8
  import { type FieldRetailDef } from '../../retail/model/RetailFormContent';
8
9
  import { getLimitedBirthdayValidation } from '../../retail/validator/getLimitedBirthdayValidation';
@@ -49,7 +50,7 @@ export const ApplicationLeadForm = JSX<ApplicationLeadFormProps>(
49
50
  const applicationFormData = useMemo(() => getApplicationFormData(productType), [productType]);
50
51
  const inputs = useMemo(() => getInputs(applicationFormData), [applicationFormData]);
51
52
  const noConsentDialog = useDialog(NoConsentDialog);
52
-
53
+ useIFrameMode();
53
54
  const extendedValidatorObj = useMemo(() => getExtendedValidatorObj(productType), [productType]);
54
55
  const formValidator = useMemo(
55
56
  () => getFormValidator(inputs, extendedValidatorObj),
@@ -1,7 +1,9 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
2
  import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { useSessionStore } from '@redneckz/uni-jsx/lib/Store/useSessionStore';
3
4
  import { locationNavigator } from '../../external/locationNavigator';
4
5
  import { getLink } from '../../retail/api/getLink';
6
+ import { type IFrameStore } from '../../retail/hooks/useIFrameMode';
5
7
  import { Button } from '../../ui-kit/Button/Button';
6
8
  import { Img } from '../../ui-kit/Img/Img';
7
9
  import { EsiaStatuses, type ProductType } from './ApplicationLeadFormContent';
@@ -13,20 +15,23 @@ export interface EsiaLoginBannerProps {
13
15
 
14
16
  export const EsiaLoginBanner = JSX<EsiaLoginBannerProps>(({ onChangeEsiaStatus, productType }) => {
15
17
  const navigator = locationNavigator();
18
+ const sessionStore = useSessionStore<IFrameStore>();
19
+ const frameLocation = sessionStore.frameLocation;
16
20
 
17
21
  const handleAuth = useCallback(async () => {
18
22
  try {
19
23
  const resp = await getLink({
20
- redirectUri: globalThis.location.origin + globalThis.location.pathname,
24
+ redirectUri: frameLocation || globalThis.location.origin + globalThis.location.pathname,
21
25
  });
22
-
23
26
  if (resp?.link) {
24
- navigator.assign(resp.link);
27
+ frameLocation
28
+ ? window.parent.postMessage({ redirectUri: resp?.link }, '*')
29
+ : navigator.assign(resp.link);
25
30
  }
26
31
  } catch {
27
32
  onChangeEsiaStatus(EsiaStatuses.Error);
28
33
  }
29
- }, []);
34
+ }, [frameLocation]);
30
35
 
31
36
  return (
32
37
  <div className="flex items-center rounded-md bg-main-gray p-4xl">
@@ -13,6 +13,7 @@ import { CookiePopup } from '../../ui-kit/CookiePopup/CookiePopup';
13
13
  import { DialogManager } from '../../ui-kit/DialogManager/DialogManager';
14
14
  import { PopupManager } from '../../ui-kit/PopupManager/PopupManager';
15
15
  import { type UniBlockMeta } from '../../UniBlock/UniBlock';
16
+ import { isIFrame } from '../../utils/isIFrame';
16
17
  import { style } from '../../utils/style';
17
18
 
18
19
  interface ContentPageProps extends ComponentType {
@@ -30,7 +31,7 @@ export const ContentPage = JSX<ContentPageProps>(
30
31
  ({ className, data = EMPTY_DATA, blocksRegistry, blockDecorator }) => {
31
32
  const { slots, blocks, fallback, ...pageContent } = data;
32
33
  const resolvedPageContent = useJSONRef(pageContent, fallback);
33
-
34
+ const isFrame = isIFrame();
34
35
  useClickHandler();
35
36
  useDefaultLocation();
36
37
 
@@ -45,7 +46,7 @@ export const ContentPage = JSX<ContentPageProps>(
45
46
  return (
46
47
  <div data-theme={data.colorPalette || 'pc'}>
47
48
  <section className={style('@container relative', data.style, className)}>
48
- {slots?.[HEADER_SLOT]?.length ? (
49
+ {!isFrame && slots?.[HEADER_SLOT]?.length ? (
49
50
  <div className="relative z-10 mb-lg shadow-[0_8px_32px_0px_#00000014]">
50
51
  {renderBlocksList(slots?.[HEADER_SLOT], { ...options, slotName: HEADER_SLOT })}
51
52
  </div>
@@ -56,10 +57,11 @@ export const ContentPage = JSX<ContentPageProps>(
56
57
  options,
57
58
  extraProps: { className: 'scroll-mt-12' },
58
59
  })}
59
- {renderBlocksList(slots?.[FOOTER_SLOT], { ...options, slotName: FOOTER_SLOT })}
60
+ {!isFrame &&
61
+ renderBlocksList(slots?.[FOOTER_SLOT], { ...options, slotName: FOOTER_SLOT })}
60
62
  </div>
61
63
  </section>
62
- {slots?.[STICKY_FOOTER_SLOT]?.length ? (
64
+ {!isFrame && slots?.[STICKY_FOOTER_SLOT]?.length ? (
63
65
  <div className="fixed w-full bottom-0 left-0 z-[100]">
64
66
  {renderBlocksList(slots?.[STICKY_FOOTER_SLOT], {
65
67
  ...options,
@@ -1,6 +1,7 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
2
  import { useCallback, useMemo } from '@redneckz/uni-jsx/lib/hooks';
3
3
  import { useForm } from '../../hooks/useForm/useForm';
4
+ import { useIFrameMode } from '../../retail/hooks/useIFrameMode';
4
5
  import { type SectionsRetailProps } from '../../retail/model/InputSectionsType';
5
6
  import { type LeadFormState } from '../../retail/model/LeadFormState';
6
7
  import { renderStep } from '../../retail/utils/renderStep';
@@ -20,6 +21,7 @@ const PRODUCT_TYPE = 'creditCard';
20
21
 
21
22
  export const CreditCardFormStep = JSX<CreditCardFormStepProps>(
22
23
  ({ step, sections, onPrevStep, onNextStep, onFinish }) => {
24
+ useIFrameMode();
23
25
  const inputs = useMemo(
24
26
  () => sections?.flatMap((_: SectionsRetailProps) => _?.inputs || []),
25
27
  [sections],
@@ -1,6 +1,7 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
2
  import { useCallback, useMemo } from '@redneckz/uni-jsx/lib/hooks';
3
3
  import { useForm } from '../../hooks/useForm/useForm';
4
+ import { useIFrameMode } from '../../retail/hooks/useIFrameMode';
4
5
  import { useRetailFormStore } from '../../retail/hooks/useRetailFormStore';
5
6
  import { type SectionsRetailProps } from '../../retail/model/InputSectionsType';
6
7
  import { type LeadFormState } from '../../retail/model/LeadFormState';
@@ -24,6 +25,7 @@ const PRODUCT_TYPE = 'credit';
24
25
  export const CreditFormStep = JSX<CreditFormStepProps>(
25
26
  ({ step, sections, programsSource, onPrevStep, onNextStep, onFinish }) => {
26
27
  const { programId } = useRetailFormStore();
28
+ useIFrameMode();
27
29
  const calcData = programsSource?.[programId ?? '']; // Need normalizator useForm, to be save defaultParams
28
30
 
29
31
  const inputs = useMemo(
@@ -1,6 +1,7 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
2
  import { useCallback, useMemo } from '@redneckz/uni-jsx/lib/hooks';
3
3
  import { useForm } from '../../hooks/useForm/useForm';
4
+ import { useIFrameMode } from '../../retail/hooks/useIFrameMode';
4
5
  import { type SectionsRetailProps } from '../../retail/model/InputSectionsType';
5
6
  import type { LeadFormState } from '../../retail/model/LeadFormState';
6
7
  import { renderStep } from '../../retail/utils/renderStep';
@@ -20,6 +21,7 @@ const PRODUCT_TYPE = 'debitCard';
20
21
 
21
22
  export const DebitFormStep = JSX<DebitFormStepProps>(
22
23
  ({ step, sections, onPrevStep, onNextStep, onFinish }) => {
24
+ useIFrameMode();
23
25
  const inputs = useMemo(
24
26
  () => sections?.flatMap((_: SectionsRetailProps) => _?.inputs ?? []),
25
27
  [sections],
@@ -0,0 +1,45 @@
1
+ import { useEffect } from '@redneckz/uni-jsx/lib/hooks';
2
+ import { useSessionStore } from '@redneckz/uni-jsx/lib/Store/useSessionStore';
3
+ import { initializeExternalStylesheet } from '../../hooks/useExternalNS';
4
+ import { isIFrame } from '../../utils/isIFrame';
5
+
6
+ export type IFrameStore = {
7
+ frameLocation: string;
8
+ };
9
+
10
+ export const useIFrameMode = () => {
11
+ const isFrame = isIFrame();
12
+ const height = globalThis.document?.body?.scrollHeight;
13
+ const sessionStore = useSessionStore<IFrameStore>();
14
+ const params = new URLSearchParams(decodeURIComponent(globalThis.location?.search));
15
+
16
+ const styles = params.get('styles');
17
+ if (styles) {
18
+ initializeExternalStylesheet(styles);
19
+ }
20
+
21
+ useEffect(() => {
22
+ if (isFrame) {
23
+ globalThis.parent.postMessage({ height: document.body.scrollHeight }, '*');
24
+ }
25
+ }, [height, isFrame]);
26
+
27
+ useEffect(() => {
28
+ const handlePostMessage = (event: MessageEvent<{ location: string }>) => {
29
+ if (!event.data?.location) {
30
+ return;
31
+ }
32
+
33
+ sessionStore.frameLocation = event.data?.location;
34
+ };
35
+ if (isFrame) {
36
+ globalThis.addEventListener('message', handlePostMessage);
37
+ }
38
+
39
+ return () => {
40
+ if (isFrame) {
41
+ globalThis.removeEventListener('message', handlePostMessage);
42
+ }
43
+ };
44
+ }, [isFrame]);
45
+ };
@@ -70,7 +70,7 @@ export const DatePickerInput = JSX<DatePickerInputProps>(
70
70
  <div onClick={onInputClick} className={style('relative', className)}>
71
71
  <input
72
72
  ref={ref}
73
- className="h-full w-full px-m text-l text-black focus-visible:outline-none"
73
+ className="h-full w-full px-m text-l text-black focus-visible:outline-none rounded-none"
74
74
  value={inputValue}
75
75
  type="text"
76
76
  onChange={handleChange}
@@ -43,7 +43,7 @@ export const SearchDialog = JSX<SearchDialogProps>(({ initialQuery, navigationIt
43
43
  head={<SearchInput className="mt-s" autoFocus={true} {...searchInputProps} />}
44
44
  onClose={onClose}
45
45
  >
46
- <Sitemap navigationItems={searchItems} />
46
+ <Sitemap navigationItems={searchItems} isSearchPanel={true} />
47
47
  </Dialog>
48
48
  );
49
49
  });
@@ -50,6 +50,7 @@ export const TabItemInner = JSX<TabItemInnerProps>(
50
50
  'h-12',
51
51
  'block flex-1',
52
52
  'cursor-pointer',
53
+ 'rounded-none',
53
54
  tabPaddingStyleMap[type],
54
55
  isActive ? activeTabBgStyleMap[type] : tabBgStyleMap[type],
55
56
  )}
@@ -0,0 +1 @@
1
+ export const isIFrame = () => globalThis.location !== globalThis?.top?.location;
@@ -266,6 +266,9 @@ module.exports = {
266
266
  },
267
267
  borderRadius: {
268
268
  icon: '50%',
269
+ md: 'var(--border-radius-md)',
270
+ lg: 'var(--border-radius-lg)',
271
+ none: 'var(--border-radius-none)',
269
272
  },
270
273
  },
271
274
  },