@redneckz/wildless-cms-uni-blocks 0.3.37 → 0.3.38

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 (79) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +21 -2
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/dist/components/BlockContent.d.ts +2 -1
  5. package/dist/components/Blocks.d.ts +1 -0
  6. package/dist/components/Blocks.js +2 -0
  7. package/dist/components/Blocks.js.map +1 -1
  8. package/dist/components/GracePeriod/GracePeriod.d.ts +5 -0
  9. package/dist/components/GracePeriod/GracePeriod.js +21 -0
  10. package/dist/components/GracePeriod/GracePeriod.js.map +1 -0
  11. package/dist/components/GracePeriod/GracePeriodContent.d.ts +25 -0
  12. package/dist/components/GracePeriod/GracePeriodContent.js +2 -0
  13. package/dist/components/GracePeriod/GracePeriodContent.js.map +1 -0
  14. package/dist/components/Header/HeaderSubMenu.js +4 -0
  15. package/dist/components/Header/HeaderSubMenu.js.map +1 -1
  16. package/dist/components/MobileAppTile/MobileAppTile.js +1 -2
  17. package/dist/components/MobileAppTile/MobileAppTile.js.map +1 -1
  18. package/dist/ui-kit/Button/ButtonInner.js +1 -1
  19. package/dist/ui-kit/Button/ButtonInner.js.map +1 -1
  20. package/lib/common.css +1 -1
  21. package/lib/components/BlockContent.d.ts +2 -1
  22. package/lib/components/Blocks.d.ts +1 -0
  23. package/lib/components/Blocks.js +2 -0
  24. package/lib/components/Blocks.js.map +1 -1
  25. package/lib/components/GracePeriod/GracePeriod.d.ts +5 -0
  26. package/lib/components/GracePeriod/GracePeriod.fixture.d.ts +6 -0
  27. package/lib/components/GracePeriod/GracePeriod.js +19 -0
  28. package/lib/components/GracePeriod/GracePeriod.js.map +1 -0
  29. package/lib/components/GracePeriod/GracePeriodContent.d.ts +25 -0
  30. package/lib/components/GracePeriod/GracePeriodContent.js +2 -0
  31. package/lib/components/GracePeriod/GracePeriodContent.js.map +1 -0
  32. package/lib/components/Header/HeaderSubMenu.js +4 -0
  33. package/lib/components/Header/HeaderSubMenu.js.map +1 -1
  34. package/lib/components/MobileAppTile/MobileAppTile.js +1 -2
  35. package/lib/components/MobileAppTile/MobileAppTile.js.map +1 -1
  36. package/lib/ui-kit/Button/ButtonInner.js +1 -1
  37. package/lib/ui-kit/Button/ButtonInner.js.map +1 -1
  38. package/mobile/bundle/bundle.umd.js +1 -1
  39. package/mobile/bundle/bundle.umd.min.js +1 -1
  40. package/mobile/dist/components/BlockContent.d.ts +2 -1
  41. package/mobile/dist/components/GracePeriod/GracePeriod.d.ts +5 -0
  42. package/mobile/dist/components/GracePeriod/GracePeriod.js +21 -0
  43. package/mobile/dist/components/GracePeriod/GracePeriod.js.map +1 -0
  44. package/mobile/dist/components/GracePeriod/GracePeriodContent.d.ts +25 -0
  45. package/mobile/dist/components/GracePeriod/GracePeriodContent.js +2 -0
  46. package/mobile/dist/components/GracePeriod/GracePeriodContent.js.map +1 -0
  47. package/mobile/dist/components/Header/HeaderSubMenu.js +4 -0
  48. package/mobile/dist/components/Header/HeaderSubMenu.js.map +1 -1
  49. package/mobile/dist/ui-kit/Button/ButtonInner.js +1 -1
  50. package/mobile/dist/ui-kit/Button/ButtonInner.js.map +1 -1
  51. package/mobile/lib/components/BlockContent.d.ts +2 -1
  52. package/mobile/lib/components/GracePeriod/GracePeriod.d.ts +5 -0
  53. package/mobile/lib/components/GracePeriod/GracePeriod.js +19 -0
  54. package/mobile/lib/components/GracePeriod/GracePeriod.js.map +1 -0
  55. package/mobile/lib/components/GracePeriod/GracePeriodContent.d.ts +25 -0
  56. package/mobile/lib/components/GracePeriod/GracePeriodContent.js +2 -0
  57. package/mobile/lib/components/GracePeriod/GracePeriodContent.js.map +1 -0
  58. package/mobile/lib/components/Header/HeaderSubMenu.js +4 -0
  59. package/mobile/lib/components/Header/HeaderSubMenu.js.map +1 -1
  60. package/mobile/lib/ui-kit/Button/ButtonInner.js +1 -1
  61. package/mobile/lib/ui-kit/Button/ButtonInner.js.map +1 -1
  62. package/mobile/src/components/BlockContent.ts +2 -0
  63. package/mobile/src/components/ContentPage/ContentPage.page.json +94 -0
  64. package/mobile/src/components/GracePeriod/GracePeriod.example.json +90 -0
  65. package/mobile/src/components/GracePeriod/GracePeriod.tsx +70 -0
  66. package/mobile/src/components/GracePeriod/GracePeriodContent.ts +27 -0
  67. package/mobile/src/components/Header/HeaderSubMenu.tsx +5 -0
  68. package/mobile/src/ui-kit/Button/ButtonInner.tsx +1 -1
  69. package/package.json +1 -1
  70. package/src/components/BlockContent.ts +2 -0
  71. package/src/components/Blocks.ts +2 -0
  72. package/src/components/ContentPage/ContentPage.page.json +94 -0
  73. package/src/components/GracePeriod/GracePeriod.example.json +90 -0
  74. package/src/components/GracePeriod/GracePeriod.fixture.tsx +109 -0
  75. package/src/components/GracePeriod/GracePeriod.tsx +70 -0
  76. package/src/components/GracePeriod/GracePeriodContent.ts +27 -0
  77. package/src/components/Header/HeaderSubMenu.tsx +5 -0
  78. package/src/components/MobileAppTile/MobileAppTile.tsx +4 -5
  79. package/src/ui-kit/Button/ButtonInner.tsx +1 -1
@@ -0,0 +1,109 @@
1
+ import { context } from '../../setup-fixture';
2
+
3
+ import type { Picture } from '../../model/Picture';
4
+ import { GracePeriod } from './GracePeriod';
5
+ import type { GracePeriodContent } from './GracePeriodContent';
6
+
7
+ const august: Picture = {
8
+ src: 'calendar/august.png',
9
+ format: 'webp',
10
+ size: {
11
+ width: 210,
12
+ },
13
+ alt: 'Пример использования «Карты для покупок в рассрочку»',
14
+ };
15
+
16
+ const september: Picture = {
17
+ src: 'calendar/september.png',
18
+ format: 'webp',
19
+ size: {
20
+ width: 210,
21
+ },
22
+ alt: 'Пример использования «Карты для покупок в рассрочку»',
23
+ };
24
+
25
+ const october: Picture = {
26
+ src: 'calendar/october.png',
27
+ format: 'webp',
28
+ size: {
29
+ width: 210,
30
+ },
31
+ alt: 'Пример использования «Карты для покупок в рассрочку»',
32
+ };
33
+
34
+ const november: Picture = {
35
+ src: 'calendar/november.png',
36
+ format: 'webp',
37
+ size: {
38
+ width: 210,
39
+ },
40
+ alt: 'Пример использования «Карты для покупок в рассрочку»',
41
+ };
42
+
43
+ const december: Picture = {
44
+ src: 'calendar/december.png',
45
+ format: 'webp',
46
+ size: {
47
+ width: 210,
48
+ },
49
+ alt: 'Пример использования «Карты для покупок в рассрочку»',
50
+ };
51
+
52
+ export const GRACE_PERIOD: GracePeriodContent = {
53
+ title: 'Пример использования «Карты для покупок в рассрочку»:',
54
+ description: 'Необязательное описание блока',
55
+ calendar: [
56
+ {
57
+ blackText: '1 декабря — беспроцентный период',
58
+ greenText: 'начинается с первого числа каждого месяца',
59
+ month: [
60
+ {
61
+ name: 'Август',
62
+ image: august,
63
+ },
64
+ ],
65
+ },
66
+ {
67
+ blackText: '25 сентября и 25 октября — обязательный платеж 25 числа следующих месяцев',
68
+ greenText: '(минимальный платеж, 3% от суммы задолженности)',
69
+ month: [
70
+ {
71
+ name: 'Сентябрь',
72
+ image: september,
73
+ },
74
+ {
75
+ name: 'Октябрь',
76
+ image: october,
77
+ },
78
+ ],
79
+ },
80
+ {
81
+ blackText: '25 ноября — последний день',
82
+ greenText: 'беспроцентного 3-х месячного периода',
83
+ month: [
84
+ {
85
+ name: 'Ноябрь',
86
+ image: november,
87
+ },
88
+ ],
89
+ },
90
+ {
91
+ blackText: '25 декабря — обязательный платеж в соответствии с тарифом',
92
+ greenText: '',
93
+ month: [
94
+ {
95
+ name: 'Декабрь',
96
+ image: december,
97
+ },
98
+ ],
99
+ },
100
+ ],
101
+ };
102
+
103
+ export default {
104
+ default: (
105
+ <div className="container grid grid-cols-12">
106
+ <GracePeriod className="col-span-12" context={context} {...GRACE_PERIOD} />
107
+ </div>
108
+ ),
109
+ };
@@ -0,0 +1,70 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import type { UniBlockProps } from '../../types';
3
+ import type { GracePeriodContent } from './GracePeriodContent';
4
+
5
+ import { Heading } from '../../ui-kit/Heading/Heading';
6
+ import { Img } from '../../ui-kit/Img/Img';
7
+
8
+ export interface GracePeriodProps extends GracePeriodContent, UniBlockProps {}
9
+
10
+ export const GracePeriod = JSX<GracePeriodProps>(
11
+ ({ className = '', title, description, calendar, anchor = null }) => {
12
+ return (
13
+ <section className={`bg-white p-16 pt-12 ${className}`} id={anchor}>
14
+ <Heading headingType="h2" className="text-center" title={title} />
15
+ <div className="font-light text-base-md text-center mt-3">{description}</div>
16
+ {renderCalendar(calendar)}
17
+ </section>
18
+ );
19
+ },
20
+ );
21
+
22
+ const renderCalendar = (calendar) => {
23
+ const colCount =
24
+ calendar.reduce((accumulator, currentValue) => accumulator + currentValue.month.length, 0) || 1;
25
+ const colSize = 100 / colCount;
26
+
27
+ const mappedCalendar = calendar.map((_) => ({
28
+ ..._,
29
+ flexBasis: `${_.month.length * colSize}%`,
30
+ }));
31
+
32
+ return (
33
+ <div className="w-full flex flex-col justify-center mt-14">
34
+ <div className="flex w-full mb-3 font-light text-m-title-md mb-3 text-center">
35
+ {mappedCalendar.map((_) => renderMonthNames(_, colSize))}
36
+ </div>
37
+ <div className="flex w-full">
38
+ {mappedCalendar.map((_, ind) => (
39
+ <div
40
+ key={`monthItem-${ind}`}
41
+ className="pr-3 mr-3 border-r border-r-gray/100 last:border-r-0 last:pr-0 last:mr-0"
42
+ style={{ flexBasis: _.flexBasis }}
43
+ >
44
+ <div className="flex">{renderMonthImages(_)}</div>
45
+ <div className="font-light text-sm text-primary-text mt-3">
46
+ <span>{_.blackText}</span>&thinsp;
47
+ <span className="text-primary-main">{_.greenText}</span>
48
+ </div>
49
+ </div>
50
+ ))}
51
+ </div>
52
+ </div>
53
+ );
54
+ };
55
+
56
+ const renderMonthNames = (item, colSize) =>
57
+ item.month.map((_) => (
58
+ <div key={`monthName-${_.name}`} style={{ flexBasis: `${colSize}%` }}>
59
+ {_.name}
60
+ </div>
61
+ ));
62
+ const renderMonthImages = (item) =>
63
+ item.month.map((_) => (
64
+ <div
65
+ key={`monthImage-${_.image.src}`}
66
+ className="max-h-[207px] border-r-[1px] pr-3 mr-3 border-r-gray/100 last:border-r-0 last:pr-0 last:mr-0"
67
+ >
68
+ <Img image={_.image} className="flex" />
69
+ </div>
70
+ ));
@@ -0,0 +1,27 @@
1
+ import type { HeadingContent } from '../../ui-kit/Heading/HeadingContent';
2
+ import type { Picture } from '../../model/Picture';
3
+
4
+ interface Month {
5
+ /** @title Название месяца */
6
+ name?: string;
7
+ /** @title Изображение календарного месяца */
8
+ image?: Picture;
9
+ }
10
+
11
+ interface CalendarItem {
12
+ month?: Month[];
13
+ /** @title Основной текст */
14
+ blackText?: string;
15
+ /** @title Вспомогательный текст */
16
+ greenText?: string;
17
+ }
18
+
19
+ /**
20
+ * @title Льготный период
21
+ */
22
+ export interface GracePeriodContent extends HeadingContent {
23
+ /** @title Описание */
24
+ description?: string;
25
+ /** @title Календарь */
26
+ calendar?: CalendarItem[];
27
+ }
@@ -4,6 +4,7 @@ import type { BgColorVersion } from '../../model/BgColorVersion';
4
4
  import type { LinkProps } from '../../model/LinkProps';
5
5
  import { findActiveSubItem } from '../../services/sitemap/findActiveSubItem';
6
6
  import { HeaderItem } from '../../ui-kit/HeaderItem/HeaderItem';
7
+ import { isSSR } from '../../utils/isSSR';
7
8
  import type { ContentPageContext } from '../ContentPage/ContentPageContext';
8
9
  import { headerSubMenuObserver } from './HeaderSubMenuObserver';
9
10
 
@@ -19,6 +20,10 @@ export const HeaderSubMenu = JSX<HeaderSubMenuProps>(({ context, subItems, bgCol
19
20
  const { handlerDecorator } = context;
20
21
 
21
22
  setTimeout(() => {
23
+ if (isSSR()) {
24
+ return;
25
+ }
26
+
22
27
  const headerSubMenu = globalThis.document.querySelectorAll('[data-item-name=header-submenu]');
23
28
  headerSubMenu.forEach((_) => {
24
29
  headerSubMenuObserver?.observe(_);
@@ -3,7 +3,6 @@ import type { UniBlockProps } from '../../types';
3
3
  import { ButtonSection } from '../../ui-kit/Button/ButtonSection';
4
4
  import { Heading } from '../../ui-kit/Heading/Heading';
5
5
  import { BaseTile } from '../BaseTile/BaseTile';
6
- import { getTileHeadingType } from '../BaseTile/getTileHeadingType';
7
6
  import { getTileMinHeight } from '../BaseTile/getTileMinHeight';
8
7
  import { getTileRightPadding } from '../BaseTile/getTileRightPadding';
9
8
  import type { MobileAppTileContent } from './MobileAppTileContent';
@@ -31,15 +30,15 @@ export const MobileAppTile = JSX<MobileAppTileProps>(
31
30
  title={
32
31
  title && (
33
32
  <Heading
34
- headingType={getTileHeadingType(className)}
33
+ headingType="h3"
35
34
  title={title}
36
- className={`whitespace-pre-wrap max-w-[600px] mb-7`}
35
+ className={`whitespace-pre-wrap max-w-[600px] mb-[30px]`}
37
36
  />
38
37
  )
39
38
  }
40
39
  buttons={
41
40
  buttons?.length ? (
42
- <ButtonSection context={context} buttons={buttons} className="flex mt-7 gap-4" />
41
+ <ButtonSection context={context} buttons={buttons} className="flex mt-[30px] gap-4" />
43
42
  ) : null
44
43
  }
45
44
  >
@@ -52,7 +51,7 @@ export const MobileAppTile = JSX<MobileAppTileProps>(
52
51
  title={title}
53
52
  width="164"
54
53
  height="164"
55
- className="w-[90px] h-[90px] min-w-[90px] min-h-[90px] bg-secondary-light"
54
+ className="w-[92px] h-[92px] min-w-[92px] min-h-[92px] bg-secondary-light"
56
55
  />
57
56
  </a>
58
57
  )}
@@ -14,7 +14,7 @@ export const ButtonInner = JSX<ButtonInnerProps>((props) => {
14
14
  {isWithText(props) ? (
15
15
  <div>
16
16
  <div className="text-m-2xs font-light text-left">{aboveText}</div>
17
- <div className="text-button-sm text-left">{text}</div>
17
+ <div className="text-button text-left">{text}</div>
18
18
  </div>
19
19
  ) : null}
20
20
  </div>