@redneckz/wildless-cms-uni-blocks 0.3.20 → 0.3.21

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 (224) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +51 -11
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/cosmos-static/icons/ArrowDownIcon.svg +1 -0
  5. package/cosmos-static/icons/ArrowUpIcon.svg +1 -0
  6. package/dist/components/Accordion/AccordionContent.d.ts +2 -72
  7. package/dist/components/Accordion/AccordionItem.js +2 -2
  8. package/dist/components/Accordion/AccordionItem.js.map +1 -1
  9. package/dist/components/Accordion/AccordionItem.mobile.js +2 -2
  10. package/dist/components/Accordion/AccordionItem.mobile.js.map +1 -1
  11. package/dist/components/Accordion/AccordionItemInner.js +3 -11
  12. package/dist/components/Accordion/AccordionItemInner.js.map +1 -1
  13. package/dist/components/Accordion/AccordionItemInner.mobile.js +4 -10
  14. package/dist/components/Accordion/AccordionItemInner.mobile.js.map +1 -1
  15. package/{lib/components/Accordion/utils/isActiveHandler.d.ts → dist/components/Accordion/utils/useActiveHandler.d.ts} +1 -1
  16. package/{mobile/dist/components/Accordion/utils/isActiveHandler.js → dist/components/Accordion/utils/useActiveHandler.js} +4 -4
  17. package/dist/components/Accordion/utils/useActiveHandler.js.map +1 -0
  18. package/dist/components/Blocks.d.ts +1 -0
  19. package/dist/components/Blocks.js +2 -0
  20. package/dist/components/Blocks.js.map +1 -1
  21. package/dist/components/OtherProducts/OtherProducts.d.ts +5 -0
  22. package/dist/components/OtherProducts/OtherProducts.js +9 -0
  23. package/dist/components/OtherProducts/OtherProducts.js.map +1 -0
  24. package/dist/components/OtherProducts/OtherProductsContent.d.ts +36 -0
  25. package/dist/components/OtherProducts/OtherProductsContent.js +2 -0
  26. package/dist/components/OtherProducts/OtherProductsContent.js.map +1 -0
  27. package/dist/components/OtherProducts/OtherProductsItem.d.ts +5 -0
  28. package/dist/components/OtherProducts/OtherProductsItem.js +16 -0
  29. package/dist/components/OtherProducts/OtherProductsItem.js.map +1 -0
  30. package/dist/components/OtherProducts/OtherProductsItemInner.d.ts +2 -0
  31. package/dist/components/OtherProducts/OtherProductsItemInner.js +10 -0
  32. package/dist/components/OtherProducts/OtherProductsItemInner.js.map +1 -0
  33. package/dist/components/OtherProducts/utils/useActiveHandler.d.ts +9 -0
  34. package/dist/components/OtherProducts/utils/useActiveHandler.js +21 -0
  35. package/dist/components/OtherProducts/utils/useActiveHandler.js.map +1 -0
  36. package/dist/icons/IconName.d.ts +4 -2
  37. package/dist/icons/IconName.js +3 -0
  38. package/dist/icons/IconName.js.map +1 -1
  39. package/dist/ui-kit/BlocksList/BlocksListProps.d.ts +71 -0
  40. package/dist/ui-kit/BlocksList/BlocksListProps.js +2 -0
  41. package/dist/ui-kit/BlocksList/BlocksListProps.js.map +1 -0
  42. package/dist/ui-kit/BlocksList/EmbeddableBlocks.d.ts +12 -0
  43. package/dist/ui-kit/BlocksList/EmbeddableBlocks.js +25 -0
  44. package/dist/ui-kit/BlocksList/EmbeddableBlocks.js.map +1 -0
  45. package/dist/ui-kit/BlocksList/renderBlocksList.d.ts +11 -0
  46. package/dist/ui-kit/BlocksList/renderBlocksList.js +17 -0
  47. package/dist/ui-kit/BlocksList/renderBlocksList.js.map +1 -0
  48. package/lib/common.css +1 -1
  49. package/lib/components/Accordion/Accordion.fixture.d.ts +0 -1
  50. package/lib/components/Accordion/AccordionContent.d.ts +2 -72
  51. package/lib/components/Accordion/AccordionItem.js +2 -2
  52. package/lib/components/Accordion/AccordionItem.js.map +1 -1
  53. package/lib/components/Accordion/AccordionItem.mobile.js +2 -2
  54. package/lib/components/Accordion/AccordionItem.mobile.js.map +1 -1
  55. package/lib/components/Accordion/AccordionItemInner.js +3 -11
  56. package/lib/components/Accordion/AccordionItemInner.js.map +1 -1
  57. package/lib/components/Accordion/AccordionItemInner.mobile.js +4 -10
  58. package/lib/components/Accordion/AccordionItemInner.mobile.js.map +1 -1
  59. package/{mobile/dist/components/Accordion/utils/isActiveHandler.d.ts → lib/components/Accordion/utils/useActiveHandler.d.ts} +1 -1
  60. package/{mobile/lib/components/Accordion/utils/isActiveHandler.js → lib/components/Accordion/utils/useActiveHandler.js} +2 -2
  61. package/lib/components/Accordion/utils/useActiveHandler.js.map +1 -0
  62. package/lib/components/BaseTile/getTileHeadingType.d.ts +1 -1
  63. package/lib/components/Blocks.d.ts +1 -0
  64. package/lib/components/Blocks.js +2 -0
  65. package/lib/components/Blocks.js.map +1 -1
  66. package/lib/components/OtherProducts/OtherProducts.d.ts +5 -0
  67. package/lib/components/OtherProducts/OtherProducts.fixture.d.ts +5 -0
  68. package/lib/components/OtherProducts/OtherProducts.js +7 -0
  69. package/lib/components/OtherProducts/OtherProducts.js.map +1 -0
  70. package/lib/components/OtherProducts/OtherProductsContent.d.ts +36 -0
  71. package/lib/components/OtherProducts/OtherProductsContent.js +2 -0
  72. package/lib/components/OtherProducts/OtherProductsContent.js.map +1 -0
  73. package/lib/components/OtherProducts/OtherProductsItem.d.ts +5 -0
  74. package/lib/components/OtherProducts/OtherProductsItem.js +14 -0
  75. package/lib/components/OtherProducts/OtherProductsItem.js.map +1 -0
  76. package/lib/components/OtherProducts/OtherProductsItemInner.d.ts +2 -0
  77. package/lib/components/OtherProducts/OtherProductsItemInner.js +8 -0
  78. package/lib/components/OtherProducts/OtherProductsItemInner.js.map +1 -0
  79. package/lib/components/OtherProducts/utils/useActiveHandler.d.ts +9 -0
  80. package/lib/components/OtherProducts/utils/useActiveHandler.js +18 -0
  81. package/lib/components/OtherProducts/utils/useActiveHandler.js.map +1 -0
  82. package/lib/icons/IconName.d.ts +4 -2
  83. package/lib/icons/IconName.js +3 -0
  84. package/lib/icons/IconName.js.map +1 -1
  85. package/lib/ui-kit/BlocksList/BlocksListProps.d.ts +71 -0
  86. package/lib/ui-kit/BlocksList/BlocksListProps.js +2 -0
  87. package/lib/ui-kit/BlocksList/BlocksListProps.js.map +1 -0
  88. package/lib/ui-kit/BlocksList/EmbeddableBlocks.d.ts +12 -0
  89. package/lib/ui-kit/BlocksList/EmbeddableBlocks.js +23 -0
  90. package/lib/ui-kit/BlocksList/EmbeddableBlocks.js.map +1 -0
  91. package/lib/ui-kit/BlocksList/renderBlocksList.d.ts +11 -0
  92. package/lib/ui-kit/BlocksList/renderBlocksList.js +13 -0
  93. package/lib/ui-kit/BlocksList/renderBlocksList.js.map +1 -0
  94. package/mobile/bundle/bundle.umd.js +16 -11
  95. package/mobile/bundle/bundle.umd.min.js +1 -1
  96. package/mobile/dist/components/Accordion/AccordionContent.d.ts +2 -72
  97. package/mobile/dist/components/Accordion/AccordionItem.js +2 -2
  98. package/mobile/dist/components/Accordion/AccordionItem.js.map +1 -1
  99. package/mobile/dist/components/Accordion/AccordionItemInner.js +4 -10
  100. package/mobile/dist/components/Accordion/AccordionItemInner.js.map +1 -1
  101. package/mobile/{lib/components/Accordion/utils/isActiveHandler.d.ts → dist/components/Accordion/utils/useActiveHandler.d.ts} +1 -1
  102. package/{dist/components/Accordion/utils/isActiveHandler.js → mobile/dist/components/Accordion/utils/useActiveHandler.js} +4 -4
  103. package/mobile/dist/components/Accordion/utils/useActiveHandler.js.map +1 -0
  104. package/mobile/dist/components/OtherProducts/OtherProducts.d.ts +5 -0
  105. package/mobile/dist/components/OtherProducts/OtherProducts.js +9 -0
  106. package/mobile/dist/components/OtherProducts/OtherProducts.js.map +1 -0
  107. package/mobile/dist/components/OtherProducts/OtherProductsContent.d.ts +36 -0
  108. package/mobile/dist/components/OtherProducts/OtherProductsContent.js +2 -0
  109. package/mobile/dist/components/OtherProducts/OtherProductsContent.js.map +1 -0
  110. package/mobile/dist/components/OtherProducts/OtherProductsItem.d.ts +5 -0
  111. package/mobile/dist/components/OtherProducts/OtherProductsItem.js +16 -0
  112. package/mobile/dist/components/OtherProducts/OtherProductsItem.js.map +1 -0
  113. package/mobile/dist/components/OtherProducts/OtherProductsItemInner.d.ts +2 -0
  114. package/mobile/dist/components/OtherProducts/OtherProductsItemInner.js +10 -0
  115. package/mobile/dist/components/OtherProducts/OtherProductsItemInner.js.map +1 -0
  116. package/mobile/dist/components/OtherProducts/utils/useActiveHandler.d.ts +9 -0
  117. package/mobile/dist/components/OtherProducts/utils/useActiveHandler.js +21 -0
  118. package/mobile/dist/components/OtherProducts/utils/useActiveHandler.js.map +1 -0
  119. package/mobile/dist/icons/IconName.d.ts +4 -2
  120. package/mobile/dist/icons/IconName.js +3 -0
  121. package/mobile/dist/icons/IconName.js.map +1 -1
  122. package/mobile/dist/ui-kit/BlocksList/BlocksListProps.d.ts +71 -0
  123. package/mobile/dist/ui-kit/BlocksList/BlocksListProps.js +2 -0
  124. package/mobile/dist/ui-kit/BlocksList/BlocksListProps.js.map +1 -0
  125. package/mobile/dist/ui-kit/BlocksList/EmbeddableBlocks.d.ts +12 -0
  126. package/mobile/dist/ui-kit/BlocksList/EmbeddableBlocks.js +25 -0
  127. package/mobile/dist/ui-kit/BlocksList/EmbeddableBlocks.js.map +1 -0
  128. package/mobile/dist/ui-kit/BlocksList/renderBlocksList.d.ts +11 -0
  129. package/mobile/dist/ui-kit/BlocksList/renderBlocksList.js +17 -0
  130. package/mobile/dist/ui-kit/BlocksList/renderBlocksList.js.map +1 -0
  131. package/mobile/lib/components/Accordion/AccordionContent.d.ts +2 -72
  132. package/mobile/lib/components/Accordion/AccordionItem.js +2 -2
  133. package/mobile/lib/components/Accordion/AccordionItem.js.map +1 -1
  134. package/mobile/lib/components/Accordion/AccordionItemInner.js +4 -10
  135. package/mobile/lib/components/Accordion/AccordionItemInner.js.map +1 -1
  136. package/{dist/components/Accordion/utils/isActiveHandler.d.ts → mobile/lib/components/Accordion/utils/useActiveHandler.d.ts} +1 -1
  137. package/{lib/components/Accordion/utils/isActiveHandler.js → mobile/lib/components/Accordion/utils/useActiveHandler.js} +2 -2
  138. package/mobile/lib/components/Accordion/utils/useActiveHandler.js.map +1 -0
  139. package/mobile/lib/components/OtherProducts/OtherProducts.d.ts +5 -0
  140. package/mobile/lib/components/OtherProducts/OtherProducts.js +7 -0
  141. package/mobile/lib/components/OtherProducts/OtherProducts.js.map +1 -0
  142. package/mobile/lib/components/OtherProducts/OtherProductsContent.d.ts +36 -0
  143. package/mobile/lib/components/OtherProducts/OtherProductsContent.js +2 -0
  144. package/mobile/lib/components/OtherProducts/OtherProductsContent.js.map +1 -0
  145. package/mobile/lib/components/OtherProducts/OtherProductsItem.d.ts +5 -0
  146. package/mobile/lib/components/OtherProducts/OtherProductsItem.js +14 -0
  147. package/mobile/lib/components/OtherProducts/OtherProductsItem.js.map +1 -0
  148. package/mobile/lib/components/OtherProducts/OtherProductsItemInner.d.ts +2 -0
  149. package/mobile/lib/components/OtherProducts/OtherProductsItemInner.js +8 -0
  150. package/mobile/lib/components/OtherProducts/OtherProductsItemInner.js.map +1 -0
  151. package/mobile/lib/components/OtherProducts/utils/useActiveHandler.d.ts +9 -0
  152. package/mobile/lib/components/OtherProducts/utils/useActiveHandler.js +18 -0
  153. package/mobile/lib/components/OtherProducts/utils/useActiveHandler.js.map +1 -0
  154. package/mobile/lib/icons/IconName.d.ts +4 -2
  155. package/mobile/lib/icons/IconName.js +3 -0
  156. package/mobile/lib/icons/IconName.js.map +1 -1
  157. package/mobile/lib/ui-kit/BlocksList/BlocksListProps.d.ts +71 -0
  158. package/mobile/lib/ui-kit/BlocksList/BlocksListProps.js +2 -0
  159. package/mobile/lib/ui-kit/BlocksList/BlocksListProps.js.map +1 -0
  160. package/mobile/lib/ui-kit/BlocksList/EmbeddableBlocks.d.ts +12 -0
  161. package/mobile/lib/ui-kit/BlocksList/EmbeddableBlocks.js +23 -0
  162. package/mobile/lib/ui-kit/BlocksList/EmbeddableBlocks.js.map +1 -0
  163. package/mobile/lib/ui-kit/BlocksList/renderBlocksList.d.ts +11 -0
  164. package/mobile/lib/ui-kit/BlocksList/renderBlocksList.js +13 -0
  165. package/mobile/lib/ui-kit/BlocksList/renderBlocksList.js.map +1 -0
  166. package/mobile/src/components/Accordion/Accordion.example.json +6 -6
  167. package/mobile/src/components/Accordion/AccordionContent.ts +2 -108
  168. package/mobile/src/components/Accordion/AccordionItem.tsx +2 -2
  169. package/mobile/src/components/Accordion/AccordionItemInner.tsx +4 -19
  170. package/mobile/src/components/Accordion/utils/{isActiveHandler.ts → useActiveHandler.ts} +1 -1
  171. package/mobile/src/components/OtherProducts/OtherProducts.example.json +50 -0
  172. package/mobile/src/components/OtherProducts/OtherProducts.tsx +20 -0
  173. package/mobile/src/components/OtherProducts/OtherProductsContent.ts +38 -0
  174. package/mobile/src/components/OtherProducts/OtherProductsItem.tsx +36 -0
  175. package/mobile/src/components/OtherProducts/OtherProductsItemInner.tsx +14 -0
  176. package/mobile/src/components/OtherProducts/utils/useActiveHandler.ts +23 -0
  177. package/mobile/src/icons/ArrowDownIcon.svg +4 -0
  178. package/mobile/src/icons/ArrowUpIcon.svg +4 -0
  179. package/mobile/src/icons/IconName.ts +4 -3
  180. package/mobile/src/ui-kit/BlocksList/BlocksListProps.ts +106 -0
  181. package/mobile/src/ui-kit/BlocksList/EmbeddableBlocks.tsx +23 -0
  182. package/mobile/src/ui-kit/BlocksList/renderBlocksList.tsx +30 -0
  183. package/package.json +1 -1
  184. package/src/components/Accordion/Accordion.example.json +6 -6
  185. package/src/components/Accordion/Accordion.fixture.mobile.tsx +13 -13
  186. package/src/components/Accordion/Accordion.fixture.tsx +28 -93
  187. package/src/components/Accordion/AccordionContent.ts +2 -108
  188. package/src/components/Accordion/AccordionItem.mobile.tsx +2 -2
  189. package/src/components/Accordion/AccordionItem.tsx +2 -2
  190. package/src/components/Accordion/AccordionItemInner.mobile.tsx +4 -19
  191. package/src/components/Accordion/AccordionItemInner.tsx +4 -25
  192. package/src/components/Accordion/utils/{isActiveHandler.ts → useActiveHandler.ts} +1 -1
  193. package/src/components/Blocks.ts +2 -0
  194. package/src/components/OtherProducts/OtherProducts.example.json +50 -0
  195. package/src/components/OtherProducts/OtherProducts.fixture.tsx +137 -0
  196. package/src/components/OtherProducts/OtherProducts.tsx +20 -0
  197. package/src/components/OtherProducts/OtherProductsContent.ts +38 -0
  198. package/src/components/OtherProducts/OtherProductsItem.tsx +36 -0
  199. package/src/components/OtherProducts/OtherProductsItemInner.tsx +14 -0
  200. package/src/components/OtherProducts/utils/useActiveHandler.ts +23 -0
  201. package/src/icons/ArrowDownIcon.svg +4 -0
  202. package/src/icons/ArrowUpIcon.svg +4 -0
  203. package/src/icons/IconName.ts +6 -1
  204. package/src/ui-kit/BlocksList/BlocksListProps.ts +106 -0
  205. package/src/ui-kit/BlocksList/EmbeddableBlocks.tsx +23 -0
  206. package/src/ui-kit/BlocksList/renderBlocksList.tsx +30 -0
  207. package/dist/components/Accordion/AccordionBlocks.d.ts +0 -12
  208. package/dist/components/Accordion/AccordionBlocks.js +0 -25
  209. package/dist/components/Accordion/AccordionBlocks.js.map +0 -1
  210. package/dist/components/Accordion/utils/isActiveHandler.js.map +0 -1
  211. package/lib/components/Accordion/AccordionBlocks.d.ts +0 -12
  212. package/lib/components/Accordion/AccordionBlocks.js +0 -23
  213. package/lib/components/Accordion/AccordionBlocks.js.map +0 -1
  214. package/lib/components/Accordion/utils/isActiveHandler.js.map +0 -1
  215. package/mobile/dist/components/Accordion/AccordionBlocks.d.ts +0 -12
  216. package/mobile/dist/components/Accordion/AccordionBlocks.js +0 -25
  217. package/mobile/dist/components/Accordion/AccordionBlocks.js.map +0 -1
  218. package/mobile/dist/components/Accordion/utils/isActiveHandler.js.map +0 -1
  219. package/mobile/lib/components/Accordion/AccordionBlocks.d.ts +0 -12
  220. package/mobile/lib/components/Accordion/AccordionBlocks.js +0 -23
  221. package/mobile/lib/components/Accordion/AccordionBlocks.js.map +0 -1
  222. package/mobile/lib/components/Accordion/utils/isActiveHandler.js.map +0 -1
  223. package/mobile/src/components/Accordion/AccordionBlocks.tsx +0 -23
  224. package/src/components/Accordion/AccordionBlocks.tsx +0 -23
@@ -1,109 +1,4 @@
1
- import type { GalleryContent } from '../Gallery/GalleryContent';
2
- import type { HeadlineContent } from '../Headline/HeadlineContent';
3
- import type { LinkDocsContent } from '../LinkDocs/LinkDocsContent';
4
- import type { MiniGalleryContent } from '../MiniGallery/MiniGalleryContent';
5
- import type { PictureTextContent } from '../PictureText/PictureTextContent';
6
- import type { ProductBlockContent } from '../ProductBlock/ProductBlockContent';
7
- import type { ProductTileContent } from '../ProductTile/ProductTileContent';
8
- import type { TextBlockContent } from '../TextBlock/TextBlockContent';
9
- import type { TileContent } from '../Tile/TileContent';
10
- import type { LinkListContent } from '../LinkList/LinkListContent';
11
-
12
- /**
13
- * @title Тип блока
14
- */
15
- export type AccordionBlockType =
16
- | 'Headline'
17
- | 'LinkDocs'
18
- | 'TextBlock'
19
- | 'PictureText'
20
- | 'Tile'
21
- | 'ProductTile'
22
- | 'ProductBlock'
23
- | 'Gallery'
24
- | 'MiniGallery'
25
- | 'LinkList';
26
-
27
- interface AccordionBlockDef {
28
- accordionBlockType: AccordionBlockType;
29
- }
30
-
31
- /**
32
- * @title Заголовок
33
- */
34
- export type HeadlineAccordionBlockDef = HeadlineContent & AccordionBlockDef;
35
-
36
- /**
37
- * @title Список документов
38
- */
39
- export type LinkDocsAccordionBlockDef = LinkDocsContent & AccordionBlockDef;
40
-
41
- /**
42
- * @title Текстовый блок
43
- */
44
- export type TextBlockAccordionBlockDef = TextBlockContent & AccordionBlockDef;
45
-
46
- /**
47
- * @title Картинка с текстом
48
- */
49
- export type PictureTextAccordionBlockDef = PictureTextContent & AccordionBlockDef;
50
-
51
- /**
52
- * @title Продуктовый блок
53
- */
54
- export type ProductBlockAccordionBlockDef = ProductBlockContent & AccordionBlockDef;
55
-
56
- /**
57
- * @title Плитка
58
- */
59
- export type TileAccordionBlockDef = TileContent & AccordionBlockDef;
60
-
61
- /**
62
- * @title Продуктовая плитка
63
- */
64
- export type ProductTileAccordionBlockDef = ProductTileContent & AccordionBlockDef;
65
-
66
- /**
67
- * @title Галлерея
68
- */
69
- export type GalleryAccordionBlockDef = GalleryContent & AccordionBlockDef;
70
-
71
- /**
72
- * @title Мини-галлерея
73
- */
74
- export type MiniGalleryAccordionBlockDef = MiniGalleryContent & AccordionBlockDef;
75
-
76
- /**
77
- * @title Список ссылок
78
- */
79
- export type LinkListAccordionBlockDef = LinkListContent & AccordionBlockDef;
80
-
81
- /**
82
- * @title Выберите блок
83
- */
84
- export type EmptyOption = null;
85
-
86
- /**
87
- * @title Содержимое аккордеона
88
- */
89
- export type AccordionBlockProps =
90
- | EmptyOption
91
- | HeadlineAccordionBlockDef
92
- | LinkDocsAccordionBlockDef
93
- | TextBlockAccordionBlockDef
94
- | PictureTextAccordionBlockDef
95
- | ProductBlockAccordionBlockDef
96
- | TileAccordionBlockDef
97
- | ProductTileAccordionBlockDef
98
- | GalleryAccordionBlockDef
99
- | MiniGalleryAccordionBlockDef
100
- | LinkListAccordionBlockDef;
101
-
102
- /**
103
- * @title Количество колонок
104
- * @enumNames ["1 колонка", "2 колонки"]
105
- */
106
- export type ColumnsCount = 1 | 2;
1
+ import type { BlockDef, ColumnsCount } from '../../ui-kit/BlocksList/BlocksListProps';
107
2
 
108
3
  /**
109
4
  * @title Элемент списка
@@ -115,13 +10,12 @@ export interface AccordionItemCommonProps {
115
10
  */
116
11
  label?: string;
117
12
  /** @title Блоки */
118
- blocks?: AccordionBlockProps[];
13
+ blocks?: BlockDef[];
119
14
  /**
120
15
  * @title Отображать/скрывать обводку элемента
121
16
  * @default false
122
17
  */
123
18
  bordered?: boolean; // TODO: только для мобильной версии
124
-
125
19
  columns?: ColumnsCount;
126
20
  }
127
21
 
@@ -3,12 +3,12 @@ import type { UniBlockProps } from '../../types';
3
3
  import { Icon } from '../../ui-kit/Icon/Icon';
4
4
  import type { AccordionItemCommonProps } from './AccordionContent';
5
5
  import { AccordionItemInner } from './AccordionItemInner';
6
- import { isActiveHandler } from './utils/isActiveHandler';
6
+ import { useActiveHandler } from './utils/useActiveHandler';
7
7
 
8
8
  export interface AccordionItemProps extends AccordionItemCommonProps, UniBlockProps {}
9
9
 
10
10
  export const AccordionItem = JSX<AccordionItemProps>(({ label, blocks, bordered, context }) => {
11
- const { hasContent, icon, handleToggle } = isActiveHandler({
11
+ const { hasContent, icon, handleToggle } = useActiveHandler({
12
12
  context,
13
13
  blocks,
14
14
  });
@@ -3,12 +3,12 @@ import type { UniBlockProps } from '../../types';
3
3
  import { Icon } from '../../ui-kit/Icon/Icon';
4
4
  import type { AccordionItemCommonProps } from './AccordionContent';
5
5
  import { AccordionItemInner } from './AccordionItemInner';
6
- import { isActiveHandler } from './utils/isActiveHandler';
6
+ import { useActiveHandler } from './utils/useActiveHandler';
7
7
 
8
8
  export interface AccordionItemProps extends AccordionItemCommonProps, UniBlockProps {}
9
9
 
10
10
  export const AccordionItem = JSX<AccordionItemProps>(({ label, blocks, columns, context }) => {
11
- const { hasContent, icon, handleToggle } = isActiveHandler({
11
+ const { hasContent, icon, handleToggle } = useActiveHandler({
12
12
  context,
13
13
  blocks,
14
14
  });
@@ -1,28 +1,13 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
- import type { JSXBlock } from '../ContentPage/ContentPage';
3
- import type { ContentPageContext } from '../ContentPage/ContentPageContext';
4
- import { AccordionBlocks } from './AccordionBlocks';
5
- import type { AccordionBlockProps } from './AccordionContent';
6
2
  import type { AccordionItemProps } from './AccordionItem';
3
+ import { renderBlocksList } from '../../ui-kit/BlocksList/renderBlocksList';
7
4
 
8
5
  export const AccordionItemInner = JSX<AccordionItemProps>(({ blocks, context }) => {
6
+ const className = 'mb-5 last:mb-0 first:mt-2';
7
+ const columns = 1;
9
8
  return (
10
9
  <div className="transition-all duration-300 max-h-0 overflow-hidden group-last:last:pb-0">
11
- {blocks?.length ? blocks.map(renderBlock(context)) : null}
10
+ {renderBlocksList({ context, className, columns, blocks })}
12
11
  </div>
13
12
  );
14
13
  });
15
-
16
- const renderBlock = (context: ContentPageContext) => (block: AccordionBlockProps, i: number) => {
17
- const type = block?.accordionBlockType;
18
- if (!type || !(type in AccordionBlocks)) {
19
- return null;
20
- }
21
-
22
- const AccordionBlock: JSXBlock = AccordionBlocks[type];
23
- return (
24
- <div className="mb-5 last:mb-0 first:mt-2" key={`block_${i}`}>
25
- <AccordionBlock context={context} {...block} className="!p-0" />
26
- </div>
27
- );
28
- };
@@ -1,33 +1,12 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
- import type { JSXBlock } from '../ContentPage/ContentPage';
3
- import type { ContentPageContext } from '../ContentPage/ContentPageContext';
4
- import { AccordionBlocks } from './AccordionBlocks';
5
- import type { AccordionBlockProps } from './AccordionContent';
6
2
  import type { AccordionItemProps } from './AccordionItem';
3
+ import { renderBlocksList } from '../../ui-kit/BlocksList/renderBlocksList';
7
4
 
8
5
  export const AccordionItemInner = JSX<AccordionItemProps>(({ blocks, columns = 1, context }) => {
6
+ const className = 'mb-5 last:mb-0 pb-5';
9
7
  return (
10
- <div
11
- className={
12
- 'transition-all duration-300 max-h-0 overflow-hidden group-last:last:pb-0 flex flex-wrap'
13
- }
14
- >
15
- {blocks?.length ? blocks.map(renderBlock(context, columns)) : null}
8
+ <div className="transition-all duration-300 max-h-0 overflow-hidden">
9
+ {renderBlocksList({ context, className, columns, blocks })}
16
10
  </div>
17
11
  );
18
12
  });
19
-
20
- const renderBlock =
21
- (context: ContentPageContext, columns: number) => (block: AccordionBlockProps, i: number) => {
22
- const type = block?.accordionBlockType;
23
- if (!type || !(type in AccordionBlocks)) {
24
- return null;
25
- }
26
- const columnsCountClass = columns === 2 ? 'w-1/2' : '';
27
- const AccordionBlock: JSXBlock = AccordionBlocks[type];
28
- return (
29
- <div className={`mb-5 last:mb-0 pb-5 ${columnsCountClass}`} key={`block_${i}`}>
30
- <AccordionBlock context={context} {...block} className="!p-0" />
31
- </div>
32
- );
33
- };
@@ -1,6 +1,6 @@
1
1
  import type { IconName } from '../../../icons/IconName';
2
2
 
3
- export const isActiveHandler = ({ context, blocks }) => {
3
+ export const useActiveHandler = ({ context, blocks }) => {
4
4
  const [isActive, setIsActive] = context.useState(false);
5
5
  const hasContent = blocks?.length;
6
6
  const icon: IconName = isActive ? 'MinusIcon' : 'PlusIcon';
@@ -18,6 +18,7 @@ import { ProductGallery } from './ProductGallery/ProductGallery';
18
18
  import { ProductGalleryGreen } from './ProductGalleryGreen/ProductGalleryGreen';
19
19
  import { ProductTile } from './ProductTile/ProductTile';
20
20
  import { PromoTile } from './PromoTile/PromoTile';
21
+ import { OtherProducts } from './OtherProducts/OtherProducts';
21
22
  import { Recommendation } from './Recommendation/Recommendation';
22
23
  import { StepsBlock } from './StepsBlock/StepsBlock';
23
24
  import { TariffsTable } from './TariffsTable/TariffsTable';
@@ -43,6 +44,7 @@ export const Blocks = {
43
44
  ProductGalleryGreen,
44
45
  ProductTile,
45
46
  PromoTile,
47
+ OtherProducts,
46
48
  Recommendation,
47
49
  StepsBlock,
48
50
  TariffsTable,
@@ -0,0 +1,50 @@
1
+ {
2
+ "title": "Другие продукты",
3
+ "blockItems": [
4
+ {
5
+ "label": "Другие продукты 1",
6
+ "blocks": [
7
+ {
8
+ "blockListType": "TextBlock",
9
+ "title": "Текстовый блок",
10
+ "description": "Описание текстового блока"
11
+ },
12
+ {
13
+ "blockListType": "TextBlock",
14
+ "title": "Текстовый блок №2",
15
+ "description": "Описание текстового блока №2"
16
+ }
17
+ ]
18
+ },
19
+ {
20
+ "label": "Другие продукты 2",
21
+ "blocks": [
22
+ {
23
+ "blockListType": "TextBlock",
24
+ "title": "Текстовый блок",
25
+ "description": "Описание текстового блока"
26
+ },
27
+ {
28
+ "blockListType": "TextBlock",
29
+ "title": "Текстовый блок №2",
30
+ "description": "Описание текстового блока №2"
31
+ }
32
+ ]
33
+ },
34
+ {
35
+ "label": "Другие продукты 3",
36
+ "blocks": [
37
+ {
38
+ "blockListType": "TextBlock",
39
+ "title": "Текстовый блок",
40
+ "description": "Описание текстового блока"
41
+ },
42
+ {
43
+ "blockListType": "TextBlock",
44
+ "title": "Текстовый блок №2",
45
+ "description": "Описание текстового блока №2"
46
+ }
47
+ ]
48
+ }
49
+ ]
50
+ }
@@ -0,0 +1,137 @@
1
+ import { context } from '../../setup-fixture';
2
+ import { PRODUCT_BLOCK } from '../ProductBlock/ProductBlock.fixture';
3
+ import { PRODUCT_TILE, PRODUCT_PENSION_TILE } from '../ProductTile/ProductTile.fixture';
4
+ import { TEXT_BLOCK } from '../TextBlock/TextBlock.fixture';
5
+ import { TILE, TILE_PREMIUM } from '../Tile/Tile.fixture';
6
+ import type { OtherProductsProps } from './OtherProducts';
7
+ import { OtherProducts } from './OtherProducts';
8
+ import type {
9
+ ProductBlockBlockListDef,
10
+ ProductTileBlockListDef,
11
+ TextBlockBlockListDef,
12
+ TileBlockListDef,
13
+ } from '../../ui-kit/BlocksList/BlocksListProps';
14
+
15
+ const TEXT_BLOCK_OTHER_BLOCK: TextBlockBlockListDef = {
16
+ blockListType: 'TextBlock',
17
+ ...TEXT_BLOCK,
18
+ };
19
+
20
+ const PRODUCT_BLOCK_OTHER_BLOCK: ProductBlockBlockListDef = {
21
+ blockListType: 'ProductBlock',
22
+ ...PRODUCT_BLOCK,
23
+ };
24
+
25
+ const TILES_OTHER_BLOCK: TileBlockListDef = {
26
+ blockListType: 'Tile',
27
+ ...TILE,
28
+ };
29
+
30
+ const TILES_PREMIUM_OTHER_BLOCK: TileBlockListDef = {
31
+ blockListType: 'Tile',
32
+ ...TILE_PREMIUM,
33
+ };
34
+
35
+ const PRODUCT_TILES_OTHER_BLOCK: ProductTileBlockListDef = {
36
+ blockListType: 'ProductTile',
37
+ ...PRODUCT_TILE,
38
+ };
39
+
40
+ const PRODUCT_PENSION_TILES__OTHER_BLOCK: ProductTileBlockListDef = {
41
+ blockListType: 'ProductTile',
42
+ ...PRODUCT_PENSION_TILE,
43
+ };
44
+
45
+ const propsBlock: OtherProductsProps = {
46
+ context,
47
+ blockItems: [
48
+ {
49
+ label: 'Другие кредитные карты Россельхозбанка 1',
50
+ blocks: [
51
+ TILES_PREMIUM_OTHER_BLOCK,
52
+ TILES_PREMIUM_OTHER_BLOCK,
53
+ TILES_OTHER_BLOCK,
54
+ TILES_OTHER_BLOCK,
55
+ ],
56
+ },
57
+ {
58
+ label: 'Другие кредитные карты Россельхозбанка 2',
59
+ blocks: [
60
+ PRODUCT_TILES_OTHER_BLOCK,
61
+ PRODUCT_TILES_OTHER_BLOCK,
62
+ PRODUCT_PENSION_TILES__OTHER_BLOCK,
63
+ PRODUCT_PENSION_TILES__OTHER_BLOCK,
64
+ ],
65
+ },
66
+ {
67
+ label: 'Другие кредитные карты Россельхозбанка 3',
68
+ blocks: [PRODUCT_BLOCK_OTHER_BLOCK, PRODUCT_BLOCK_OTHER_BLOCK],
69
+ },
70
+
71
+ {
72
+ label: 'Другие кредитные карты Россельхозбанка 4',
73
+ blocks: [
74
+ TEXT_BLOCK_OTHER_BLOCK,
75
+ TEXT_BLOCK_OTHER_BLOCK,
76
+ TEXT_BLOCK_OTHER_BLOCK,
77
+ TEXT_BLOCK_OTHER_BLOCK,
78
+ ],
79
+ },
80
+ ],
81
+ };
82
+
83
+ const propsTwoColumns: OtherProductsProps = {
84
+ context,
85
+ blockItems: [
86
+ {
87
+ label: 'Другие кредитные карты Россельхозбанка 1',
88
+ blocks: [
89
+ TILES_PREMIUM_OTHER_BLOCK,
90
+ TILES_PREMIUM_OTHER_BLOCK,
91
+ TILES_OTHER_BLOCK,
92
+ TILES_OTHER_BLOCK,
93
+ ],
94
+ columns: 2,
95
+ },
96
+ {
97
+ label: 'Другие кредитные карты Россельхозбанка 2',
98
+ blocks: [
99
+ PRODUCT_TILES_OTHER_BLOCK,
100
+ PRODUCT_TILES_OTHER_BLOCK,
101
+ PRODUCT_PENSION_TILES__OTHER_BLOCK,
102
+ PRODUCT_PENSION_TILES__OTHER_BLOCK,
103
+ ],
104
+ columns: 2,
105
+ },
106
+ {
107
+ label: 'Другие кредитные карты Россельхозбанка 3',
108
+ blocks: [PRODUCT_BLOCK_OTHER_BLOCK, PRODUCT_BLOCK_OTHER_BLOCK],
109
+ columns: 2,
110
+ },
111
+
112
+ {
113
+ label: 'Другие кредитные карты Россельхозбанка 4',
114
+ blocks: [
115
+ TEXT_BLOCK_OTHER_BLOCK,
116
+ TEXT_BLOCK_OTHER_BLOCK,
117
+ TEXT_BLOCK_OTHER_BLOCK,
118
+ TEXT_BLOCK_OTHER_BLOCK,
119
+ ],
120
+ columns: 2,
121
+ },
122
+ ],
123
+ };
124
+
125
+ export default {
126
+ default: (
127
+ <div className="container grid grid-cols-12">
128
+ <OtherProducts className="col-span-12" {...propsBlock} />
129
+ </div>
130
+ ),
131
+
132
+ 'two columns': (
133
+ <div className="container grid grid-cols-12">
134
+ <OtherProducts className="col-span-12" {...propsTwoColumns} />
135
+ </div>
136
+ ),
137
+ };
@@ -0,0 +1,20 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import type { UniBlockProps } from '../../types';
3
+ import type { OtherProductsContent } from './OtherProductsContent';
4
+ import { OtherProductsItem } from './OtherProductsItem';
5
+
6
+ export interface OtherProductsProps extends OtherProductsContent, UniBlockProps {}
7
+
8
+ export const OtherProducts = JSX<OtherProductsProps>(({ blockItems, context, className }) => {
9
+ return (
10
+ <section className={`font-sans bg-white text-primary-text ${className || ''}`}>
11
+ {blockItems?.length ? (
12
+ <div className="list-none m-0 p-0">
13
+ {blockItems.map((item, i) => (
14
+ <OtherProductsItem key={`BlockItem${i}`} {...item} context={context} />
15
+ ))}
16
+ </div>
17
+ ) : null}
18
+ </section>
19
+ );
20
+ });
@@ -0,0 +1,38 @@
1
+ import type { BlockDef, ColumnsCount } from '../../ui-kit/BlocksList/BlocksListProps';
2
+
3
+ /**
4
+ * @title Элемент списка
5
+ */
6
+ export interface blockItemCommonProps {
7
+ /**
8
+ * @title Название
9
+ * @default Список
10
+ */
11
+ label?: string;
12
+ /** @title Блоки */
13
+ blocks?: BlockDef[];
14
+ /**
15
+ * @title Отображать/скрывать обводку элемента
16
+ * @default false
17
+ */
18
+ bordered?: boolean; // TODO: только для мобильной версии
19
+ columns?: ColumnsCount;
20
+ isActive?: boolean;
21
+ }
22
+
23
+ /**
24
+ * @title Другие продукты
25
+ */
26
+ export interface OtherProductsContent {
27
+ /** @title Заголовок */
28
+ title?: string;
29
+ /** @title Список */
30
+ blockItems?: blockItemCommonProps[];
31
+ /** @title Подзаголовок */
32
+ description?: string; // TODO: только для мобильной версии
33
+ /**
34
+ * @title Отображать/скрывать обводку у элемента списка
35
+ * @default false
36
+ */
37
+ bordered?: boolean; // TODO: только для мобильной версии
38
+ }
@@ -0,0 +1,36 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useActiveHandler } from './utils/useActiveHandler';
3
+ import type { UniBlockProps } from '../../types';
4
+ import type { blockItemCommonProps } from './OtherProductsContent';
5
+ import { Icon } from '../../ui-kit/Icon/Icon';
6
+ import { OtherProductsItemInner } from './OtherProductsItemInner';
7
+
8
+ export interface BlockItemProps extends blockItemCommonProps, UniBlockProps {}
9
+
10
+ export const OtherProductsItem = JSX<BlockItemProps>(({ label, blocks, columns, context }) => {
11
+ const { hasContent, icon, handleToggle, isActive } = useActiveHandler({
12
+ context,
13
+ blocks,
14
+ });
15
+
16
+ return (
17
+ <div className="border-0 border-b border-solid border-main-divider">
18
+ {hasContent ? (
19
+ <OtherProductsItemInner
20
+ columns={columns}
21
+ blocks={blocks}
22
+ context={context}
23
+ isActive={isActive}
24
+ />
25
+ ) : null}
26
+ <button
27
+ className={`border-none bg-primary-main px-0 py-[25px] text-center w-full font-sans text-white text-base
28
+ ${hasContent ? 'group cursor-pointer' : ''}`}
29
+ onClick={handleToggle}
30
+ >
31
+ <span className="pr-3">{isActive ? 'Скрыть' : label}</span>
32
+ {hasContent ? <Icon name={icon} width="20" height="20" asSVG /> : null}
33
+ </button>
34
+ </div>
35
+ );
36
+ });
@@ -0,0 +1,14 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import type { BlockItemProps } from './OtherProductsItem';
3
+ import { renderBlocksList } from '../../ui-kit/BlocksList/renderBlocksList';
4
+
5
+ export const OtherProductsItemInner = JSX<BlockItemProps>(({ blocks, columns = 1, context }) => {
6
+ const className = 'box-border p-5';
7
+ return (
8
+ <div className="transition-all duration-300 max-h-0 overflow-hidden">
9
+ <div className={`box-border w-full p-9 ${columns > 1 ? 'flex flex-wrap' : ''}`}>
10
+ {renderBlocksList({ context, className, columns, blocks })}
11
+ </div>
12
+ </div>
13
+ );
14
+ });
@@ -0,0 +1,23 @@
1
+ import type { IconName } from '../../../icons/IconName';
2
+
3
+ export const useActiveHandler = ({ context, blocks }) => {
4
+ const [isActive, setIsActive] = context.useState(false);
5
+ const hasContent = blocks?.length;
6
+ const icon: IconName = isActive ? 'ArrowUpIcon' : 'ArrowDownIcon';
7
+
8
+ const getContentBlock = ({ currentTarget }) => currentTarget.previousSibling;
9
+
10
+ const handleToggle = (e: MouseEvent) => {
11
+ if (!hasContent) {
12
+ return;
13
+ }
14
+
15
+ setIsActive(!isActive);
16
+ const contentBlock = getContentBlock(e);
17
+ contentBlock.style.maxHeight = contentBlock.style.maxHeight
18
+ ? null
19
+ : `${contentBlock.scrollHeight}px`;
20
+ };
21
+
22
+ return { isActive, hasContent, icon, handleToggle };
23
+ };
@@ -0,0 +1,4 @@
1
+ <svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M13.8416 10.709L11.6582 12.8923C11.0166 13.534 9.96657 13.534 9.3249 12.8923L3.8999 7.45898" stroke="white" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
3
+ <path d="M17.1001 7.45898L16.2334 8.32565" stroke="white" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M13.3416 9.29163L11.1582 7.10829C10.5166 6.46662 9.46657 6.46662 8.8249 7.10829L3.3999 12.5416" stroke="white" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
3
+ <path d="M16.6001 12.5416L15.7334 11.675" stroke="white" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
@@ -1,9 +1,12 @@
1
1
  // Generated. Do not touch
2
+ /* eslint-disable max-lines */
2
3
 
3
4
  export enum IconMap {
4
5
  ActualBalanceIcon = 'ActualBalanceIcon',
5
6
  AppleIcon = 'AppleIcon',
7
+ ArrowDownIcon = 'ArrowDownIcon',
6
8
  ArrowsRewindRight = 'ArrowsRewindRight',
9
+ ArrowUpIcon = 'ArrowUpIcon',
7
10
  AtmIcon = 'AtmIcon',
8
11
  BankIcon = 'BankIcon',
9
12
  BurgerIcon = 'BurgerIcon',
@@ -81,14 +84,16 @@ export enum IconMap {
81
84
  * @title Иконка
82
85
  * @enumNames [
83
86
  * "",
84
- * "Деньги", "Лого «Apple»", "ArrowsRewindRight", "Банкомат", "Банк", "Бургер", "Бургер (белый)", "Календарь 2", "Скруглённый календарь", "Календарь", "Календарь с галочкой", "Календарь белый", "Кред. карта", "Кред. карта под наклоном", "Кред. карта с галочкой", "Карта с драгоценностями", "Деньги внутри кошелька", "Часы", "Крестик", "Кресло", "Кредитные карты", "Скидка", "Документ", "Документ (одноцветный)", "Документ с текстом", "Доллар", "Земля", "Пустой кошелёк с возвратом", "Пустой кошелёк", "Пустой кошелёк (белый)", "Евро", "Геолокация", "Зеркало", "Глобус", "Gps", "Сетка", "Сетка (белая)", "Диаграмма роста", "Скидка", "JCB", "Лупа", "MasterCard", "Минус", "МИР", "Деньги", "Денежное страхование", "Монитор и мобильный", "Новый документ", "Офис", "Лого «Одноклассники»", "Бизнес", "Проценты (круг.)", "Проценты", "Проценты белые", "Персональная карта", "Лого «PlayMarket»", "Плюс", "Профиль, 2 персоны", "Профиль", "Рубль (круг.)", "Сейф", "Безопасность", "Подписанные документы", "Маленькие часы", "Лого «Telegram»", "UnionPay", "Пользователь", "Visa", "Лого «VK»", "Пополнение карты", "Кошелёк с плюсом", "Кошелёк", "Кошелёк с деньгами"
87
+ * "Деньги", "Лого «Apple»", "ArrowDownIcon", "ArrowsRewindRight", "ArrowUpIcon", "Банкомат", "Банк", "Бургер", "Бургер (белый)", "Календарь 2", "Скруглённый календарь", "Календарь", "Календарь с галочкой", "Календарь белый", "Кред. карта", "Кред. карта под наклоном", "Кред. карта с галочкой", "Карта с драгоценностями", "Деньги внутри кошелька", "Часы", "Крестик", "Кресло", "Кредитные карты", "Скидка", "Документ", "Документ (одноцветный)", "Документ с текстом", "Доллар", "Земля", "Пустой кошелёк с возвратом", "Пустой кошелёк", "Пустой кошелёк (белый)", "Евро", "Геолокация", "Зеркало", "Глобус", "Gps", "Сетка", "Сетка (белая)", "Диаграмма роста", "Скидка", "JCB", "Лупа", "MasterCard", "Минус", "МИР", "Деньги", "Денежное страхование", "Монитор и мобильный", "Новый документ", "Офис", "Лого «Одноклассники»", "Бизнес", "Проценты (круг.)", "Проценты", "Проценты белые", "Персональная карта", "Лого «PlayMarket»", "Плюс", "Профиль, 2 персоны", "Профиль", "Рубль (круг.)", "Сейф", "Безопасность", "Подписанные документы", "Маленькие часы", "Лого «Telegram»", "UnionPay", "Пользователь", "Visa", "Лого «VK»", "Пополнение карты", "Кошелёк с плюсом", "Кошелёк", "Кошелёк с деньгами"
85
88
  * ]
86
89
  */
87
90
  export type IconName =
88
91
  | ''
89
92
  | 'ActualBalanceIcon'
90
93
  | 'AppleIcon'
94
+ | 'ArrowDownIcon'
91
95
  | 'ArrowsRewindRight'
96
+ | 'ArrowUpIcon'
92
97
  | 'AtmIcon'
93
98
  | 'BankIcon'
94
99
  | 'BurgerIcon'