@gravity-ui/blog-constructor 4.0.0-alpha.0 → 4.0.0

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 (48) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/build/cjs/blocks/Feed/Feed.js +47 -37
  3. package/build/cjs/blocks/Feed/reducer.d.ts +0 -5
  4. package/build/cjs/blocks/Feed/reducer.js +1 -4
  5. package/build/cjs/blocks/Header/schema.d.ts +81 -0
  6. package/build/cjs/blocks/Media/schema.d.ts +81 -0
  7. package/build/cjs/blocks/YFM/YFM.js +1 -1
  8. package/build/cjs/components/FeedHeader/FeedHeader.js +2 -2
  9. package/build/cjs/components/FeedHeader/components/Controls/Controls.d.ts +2 -3
  10. package/build/cjs/components/FeedHeader/components/Controls/Controls.js +24 -16
  11. package/build/cjs/components/Paginator/Paginator.d.ts +1 -1
  12. package/build/cjs/components/Paginator/Paginator.js +2 -2
  13. package/build/cjs/components/Paginator/types.d.ts +0 -1
  14. package/build/cjs/components/Posts/Posts.css +25 -0
  15. package/build/cjs/components/Posts/Posts.d.ts +0 -1
  16. package/build/cjs/components/Posts/Posts.js +5 -4
  17. package/build/cjs/components/Search/Search.js +1 -1
  18. package/build/cjs/models/common.d.ts +5 -1
  19. package/build/cjs/schema/index.d.ts +162 -0
  20. package/build/cjs/utils/common.js +1 -1
  21. package/build/esm/blocks/Feed/Feed.js +47 -37
  22. package/build/esm/blocks/Feed/reducer.d.ts +0 -5
  23. package/build/esm/blocks/Feed/reducer.js +1 -4
  24. package/build/esm/blocks/Header/schema.d.ts +81 -0
  25. package/build/esm/blocks/Media/schema.d.ts +81 -0
  26. package/build/esm/blocks/YFM/YFM.js +1 -1
  27. package/build/esm/components/FeedHeader/FeedHeader.js +2 -2
  28. package/build/esm/components/FeedHeader/components/Controls/Controls.d.ts +2 -3
  29. package/build/esm/components/FeedHeader/components/Controls/Controls.js +25 -17
  30. package/build/esm/components/Paginator/Paginator.d.ts +1 -1
  31. package/build/esm/components/Paginator/Paginator.js +2 -2
  32. package/build/esm/components/Paginator/types.d.ts +0 -1
  33. package/build/esm/components/Posts/Posts.css +25 -0
  34. package/build/esm/components/Posts/Posts.d.ts +0 -1
  35. package/build/esm/components/Posts/Posts.js +5 -4
  36. package/build/esm/components/Search/Search.js +1 -1
  37. package/build/esm/models/common.d.ts +5 -1
  38. package/build/esm/schema/index.d.ts +162 -0
  39. package/build/esm/utils/common.js +1 -1
  40. package/package.json +2 -5
  41. package/server/data/sanitizeMeta.d.ts +2 -0
  42. package/server/data/sanitizeMeta.js +2 -0
  43. package/server/data/transformPageContent.js +1 -1
  44. package/server/models/common.d.ts +5 -1
  45. package/build/cjs/blocks/YFM/__tests__/YFM.test.d.ts +0 -1
  46. package/build/cjs/blocks/YFM/__tests__/YFM.test.js +0 -16
  47. package/build/esm/blocks/YFM/__tests__/YFM.test.d.ts +0 -1
  48. package/build/esm/blocks/YFM/__tests__/YFM.test.js +0 -11
@@ -25,8 +25,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.Search = void 0;
27
27
  const react_1 = __importStar(require("react"));
28
- const lodash_1 = require("lodash");
29
28
  const uikit_1 = require("@gravity-ui/uikit");
29
+ const lodash_1 = require("lodash");
30
30
  const useIsIPhone_1 = require("../../hooks/useIsIPhone");
31
31
  const i18n_1 = require("../../i18n");
32
32
  const Close_1 = require("../../icons/Close");
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
- import { IBrowser, IDevice } from 'ua-parser-js';
3
2
  import { HeaderBlockProps as PageConstructorHeaderBlockProps } from '@gravity-ui/page-constructor';
3
+ import { IBrowser, IDevice } from 'ua-parser-js';
4
4
  import { Locale } from '../models/locale';
5
5
  export declare enum Theme {
6
6
  Light = "light",
@@ -161,3 +161,7 @@ export declare enum DefaultEventNames {
161
161
  Service = "selector-service-click",
162
162
  SaveOnly = "save-only-button-click"
163
163
  }
164
+ export type FetchArgs = {
165
+ page?: number;
166
+ query: Query;
167
+ };
@@ -295,6 +295,87 @@ export declare const schemasForCustom: {
295
295
  type: string;
296
296
  })[];
297
297
  };
298
+ fullscreen: {
299
+ type: string;
300
+ };
301
+ analyticsEvents: {
302
+ anyOf: ({
303
+ type: string;
304
+ additionalProperties: {
305
+ type: string;
306
+ };
307
+ required: string[];
308
+ properties: {
309
+ name: {
310
+ type: string;
311
+ };
312
+ type: {
313
+ type: string;
314
+ };
315
+ counters: {
316
+ type: string;
317
+ additionalProperties: boolean;
318
+ required: never[];
319
+ properties: {
320
+ include: {
321
+ type: string;
322
+ items: {
323
+ type: string;
324
+ };
325
+ };
326
+ exclude: {
327
+ type: string;
328
+ items: {
329
+ type: string;
330
+ };
331
+ };
332
+ };
333
+ };
334
+ context: {
335
+ type: string;
336
+ };
337
+ };
338
+ } | {
339
+ type: string;
340
+ items: {
341
+ type: string;
342
+ additionalProperties: {
343
+ type: string;
344
+ };
345
+ required: string[];
346
+ properties: {
347
+ name: {
348
+ type: string;
349
+ };
350
+ type: {
351
+ type: string;
352
+ };
353
+ counters: {
354
+ type: string;
355
+ additionalProperties: boolean;
356
+ required: never[];
357
+ properties: {
358
+ include: {
359
+ type: string;
360
+ items: {
361
+ type: string;
362
+ };
363
+ };
364
+ exclude: {
365
+ type: string;
366
+ items: {
367
+ type: string;
368
+ };
369
+ };
370
+ };
371
+ };
372
+ context: {
373
+ type: string;
374
+ };
375
+ };
376
+ };
377
+ })[];
378
+ };
298
379
  };
299
380
  } | {
300
381
  type: string;
@@ -1088,6 +1169,87 @@ export declare const schemasForCustom: {
1088
1169
  type: string;
1089
1170
  })[];
1090
1171
  };
1172
+ fullscreen: {
1173
+ type: string;
1174
+ };
1175
+ analyticsEvents: {
1176
+ anyOf: ({
1177
+ type: string;
1178
+ additionalProperties: {
1179
+ type: string;
1180
+ };
1181
+ required: string[];
1182
+ properties: {
1183
+ name: {
1184
+ type: string;
1185
+ };
1186
+ type: {
1187
+ type: string;
1188
+ };
1189
+ counters: {
1190
+ type: string;
1191
+ additionalProperties: boolean;
1192
+ required: never[];
1193
+ properties: {
1194
+ include: {
1195
+ type: string;
1196
+ items: {
1197
+ type: string;
1198
+ };
1199
+ };
1200
+ exclude: {
1201
+ type: string;
1202
+ items: {
1203
+ type: string;
1204
+ };
1205
+ };
1206
+ };
1207
+ };
1208
+ context: {
1209
+ type: string;
1210
+ };
1211
+ };
1212
+ } | {
1213
+ type: string;
1214
+ items: {
1215
+ type: string;
1216
+ additionalProperties: {
1217
+ type: string;
1218
+ };
1219
+ required: string[];
1220
+ properties: {
1221
+ name: {
1222
+ type: string;
1223
+ };
1224
+ type: {
1225
+ type: string;
1226
+ };
1227
+ counters: {
1228
+ type: string;
1229
+ additionalProperties: boolean;
1230
+ required: never[];
1231
+ properties: {
1232
+ include: {
1233
+ type: string;
1234
+ items: {
1235
+ type: string;
1236
+ };
1237
+ };
1238
+ exclude: {
1239
+ type: string;
1240
+ items: {
1241
+ type: string;
1242
+ };
1243
+ };
1244
+ };
1245
+ };
1246
+ context: {
1247
+ type: string;
1248
+ };
1249
+ };
1250
+ };
1251
+ })[];
1252
+ };
1091
1253
  paddingTop: {
1092
1254
  type: string;
1093
1255
  enum: string[];
@@ -13,8 +13,8 @@ var __rest = (this && this.__rest) || function (s, e) {
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.scrollOnPageChange = exports.getFeedQueryParams = exports.getBlogElementMetrika = exports.isMetrikaExist = exports.getBreadcrumbs = exports.getBlogPath = exports.updateContentSizes = exports.getTagFilterUrl = exports.postLikeStatus = exports.getTags = exports.scrollToHash = exports.getPageSearchParams = exports.getAbsolutePath = void 0;
15
15
  const url_1 = require("url");
16
- const lodash_1 = require("lodash");
17
16
  const page_constructor_1 = require("@gravity-ui/page-constructor");
17
+ const lodash_1 = require("lodash");
18
18
  const constants_1 = require("../blocks/constants");
19
19
  const i18n_1 = require("../i18n");
20
20
  function getAbsolutePath(router, url) {
@@ -27,11 +27,10 @@ export const Feed = ({ image }) => {
27
27
  const { posts, totalCount, tags, services, pinnedPost, getPosts, pageCountForShowSupportButtons, } = useContext(FeedContext);
28
28
  const router = useContext(RouterContext);
29
29
  const handleAnalytics = useAnalytics(DefaultEventNames.ShowMore);
30
- const [{ errorLoad, errorShowMore, isFetching, isShowMoreFetching, isShowMoreVisible, lastLoadedCount, postCountOnPage, postsOnPage, pinnedPostOnPage, currentPage, queryParams, }, dispatch,] = useReducer(reducer, {
30
+ const [{ errorLoad, errorShowMore, isFetching, isShowMoreVisible, lastLoadedCount, postCountOnPage, postsOnPage, pinnedPostOnPage, currentPage, queryParams, }, dispatch,] = useReducer(reducer, {
31
31
  errorLoad: false,
32
32
  errorShowMore: false,
33
33
  isFetching: false,
34
- isShowMoreFetching: false,
35
34
  isShowMoreVisible: true,
36
35
  lastLoadedCount: (posts === null || posts === void 0 ? void 0 : posts.length) || 0,
37
36
  postCountOnPage: totalCount || 0,
@@ -46,36 +45,36 @@ export const Feed = ({ image }) => {
46
45
  const pageChange = (value) => {
47
46
  dispatch({ type: ActionTypes.PageChange, payload: value });
48
47
  };
49
- const handleChangeQueryParams = (value) => {
50
- dispatch({ type: ActionTypes.QueryParamsChange, payload: value });
51
- const hasFirstPageQuery = Object.keys(value).some((queryKey) => queryKey === PAGE_QUERY && value[queryKey] === FIRST_PAGE);
52
- if (hasFirstPageQuery) {
53
- // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign
54
- value[PAGE_QUERY] = null;
55
- }
56
- router.updateQueryCallback(value);
48
+ const setIsFetching = (value) => {
49
+ dispatch({ type: ActionTypes.SetIsFetching, payload: value });
57
50
  };
58
- const handlePageChange = async (value) => {
59
- pageChange(value);
60
- handleChangeQueryParams({ page: value });
51
+ const setErrorLoad = (value) => {
52
+ dispatch({ type: ActionTypes.SetErrorLoad, payload: value });
61
53
  };
62
- const fetchData = useCallback(async (pageNumber) => {
63
- if (queryParams && getPosts) {
64
- const query = getFeedQueryParams(queryParams, pageNumber);
65
- const data = await getPosts(query);
54
+ const handleChangeQueryParams = useCallback((value) => {
55
+ dispatch({ type: ActionTypes.QueryParamsChange, payload: value });
56
+ const hasFirstPageQuery = Object.keys(value).some((queryKey) => queryKey === PAGE_QUERY && value[queryKey] === FIRST_PAGE);
57
+ const result = hasFirstPageQuery
58
+ ? Object.assign(Object.assign({}, value), { [PAGE_QUERY]: null }) : Object.assign({}, value);
59
+ router.updateQueryCallback(result);
60
+ }, [router]);
61
+ const fetchData = useCallback(async ({ page, query }) => {
62
+ if (query && getPosts) {
63
+ const queryParamsForRequest = getFeedQueryParams(Object.assign(Object.assign({}, queryParams), query), page);
64
+ const data = await getPosts(queryParamsForRequest);
66
65
  return data;
67
66
  }
68
67
  else {
69
68
  throw new Error('cant get request');
70
69
  }
71
70
  }, [getPosts, queryParams]);
72
- const setIsFetching = (value) => {
73
- dispatch({ type: ActionTypes.SetIsFetching, payload: value });
74
- };
75
- const fetchAndReplaceData = useCallback(async (pageNumber) => {
71
+ const handleLoad = useCallback(async ({ page, query }) => {
72
+ const pageNumber = Number(page || queryParams.page || DEFAULT_PAGE);
73
+ handleChangeQueryParams(query);
76
74
  try {
77
- dispatch({ type: ActionTypes.SetErrorLoad, payload: false });
78
- const fetchedData = await fetchData(pageNumber);
75
+ setErrorLoad(false);
76
+ setIsFetching(true);
77
+ const fetchedData = await fetchData({ page: pageNumber, query });
79
78
  if (fetchedData) {
80
79
  dispatch({
81
80
  type: ActionTypes.SetPosts,
@@ -89,22 +88,35 @@ export const Feed = ({ image }) => {
89
88
  }
90
89
  }
91
90
  catch (err) {
92
- dispatch({ type: ActionTypes.SetErrorLoad, payload: true });
91
+ setErrorLoad(true);
93
92
  }
94
93
  scrollOnPageChange(CONTAINER_ID);
95
94
  setIsFetching(false);
96
- }, [fetchData]);
95
+ }, [fetchData, handleChangeQueryParams, queryParams]);
96
+ const handlePageChange = async (value) => {
97
+ pageChange(value);
98
+ handleLoad({
99
+ page: value,
100
+ query: Object.assign(Object.assign({}, queryParams), { page: value }),
101
+ });
102
+ };
97
103
  const handleShowMore = async () => {
98
- dispatch({ type: ActionTypes.SetIsShowMoreFetching, payload: true });
99
104
  /**
100
105
  * @deprecated Metrika will be deleted after launch of analyticsEvents
101
106
  */
102
107
  metrika.reachGoal(MetrikaCounter.CrossSite, BlogMetrikaGoalIds.showMore);
103
108
  handleAnalytics();
109
+ const nextPage = currentPage + 1;
104
110
  try {
105
- const fetchedData = await fetchData(currentPage + 1);
111
+ setIsFetching(true);
112
+ const fetchedData = await fetchData({
113
+ page: nextPage,
114
+ query: {
115
+ page: nextPage,
116
+ },
117
+ });
106
118
  handleChangeQueryParams({
107
- page: currentPage + 1,
119
+ page: nextPage,
108
120
  });
109
121
  if (fetchedData) {
110
122
  dispatch({
@@ -112,7 +124,7 @@ export const Feed = ({ image }) => {
112
124
  payload: {
113
125
  posts: (postsOnPage !== null && postsOnPage !== void 0 ? postsOnPage : []).concat(fetchedData.posts),
114
126
  count: fetchedData.count,
115
- currentPage: currentPage + 1,
127
+ currentPage: nextPage,
116
128
  lastLoadedCount: fetchedData.posts.length,
117
129
  },
118
130
  });
@@ -121,13 +133,11 @@ export const Feed = ({ image }) => {
121
133
  catch (err) {
122
134
  dispatch({ type: ActionTypes.SetErrorShowMore, payload: true });
123
135
  }
124
- dispatch({ type: ActionTypes.SetIsShowMoreFetching, payload: false });
136
+ setIsFetching(false);
125
137
  };
126
- useEffect(() => {
127
- if (isFetching) {
128
- fetchAndReplaceData(Number(queryParams.page || DEFAULT_PAGE));
129
- }
130
- }, [fetchAndReplaceData, isFetching, queryParams.page]);
138
+ const handleOnErrorReload = useCallback(() => {
139
+ handleLoad({ page: currentPage, query: queryParams });
140
+ }, [currentPage, handleLoad, queryParams]);
131
141
  useEffect(() => {
132
142
  const loadedPostsCount = currentPage * perPageInQuery;
133
143
  dispatch({
@@ -145,10 +155,10 @@ export const Feed = ({ image }) => {
145
155
  icon: tag.icon && React.createElement(Icon, { data: tag.icon }),
146
156
  })), [tags]);
147
157
  return (React.createElement("div", null,
148
- React.createElement(FeedHeader, { verticalOffset: "s", tags: tagItems, services: serviceItems, setIsFetching: setIsFetching, handleChangeQuery: handleChangeQueryParams, queryParams: queryParams, background: {
158
+ React.createElement(FeedHeader, { verticalOffset: "s", tags: tagItems, services: serviceItems, handleLoadData: handleLoad, queryParams: queryParams, background: {
149
159
  fullWidth: true,
150
160
  url: image,
151
161
  disableCompress: true,
152
162
  } }),
153
- errorLoad ? (React.createElement(PostsError, { onButtonClick: () => fetchAndReplaceData(Number(queryParams.page || DEFAULT_PAGE)) })) : (React.createElement(Posts, { containerId: CONTAINER_ID, currentPage: currentPage, isShowMoreVisible: isShowMoreVisible, errorShowMore: errorShowMore, postCountOnPage: postCountOnPage, perPageInQuery: perPageInQuery, handleShowMore: handleShowMore, handlePageChange: handlePageChange, postsOnPage: postsOnPage, pinnedPostOnPage: pinnedPostOnPage, isFetching: isFetching, isShowMoreFetching: isShowMoreFetching, pageCountForShowSupportButtons: pageCountForShowSupportButtons }))));
163
+ errorLoad ? (React.createElement(PostsError, { onButtonClick: handleOnErrorReload })) : (React.createElement(Posts, { containerId: CONTAINER_ID, currentPage: currentPage, isShowMoreVisible: isShowMoreVisible, errorShowMore: errorShowMore, postCountOnPage: postCountOnPage, perPageInQuery: perPageInQuery, handleShowMore: handleShowMore, handlePageChange: handlePageChange, postsOnPage: postsOnPage, pinnedPostOnPage: pinnedPostOnPage, isFetching: isFetching, pageCountForShowSupportButtons: pageCountForShowSupportButtons }))));
154
164
  };
@@ -6,7 +6,6 @@ export declare enum ActionTypes {
6
6
  SetPosts = "setPosts",
7
7
  SetShowMore = "setShowMore",
8
8
  SetIsFetching = "setIsFetching",
9
- SetIsShowMoreFetching = "setIsShowMoreFetching",
10
9
  PageChange = "pageChange",
11
10
  QueryParamsChange = "queryParamsChange"
12
11
  }
@@ -15,7 +14,6 @@ export type State = {
15
14
  errorLoad: boolean;
16
15
  errorShowMore: boolean;
17
16
  isFetching: boolean;
18
- isShowMoreFetching: boolean;
19
17
  isShowMoreVisible: boolean;
20
18
  lastLoadedCount: number;
21
19
  pinnedPostOnPage?: PostData;
@@ -29,9 +27,6 @@ type Action = {
29
27
  } | {
30
28
  type: ActionTypes.SetIsFetching;
31
29
  payload: boolean;
32
- } | {
33
- type: ActionTypes.SetIsShowMoreFetching;
34
- payload: boolean;
35
30
  } | {
36
31
  type: ActionTypes.SetPosts;
37
32
  payload: {
@@ -6,7 +6,6 @@ export var ActionTypes;
6
6
  ActionTypes["SetPosts"] = "setPosts";
7
7
  ActionTypes["SetShowMore"] = "setShowMore";
8
8
  ActionTypes["SetIsFetching"] = "setIsFetching";
9
- ActionTypes["SetIsShowMoreFetching"] = "setIsShowMoreFetching";
10
9
  ActionTypes["PageChange"] = "pageChange";
11
10
  ActionTypes["QueryParamsChange"] = "queryParamsChange";
12
11
  })(ActionTypes || (ActionTypes = {}));
@@ -17,11 +16,9 @@ export const reducer = (state, { type, payload }) => {
17
16
  case ActionTypes.SetPosts:
18
17
  return Object.assign(Object.assign({}, state), { lastLoadedCount: payload.count, postCountOnPage: payload.count, pinnedPostOnPage: payload.pinnedPost, postsOnPage: payload.posts, currentPage: payload.page });
19
18
  case ActionTypes.SetShowMore:
20
- return Object.assign(Object.assign({}, state), { lastLoadedCount: payload.lastLoadedCount, postCountOnPage: payload.count, currentPage: payload.currentPage, postsOnPage: payload.posts, errorShowMore: false, isShowMoreFetching: true });
19
+ return Object.assign(Object.assign({}, state), { lastLoadedCount: payload.lastLoadedCount, postCountOnPage: payload.count, currentPage: payload.currentPage, postsOnPage: payload.posts, errorShowMore: false });
21
20
  case ActionTypes.SetIsFetching:
22
21
  return Object.assign(Object.assign({}, state), { isFetching: payload });
23
- case ActionTypes.SetIsShowMoreFetching:
24
- return Object.assign(Object.assign({}, state), { isShowMoreFetching: payload });
25
22
  case ActionTypes.PageChange:
26
23
  return Object.assign(Object.assign({}, state), { currentPage: payload, isFetching: true });
27
24
  case ActionTypes.SetErrorLoad:
@@ -287,6 +287,87 @@ export declare const Header: {
287
287
  type: string;
288
288
  })[];
289
289
  };
290
+ fullscreen: {
291
+ type: string;
292
+ };
293
+ analyticsEvents: {
294
+ anyOf: ({
295
+ type: string;
296
+ additionalProperties: {
297
+ type: string;
298
+ };
299
+ required: string[];
300
+ properties: {
301
+ name: {
302
+ type: string;
303
+ };
304
+ type: {
305
+ type: string;
306
+ };
307
+ counters: {
308
+ type: string;
309
+ additionalProperties: boolean;
310
+ required: never[];
311
+ properties: {
312
+ include: {
313
+ type: string;
314
+ items: {
315
+ type: string;
316
+ };
317
+ };
318
+ exclude: {
319
+ type: string;
320
+ items: {
321
+ type: string;
322
+ };
323
+ };
324
+ };
325
+ };
326
+ context: {
327
+ type: string;
328
+ };
329
+ };
330
+ } | {
331
+ type: string;
332
+ items: {
333
+ type: string;
334
+ additionalProperties: {
335
+ type: string;
336
+ };
337
+ required: string[];
338
+ properties: {
339
+ name: {
340
+ type: string;
341
+ };
342
+ type: {
343
+ type: string;
344
+ };
345
+ counters: {
346
+ type: string;
347
+ additionalProperties: boolean;
348
+ required: never[];
349
+ properties: {
350
+ include: {
351
+ type: string;
352
+ items: {
353
+ type: string;
354
+ };
355
+ };
356
+ exclude: {
357
+ type: string;
358
+ items: {
359
+ type: string;
360
+ };
361
+ };
362
+ };
363
+ };
364
+ context: {
365
+ type: string;
366
+ };
367
+ };
368
+ };
369
+ })[];
370
+ };
290
371
  };
291
372
  } | {
292
373
  type: string;
@@ -135,6 +135,87 @@ export declare const Media: {
135
135
  type: string;
136
136
  })[];
137
137
  };
138
+ fullscreen: {
139
+ type: string;
140
+ };
141
+ analyticsEvents: {
142
+ anyOf: ({
143
+ type: string;
144
+ additionalProperties: {
145
+ type: string;
146
+ };
147
+ required: string[];
148
+ properties: {
149
+ name: {
150
+ type: string;
151
+ };
152
+ type: {
153
+ type: string;
154
+ };
155
+ counters: {
156
+ type: string;
157
+ additionalProperties: boolean;
158
+ required: never[];
159
+ properties: {
160
+ include: {
161
+ type: string;
162
+ items: {
163
+ type: string;
164
+ };
165
+ };
166
+ exclude: {
167
+ type: string;
168
+ items: {
169
+ type: string;
170
+ };
171
+ };
172
+ };
173
+ };
174
+ context: {
175
+ type: string;
176
+ };
177
+ };
178
+ } | {
179
+ type: string;
180
+ items: {
181
+ type: string;
182
+ additionalProperties: {
183
+ type: string;
184
+ };
185
+ required: string[];
186
+ properties: {
187
+ name: {
188
+ type: string;
189
+ };
190
+ type: {
191
+ type: string;
192
+ };
193
+ counters: {
194
+ type: string;
195
+ additionalProperties: boolean;
196
+ required: never[];
197
+ properties: {
198
+ include: {
199
+ type: string;
200
+ items: {
201
+ type: string;
202
+ };
203
+ };
204
+ exclude: {
205
+ type: string;
206
+ items: {
207
+ type: string;
208
+ };
209
+ };
210
+ };
211
+ };
212
+ context: {
213
+ type: string;
214
+ };
215
+ };
216
+ };
217
+ })[];
218
+ };
138
219
  paddingTop: {
139
220
  type: string;
140
221
  enum: string[];
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import block from 'bem-cn-lite';
3
2
  import { YFMWrapper } from '@gravity-ui/page-constructor';
3
+ import block from 'bem-cn-lite';
4
4
  import { Wrapper } from '../../components/Wrapper/Wrapper';
5
5
  import { PaddingsDirections } from '../../models/paddings';
6
6
  const b = block('yfm');
@@ -4,7 +4,7 @@ import { block } from '../../utils/cn';
4
4
  import { Controls } from './components/Controls/Controls';
5
5
  import './FeedHeader.css';
6
6
  const b = block('feed-header');
7
- export const FeedHeader = ({ tags, services, setIsFetching, offset = 'default', background, theme = 'default', verticalOffset = 'l', className, handleChangeQuery, queryParams, }) => {
7
+ export const FeedHeader = ({ tags, services, handleLoadData, offset = 'default', background, theme = 'default', verticalOffset = 'l', className, queryParams, }) => {
8
8
  const backgroundThemed = background && getThemedValue(background, theme);
9
9
  return (React.createElement("header", { className: b('header', { ['has-background']: Boolean(background) }, className) },
10
10
  (backgroundThemed === null || backgroundThemed === void 0 ? void 0 : backgroundThemed.color) ? (React.createElement(FullWidthBackground, { style: { backgroundColor: backgroundThemed === null || backgroundThemed === void 0 ? void 0 : backgroundThemed.color }, theme: "rounded" })) : null,
@@ -14,5 +14,5 @@ export const FeedHeader = ({ tags, services, setIsFetching, offset = 'default',
14
14
  ? ''
15
15
  : backgroundThemed === null || backgroundThemed === void 0 ? void 0 : backgroundThemed.color,
16
16
  }, disableCompress: backgroundThemed === null || backgroundThemed === void 0 ? void 0 : backgroundThemed.disableCompress })) : null,
17
- React.createElement(Controls, { tags: tags, services: services, setIsFetching: setIsFetching, handleChangeQuery: handleChangeQuery, queryParams: queryParams }))));
17
+ React.createElement(Controls, { tags: tags, services: services, handleLoadData: handleLoadData, queryParams: queryParams }))));
18
18
  };
@@ -1,5 +1,5 @@
1
1
  import React, { ReactNode } from 'react';
2
- import { HandleChangeQueryParams, Query, SetQueryType } from '../../../../models/common';
2
+ import { FetchArgs, Query, SetQueryType } from '../../../../models/common';
3
3
  import './Controls.css';
4
4
  export type SelectItem = {
5
5
  content: string;
@@ -7,10 +7,9 @@ export type SelectItem = {
7
7
  icon?: ReactNode;
8
8
  };
9
9
  export type ControlsProps = {
10
- setIsFetching: (value: boolean) => void;
10
+ handleLoadData: (props: FetchArgs) => void;
11
11
  tags?: SelectItem[];
12
12
  services?: SelectItem[];
13
- handleChangeQuery: HandleChangeQueryParams;
14
13
  queryParams: Query;
15
14
  setQuery?: SetQueryType;
16
15
  };