@redneckz/wildless-cms-uni-blocks 0.8.31 → 0.9.1

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 (214) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +93 -24
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/Filtration/Filtration.d.ts +6 -0
  5. package/bundle/components/Filtration/FiltrationContent.d.ts +78 -0
  6. package/bundle/components/Filtration/FiltrationInner.d.ts +7 -0
  7. package/bundle/components/Filtration/checkShouldRenderBlock.d.ts +1 -0
  8. package/bundle/components/Filtration/renderFormItem.d.ts +4 -0
  9. package/bundle/components/ProductBlock/ProductBlockContent.d.ts +2 -0
  10. package/bundle/hooks/useForm.d.ts +12 -0
  11. package/bundle/model/JSXBlock.d.ts +2 -0
  12. package/bundle/ui-kit/ControlProps.d.ts +4 -0
  13. package/bundle/ui-kit/Foldable/DefaultFoldButton.d.ts +1 -0
  14. package/bundle/ui-kit/SlideCheckbox/SlideCheckbox.d.ts +3 -2
  15. package/bundle/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.d.ts +15 -0
  16. package/dist/components/ApplicationForm/renderSlideCheckboxes.js +1 -1
  17. package/dist/components/ApplicationForm/renderSlideCheckboxes.js.map +1 -1
  18. package/dist/components/Blocks.js +2 -0
  19. package/dist/components/Blocks.js.map +1 -1
  20. package/dist/components/Filtration/Filtration.d.ts +6 -0
  21. package/dist/components/Filtration/Filtration.js +17 -0
  22. package/dist/components/Filtration/Filtration.js.map +1 -0
  23. package/dist/components/Filtration/FiltrationContent.d.ts +78 -0
  24. package/dist/components/Filtration/FiltrationContent.js +2 -0
  25. package/dist/components/Filtration/FiltrationContent.js.map +1 -0
  26. package/dist/components/Filtration/FiltrationInner.d.ts +7 -0
  27. package/dist/components/Filtration/FiltrationInner.js +23 -0
  28. package/dist/components/Filtration/FiltrationInner.js.map +1 -0
  29. package/dist/components/Filtration/checkShouldRenderBlock.d.ts +1 -0
  30. package/dist/components/Filtration/checkShouldRenderBlock.js +11 -0
  31. package/dist/components/Filtration/checkShouldRenderBlock.js.map +1 -0
  32. package/dist/components/Filtration/renderFormItem.d.ts +4 -0
  33. package/dist/components/Filtration/renderFormItem.js +21 -0
  34. package/dist/components/Filtration/renderFormItem.js.map +1 -0
  35. package/dist/components/ProductBlock/ProductBlockContent.d.ts +2 -0
  36. package/dist/components/ProductBlock/ProductBlockInner.js +2 -2
  37. package/dist/components/ProductBlock/ProductBlockInner.js.map +1 -1
  38. package/dist/hooks/useForm.d.ts +12 -0
  39. package/dist/hooks/useForm.js +21 -0
  40. package/dist/hooks/useForm.js.map +1 -0
  41. package/dist/model/JSXBlock.d.ts +2 -0
  42. package/dist/ui-kit/ControlProps.d.ts +4 -0
  43. package/dist/ui-kit/ControlProps.js +2 -0
  44. package/dist/ui-kit/ControlProps.js.map +1 -0
  45. package/dist/ui-kit/Foldable/DefaultFoldButton.d.ts +1 -0
  46. package/dist/ui-kit/Foldable/DefaultFoldButton.js +5 -9
  47. package/dist/ui-kit/Foldable/DefaultFoldButton.js.map +1 -1
  48. package/dist/ui-kit/SlideCheckbox/SlideCheckbox.d.ts +3 -2
  49. package/dist/ui-kit/SlideCheckbox/SlideCheckbox.js +2 -2
  50. package/dist/ui-kit/SlideCheckbox/SlideCheckbox.js.map +1 -1
  51. package/dist/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.d.ts +15 -0
  52. package/dist/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.js +19 -0
  53. package/dist/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.js.map +1 -0
  54. package/lib/common.css +1 -1
  55. package/lib/components/ApplicationForm/renderSlideCheckboxes.js +1 -1
  56. package/lib/components/ApplicationForm/renderSlideCheckboxes.js.map +1 -1
  57. package/lib/components/Blocks.js +2 -0
  58. package/lib/components/Blocks.js.map +1 -1
  59. package/lib/components/Filtration/Filtration.d.ts +6 -0
  60. package/lib/components/Filtration/Filtration.fixture.d.ts +5 -0
  61. package/lib/components/Filtration/Filtration.js +15 -0
  62. package/lib/components/Filtration/Filtration.js.map +1 -0
  63. package/lib/components/Filtration/FiltrationContent.d.ts +78 -0
  64. package/lib/components/Filtration/FiltrationContent.js +2 -0
  65. package/lib/components/Filtration/FiltrationContent.js.map +1 -0
  66. package/lib/components/Filtration/FiltrationInner.d.ts +7 -0
  67. package/lib/components/Filtration/FiltrationInner.js +21 -0
  68. package/lib/components/Filtration/FiltrationInner.js.map +1 -0
  69. package/lib/components/Filtration/checkShouldRenderBlock.d.ts +1 -0
  70. package/lib/components/Filtration/checkShouldRenderBlock.js +8 -0
  71. package/lib/components/Filtration/checkShouldRenderBlock.js.map +1 -0
  72. package/lib/components/Filtration/renderFormItem.d.ts +4 -0
  73. package/lib/components/Filtration/renderFormItem.js +18 -0
  74. package/lib/components/Filtration/renderFormItem.js.map +1 -0
  75. package/lib/components/ProductBlock/ProductBlock.fixture.d.ts +1 -0
  76. package/lib/components/ProductBlock/ProductBlockContent.d.ts +2 -0
  77. package/lib/components/ProductBlock/ProductBlockInner.js +2 -2
  78. package/lib/components/ProductBlock/ProductBlockInner.js.map +1 -1
  79. package/lib/hooks/useForm.d.ts +12 -0
  80. package/lib/hooks/useForm.js +18 -0
  81. package/lib/hooks/useForm.js.map +1 -0
  82. package/lib/model/JSXBlock.d.ts +2 -0
  83. package/lib/ui-kit/ControlProps.d.ts +4 -0
  84. package/lib/ui-kit/ControlProps.js +2 -0
  85. package/lib/ui-kit/ControlProps.js.map +1 -0
  86. package/lib/ui-kit/Foldable/DefaultFoldButton.d.ts +1 -0
  87. package/lib/ui-kit/Foldable/DefaultFoldButton.js +5 -9
  88. package/lib/ui-kit/Foldable/DefaultFoldButton.js.map +1 -1
  89. package/lib/ui-kit/SlideCheckbox/SlideCheckbox.d.ts +3 -2
  90. package/lib/ui-kit/SlideCheckbox/SlideCheckbox.js +2 -2
  91. package/lib/ui-kit/SlideCheckbox/SlideCheckbox.js.map +1 -1
  92. package/lib/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.d.ts +15 -0
  93. package/lib/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.js +17 -0
  94. package/lib/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.js.map +1 -0
  95. package/mobile/bundle/bundle.umd.js +5 -10
  96. package/mobile/bundle/bundle.umd.min.js +1 -1
  97. package/mobile/bundle/components/Filtration/Filtration.d.ts +6 -0
  98. package/mobile/bundle/components/Filtration/FiltrationContent.d.ts +78 -0
  99. package/mobile/bundle/components/Filtration/FiltrationInner.d.ts +7 -0
  100. package/mobile/bundle/components/Filtration/checkShouldRenderBlock.d.ts +1 -0
  101. package/mobile/bundle/components/Filtration/renderFormItem.d.ts +4 -0
  102. package/mobile/bundle/components/ProductBlock/ProductBlockContent.d.ts +2 -0
  103. package/mobile/bundle/hooks/useForm.d.ts +12 -0
  104. package/mobile/bundle/model/JSXBlock.d.ts +2 -0
  105. package/mobile/bundle/ui-kit/ControlProps.d.ts +4 -0
  106. package/mobile/bundle/ui-kit/Foldable/DefaultFoldButton.d.ts +1 -0
  107. package/mobile/bundle/ui-kit/SlideCheckbox/SlideCheckbox.d.ts +3 -2
  108. package/mobile/bundle/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.d.ts +15 -0
  109. package/mobile/dist/components/ApplicationForm/renderSlideCheckboxes.js +1 -1
  110. package/mobile/dist/components/ApplicationForm/renderSlideCheckboxes.js.map +1 -1
  111. package/mobile/dist/components/Filtration/Filtration.d.ts +6 -0
  112. package/mobile/dist/components/Filtration/Filtration.js +17 -0
  113. package/mobile/dist/components/Filtration/Filtration.js.map +1 -0
  114. package/mobile/dist/components/Filtration/FiltrationContent.d.ts +78 -0
  115. package/mobile/dist/components/Filtration/FiltrationContent.js +2 -0
  116. package/mobile/dist/components/Filtration/FiltrationContent.js.map +1 -0
  117. package/mobile/dist/components/Filtration/FiltrationInner.d.ts +7 -0
  118. package/mobile/dist/components/Filtration/FiltrationInner.js +23 -0
  119. package/mobile/dist/components/Filtration/FiltrationInner.js.map +1 -0
  120. package/mobile/dist/components/Filtration/checkShouldRenderBlock.d.ts +1 -0
  121. package/mobile/dist/components/Filtration/checkShouldRenderBlock.js +11 -0
  122. package/mobile/dist/components/Filtration/checkShouldRenderBlock.js.map +1 -0
  123. package/mobile/dist/components/Filtration/renderFormItem.d.ts +4 -0
  124. package/mobile/dist/components/Filtration/renderFormItem.js +21 -0
  125. package/mobile/dist/components/Filtration/renderFormItem.js.map +1 -0
  126. package/mobile/dist/components/ProductBlock/ProductBlockContent.d.ts +2 -0
  127. package/mobile/dist/hooks/useForm.d.ts +12 -0
  128. package/mobile/dist/hooks/useForm.js +21 -0
  129. package/mobile/dist/hooks/useForm.js.map +1 -0
  130. package/mobile/dist/model/JSXBlock.d.ts +2 -0
  131. package/mobile/dist/ui-kit/ControlProps.d.ts +4 -0
  132. package/mobile/dist/ui-kit/ControlProps.js +2 -0
  133. package/mobile/dist/ui-kit/ControlProps.js.map +1 -0
  134. package/mobile/dist/ui-kit/Foldable/DefaultFoldButton.d.ts +1 -0
  135. package/mobile/dist/ui-kit/Foldable/DefaultFoldButton.js +5 -9
  136. package/mobile/dist/ui-kit/Foldable/DefaultFoldButton.js.map +1 -1
  137. package/mobile/dist/ui-kit/SlideCheckbox/SlideCheckbox.d.ts +3 -2
  138. package/mobile/dist/ui-kit/SlideCheckbox/SlideCheckbox.js +2 -2
  139. package/mobile/dist/ui-kit/SlideCheckbox/SlideCheckbox.js.map +1 -1
  140. package/mobile/dist/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.d.ts +15 -0
  141. package/mobile/dist/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.js +19 -0
  142. package/mobile/dist/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.js.map +1 -0
  143. package/mobile/lib/components/ApplicationForm/renderSlideCheckboxes.js +1 -1
  144. package/mobile/lib/components/ApplicationForm/renderSlideCheckboxes.js.map +1 -1
  145. package/mobile/lib/components/Filtration/Filtration.d.ts +6 -0
  146. package/mobile/lib/components/Filtration/Filtration.js +15 -0
  147. package/mobile/lib/components/Filtration/Filtration.js.map +1 -0
  148. package/mobile/lib/components/Filtration/FiltrationContent.d.ts +78 -0
  149. package/mobile/lib/components/Filtration/FiltrationContent.js +2 -0
  150. package/mobile/lib/components/Filtration/FiltrationContent.js.map +1 -0
  151. package/mobile/lib/components/Filtration/FiltrationInner.d.ts +7 -0
  152. package/mobile/lib/components/Filtration/FiltrationInner.js +21 -0
  153. package/mobile/lib/components/Filtration/FiltrationInner.js.map +1 -0
  154. package/mobile/lib/components/Filtration/checkShouldRenderBlock.d.ts +1 -0
  155. package/mobile/lib/components/Filtration/checkShouldRenderBlock.js +8 -0
  156. package/mobile/lib/components/Filtration/checkShouldRenderBlock.js.map +1 -0
  157. package/mobile/lib/components/Filtration/renderFormItem.d.ts +4 -0
  158. package/mobile/lib/components/Filtration/renderFormItem.js +18 -0
  159. package/mobile/lib/components/Filtration/renderFormItem.js.map +1 -0
  160. package/mobile/lib/components/ProductBlock/ProductBlockContent.d.ts +2 -0
  161. package/mobile/lib/hooks/useForm.d.ts +12 -0
  162. package/mobile/lib/hooks/useForm.js +18 -0
  163. package/mobile/lib/hooks/useForm.js.map +1 -0
  164. package/mobile/lib/model/JSXBlock.d.ts +2 -0
  165. package/mobile/lib/ui-kit/ControlProps.d.ts +4 -0
  166. package/mobile/lib/ui-kit/ControlProps.js +2 -0
  167. package/mobile/lib/ui-kit/ControlProps.js.map +1 -0
  168. package/mobile/lib/ui-kit/Foldable/DefaultFoldButton.d.ts +1 -0
  169. package/mobile/lib/ui-kit/Foldable/DefaultFoldButton.js +5 -9
  170. package/mobile/lib/ui-kit/Foldable/DefaultFoldButton.js.map +1 -1
  171. package/mobile/lib/ui-kit/SlideCheckbox/SlideCheckbox.d.ts +3 -2
  172. package/mobile/lib/ui-kit/SlideCheckbox/SlideCheckbox.js +2 -2
  173. package/mobile/lib/ui-kit/SlideCheckbox/SlideCheckbox.js.map +1 -1
  174. package/mobile/lib/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.d.ts +15 -0
  175. package/mobile/lib/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.js +17 -0
  176. package/mobile/lib/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.js.map +1 -0
  177. package/mobile/src/components/ApplicationForm/renderSlideCheckboxes.tsx +4 -4
  178. package/mobile/src/components/Filtration/Filtration.example.json +37 -0
  179. package/mobile/src/components/Filtration/Filtration.tsx +41 -0
  180. package/mobile/src/components/Filtration/Filtration.ui.json +1 -0
  181. package/mobile/src/components/Filtration/FiltrationContent.ts +87 -0
  182. package/mobile/src/components/Filtration/FiltrationInner.tsx +67 -0
  183. package/mobile/src/components/Filtration/checkShouldRenderBlock.ts +18 -0
  184. package/mobile/src/components/Filtration/renderFormItem.tsx +36 -0
  185. package/mobile/src/components/ProductBlock/ProductBlock.example.json +2 -1
  186. package/mobile/src/components/ProductBlock/ProductBlockContent.ts +2 -0
  187. package/mobile/src/hooks/useForm.ts +29 -0
  188. package/mobile/src/model/JSXBlock.ts +2 -0
  189. package/mobile/src/ui-kit/ControlProps.ts +4 -0
  190. package/mobile/src/ui-kit/Foldable/DefaultFoldButton.tsx +11 -11
  191. package/mobile/src/ui-kit/SlideCheckbox/SlideCheckbox.tsx +26 -23
  192. package/mobile/src/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.tsx +44 -0
  193. package/package.json +2 -1
  194. package/src/components/ApplicationForm/renderSlideCheckboxes.tsx +4 -4
  195. package/src/components/Blocks.ts +2 -0
  196. package/src/components/Filtration/Filtration.example.json +37 -0
  197. package/src/components/Filtration/Filtration.fixture.tsx +147 -0
  198. package/src/components/Filtration/Filtration.tsx +41 -0
  199. package/src/components/Filtration/Filtration.ui.json +1 -0
  200. package/src/components/Filtration/FiltrationContent.ts +87 -0
  201. package/src/components/Filtration/FiltrationInner.tsx +67 -0
  202. package/src/components/Filtration/checkShouldRenderBlock.ts +18 -0
  203. package/src/components/Filtration/renderFormItem.tsx +36 -0
  204. package/src/components/ProductBlock/ProductBlock.example.json +2 -1
  205. package/src/components/ProductBlock/ProductBlock.fixture.tsx +17 -0
  206. package/src/components/ProductBlock/ProductBlockContent.ts +2 -0
  207. package/src/components/ProductBlock/ProductBlockInner.tsx +4 -1
  208. package/src/hooks/useForm.ts +29 -0
  209. package/src/model/JSXBlock.ts +2 -0
  210. package/src/ui-kit/ControlProps.ts +4 -0
  211. package/src/ui-kit/Foldable/DefaultFoldButton.tsx +11 -11
  212. package/src/ui-kit/SlideCheckbox/SlideCheckbox.fixture.tsx +1 -1
  213. package/src/ui-kit/SlideCheckbox/SlideCheckbox.tsx +26 -23
  214. package/src/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.tsx +44 -0
@@ -0,0 +1,78 @@
1
+ import type { ButtonVersion } from '../../model/ButtonVersion';
2
+ /**
3
+ * @title Заголовок
4
+ */
5
+ declare type Title = string;
6
+ /**
7
+ * @title Ключи
8
+ */
9
+ declare type Enum = string[];
10
+ /**
11
+ * @title Имена
12
+ */
13
+ declare type EnumNames = string[];
14
+ export declare type StringEnum = {
15
+ title?: Title;
16
+ /**
17
+ * @default string
18
+ * @hidden
19
+ */
20
+ type?: 'string';
21
+ enum?: Enum;
22
+ enumNames?: EnumNames;
23
+ };
24
+ export declare type StringArray = {
25
+ title?: Title;
26
+ /**
27
+ * @default array
28
+ * @hidden
29
+ */
30
+ type?: 'array';
31
+ items?: {
32
+ /**
33
+ * @default string
34
+ * @hidden
35
+ */
36
+ type?: 'string';
37
+ enum?: Enum;
38
+ enumNames?: EnumNames;
39
+ };
40
+ };
41
+ export declare type FiltrationSchema = {
42
+ /** @title Тип недвижимости */
43
+ propertyType?: StringEnum;
44
+ /** @title Этап строительства */
45
+ stage?: StringEnum;
46
+ /** @title Категории */
47
+ categories?: StringEnum;
48
+ /** @title Дополнительно */
49
+ extraOptions?: StringEnum;
50
+ };
51
+ /**
52
+ * @title Кнопка сброса
53
+ */
54
+ export declare type ResetButton = {
55
+ /**
56
+ * @title Текст кнопки
57
+ */
58
+ text: string;
59
+ /**
60
+ * @title Цвет кнопки
61
+ */
62
+ buttonVersion: ButtonVersion;
63
+ };
64
+ export interface FiltrationInnerContent {
65
+ /** @title Название кнопки */
66
+ label?: string;
67
+ /** @title Количество отображаемых предметов */
68
+ topItemsCount?: number;
69
+ }
70
+ /**
71
+ * @title Фильтрация
72
+ */
73
+ export interface FiltrationContent extends FiltrationInnerContent {
74
+ /** @title Параметры фильтрации */
75
+ filtrationSchema?: FiltrationSchema;
76
+ resetButton?: ResetButton;
77
+ }
78
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=FiltrationContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FiltrationContent.js","sourceRoot":"","sources":["../../../src/components/Filtration/FiltrationContent.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { UniBlockProps } from '../../model/JSXBlock';
2
+ import type { FiltrationInnerContent } from './FiltrationContent';
3
+ interface FiltrationInnerProps extends FiltrationInnerContent, UniBlockProps {
4
+ filtrationState?: Record<string, any>;
5
+ }
6
+ export declare const FiltrationInner: import("@redneckz/uni-jsx").UNIComponent<FiltrationInnerProps, any, any>;
7
+ export {};
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { JSX } from '@redneckz/uni-jsx';
3
+ import { renderBlocksList } from '../../BlockRenderer/renderBlockList.js';
4
+ import { DefaultFoldButton } from '../../ui-kit/Foldable/DefaultFoldButton.js';
5
+ import { Foldable } from '../../ui-kit/Foldable/Foldable.js';
6
+ import { FoldableSection } from '../../ui-kit/Foldable/FoldableSection.js';
7
+ import { style } from '../../utils/style.js';
8
+ import { ErrorBlock } from '../ErrorBlock/ErrorBlock.js';
9
+ import { checkShouldRenderBlock } from './checkShouldRenderBlock.js';
10
+ const ICONS = ['ArrowDownIcon', 'ArrowUpIcon'];
11
+ const resultsGridStyle = 'grid grid-cols-12 gap-1 border-box';
12
+ export const FiltrationInner = JSX(({ label = '', filtrationState = {}, topItemsCount = 0, block, ...rest }) => {
13
+ const blocksToRender = block?.blocks?.filter((b) => checkShouldRenderBlock(filtrationState, b.content || {})) || [];
14
+ const [visibleBlocks, hiddenBlocks] = topItemsCount > 0
15
+ ? [blocksToRender.slice(0, topItemsCount), blocksToRender.slice(topItemsCount)]
16
+ : [blocksToRender, []];
17
+ return (_jsxs("div", { children: [_jsx("div", { className: style(blocksToRender.length ? 'hidden' : ''), children: _jsx(ErrorBlock, { error: { errorContentType: 'Image' }, title: "\u041D\u0435\u0442 \u043F\u043E\u0434\u0445\u043E\u0434\u044F\u0449\u0435\u0439 \u0438\u043F\u043E\u0442\u0435\u0447\u043D\u043E\u0439 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B", subtitle: "\u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440\u044B" }) }), _jsxs("div", { className: style(blocksToRender.length ? '' : 'hidden'), children: [_jsx("div", { className: resultsGridStyle, children: renderBlocksList(visibleBlocks, { ...rest.options, parent: block }) }), _jsx(Foldable, { renderFoldableSection: ({ isUnfolded }) => {
18
+ return (_jsx(FoldableSection, { className: resultsGridStyle, isUnfolded: isUnfolded, children: renderBlocksList(hiddenBlocks, { ...rest.options, parent: block }) }));
19
+ }, renderFoldButton: ({ isUnfolded, onToggle }) => (_jsx(DefaultFoldButton, { className: style('mt-11', topItemsCount < 1 ? 'hidden' : ''), disabled: !hiddenBlocks?.length, label: label, icon: ICONS[Number(isUnfolded)], dataTheme: rest.options?.page?.colorPalette, onClick: onToggle })) })] })] }));
20
+ });
21
+ //# sourceMappingURL=FiltrationInner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FiltrationInner.js","sourceRoot":"","sources":["../../../src/components/Filtration/FiltrationInner.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const checkShouldRenderBlock: (pattern: Record<string, any>, target: Record<string, any>) => boolean;
@@ -0,0 +1,8 @@
1
+ const isSingularFieldMatch = (key, pattern) => (target) => pattern[key] === undefined || pattern[key] === target[key];
2
+ const isMultipleFieldMatch = (key, pattern) => (target) => pattern[key] === undefined || pattern[key]?.every((_) => target[key]?.includes(_));
3
+ export const checkShouldRenderBlock = (pattern, target) => Object.entries(pattern)
4
+ .map(([key, subPattern]) => Array.isArray(subPattern)
5
+ ? isMultipleFieldMatch(key, pattern)
6
+ : isSingularFieldMatch(key, pattern))
7
+ .every((predicate) => predicate(target));
8
+ //# sourceMappingURL=checkShouldRenderBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkShouldRenderBlock.js","sourceRoot":"","sources":["../../../src/components/Filtration/checkShouldRenderBlock.ts"],"names":[],"mappings":"AAAA,MAAM,oBAAoB,GACxB,CAAsD,GAAW,EAAE,OAAU,EAAE,EAAE,CACjF,CAAC,MAAS,EAAE,EAAE,CACZ,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC;AAE/D,MAAM,oBAAoB,GACxB,CAAwD,GAAW,EAAE,OAAU,EAAE,EAAE,CACnF,CAAC,MAAS,EAAE,EAAE,CACZ,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAA4B,EAAE,MAA2B,EAAE,EAAE,CAClG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;KACpB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE,CACzB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;IACvB,CAAC,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC;IACpC,CAAC,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CACvC;KACA,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import type { FormElementRegisterer } from '../../hooks/useForm';
3
+ import type { FiltrationSchema } from './FiltrationContent';
4
+ export declare const renderFormItem: (filtrationSchema: FiltrationSchema, register: FormElementRegisterer) => (key: string) => JSX.Element | null;
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { SlideCheckboxGroup } from '../../ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.js';
3
+ import { Text } from '../../ui-kit/Text/Text.js';
4
+ export const renderFormItem = (filtrationSchema, register) => (key) => {
5
+ const item = filtrationSchema[key];
6
+ const type = item?.type;
7
+ switch (type) {
8
+ case 'string':
9
+ return renderRadioButtons(key, register)(item);
10
+ default:
11
+ return null;
12
+ }
13
+ };
14
+ const renderRadioButtons = (key, register) => (item) => {
15
+ const options = item?.enum?.map((e, i) => ({ value: e, title: item?.enumNames?.[i] || '' })) || [];
16
+ return (_jsxs("div", { role: "radiogroup", children: [item?.title ? (_jsx("div", { className: "mb-4", children: _jsx(Text, { size: "text-m", font: "font-light", color: "text-secondary-text", children: item.title }) })) : null, _jsx(SlideCheckboxGroup, { items: options, multiple: false, ...register(key) })] }, key));
17
+ };
18
+ //# sourceMappingURL=renderFormItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderFormItem.js","sourceRoot":"","sources":["../../../src/components/Filtration/renderFormItem.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AACxF,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAG9C,MAAM,CAAC,MAAM,cAAc,GACzB,CAAC,gBAAkC,EAAE,QAA+B,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE;IACvF,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAoC,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC;IAExB,QAAQ,IAAI,EAAE;QACZ,KAAK,QAAQ;YACX,OAAO,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;QACjD;YACE,OAAO,IAAI,CAAC;KACf;AACH,CAAC,CAAC;AAEJ,MAAM,kBAAkB,GACtB,CAAC,GAAW,EAAE,QAA+B,EAAE,EAAE,CAAC,CAAC,IAAiB,EAAE,EAAE;IACtE,MAAM,OAAO,GACX,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAErF,OAAO,CACL,eAAK,IAAI,EAAC,YAAY,aACnB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CACb,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,IAAI,IAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,YAAY,EAAC,KAAK,EAAC,qBAAqB,YAC9D,IAAI,CAAC,KAAK,GACN,GACH,CACP,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,kBAAkB,IAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,KAAM,QAAQ,CAAC,GAAG,CAAC,GAAI,KARhD,GAAG,CASzB,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -29,6 +29,8 @@ export declare type ProductBlockInnerContent = HeadlineProps & RichTextProps & L
29
29
  * @hidden
30
30
  */
31
31
  textBlockClassName?: string;
32
+ /** @title Картинка справа/текст слева */
33
+ directionRight?: boolean;
32
34
  };
33
35
  /**
34
36
  * @title Продуктовый блок
@@ -0,0 +1,12 @@
1
+ export declare type FormElementRegisterer = ReturnType<typeof useForm>['register'];
2
+ export declare const useForm: <FormState extends Record<string, any>>(initialState?: Partial<FormState>) => {
3
+ formState: Partial<FormState>;
4
+ register: <FieldName extends keyof FormState>(fieldName: FieldName) => {
5
+ value?: undefined;
6
+ onChange?: undefined;
7
+ } | {
8
+ value: Partial<FormState>[FieldName];
9
+ onChange: Partial<Record<keyof FormState, () => void>>[FieldName];
10
+ };
11
+ resetForm: () => void;
12
+ };
@@ -0,0 +1,18 @@
1
+ import { useCallback, useRef, useState } from '@redneckz/uni-jsx/lib/hooks';
2
+ export const useForm = (initialState = {}) => {
3
+ const [formState, setFormState] = useState(initialState);
4
+ const handlersMap = useRef({});
5
+ const register = (fieldName) => {
6
+ if (!handlersMap.current) {
7
+ return {};
8
+ }
9
+ const handler = (value) => {
10
+ setFormState((prev) => ({ ...prev, [fieldName]: value }));
11
+ };
12
+ handlersMap.current[fieldName] ||= handler;
13
+ return { value: formState?.[fieldName], onChange: handlersMap.current[fieldName] };
14
+ };
15
+ const resetForm = useCallback(() => setFormState({}), []);
16
+ return { formState, register, resetForm };
17
+ };
18
+ //# sourceMappingURL=useForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useForm.js","sourceRoot":"","sources":["../../src/hooks/useForm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAI5E,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,eAAmC,EAAE,EACrC,EAAE;IACF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAqB,YAAY,CAAC,CAAC;IAE7E,MAAM,WAAW,GAAG,MAAM,CAA+C,EAAE,CAAC,CAAC;IAE7E,MAAM,QAAQ,GAAG,CAAoC,SAAoB,EAAE,EAAE;QAC3E,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,OAAO,EAAE,CAAC;SACX;QAED,MAAM,OAAO,GAAG,CAAC,KAA4B,EAAE,EAAE;YAC/C,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC;QAEF,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC;QAE3C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;IACrF,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAE1D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC5C,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { UNIComponent } from '@redneckz/uni-jsx';
2
+ import type { JSONSchema7Definition } from 'json-schema';
2
3
  import type { BlockRendererOptions } from '../BlockRenderer/BlockRendererOptions';
3
4
  import type { SlotName } from './BlockDecorator';
4
5
  import type { BlockVersion } from './BlockVersion';
@@ -22,5 +23,6 @@ export declare type JSXBlock<BlockProps extends UniBlockProps = UniBlockProps> =
22
23
  include?: string[];
23
24
  exclude?: string[];
24
25
  };
26
+ childSchema?: (content: BlockDef['content']) => Record<string, JSONSchema7Definition>;
25
27
  slots?: (props: BlockProps) => SlotName[];
26
28
  };
@@ -0,0 +1,4 @@
1
+ export interface ControlProps<T> {
2
+ value?: T;
3
+ onChange?: (value: T | undefined) => void;
4
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ControlProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlProps.js","sourceRoot":"","sources":["../../src/ui-kit/ControlProps.ts"],"names":[],"mappings":""}
@@ -7,6 +7,7 @@ interface DefaultFoldButtonProps {
7
7
  label: string;
8
8
  icon: IconName;
9
9
  dataTheme?: ColorPalette;
10
+ disabled?: boolean;
10
11
  onClick?: () => void;
11
12
  }
12
13
  export declare const DefaultFoldButton: import("@redneckz/uni-jsx").UNIComponent<DefaultFoldButtonProps, any, any>;
@@ -1,15 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
+ import { style } from '../../utils/style.js';
3
4
  import { Img } from '../Img/Img.js';
4
- export const DefaultFoldButton = JSX(({ className = '', label, icon, dataTheme = '', onClick }) => {
5
- const STATE_STYLE = 'hover:bg-primary-hover focus:border-primary-text active:bg-primary-active outline-none';
6
- const DIMENSIONS_STYLE = 'flex justify-center w-full px-0 py-5';
7
- return (_jsxs("button", { className: [
8
- 'border border-transparent bg-primary-main font-sans text-white cursor-pointer',
9
- STATE_STYLE,
10
- DIMENSIONS_STYLE,
11
- className,
12
- ].join(' '), "data-theme": dataTheme, onClick: onClick, children: [_jsx("span", { className: "text-h4 pr-3", children: label }), icon ? (_jsx(Img, { image: {
5
+ export const DefaultFoldButton = JSX(({ className = '', label, icon, dataTheme = '', disabled = false, onClick }) => {
6
+ return (_jsxs("button", { className: style('flex justify-center w-full px-0 py-5 border border-transparent outline-none focus:border-primary-text', disabled
7
+ ? 'bg-main-divider text-main-disabled hover:bg-main-divider'
8
+ : 'bg-primary-main text-white hover:bg-primary-hove', className), onClick: onClick, disabled: disabled, "data-theme": dataTheme, children: [_jsx("span", { className: "text-h4 pr-3", children: label }), icon ? (_jsx(Img, { image: {
13
9
  icon,
14
10
  iconVersion: 'white',
15
11
  }, className: "flex-shrink-0 my-auto", width: "20", height: "20", asSVG: true })) : null] }));
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultFoldButton.js","sourceRoot":"","sources":["../../../src/ui-kit/Foldable/DefaultFoldButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAGxC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAWjC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAClC,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IAC3D,MAAM,WAAW,GACf,wFAAwF,CAAC;IAC3F,MAAM,gBAAgB,GAAG,sCAAsC,CAAC;IAEhE,OAAO,CACL,kBACE,SAAS,EAAE;YACT,+EAA+E;YAC/E,WAAW;YACX,gBAAgB;YAChB,SAAS;SACV,CAAC,IAAI,CAAC,GAAG,CAAC,gBACC,SAAS,EACrB,OAAO,EAAE,OAAO,aAEhB,eAAM,SAAS,EAAC,cAAc,YAAE,KAAK,GAAQ,EAC5C,IAAI,CAAC,CAAC,CAAC,CACN,KAAC,GAAG,IACF,KAAK,EAAE;oBACL,IAAI;oBACJ,WAAW,EAAE,OAAO;iBACrB,EACD,SAAS,EAAC,uBAAuB,EACjC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,KAAK,SACL,CACH,CAAC,CAAC,CAAC,IAAI,IACD,CACV,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAqB,EAAE,EAAE;IACrF,MAAM,MAAM,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACxC,MAAM,KAAK,GAAe,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IAE3D,OAAO,CACL,KAAC,iBAAiB,IAChB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EACjC,OAAO,EAAE,QAAQ,GACjB,CACH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"DefaultFoldButton.js","sourceRoot":"","sources":["../../../src/ui-kit/Foldable/DefaultFoldButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAYjC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAClC,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;IAC7E,OAAO,CACL,kBACE,SAAS,EAAE,KAAK,CACd,uGAAuG,EACvG,QAAQ;YACN,CAAC,CAAC,0DAA0D;YAC5D,CAAC,CAAC,kDAAkD,EACtD,SAAS,CACV,EACD,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,gBACN,SAAS,aAErB,eAAM,SAAS,EAAC,cAAc,YAAE,KAAK,GAAQ,EAC5C,IAAI,CAAC,CAAC,CAAC,CACN,KAAC,GAAG,IACF,KAAK,EAAE;oBACL,IAAI;oBACJ,WAAW,EAAE,OAAO;iBACrB,EACD,SAAS,EAAC,uBAAuB,EACjC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,KAAK,SACL,CACH,CAAC,CAAC,CAAC,IAAI,IACD,CACV,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAqB,EAAE,EAAE;IACrF,MAAM,MAAM,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACxC,MAAM,KAAK,GAAe,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IAE3D,OAAO,CACL,KAAC,iBAAiB,IAChB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EACjC,OAAO,EAAE,QAAQ,GACjB,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -1,7 +1,8 @@
1
1
  interface SlideCheckboxProps {
2
- checked?: boolean;
2
+ value?: boolean;
3
3
  text?: string;
4
- onClick?: () => void;
4
+ type?: 'checkbox' | 'radio';
5
+ onChange?: (value: boolean) => void;
5
6
  }
6
7
  export declare const SlideCheckbox: import("@redneckz/uni-jsx").UNIComponent<SlideCheckboxProps, any, any>;
7
8
  export {};
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
- import { Text } from '../../ui-kit/Text/Text.js';
4
- export const SlideCheckbox = JSX(({ checked, text, onClick }) => (_jsxs("div", { role: "checkbox", "aria-checked": checked, className: "flex justify-start items-center w-full cursor-pointer mb-4", onClick: () => onClick && onClick(), children: [_jsx("div", { className: `relative duration-300 w-9 h-5 mr-3 rounded rounded-2xl ${checked ? 'bg-primary-main' : 'bg-main-divider'}`, children: _jsx("div", { className: `absolute opacity-80 duration-500 top-0.5 w-4 h-4 bg-white rounded rounded-full ${checked ? 'left-[50%]' : 'left-[5%]'}` }) }), _jsx("div", { children: _jsx(Text, { size: "text-m", font: "font-light", color: "text-primary-text", children: text }) })] })));
3
+ import { Text } from '../Text/Text.js';
4
+ export const SlideCheckbox = JSX(({ value = false, text, type = 'checkbox', onChange }) => (_jsxs("div", { role: type, "aria-checked": value, className: "flex justify-start items-center w-full cursor-pointer mb-4", onClick: () => onChange && onChange(!value), children: [_jsx("div", { className: `relative flex-shrink-0 duration-300 w-9 h-5 mr-3 rounded-2xl ${value ? 'bg-primary-main' : 'bg-main-divider'}`, children: _jsx("div", { className: `absolute opacity-80 duration-500 top-0.5 w-4 h-4 bg-white rounded-full ${value ? 'left-[50%]' : 'left-[5%]'}` }) }), _jsx("div", { children: _jsx(Text, { size: "text-m", font: "font-light", color: "text-primary-text", children: text }) })] })));
5
5
  //# sourceMappingURL=SlideCheckbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SlideCheckbox.js","sourceRoot":"","sources":["../../../src/ui-kit/SlideCheckbox/SlideCheckbox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAO9C,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CACnF,eACE,IAAI,EAAC,UAAU,kBACD,OAAO,EACrB,SAAS,EAAC,4DAA4D,EACtE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,IAAI,OAAO,EAAE,aAEnC,cACE,SAAS,EAAE,0DACT,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAChC,EAAE,YAEF,cACE,SAAS,EAAE,kFACT,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAC3B,EAAE,GACF,GACE,EACN,wBACE,KAAC,IAAI,IAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,YAAY,EAAC,KAAK,EAAC,mBAAmB,YAC5D,IAAI,GACA,GACH,IACF,CACP,CAAC,CAAC"}
1
+ {"version":3,"file":"SlideCheckbox.js","sourceRoot":"","sources":["../../../src/ui-kit/SlideCheckbox/SlideCheckbox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAQpC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAC9B,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CACxD,eACE,IAAI,EAAE,IAAI,kBACI,KAAK,EACnB,SAAS,EAAC,4DAA4D,EACtE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,KAAK,CAAC,aAE3C,cACE,SAAS,EAAE,gEACT,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAC9B,EAAE,YAEF,cACE,SAAS,EAAE,0EACT,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WACzB,EAAE,GACF,GACE,EACN,wBACE,KAAC,IAAI,IAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,YAAY,EAAC,KAAK,EAAC,mBAAmB,YAC5D,IAAI,GACA,GACH,IACF,CACP,CACF,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { ControlProps } from '../ControlProps';
2
+ declare type SlideCheckboxGroupItem = {
3
+ value: string;
4
+ title: string;
5
+ };
6
+ interface SlideCheckboxGroupProps extends ControlProps<string> {
7
+ multiple: false;
8
+ items: SlideCheckboxGroupItem[];
9
+ }
10
+ interface MultipleSlideCheckboxGroupProps extends ControlProps<string[]> {
11
+ multiple: true;
12
+ items: SlideCheckboxGroupItem[];
13
+ }
14
+ export declare const SlideCheckboxGroup: import("@redneckz/uni-jsx").UNIComponent<SlideCheckboxGroupProps | MultipleSlideCheckboxGroupProps, any, any>;
15
+ export {};
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { JSX } from '@redneckz/uni-jsx';
3
+ import { SlideCheckbox } from '../SlideCheckbox/SlideCheckbox.js';
4
+ export const SlideCheckboxGroup = JSX(({ value, onChange, items = [], multiple }) => {
5
+ const handleChange = (newValue) => {
6
+ if (multiple) {
7
+ const hasAlready = value?.includes(newValue);
8
+ onChange &&
9
+ onChange(hasAlready ? value?.filter((v) => v !== newValue) : [...(value || []), newValue]);
10
+ }
11
+ else {
12
+ onChange && onChange(value === newValue ? undefined : newValue);
13
+ }
14
+ };
15
+ return items.map((item) => (_jsx(SlideCheckbox, { text: item.title, value: [value].flatMap((_) => _).includes(item.value), onChange: () => handleChange(item.value), type: multiple ? 'checkbox' : 'radio' }, item.value)));
16
+ });
17
+ //# sourceMappingURL=SlideCheckboxGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlideCheckboxGroup.js","sourceRoot":"","sources":["../../../src/ui-kit/SlideCheckboxGroup/SlideCheckboxGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAiB/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CACnC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC5C,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,EAAE;QACxC,IAAI,QAAQ,EAAE;YACZ,MAAM,UAAU,GAAG,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC7C,QAAQ;gBACN,QAAQ,CACN,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CACjF,CAAC;SACL;aAAM;YACL,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;SACjE;IACH,CAAC,CAAC;IAEF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACzB,KAAC,aAAa,IAEZ,IAAI,EAAE,IAAI,CAAC,KAAK,EAChB,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EACrD,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EACxC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,IAJhC,IAAI,CAAC,KAAK,CAKf,CACH,CAAC,CAAC;AACL,CAAC,CACF,CAAC"}
@@ -15,14 +15,14 @@ export const renderSlideCheckboxes = ({
15
15
  }: SlideCheckboxesProps) => (
16
16
  <div className="mb-5">
17
17
  <SlideCheckbox
18
- checked={onlineСheckout}
18
+ value={onlineСheckout}
19
19
  text="Хочу купить онлайн-кассу"
20
- onClick={() => handleChange({ onlineСheckout: !onlineСheckout })}
20
+ onChange={() => handleChange({ onlineСheckout: !onlineСheckout })}
21
21
  />
22
22
  <SlideCheckbox
23
- checked={posTerminal}
23
+ value={posTerminal}
24
24
  text="Хочу купить POS-терминал"
25
- onClick={() => handleChange({ posTerminal: !posTerminal })}
25
+ onChange={() => handleChange({ posTerminal: !posTerminal })}
26
26
  />
27
27
  </div>
28
28
  );
@@ -0,0 +1,37 @@
1
+ {
2
+ "content": {
3
+ "filtrationSchema": {
4
+ "propertyType": {
5
+ "title": "Тип недвижимости",
6
+ "type": "string",
7
+ "enum": ["flat", "apartment", "house", "storeRoom", "parkingSpace"],
8
+ "enumNames": ["Квартира", "Апартаменты", "Жилой дом", "Кладовая", "Машино-место"]
9
+ },
10
+ "stage": {
11
+ "title": "Этап строительства",
12
+ "type": "string",
13
+ "enum": ["built", "inProgress"],
14
+ "enumNames": ["Готовое жильё", "Строящиеся"]
15
+ },
16
+ "categories": {
17
+ "title": "Категории",
18
+ "type": "string",
19
+ "enum": ["salaryClient", "IT", "youngFamily", "military", "medicalWorker", "scientist"],
20
+ "enumNames": [
21
+ "Зарплатный клиент",
22
+ "IT-специалист",
23
+ "Молодая семья",
24
+ "Военнослужащий",
25
+ "Медицинский работник",
26
+ "Научный сотрудник"
27
+ ]
28
+ },
29
+ "extraOptions": {
30
+ "title": "Дополнительно",
31
+ "type": "string",
32
+ "enum": ["preferentialMortgage", "children"],
33
+ "enumNames": ["Льготная ипотека", "Дети"]
34
+ }
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,41 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useForm } from '../../hooks/useForm';
3
+ import type { JSXBlock, UniBlockProps } from '../../model/JSXBlock';
4
+ import { BlockWrapper } from '../../ui-kit/BlockWrapper';
5
+ import { Button } from '../../ui-kit/Button/Button';
6
+ import { style } from '../../utils/style';
7
+ import type { FiltrationContent } from './FiltrationContent';
8
+ import { FiltrationInner } from './FiltrationInner';
9
+ import { renderFormItem } from './renderFormItem';
10
+
11
+ interface FiltrationProps extends FiltrationContent, UniBlockProps {}
12
+
13
+ export const Filtration: JSXBlock<FiltrationProps> = JSX<FiltrationProps>(
14
+ ({ className, filtrationSchema = {}, resetButton, ...rest }) => {
15
+ const { formState, register, resetForm } = useForm();
16
+
17
+ return (
18
+ <BlockWrapper className={style('p-9', className)} {...rest}>
19
+ <form className="flex justify-between">
20
+ <div className="flex gap-11">
21
+ {Object.keys(filtrationSchema).map(renderFormItem(filtrationSchema, register))}
22
+ </div>
23
+ {resetButton ? (
24
+ <div>
25
+ <Button
26
+ className="w-72"
27
+ text={resetButton.text}
28
+ version={resetButton.buttonVersion}
29
+ onClick={resetForm}
30
+ />
31
+ </div>
32
+ ) : null}
33
+ </form>
34
+ <FiltrationInner filtrationState={formState} {...rest} />
35
+ </BlockWrapper>
36
+ );
37
+ },
38
+ );
39
+
40
+ Filtration.childrenTypes = ['ProductTile'];
41
+ Filtration.childSchema = (content?: FiltrationContent) => content?.filtrationSchema || {};
@@ -0,0 +1,87 @@
1
+ import type { ButtonVersion } from '../../model/ButtonVersion';
2
+
3
+ /**
4
+ * @title Заголовок
5
+ */
6
+ type Title = string;
7
+
8
+ /**
9
+ * @title Ключи
10
+ */
11
+ type Enum = string[];
12
+
13
+ /**
14
+ * @title Имена
15
+ */
16
+ type EnumNames = string[];
17
+
18
+ export type StringEnum = {
19
+ title?: Title;
20
+ /**
21
+ * @default string
22
+ * @hidden
23
+ */
24
+ type?: 'string';
25
+ enum?: Enum;
26
+ enumNames?: EnumNames;
27
+ };
28
+
29
+ export type StringArray = {
30
+ title?: Title;
31
+ /**
32
+ * @default array
33
+ * @hidden
34
+ */
35
+ type?: 'array';
36
+ items?: {
37
+ /**
38
+ * @default string
39
+ * @hidden
40
+ */
41
+ type?: 'string';
42
+ enum?: Enum;
43
+ enumNames?: EnumNames;
44
+ };
45
+ };
46
+
47
+ // TODO: Make customizable to implement arbitrary filtration blocks
48
+ export type FiltrationSchema = {
49
+ /** @title Тип недвижимости */
50
+ propertyType?: StringEnum;
51
+ /** @title Этап строительства */
52
+ stage?: StringEnum;
53
+ /** @title Категории */
54
+ categories?: StringEnum;
55
+ /** @title Дополнительно */
56
+ extraOptions?: StringEnum;
57
+ };
58
+
59
+ /**
60
+ * @title Кнопка сброса
61
+ */
62
+ export type ResetButton = {
63
+ /**
64
+ * @title Текст кнопки
65
+ */
66
+ text: string;
67
+ /**
68
+ * @title Цвет кнопки
69
+ */
70
+ buttonVersion: ButtonVersion;
71
+ };
72
+
73
+ export interface FiltrationInnerContent {
74
+ /** @title Название кнопки */
75
+ label?: string;
76
+ /** @title Количество отображаемых предметов */
77
+ topItemsCount?: number;
78
+ }
79
+
80
+ /**
81
+ * @title Фильтрация
82
+ */
83
+ export interface FiltrationContent extends FiltrationInnerContent {
84
+ /** @title Параметры фильтрации */
85
+ filtrationSchema?: FiltrationSchema;
86
+ resetButton?: ResetButton;
87
+ }
@@ -0,0 +1,67 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { renderBlocksList } from '../../BlockRenderer/renderBlockList';
3
+ import type { IconName } from '../../icons/IconName';
4
+ import type { UniBlockProps } from '../../model/JSXBlock';
5
+ import { DefaultFoldButton } from '../../ui-kit/Foldable/DefaultFoldButton';
6
+ import { Foldable } from '../../ui-kit/Foldable/Foldable';
7
+ import { FoldableSection } from '../../ui-kit/Foldable/FoldableSection';
8
+ import { style } from '../../utils/style';
9
+ import { ErrorBlock } from '../ErrorBlock/ErrorBlock';
10
+ import { checkShouldRenderBlock } from './checkShouldRenderBlock';
11
+ import type { FiltrationInnerContent } from './FiltrationContent';
12
+
13
+ const ICONS: IconName[] = ['ArrowDownIcon', 'ArrowUpIcon'];
14
+
15
+ const resultsGridStyle = 'grid grid-cols-12 gap-1 border-box';
16
+
17
+ interface FiltrationInnerProps extends FiltrationInnerContent, UniBlockProps {
18
+ filtrationState?: Record<string, any>;
19
+ }
20
+
21
+ export const FiltrationInner = JSX<FiltrationInnerProps>(
22
+ ({ label = '', filtrationState = {}, topItemsCount = 0, block, ...rest }) => {
23
+ const blocksToRender =
24
+ block?.blocks?.filter((b) => checkShouldRenderBlock(filtrationState, b.content || {})) || [];
25
+
26
+ const [visibleBlocks, hiddenBlocks] =
27
+ topItemsCount > 0
28
+ ? [blocksToRender.slice(0, topItemsCount), blocksToRender.slice(topItemsCount)]
29
+ : [blocksToRender, []];
30
+
31
+ return (
32
+ <div>
33
+ <div className={style(blocksToRender.length ? 'hidden' : '')}>
34
+ <ErrorBlock
35
+ error={{ errorContentType: 'Image' }}
36
+ title="Нет подходящей ипотечной программы"
37
+ subtitle="Попробуйте очистить фильтры"
38
+ />
39
+ </div>
40
+ <div className={style(blocksToRender.length ? '' : 'hidden')}>
41
+ <div className={resultsGridStyle}>
42
+ {renderBlocksList(visibleBlocks, { ...rest.options, parent: block })}
43
+ </div>
44
+ <Foldable
45
+ renderFoldableSection={({ isUnfolded }) => {
46
+ return (
47
+ <FoldableSection className={resultsGridStyle} isUnfolded={isUnfolded}>
48
+ {renderBlocksList(hiddenBlocks, { ...rest.options, parent: block })}
49
+ </FoldableSection>
50
+ );
51
+ }}
52
+ renderFoldButton={({ isUnfolded, onToggle }) => (
53
+ <DefaultFoldButton
54
+ className={style('mt-11', topItemsCount < 1 ? 'hidden' : '')}
55
+ disabled={!hiddenBlocks?.length}
56
+ label={label}
57
+ icon={ICONS[Number(isUnfolded)]}
58
+ dataTheme={rest.options?.page?.colorPalette}
59
+ onClick={onToggle}
60
+ />
61
+ )}
62
+ />
63
+ </div>
64
+ </div>
65
+ );
66
+ },
67
+ );