@gravity-ui/blog-constructor 8.3.0 → 8.5.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.
- package/build/cjs/blocks/Feed/Feed.d.ts +1 -1
- package/build/cjs/blocks/Feed/Feed.js +2 -2
- package/build/cjs/blocks/Feed/Feed.js.map +1 -1
- package/build/cjs/blocks/Feed/schema.d.ts +1 -30
- package/build/cjs/blocks/Feed/schema.js +4 -8
- package/build/cjs/blocks/Feed/schema.js.map +1 -1
- package/build/cjs/blocks/SideCardList/SideCardList.css +47 -0
- package/build/cjs/blocks/SideCardList/SideCardList.d.ts +3 -0
- package/build/cjs/blocks/SideCardList/SideCardList.js +21 -0
- package/build/cjs/blocks/SideCardList/SideCardList.js.map +1 -0
- package/build/cjs/blocks/SideCardList/schema.d.ts +94 -0
- package/build/cjs/blocks/SideCardList/schema.js +37 -0
- package/build/cjs/blocks/SideCardList/schema.js.map +1 -0
- package/build/cjs/blocks/Take/Take.css +70 -0
- package/build/cjs/blocks/Take/Take.d.ts +2 -0
- package/build/cjs/blocks/Take/Take.js +28 -0
- package/build/cjs/blocks/Take/Take.js.map +1 -0
- package/build/cjs/blocks/Take/schema.d.ts +96 -0
- package/build/cjs/blocks/Take/schema.js +26 -0
- package/build/cjs/blocks/Take/schema.js.map +1 -0
- package/build/cjs/components/FeedHeader/FeedHeader.d.ts +1 -1
- package/build/cjs/components/FeedHeader/FeedHeader.js +2 -2
- package/build/cjs/components/FeedHeader/FeedHeader.js.map +1 -1
- package/build/cjs/components/FeedHeader/components/Controls/Controls.d.ts +2 -1
- package/build/cjs/components/FeedHeader/components/Controls/Controls.js +2 -2
- package/build/cjs/components/FeedHeader/components/Controls/Controls.js.map +1 -1
- package/build/cjs/components/Wrapper/Wrapper.css +42 -0
- package/build/cjs/components/Wrapper/Wrapper.d.ts +1 -0
- package/build/cjs/components/Wrapper/Wrapper.js +2 -2
- package/build/cjs/components/Wrapper/Wrapper.js.map +1 -1
- package/build/cjs/constructor/blocksMap.d.ts +3 -1
- package/build/cjs/constructor/blocksMap.js +4 -0
- package/build/cjs/constructor/blocksMap.js.map +1 -1
- package/build/cjs/hooks/useExtendedComponentMap.d.ts +3 -1
- package/build/cjs/models/blocks.d.ts +22 -2
- package/build/cjs/models/blocks.js.map +1 -1
- package/build/cjs/models/common.d.ts +3 -1
- package/build/cjs/models/common.js +2 -0
- package/build/cjs/models/common.js.map +1 -1
- package/build/cjs/models/paddings.d.ts +1 -1
- package/build/cjs/models/paddings.js.map +1 -1
- package/build/cjs/schema/blocks.d.ts +1 -0
- package/build/cjs/schema/blocks.js +1 -0
- package/build/cjs/schema/blocks.js.map +1 -1
- package/build/cjs/schema/index.d.ts +97 -30
- package/build/cjs/schema/index.js +2 -1
- package/build/cjs/schema/index.js.map +1 -1
- package/build/esm/blocks/Feed/Feed.d.ts +1 -1
- package/build/esm/blocks/Feed/Feed.js +2 -2
- package/build/esm/blocks/Feed/Feed.js.map +1 -1
- package/build/esm/blocks/Feed/schema.d.ts +1 -30
- package/build/esm/blocks/Feed/schema.js +4 -8
- package/build/esm/blocks/Feed/schema.js.map +1 -1
- package/build/esm/blocks/SideCardList/SideCardList.css +47 -0
- package/build/esm/blocks/SideCardList/SideCardList.d.ts +4 -0
- package/build/esm/blocks/SideCardList/SideCardList.js +18 -0
- package/build/esm/blocks/SideCardList/SideCardList.js.map +1 -0
- package/build/esm/blocks/SideCardList/schema.d.ts +94 -0
- package/build/esm/blocks/SideCardList/schema.js +34 -0
- package/build/esm/blocks/SideCardList/schema.js.map +1 -0
- package/build/esm/blocks/Take/Take.css +70 -0
- package/build/esm/blocks/Take/Take.d.ts +3 -0
- package/build/esm/blocks/Take/Take.js +24 -0
- package/build/esm/blocks/Take/Take.js.map +1 -0
- package/build/esm/blocks/Take/schema.d.ts +96 -0
- package/build/esm/blocks/Take/schema.js +23 -0
- package/build/esm/blocks/Take/schema.js.map +1 -0
- package/build/esm/components/FeedHeader/FeedHeader.d.ts +1 -1
- package/build/esm/components/FeedHeader/FeedHeader.js +2 -2
- package/build/esm/components/FeedHeader/FeedHeader.js.map +1 -1
- package/build/esm/components/FeedHeader/components/Controls/Controls.d.ts +2 -1
- package/build/esm/components/FeedHeader/components/Controls/Controls.js +2 -2
- package/build/esm/components/FeedHeader/components/Controls/Controls.js.map +1 -1
- package/build/esm/components/Wrapper/Wrapper.css +42 -0
- package/build/esm/components/Wrapper/Wrapper.d.ts +1 -0
- package/build/esm/components/Wrapper/Wrapper.js +2 -2
- package/build/esm/components/Wrapper/Wrapper.js.map +1 -1
- package/build/esm/constructor/blocksMap.d.ts +3 -1
- package/build/esm/constructor/blocksMap.js +4 -0
- package/build/esm/constructor/blocksMap.js.map +1 -1
- package/build/esm/hooks/useExtendedComponentMap.d.ts +3 -1
- package/build/esm/models/blocks.d.ts +22 -2
- package/build/esm/models/blocks.js.map +1 -1
- package/build/esm/models/common.d.ts +3 -1
- package/build/esm/models/common.js +2 -0
- package/build/esm/models/common.js.map +1 -1
- package/build/esm/models/paddings.d.ts +1 -1
- package/build/esm/models/paddings.js.map +1 -1
- package/build/esm/schema/blocks.d.ts +1 -0
- package/build/esm/schema/blocks.js +1 -0
- package/build/esm/schema/blocks.js.map +1 -1
- package/build/esm/schema/index.d.ts +97 -30
- package/build/esm/schema/index.js +2 -1
- package/build/esm/schema/index.js.map +1 -1
- package/package.json +1 -1
- package/server/models/blocks.d.ts +22 -2
- package/server/models/common.d.ts +3 -1
- package/server/models/common.js +2 -0
- package/server/models/paddings.d.ts +1 -1
- package/styles/mixins.scss +60 -0
@@ -1247,43 +1247,14 @@ export declare const schemasForCustom: {
|
|
1247
1247
|
"blog-feed-block": {
|
1248
1248
|
"blog-feed-block": {
|
1249
1249
|
additionalProperties: boolean;
|
1250
|
-
required:
|
1250
|
+
required: string;
|
1251
1251
|
properties: {
|
1252
1252
|
title: {
|
1253
1253
|
type: string;
|
1254
|
-
additionalProperties: boolean;
|
1255
|
-
required: string[];
|
1256
|
-
properties: {
|
1257
|
-
text: {
|
1258
|
-
type: string;
|
1259
|
-
contentType: string;
|
1260
|
-
};
|
1261
|
-
textSize: {
|
1262
|
-
type: string;
|
1263
|
-
enum: string[];
|
1264
|
-
};
|
1265
|
-
url: {
|
1266
|
-
type: string;
|
1267
|
-
};
|
1268
|
-
urlTitle: {
|
1269
|
-
type: string;
|
1270
|
-
};
|
1271
|
-
resetMargin: {
|
1272
|
-
type: string;
|
1273
|
-
};
|
1274
|
-
};
|
1275
1254
|
};
|
1276
1255
|
image: {
|
1277
1256
|
type: string;
|
1278
1257
|
};
|
1279
|
-
description: {
|
1280
|
-
type: string;
|
1281
|
-
contentType: string;
|
1282
|
-
};
|
1283
|
-
size: {
|
1284
|
-
type: string;
|
1285
|
-
enum: string[];
|
1286
|
-
};
|
1287
1258
|
anchor: {
|
1288
1259
|
type: string;
|
1289
1260
|
additionalProperties: boolean;
|
@@ -2136,5 +2107,101 @@ export declare const schemasForCustom: {
|
|
2136
2107
|
};
|
2137
2108
|
};
|
2138
2109
|
};
|
2110
|
+
"blog-take-block": {
|
2111
|
+
"blog-take-block": {
|
2112
|
+
type: string;
|
2113
|
+
additionalProperties: boolean;
|
2114
|
+
required: string[];
|
2115
|
+
properties: {
|
2116
|
+
text: {
|
2117
|
+
type: string;
|
2118
|
+
contentType: string;
|
2119
|
+
};
|
2120
|
+
author: {
|
2121
|
+
type: string;
|
2122
|
+
additionalProperties: boolean;
|
2123
|
+
required: string[];
|
2124
|
+
properties: {
|
2125
|
+
firstName: {
|
2126
|
+
type: string;
|
2127
|
+
contentType: string;
|
2128
|
+
};
|
2129
|
+
secondName: {
|
2130
|
+
type: string;
|
2131
|
+
contentType: string;
|
2132
|
+
};
|
2133
|
+
description: {
|
2134
|
+
type: string;
|
2135
|
+
contentType: string;
|
2136
|
+
};
|
2137
|
+
avatar: {
|
2138
|
+
type: string;
|
2139
|
+
};
|
2140
|
+
};
|
2141
|
+
};
|
2142
|
+
paddingTop: {
|
2143
|
+
type: string;
|
2144
|
+
enum: string[];
|
2145
|
+
};
|
2146
|
+
paddingBottom: {
|
2147
|
+
type: string;
|
2148
|
+
enum: string[];
|
2149
|
+
};
|
2150
|
+
fullWidth: {
|
2151
|
+
type: string;
|
2152
|
+
};
|
2153
|
+
column: {
|
2154
|
+
type: string;
|
2155
|
+
enum: string[];
|
2156
|
+
};
|
2157
|
+
qa: {
|
2158
|
+
type: string;
|
2159
|
+
};
|
2160
|
+
anchor: {
|
2161
|
+
type: string;
|
2162
|
+
additionalProperties: boolean;
|
2163
|
+
required: string[];
|
2164
|
+
properties: {
|
2165
|
+
text: {
|
2166
|
+
type: string;
|
2167
|
+
contentType: string;
|
2168
|
+
};
|
2169
|
+
url: {
|
2170
|
+
type: string;
|
2171
|
+
};
|
2172
|
+
urlTitle: {
|
2173
|
+
type: string;
|
2174
|
+
};
|
2175
|
+
};
|
2176
|
+
};
|
2177
|
+
visible: {
|
2178
|
+
type: string;
|
2179
|
+
enum: string[];
|
2180
|
+
};
|
2181
|
+
resetPaddings: {
|
2182
|
+
type: string;
|
2183
|
+
};
|
2184
|
+
context: {
|
2185
|
+
type: string;
|
2186
|
+
};
|
2187
|
+
indent: {
|
2188
|
+
type: string;
|
2189
|
+
additionalProperties: boolean;
|
2190
|
+
properties: {
|
2191
|
+
top: {
|
2192
|
+
enum: string[];
|
2193
|
+
};
|
2194
|
+
bottom: {
|
2195
|
+
enum: string[];
|
2196
|
+
};
|
2197
|
+
};
|
2198
|
+
};
|
2199
|
+
type: {};
|
2200
|
+
when: {
|
2201
|
+
type: string;
|
2202
|
+
};
|
2203
|
+
};
|
2204
|
+
};
|
2205
|
+
};
|
2139
2206
|
};
|
2140
2207
|
};
|
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
|
|
5
5
|
const common_1 = require("../models/common.js");
|
6
6
|
const blocks = tslib_1.__importStar(require("./blocks.js"));
|
7
7
|
const headers = tslib_1.__importStar(require("./headers.js"));
|
8
|
-
const { Author, Banner, ColoredText, CTA, Feed, Layout, Media, Meta, Suggest, YFM, CompactMedia } = blocks;
|
8
|
+
const { Author, Banner, ColoredText, CTA, Feed, Layout, Media, Meta, Suggest, YFM, CompactMedia, Take, } = blocks;
|
9
9
|
const { Header } = headers;
|
10
10
|
exports.validators = {
|
11
11
|
blocks,
|
@@ -27,6 +27,7 @@ exports.schemasForCustom = {
|
|
27
27
|
[common_1.BlockType.Suggest]: Suggest,
|
28
28
|
[common_1.BlockType.YFM]: YFM,
|
29
29
|
[common_1.BlockType.CompactMedia]: CompactMedia,
|
30
|
+
[common_1.BlockType.Take]: Take,
|
30
31
|
},
|
31
32
|
};
|
32
33
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["schema/index.ts"],"names":[],"mappings":";;;;AAAA,gDAA2C;AAE3C,4DAAmC;AACnC,8DAAqC;AAErC,MAAM,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["schema/index.ts"],"names":[],"mappings":";;;;AAAA,gDAA2C;AAE3C,4DAAmC;AACnC,8DAAqC;AAErC,MAAM,EACF,MAAM,EACN,MAAM,EACN,WAAW,EACX,GAAG,EACH,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAI,EACJ,OAAO,EACP,GAAG,EACH,YAAY,EACZ,IAAI,GACP,GAAG,MAAM,CAAC;AACX,MAAM,EAAC,MAAM,EAAC,GAAG,OAAO,CAAC;AAEZ,QAAA,UAAU,GAAG;IACtB,MAAM;IACN,OAAO;CACV,CAAC;AAEW,QAAA,gBAAgB,GAAG;IAC5B,OAAO,EAAE;QACL,CAAC,kBAAS,CAAC,MAAM,CAAC,EAAE,MAAM;KAC7B;IACD,MAAM,EAAE;QACJ,CAAC,kBAAS,CAAC,MAAM,CAAC,EAAE,MAAM;QAC1B,CAAC,kBAAS,CAAC,MAAM,CAAC,EAAE,MAAM;QAC1B,CAAC,kBAAS,CAAC,WAAW,CAAC,EAAE,WAAW;QACpC,CAAC,kBAAS,CAAC,GAAG,CAAC,EAAE,GAAG;QACpB,CAAC,kBAAS,CAAC,IAAI,CAAC,EAAE,IAAI;QACtB,CAAC,kBAAS,CAAC,MAAM,CAAC,EAAE,MAAM;QAC1B,CAAC,kBAAS,CAAC,KAAK,CAAC,EAAE,KAAK;QACxB,CAAC,kBAAS,CAAC,IAAI,CAAC,EAAE,IAAI;QACtB,CAAC,kBAAS,CAAC,OAAO,CAAC,EAAE,OAAO;QAC5B,CAAC,kBAAS,CAAC,GAAG,CAAC,EAAE,GAAG;QACpB,CAAC,kBAAS,CAAC,YAAY,CAAC,EAAE,YAAY;QACtC,CAAC,kBAAS,CAAC,IAAI,CAAC,EAAE,IAAI;KACzB;CACJ,CAAC","sourcesContent":["import {BlockType} from '../models/common';\n\nimport * as blocks from './blocks';\nimport * as headers from './headers';\n\nconst {\n Author,\n Banner,\n ColoredText,\n CTA,\n Feed,\n Layout,\n Media,\n Meta,\n Suggest,\n YFM,\n CompactMedia,\n Take,\n} = blocks;\nconst {Header} = headers;\n\nexport const validators = {\n blocks,\n headers,\n};\n\nexport const schemasForCustom = {\n headers: {\n [BlockType.Header]: Header,\n },\n blocks: {\n [BlockType.Author]: Author,\n [BlockType.Banner]: Banner,\n [BlockType.ColoredText]: ColoredText,\n [BlockType.CTA]: CTA,\n [BlockType.Feed]: Feed,\n [BlockType.Layout]: Layout,\n [BlockType.Media]: Media,\n [BlockType.Meta]: Meta,\n [BlockType.Suggest]: Suggest,\n [BlockType.YFM]: YFM,\n [BlockType.CompactMedia]: CompactMedia,\n [BlockType.Take]: Take,\n },\n};\n"]}
|
@@ -1,2 +1,2 @@
|
|
1
1
|
import { FeedProps } from "../../models/blocks.js";
|
2
|
-
export declare const Feed: ({ image }: FeedProps) => import("react/jsx-runtime").JSX.Element;
|
2
|
+
export declare const Feed: ({ image, title }: FeedProps) => import("react/jsx-runtime").JSX.Element;
|
@@ -16,7 +16,7 @@ import { ActionTypes, reducer } from "./reducer.js";
|
|
16
16
|
const CONTAINER_ID = 'blog-cards';
|
17
17
|
const PAGE_QUERY = 'page';
|
18
18
|
const FIRST_PAGE = 1;
|
19
|
-
export const Feed = ({ image }) => {
|
19
|
+
export const Feed = ({ image, title }) => {
|
20
20
|
var _a;
|
21
21
|
const { posts, totalCount, tags, services, pinnedPost, getPosts, pageCountForShowSupportButtons, } = React.useContext(FeedContext);
|
22
22
|
const router = React.useContext(RouterContext);
|
@@ -152,6 +152,6 @@ export const Feed = ({ image }) => {
|
|
152
152
|
fullWidth: true,
|
153
153
|
url: image,
|
154
154
|
disableCompress: true,
|
155
|
-
} }), errorLoad ? (_jsx(PostsError, { onButtonClick: handleOnErrorReload })) : (_jsx(Posts, { containerId: CONTAINER_ID, currentPage: currentPage, isShowMoreVisible: isShowMoreVisible, errorShowMore: errorShowMore, postCountOnPage: postCountOnPage, perPageInQuery: perPageInQuery, handleShowMore: handleShowMore, handlePageChange: handlePageChange, postsOnPage: postsOnPage, pinnedPostOnPage: pinnedPostOnPage, isFetching: isFetching, queryParams: queryParams, pageCountForShowSupportButtons: pageCountForShowSupportButtons }))] }));
|
155
|
+
}, title: title }), errorLoad ? (_jsx(PostsError, { onButtonClick: handleOnErrorReload })) : (_jsx(Posts, { containerId: CONTAINER_ID, currentPage: currentPage, isShowMoreVisible: isShowMoreVisible, errorShowMore: errorShowMore, postCountOnPage: postCountOnPage, perPageInQuery: perPageInQuery, handleShowMore: handleShowMore, handlePageChange: handlePageChange, postsOnPage: postsOnPage, pinnedPostOnPage: pinnedPostOnPage, isFetching: isFetching, queryParams: queryParams, pageCountForShowSupportButtons: pageCountForShowSupportButtons }))] }));
|
156
156
|
};
|
157
157
|
//# sourceMappingURL=Feed.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Feed.js","sourceRoot":"../../../../src","sources":["blocks/Feed/Feed.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {useAnalytics} from '@gravity-ui/page-constructor';\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {FeedHeader} from '../../components/FeedHeader/FeedHeader';\nimport {Posts} from '../../components/Posts/Posts';\nimport {PostsError} from '../../components/PostsError/PostsError';\nimport {DefaultGoalIds} from '../../constants';\nimport {FeedContext} from '../../contexts/FeedContext';\nimport {RouterContext} from '../../contexts/RouterContext';\nimport {AnalyticsCounter} from '../../counters/utils';\nimport {FeedProps} from '../../models/blocks';\nimport {DefaultEventNames, FetchArgs, HandleChangeQueryParams} from '../../models/common';\nimport {getFeedQueryParams, prepareAnalyticsEvent, scrollOnPageChange} from '../../utils/common';\nimport {DEFAULT_PAGE, DEFAULT_ROWS_PER_PAGE} from '../constants';\n\nimport {ActionTypes, reducer} from './reducer';\n\nconst CONTAINER_ID = 'blog-cards';\nconst PAGE_QUERY = 'page';\nconst FIRST_PAGE = 1;\n\nexport const Feed = ({image}: FeedProps) => {\n const {\n posts,\n totalCount,\n tags,\n services,\n pinnedPost,\n getPosts,\n pageCountForShowSupportButtons,\n } = React.useContext(FeedContext);\n const router = React.useContext(RouterContext);\n const handleAnalytics = useAnalytics(DefaultEventNames.ShowMore);\n const additionalAnalyticsEvent = prepareAnalyticsEvent({\n name: DefaultGoalIds.showMore,\n counter: AnalyticsCounter.CrossSite,\n });\n\n const [\n {\n errorLoad,\n errorShowMore,\n isFetching,\n isShowMoreVisible,\n lastLoadedCount,\n postCountOnPage,\n postsOnPage,\n pinnedPostOnPage,\n currentPage,\n queryParams,\n },\n dispatch,\n ] = React.useReducer(reducer, {\n errorLoad: false,\n errorShowMore: false,\n isFetching: false,\n isShowMoreVisible: true,\n lastLoadedCount: posts?.length || 0,\n postCountOnPage: totalCount || 0,\n postsOnPage: posts,\n pinnedPostOnPage: pinnedPost,\n currentPage: router?.query?.page ? Number(router.query.page) : DEFAULT_PAGE,\n queryParams: router.query || {},\n });\n\n const perPageInQuery = queryParams?.perPage\n ? Number(queryParams.perPage)\n : DEFAULT_ROWS_PER_PAGE;\n\n const pageChange = (value: number) => {\n dispatch({type: ActionTypes.PageChange, payload: value});\n };\n\n const setIsFetching = (value: boolean) => {\n dispatch({type: ActionTypes.SetIsFetching, payload: value});\n };\n\n const setErrorLoad = (value: boolean) => {\n dispatch({type: ActionTypes.SetErrorLoad, payload: value});\n };\n\n const handleChangeQueryParams: HandleChangeQueryParams = React.useCallback(\n (value) => {\n dispatch({type: ActionTypes.QueryParamsChange, payload: value});\n\n const hasFirstPageQuery = Object.keys(value).some(\n (queryKey) => queryKey === PAGE_QUERY && value[queryKey] === FIRST_PAGE,\n );\n\n const result = hasFirstPageQuery\n ? {\n ...value,\n [PAGE_QUERY]: null,\n }\n : {\n ...value,\n };\n\n router.updateQueryCallback(result);\n },\n [router],\n );\n\n const fetchData = React.useCallback(\n async ({page, query}: FetchArgs) => {\n if (query && getPosts) {\n const queryParamsForRequest = getFeedQueryParams({...queryParams, ...query}, page);\n const data = await getPosts(queryParamsForRequest);\n\n return data;\n } else {\n throw new Error('cant get request');\n }\n },\n [getPosts, queryParams],\n );\n\n const handleLoad = React.useCallback(\n async ({page, query}: FetchArgs) => {\n const pageNumber = Number(page || queryParams.page || DEFAULT_PAGE);\n\n handleChangeQueryParams(query);\n\n try {\n setErrorLoad(false);\n setIsFetching(true);\n\n const fetchedData = await fetchData({page: pageNumber, query});\n\n if (fetchedData) {\n dispatch({\n type: ActionTypes.SetPosts,\n payload: {\n posts: fetchedData.posts,\n pinnedPost: fetchedData.pinnedPost,\n count: fetchedData.count,\n page: pageNumber,\n },\n });\n }\n } catch (err) {\n setErrorLoad(true);\n }\n\n scrollOnPageChange(CONTAINER_ID);\n\n setIsFetching(false);\n },\n [fetchData, handleChangeQueryParams, queryParams],\n );\n\n const handlePageChange = async (value: number) => {\n pageChange(value);\n handleLoad({\n page: value,\n query: {...queryParams, page: value},\n });\n };\n\n const handleShowMore = async () => {\n handleAnalytics(additionalAnalyticsEvent);\n\n const nextPage = currentPage + 1;\n\n try {\n setIsFetching(true);\n const fetchedData = await fetchData({\n page: nextPage,\n query: {\n page: nextPage,\n },\n });\n\n handleChangeQueryParams({\n page: nextPage,\n });\n\n if (fetchedData) {\n dispatch({\n type: ActionTypes.SetShowMore,\n payload: {\n posts: (postsOnPage ?? []).concat(fetchedData.posts),\n count: fetchedData.count,\n currentPage: nextPage,\n lastLoadedCount: fetchedData.posts.length,\n },\n });\n }\n } catch (err) {\n dispatch({type: ActionTypes.SetErrorShowMore, payload: true});\n }\n\n setIsFetching(false);\n };\n\n const handleOnErrorReload = React.useCallback(() => {\n handleLoad({page: currentPage, query: queryParams});\n }, [currentPage, handleLoad, queryParams]);\n\n React.useEffect(() => {\n const loadedPostsCount = currentPage * perPageInQuery;\n dispatch({\n type: ActionTypes.SetIsShowMoreVisible,\n payload: loadedPostsCount < postCountOnPage,\n });\n }, [currentPage, lastLoadedCount, perPageInQuery, postCountOnPage]);\n\n const serviceItems = React.useMemo(\n () =>\n services?.map((service) => ({\n content: service.name,\n value: `${service.id}`,\n })),\n [services],\n );\n\n const tagItems = React.useMemo(\n () =>\n tags?.map((tag) => ({\n content: tag.name,\n value: tag.slug,\n icon: tag.icon && <Icon data={tag.icon} />,\n })),\n [tags],\n );\n\n return (\n <div>\n <FeedHeader\n verticalOffset=\"s\"\n tags={tagItems}\n services={serviceItems}\n handleLoadData={handleLoad}\n queryParams={queryParams}\n background={{\n fullWidth: true,\n url: image,\n disableCompress: true,\n }}\n />\n {errorLoad ? (\n <PostsError onButtonClick={handleOnErrorReload} />\n ) : (\n <Posts\n containerId={CONTAINER_ID}\n currentPage={currentPage}\n isShowMoreVisible={isShowMoreVisible}\n errorShowMore={errorShowMore}\n postCountOnPage={postCountOnPage}\n perPageInQuery={perPageInQuery}\n handleShowMore={handleShowMore}\n handlePageChange={handlePageChange}\n postsOnPage={postsOnPage}\n pinnedPostOnPage={pinnedPostOnPage}\n isFetching={isFetching}\n queryParams={queryParams}\n pageCountForShowSupportButtons={pageCountForShowSupportButtons}\n />\n )}\n </div>\n );\n};\n"]}
|
1
|
+
{"version":3,"file":"Feed.js","sourceRoot":"../../../../src","sources":["blocks/Feed/Feed.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {useAnalytics} from '@gravity-ui/page-constructor';\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {FeedHeader} from '../../components/FeedHeader/FeedHeader';\nimport {Posts} from '../../components/Posts/Posts';\nimport {PostsError} from '../../components/PostsError/PostsError';\nimport {DefaultGoalIds} from '../../constants';\nimport {FeedContext} from '../../contexts/FeedContext';\nimport {RouterContext} from '../../contexts/RouterContext';\nimport {AnalyticsCounter} from '../../counters/utils';\nimport {FeedProps} from '../../models/blocks';\nimport {DefaultEventNames, FetchArgs, HandleChangeQueryParams} from '../../models/common';\nimport {getFeedQueryParams, prepareAnalyticsEvent, scrollOnPageChange} from '../../utils/common';\nimport {DEFAULT_PAGE, DEFAULT_ROWS_PER_PAGE} from '../constants';\n\nimport {ActionTypes, reducer} from './reducer';\n\nconst CONTAINER_ID = 'blog-cards';\nconst PAGE_QUERY = 'page';\nconst FIRST_PAGE = 1;\n\nexport const Feed = ({image, title}: FeedProps) => {\n const {\n posts,\n totalCount,\n tags,\n services,\n pinnedPost,\n getPosts,\n pageCountForShowSupportButtons,\n } = React.useContext(FeedContext);\n const router = React.useContext(RouterContext);\n const handleAnalytics = useAnalytics(DefaultEventNames.ShowMore);\n const additionalAnalyticsEvent = prepareAnalyticsEvent({\n name: DefaultGoalIds.showMore,\n counter: AnalyticsCounter.CrossSite,\n });\n\n const [\n {\n errorLoad,\n errorShowMore,\n isFetching,\n isShowMoreVisible,\n lastLoadedCount,\n postCountOnPage,\n postsOnPage,\n pinnedPostOnPage,\n currentPage,\n queryParams,\n },\n dispatch,\n ] = React.useReducer(reducer, {\n errorLoad: false,\n errorShowMore: false,\n isFetching: false,\n isShowMoreVisible: true,\n lastLoadedCount: posts?.length || 0,\n postCountOnPage: totalCount || 0,\n postsOnPage: posts,\n pinnedPostOnPage: pinnedPost,\n currentPage: router?.query?.page ? Number(router.query.page) : DEFAULT_PAGE,\n queryParams: router.query || {},\n });\n\n const perPageInQuery = queryParams?.perPage\n ? Number(queryParams.perPage)\n : DEFAULT_ROWS_PER_PAGE;\n\n const pageChange = (value: number) => {\n dispatch({type: ActionTypes.PageChange, payload: value});\n };\n\n const setIsFetching = (value: boolean) => {\n dispatch({type: ActionTypes.SetIsFetching, payload: value});\n };\n\n const setErrorLoad = (value: boolean) => {\n dispatch({type: ActionTypes.SetErrorLoad, payload: value});\n };\n\n const handleChangeQueryParams: HandleChangeQueryParams = React.useCallback(\n (value) => {\n dispatch({type: ActionTypes.QueryParamsChange, payload: value});\n\n const hasFirstPageQuery = Object.keys(value).some(\n (queryKey) => queryKey === PAGE_QUERY && value[queryKey] === FIRST_PAGE,\n );\n\n const result = hasFirstPageQuery\n ? {\n ...value,\n [PAGE_QUERY]: null,\n }\n : {\n ...value,\n };\n\n router.updateQueryCallback(result);\n },\n [router],\n );\n\n const fetchData = React.useCallback(\n async ({page, query}: FetchArgs) => {\n if (query && getPosts) {\n const queryParamsForRequest = getFeedQueryParams({...queryParams, ...query}, page);\n const data = await getPosts(queryParamsForRequest);\n\n return data;\n } else {\n throw new Error('cant get request');\n }\n },\n [getPosts, queryParams],\n );\n\n const handleLoad = React.useCallback(\n async ({page, query}: FetchArgs) => {\n const pageNumber = Number(page || queryParams.page || DEFAULT_PAGE);\n\n handleChangeQueryParams(query);\n\n try {\n setErrorLoad(false);\n setIsFetching(true);\n\n const fetchedData = await fetchData({page: pageNumber, query});\n\n if (fetchedData) {\n dispatch({\n type: ActionTypes.SetPosts,\n payload: {\n posts: fetchedData.posts,\n pinnedPost: fetchedData.pinnedPost,\n count: fetchedData.count,\n page: pageNumber,\n },\n });\n }\n } catch (err) {\n setErrorLoad(true);\n }\n\n scrollOnPageChange(CONTAINER_ID);\n\n setIsFetching(false);\n },\n [fetchData, handleChangeQueryParams, queryParams],\n );\n\n const handlePageChange = async (value: number) => {\n pageChange(value);\n handleLoad({\n page: value,\n query: {...queryParams, page: value},\n });\n };\n\n const handleShowMore = async () => {\n handleAnalytics(additionalAnalyticsEvent);\n\n const nextPage = currentPage + 1;\n\n try {\n setIsFetching(true);\n const fetchedData = await fetchData({\n page: nextPage,\n query: {\n page: nextPage,\n },\n });\n\n handleChangeQueryParams({\n page: nextPage,\n });\n\n if (fetchedData) {\n dispatch({\n type: ActionTypes.SetShowMore,\n payload: {\n posts: (postsOnPage ?? []).concat(fetchedData.posts),\n count: fetchedData.count,\n currentPage: nextPage,\n lastLoadedCount: fetchedData.posts.length,\n },\n });\n }\n } catch (err) {\n dispatch({type: ActionTypes.SetErrorShowMore, payload: true});\n }\n\n setIsFetching(false);\n };\n\n const handleOnErrorReload = React.useCallback(() => {\n handleLoad({page: currentPage, query: queryParams});\n }, [currentPage, handleLoad, queryParams]);\n\n React.useEffect(() => {\n const loadedPostsCount = currentPage * perPageInQuery;\n dispatch({\n type: ActionTypes.SetIsShowMoreVisible,\n payload: loadedPostsCount < postCountOnPage,\n });\n }, [currentPage, lastLoadedCount, perPageInQuery, postCountOnPage]);\n\n const serviceItems = React.useMemo(\n () =>\n services?.map((service) => ({\n content: service.name,\n value: `${service.id}`,\n })),\n [services],\n );\n\n const tagItems = React.useMemo(\n () =>\n tags?.map((tag) => ({\n content: tag.name,\n value: tag.slug,\n icon: tag.icon && <Icon data={tag.icon} />,\n })),\n [tags],\n );\n\n return (\n <div>\n <FeedHeader\n verticalOffset=\"s\"\n tags={tagItems}\n services={serviceItems}\n handleLoadData={handleLoad}\n queryParams={queryParams}\n background={{\n fullWidth: true,\n url: image,\n disableCompress: true,\n }}\n title={title}\n />\n {errorLoad ? (\n <PostsError onButtonClick={handleOnErrorReload} />\n ) : (\n <Posts\n containerId={CONTAINER_ID}\n currentPage={currentPage}\n isShowMoreVisible={isShowMoreVisible}\n errorShowMore={errorShowMore}\n postCountOnPage={postCountOnPage}\n perPageInQuery={perPageInQuery}\n handleShowMore={handleShowMore}\n handlePageChange={handlePageChange}\n postsOnPage={postsOnPage}\n pinnedPostOnPage={pinnedPostOnPage}\n isFetching={isFetching}\n queryParams={queryParams}\n pageCountForShowSupportButtons={pageCountForShowSupportButtons}\n />\n )}\n </div>\n );\n};\n"]}
|
@@ -1,43 +1,14 @@
|
|
1
1
|
export declare const Feed: {
|
2
2
|
"blog-feed-block": {
|
3
3
|
additionalProperties: boolean;
|
4
|
-
required:
|
4
|
+
required: string;
|
5
5
|
properties: {
|
6
6
|
title: {
|
7
7
|
type: string;
|
8
|
-
additionalProperties: boolean;
|
9
|
-
required: string[];
|
10
|
-
properties: {
|
11
|
-
text: {
|
12
|
-
type: string;
|
13
|
-
contentType: string;
|
14
|
-
};
|
15
|
-
textSize: {
|
16
|
-
type: string;
|
17
|
-
enum: string[];
|
18
|
-
};
|
19
|
-
url: {
|
20
|
-
type: string;
|
21
|
-
};
|
22
|
-
urlTitle: {
|
23
|
-
type: string;
|
24
|
-
};
|
25
|
-
resetMargin: {
|
26
|
-
type: string;
|
27
|
-
};
|
28
|
-
};
|
29
8
|
};
|
30
9
|
image: {
|
31
10
|
type: string;
|
32
11
|
};
|
33
|
-
description: {
|
34
|
-
type: string;
|
35
|
-
contentType: string;
|
36
|
-
};
|
37
|
-
size: {
|
38
|
-
type: string;
|
39
|
-
enum: string[];
|
40
|
-
};
|
41
12
|
anchor: {
|
42
13
|
type: string;
|
43
14
|
additionalProperties: boolean;
|
@@ -1,18 +1,14 @@
|
|
1
1
|
import { validators } from '@gravity-ui/page-constructor';
|
2
|
-
const { common: {
|
2
|
+
const { common: { BlockBaseProps }, } = validators;
|
3
3
|
import { BlockType } from "../../models/common.js";
|
4
4
|
export const Feed = {
|
5
5
|
[BlockType.Feed]: {
|
6
6
|
additionalProperties: false,
|
7
|
-
required:
|
8
|
-
properties: Object.assign(Object.assign({}, BlockBaseProps), { title:
|
7
|
+
required: 'image',
|
8
|
+
properties: Object.assign(Object.assign({}, BlockBaseProps), { title: {
|
9
9
|
type: 'string',
|
10
|
-
},
|
10
|
+
}, image: {
|
11
11
|
type: 'string',
|
12
|
-
contentType: 'text',
|
13
|
-
}, size: {
|
14
|
-
type: 'string',
|
15
|
-
enum: ['s', 'm'],
|
16
12
|
} }),
|
17
13
|
},
|
18
14
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"../../../../src","sources":["blocks/Feed/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,8BAA8B,CAAC;AAExD,MAAM,EACF,MAAM,EAAE,EAAC,
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"../../../../src","sources":["blocks/Feed/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,8BAA8B,CAAC;AAExD,MAAM,EACF,MAAM,EAAE,EAAC,cAAc,EAAC,GAC3B,GAAG,UAAU,CAAC;AAEf,OAAO,EAAC,SAAS,EAAC,+BAA4B;AAE9C,MAAM,CAAC,MAAM,IAAI,GAAG;IAChB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACd,oBAAoB,EAAE,KAAK;QAC3B,QAAQ,EAAE,OAAO;QACjB,UAAU,kCACH,cAAc,KACjB,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;aACjB,EACD,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;aACjB,GACJ;KACJ;CACJ,CAAC","sourcesContent":["import {validators} from '@gravity-ui/page-constructor';\n\nconst {\n common: {BlockBaseProps},\n} = validators;\n\nimport {BlockType} from '../../models/common';\n\nexport const Feed = {\n [BlockType.Feed]: {\n additionalProperties: false,\n required: 'image',\n properties: {\n ...BlockBaseProps,\n title: {\n type: 'string',\n },\n image: {\n type: 'string',\n },\n },\n },\n};\n"]}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
2
|
+
unpredictable css rules order in build */
|
3
|
+
.bc-side-card-list__container {
|
4
|
+
display: flex;
|
5
|
+
flex-direction: column;
|
6
|
+
gap: 24px;
|
7
|
+
max-width: 296px;
|
8
|
+
}
|
9
|
+
.bc-side-card-list__title {
|
10
|
+
font-size: var(--g-text-header-2-font-size);
|
11
|
+
line-height: var(--g-text-header-2-line-height);
|
12
|
+
font-weight: 500;
|
13
|
+
}
|
14
|
+
.bc-side-card-list__items {
|
15
|
+
display: flex;
|
16
|
+
flex-direction: column;
|
17
|
+
gap: 16px;
|
18
|
+
}
|
19
|
+
.bc-side-card-list__item.bc-side-card-list__item {
|
20
|
+
min-height: auto;
|
21
|
+
}
|
22
|
+
|
23
|
+
.bc-side-card-list__item-image {
|
24
|
+
object-fit: contain;
|
25
|
+
object-position: left;
|
26
|
+
max-height: 104px;
|
27
|
+
max-width: 232px;
|
28
|
+
width: auto;
|
29
|
+
}
|
30
|
+
.bc-side-card-list__item-media {
|
31
|
+
max-width: 232px;
|
32
|
+
padding: 0 0 16px;
|
33
|
+
}
|
34
|
+
.bc-side-card-list__item-description {
|
35
|
+
padding-bottom: 12px;
|
36
|
+
}
|
37
|
+
@media (max-width: 1081px) {
|
38
|
+
.bc-side-card-list__container {
|
39
|
+
max-width: none;
|
40
|
+
width: 50%;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
@media (max-width: 577px) {
|
44
|
+
.bc-side-card-list__container {
|
45
|
+
width: 100%;
|
46
|
+
}
|
47
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import { CardBase, Media as PCMedia, YFMWrapper } from '@gravity-ui/page-constructor';
|
3
|
+
import { Wrapper } from "../../components/Wrapper/Wrapper.js";
|
4
|
+
import { PaddingsDirections } from "../../models/paddings.js";
|
5
|
+
import { block } from "../../utils/cn.js";
|
6
|
+
import './SideCardList.css';
|
7
|
+
const b = block('side-card-list');
|
8
|
+
export const SideCardList = ({ title, items, paddingTop, paddingBottom }) => {
|
9
|
+
return (_jsxs(Wrapper, { paddings: {
|
10
|
+
[PaddingsDirections.top]: paddingTop,
|
11
|
+
[PaddingsDirections.bottom]: paddingBottom,
|
12
|
+
}, className: b('container'), children: [title && _jsx("div", { className: b('title'), children: title }), _jsx("div", { className: b('items'), children: items.map(({ url, description, image }, index) => (_jsx(CardBase, { url: url, className: b('item'), children: _jsxs(CardBase.Content, { children: [_jsx(PCMedia, { className: b('item-media'), imageClassName: b('item-image'), image: image }), description && (_jsx("div", { className: b('item-description'), children: _jsx(YFMWrapper, { content: description, modifiers: {
|
13
|
+
blog: true,
|
14
|
+
resetPaddings: true,
|
15
|
+
} }) }))] }) }, index))) })] }));
|
16
|
+
};
|
17
|
+
export default SideCardList;
|
18
|
+
//# sourceMappingURL=SideCardList.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SideCardList.js","sourceRoot":"../../../../src","sources":["blocks/SideCardList/SideCardList.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,QAAQ,EAAE,KAAK,IAAI,OAAO,EAAE,UAAU,EAAC,MAAM,8BAA8B,CAAC;AAEpF,OAAO,EAAC,OAAO,EAAC,4CAAyC;AAEzD,OAAO,EAAC,kBAAkB,EAAC,iCAA8B;AACzD,OAAO,EAAC,KAAK,EAAC,0BAAuB;AAErC,OAAO,oBAAoB,CAAC;AAE5B,MAAM,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAElC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAoB,EAAE,EAAE;IACzF,OAAO,CACH,MAAC,OAAO,IACJ,QAAQ,EAAE;YACN,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,UAAU;YACpC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,aAAa;SAC7C,EACD,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,aAExB,KAAK,IAAI,cAAK,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YAAG,KAAK,GAAO,EACnD,cAAK,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YACrB,KAAK,CAAC,GAAG,CAAC,CAAC,EAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAC7C,KAAC,QAAQ,IAAa,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YAChD,MAAC,QAAQ,CAAC,OAAO,eACb,KAAC,OAAO,IACJ,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,EAC1B,cAAc,EAAE,CAAC,CAAC,YAAY,CAAC,EAC/B,KAAK,EAAE,KAAK,GACd,EACD,WAAW,IAAI,CACZ,cAAK,SAAS,EAAE,CAAC,CAAC,kBAAkB,CAAC,YACjC,KAAC,UAAU,IACP,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE;wCACP,IAAI,EAAE,IAAI;wCACV,aAAa,EAAE,IAAI;qCACtB,GACH,GACA,CACT,IACc,IAlBR,KAAK,CAmBT,CACd,CAAC,GACA,IACA,CACb,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import {CardBase, Media as PCMedia, YFMWrapper} from '@gravity-ui/page-constructor';\n\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {SideCardListProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {block} from '../../utils/cn';\n\nimport './SideCardList.scss';\n\nconst b = block('side-card-list');\n\nexport const SideCardList = ({title, items, paddingTop, paddingBottom}: SideCardListProps) => {\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n className={b('container')}\n >\n {title && <div className={b('title')}>{title}</div>}\n <div className={b('items')}>\n {items.map(({url, description, image}, index) => (\n <CardBase key={index} url={url} className={b('item')}>\n <CardBase.Content>\n <PCMedia\n className={b('item-media')}\n imageClassName={b('item-image')}\n image={image}\n />\n {description && (\n <div className={b('item-description')}>\n <YFMWrapper\n content={description}\n modifiers={{\n blog: true,\n resetPaddings: true,\n }}\n />\n </div>\n )}\n </CardBase.Content>\n </CardBase>\n ))}\n </div>\n </Wrapper>\n );\n};\n\nexport default SideCardList;\n"]}
|
@@ -0,0 +1,94 @@
|
|
1
|
+
export declare const SideCardList: {
|
2
|
+
"blog-side-card-list-block": {
|
3
|
+
type: string;
|
4
|
+
additionalProperties: boolean;
|
5
|
+
required: string[];
|
6
|
+
properties: {
|
7
|
+
className: {
|
8
|
+
type: string;
|
9
|
+
};
|
10
|
+
title: {
|
11
|
+
type: string;
|
12
|
+
};
|
13
|
+
items: {
|
14
|
+
type: string;
|
15
|
+
items: {
|
16
|
+
type: string;
|
17
|
+
required: string[];
|
18
|
+
properties: {
|
19
|
+
image: {
|
20
|
+
type: string;
|
21
|
+
};
|
22
|
+
description: {
|
23
|
+
type: string;
|
24
|
+
};
|
25
|
+
url: {
|
26
|
+
type: string;
|
27
|
+
};
|
28
|
+
};
|
29
|
+
};
|
30
|
+
};
|
31
|
+
paddingTop: {
|
32
|
+
type: string;
|
33
|
+
enum: string[];
|
34
|
+
};
|
35
|
+
paddingBottom: {
|
36
|
+
type: string;
|
37
|
+
enum: string[];
|
38
|
+
};
|
39
|
+
fullWidth: {
|
40
|
+
type: string;
|
41
|
+
};
|
42
|
+
column: {
|
43
|
+
type: string;
|
44
|
+
enum: string[];
|
45
|
+
};
|
46
|
+
qa: {
|
47
|
+
type: string;
|
48
|
+
};
|
49
|
+
anchor: {
|
50
|
+
type: string;
|
51
|
+
additionalProperties: boolean;
|
52
|
+
required: string[];
|
53
|
+
properties: {
|
54
|
+
text: {
|
55
|
+
type: string;
|
56
|
+
contentType: string;
|
57
|
+
};
|
58
|
+
url: {
|
59
|
+
type: string;
|
60
|
+
};
|
61
|
+
urlTitle: {
|
62
|
+
type: string;
|
63
|
+
};
|
64
|
+
};
|
65
|
+
};
|
66
|
+
visible: {
|
67
|
+
type: string;
|
68
|
+
enum: string[];
|
69
|
+
};
|
70
|
+
resetPaddings: {
|
71
|
+
type: string;
|
72
|
+
};
|
73
|
+
context: {
|
74
|
+
type: string;
|
75
|
+
};
|
76
|
+
indent: {
|
77
|
+
type: string;
|
78
|
+
additionalProperties: boolean;
|
79
|
+
properties: {
|
80
|
+
top: {
|
81
|
+
enum: string[];
|
82
|
+
};
|
83
|
+
bottom: {
|
84
|
+
enum: string[];
|
85
|
+
};
|
86
|
+
};
|
87
|
+
};
|
88
|
+
type: {};
|
89
|
+
when: {
|
90
|
+
type: string;
|
91
|
+
};
|
92
|
+
};
|
93
|
+
};
|
94
|
+
};
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import { validators } from '@gravity-ui/page-constructor';
|
2
|
+
import { BlockType } from "../../models/common.js";
|
3
|
+
import { BlogBlockBase } from "../../schema/common.js";
|
4
|
+
const { common: { BlockBaseProps }, } = validators;
|
5
|
+
export const SideCardList = {
|
6
|
+
[BlockType.SideCardList]: {
|
7
|
+
type: 'object',
|
8
|
+
additionalProperties: false,
|
9
|
+
required: ['items'],
|
10
|
+
properties: Object.assign(Object.assign(Object.assign({}, BlockBaseProps), BlogBlockBase), { className: {
|
11
|
+
type: 'string',
|
12
|
+
}, title: {
|
13
|
+
type: 'string',
|
14
|
+
}, items: {
|
15
|
+
type: 'array',
|
16
|
+
items: {
|
17
|
+
type: 'object',
|
18
|
+
required: ['image', 'description', 'url'],
|
19
|
+
properties: {
|
20
|
+
image: {
|
21
|
+
type: 'string',
|
22
|
+
},
|
23
|
+
description: {
|
24
|
+
type: 'string',
|
25
|
+
},
|
26
|
+
url: {
|
27
|
+
type: 'string',
|
28
|
+
},
|
29
|
+
},
|
30
|
+
},
|
31
|
+
} }),
|
32
|
+
},
|
33
|
+
};
|
34
|
+
//# sourceMappingURL=schema.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"../../../../src","sources":["blocks/SideCardList/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,8BAA8B,CAAC;AAExD,OAAO,EAAC,SAAS,EAAC,+BAA4B;AAC9C,OAAO,EAAC,aAAa,EAAC,+BAA4B;AAElD,MAAM,EACF,MAAM,EAAE,EAAC,cAAc,EAAC,GAC3B,GAAG,UAAU,CAAC;AAEf,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;QACtB,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,QAAQ,EAAE,CAAC,OAAO,CAAC;QACnB,UAAU,gDACH,cAAc,GACd,aAAa,KAChB,SAAS,EAAE;gBACP,IAAI,EAAE,QAAQ;aACjB,EACD,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;aACjB,EACD,KAAK,EAAE;gBACH,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC;oBACzC,UAAU,EAAE;wBACR,KAAK,EAAE;4BACH,IAAI,EAAE,QAAQ;yBACjB;wBACD,WAAW,EAAE;4BACT,IAAI,EAAE,QAAQ;yBACjB;wBACD,GAAG,EAAE;4BACD,IAAI,EAAE,QAAQ;yBACjB;qBACJ;iBACJ;aACJ,GACJ;KACJ;CACJ,CAAC","sourcesContent":["import {validators} from '@gravity-ui/page-constructor';\n\nimport {BlockType} from '../../models/common';\nimport {BlogBlockBase} from '../../schema/common';\n\nconst {\n common: {BlockBaseProps},\n} = validators;\n\nexport const SideCardList = {\n [BlockType.SideCardList]: {\n type: 'object',\n additionalProperties: false,\n required: ['items'],\n properties: {\n ...BlockBaseProps,\n ...BlogBlockBase,\n className: {\n type: 'string',\n },\n title: {\n type: 'string',\n },\n items: {\n type: 'array',\n items: {\n type: 'object',\n required: ['image', 'description', 'url'],\n properties: {\n image: {\n type: 'string',\n },\n description: {\n type: 'string',\n },\n url: {\n type: 'string',\n },\n },\n },\n },\n },\n },\n};\n"]}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
2
|
+
unpredictable css rules order in build */
|
3
|
+
.bc-take__container {
|
4
|
+
--take-color: #d6e0e9;
|
5
|
+
display: flex;
|
6
|
+
flex-direction: column;
|
7
|
+
align-items: flex-start;
|
8
|
+
align-self: stretch;
|
9
|
+
gap: 40px;
|
10
|
+
border-radius: 24px 0 0 24px;
|
11
|
+
border-left: 4px solid var(--take-color);
|
12
|
+
background: linear-gradient(90deg, color-mix(in sRGB, var(--take-color) 20%, transparent) 0%, rgba(255, 255, 255, 0.2) 100%);
|
13
|
+
font-family: "YS Text";
|
14
|
+
}
|
15
|
+
.bc-take__container_noBackground {
|
16
|
+
background: none;
|
17
|
+
}
|
18
|
+
.bc-take__text {
|
19
|
+
font-size: 24px;
|
20
|
+
line-height: 32px;
|
21
|
+
font-weight: var(--g-text-body-font-weight);
|
22
|
+
font-family: inherit;
|
23
|
+
}
|
24
|
+
.bc-take__author {
|
25
|
+
align-items: flex-start;
|
26
|
+
max-width: 402px;
|
27
|
+
}
|
28
|
+
.bc-take__author .pc-author__name {
|
29
|
+
font-weight: var(--g-text-accent-font-weight);
|
30
|
+
font-size: var(--g-text-header-1-font-size);
|
31
|
+
line-height: var(--g-text-header-1-line-height);
|
32
|
+
}
|
33
|
+
.bc-take__author .pc-author__description {
|
34
|
+
font-size: var(--g-text-body-3-font-size);
|
35
|
+
line-height: var(--g-text-body-3-line-height);
|
36
|
+
}
|
37
|
+
.bc-take__avatar {
|
38
|
+
width: 88px;
|
39
|
+
height: 88px;
|
40
|
+
}
|
41
|
+
.bc-take__avatar img {
|
42
|
+
width: 88px;
|
43
|
+
height: 88px;
|
44
|
+
}
|
45
|
+
@media (max-width: 577px) {
|
46
|
+
.bc-take__text {
|
47
|
+
font-size: 20px;
|
48
|
+
line-height: 28px;
|
49
|
+
}
|
50
|
+
.bc-take__author {
|
51
|
+
max-width: none;
|
52
|
+
}
|
53
|
+
.bc-take__author .pc-author__name {
|
54
|
+
font-weight: var(--g-text-accent-font-weight);
|
55
|
+
font-size: var(--g-text-subheader-3-font-size);
|
56
|
+
line-height: var(--g-text-subheader-3-line-height);
|
57
|
+
}
|
58
|
+
.bc-take__author .pc-author__description {
|
59
|
+
font-size: var(--g-text-body-2-font-size);
|
60
|
+
line-height: var(--g-text-body-2-line-height);
|
61
|
+
}
|
62
|
+
.bc-take__avatar {
|
63
|
+
width: 80px;
|
64
|
+
height: 80px;
|
65
|
+
}
|
66
|
+
.bc-take__avatar img {
|
67
|
+
width: 80px;
|
68
|
+
height: 80px;
|
69
|
+
}
|
70
|
+
}
|