@gravity-ui/blog-constructor 8.1.0 → 8.3.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/Banner/Banner.js +2 -2
- package/build/cjs/blocks/Banner/Banner.js.map +1 -1
- package/build/cjs/blocks/CTA/CTA.js +2 -2
- package/build/cjs/blocks/CTA/CTA.js.map +1 -1
- package/build/cjs/blocks/CompactMedia/CompactMedia.css +27 -0
- package/build/cjs/blocks/CompactMedia/CompactMedia.d.ts +2 -0
- package/build/cjs/blocks/CompactMedia/CompactMedia.js +22 -0
- package/build/cjs/blocks/CompactMedia/CompactMedia.js.map +1 -0
- package/build/cjs/blocks/CompactMedia/schema.d.ts +135 -0
- package/build/cjs/blocks/CompactMedia/schema.js +18 -0
- package/build/cjs/blocks/CompactMedia/schema.js.map +1 -0
- package/build/cjs/blocks/Header/Header.css +54 -0
- package/build/cjs/blocks/Header/Header.js +6 -4
- package/build/cjs/blocks/Header/Header.js.map +1 -1
- package/build/cjs/blocks/Meta/Meta.js +2 -2
- package/build/cjs/blocks/Meta/Meta.js.map +1 -1
- package/build/cjs/blocks/Suggest/Suggest.js +2 -2
- package/build/cjs/blocks/Suggest/Suggest.js.map +1 -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/FeedHeader/components/CustomSwitcher/CustomSwitcher.js +1 -1
- package/build/cjs/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.js.map +1 -1
- package/build/cjs/components/Paginator/Paginator.js +2 -2
- package/build/cjs/components/Paginator/Paginator.js.map +1 -1
- package/build/cjs/components/PostCard/PostCard.js +1 -1
- package/build/cjs/components/PostCard/PostCard.js.map +1 -1
- package/build/cjs/components/PostInfo/PostInfo.js +2 -2
- package/build/cjs/components/PostInfo/PostInfo.js.map +1 -1
- package/build/cjs/components/PostInfo/SuggestPostInfo.js +2 -2
- package/build/cjs/components/PostInfo/SuggestPostInfo.js.map +1 -1
- package/build/cjs/components/PostInfo/components/ReadingTime.js +1 -1
- package/build/cjs/components/PostInfo/components/ReadingTime.js.map +1 -1
- package/build/cjs/components/PostInfo/components/Save.js +2 -2
- package/build/cjs/components/PostInfo/components/Save.js.map +1 -1
- package/build/cjs/components/PostInfo/components/Sharing.js +1 -1
- package/build/cjs/components/PostInfo/components/Sharing.js.map +1 -1
- package/build/cjs/components/Search/Search.js +1 -1
- package/build/cjs/components/Search/Search.js.map +1 -1
- package/build/cjs/constructor/blocksMap.d.ts +1 -0
- package/build/cjs/constructor/blocksMap.js +2 -0
- package/build/cjs/constructor/blocksMap.js.map +1 -1
- package/build/cjs/containers/BlogPage/BlogPage.js +1 -1
- package/build/cjs/containers/BlogPage/BlogPage.js.map +1 -1
- package/build/cjs/containers/BlogPostPage/BlogPostPage.js +1 -1
- package/build/cjs/containers/BlogPostPage/BlogPostPage.js.map +1 -1
- package/build/cjs/contexts/LocaleContext.js.map +1 -1
- package/build/cjs/contexts/PostPageContext.d.ts +1 -1
- package/build/cjs/contexts/PostPageContext.js.map +1 -1
- package/build/cjs/contexts/SettingsContext.js.map +1 -1
- package/build/cjs/hooks/useExtendedComponentMap.d.ts +1 -0
- package/build/cjs/models/blocks.d.ts +12 -2
- package/build/cjs/models/blocks.js.map +1 -1
- package/build/cjs/models/common.d.ts +2 -1
- package/build/cjs/models/common.js +1 -0
- package/build/cjs/models/common.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 +135 -0
- package/build/cjs/schema/index.js +2 -1
- package/build/cjs/schema/index.js.map +1 -1
- package/build/cjs/utils/common.d.ts +1 -1
- package/build/cjs/utils/common.js +1 -1
- package/build/cjs/utils/common.js.map +1 -1
- package/build/esm/blocks/Banner/Banner.js +2 -2
- package/build/esm/blocks/Banner/Banner.js.map +1 -1
- package/build/esm/blocks/CTA/CTA.js +2 -2
- package/build/esm/blocks/CTA/CTA.js.map +1 -1
- package/build/esm/blocks/CompactMedia/CompactMedia.css +27 -0
- package/build/esm/blocks/CompactMedia/CompactMedia.d.ts +3 -0
- package/build/esm/blocks/CompactMedia/CompactMedia.js +19 -0
- package/build/esm/blocks/CompactMedia/CompactMedia.js.map +1 -0
- package/build/esm/blocks/CompactMedia/schema.d.ts +135 -0
- package/build/esm/blocks/CompactMedia/schema.js +15 -0
- package/build/esm/blocks/CompactMedia/schema.js.map +1 -0
- package/build/esm/blocks/Header/Header.css +54 -0
- package/build/esm/blocks/Header/Header.d.ts +1 -0
- package/build/esm/blocks/Header/Header.js +7 -4
- package/build/esm/blocks/Header/Header.js.map +1 -1
- package/build/esm/blocks/Meta/Meta.js +2 -2
- package/build/esm/blocks/Meta/Meta.js.map +1 -1
- package/build/esm/blocks/Suggest/Suggest.js +2 -2
- package/build/esm/blocks/Suggest/Suggest.js.map +1 -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/FeedHeader/components/CustomSwitcher/CustomSwitcher.js +1 -1
- package/build/esm/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.js.map +1 -1
- package/build/esm/components/Paginator/Paginator.js +2 -2
- package/build/esm/components/Paginator/Paginator.js.map +1 -1
- package/build/esm/components/PostCard/PostCard.js +1 -1
- package/build/esm/components/PostCard/PostCard.js.map +1 -1
- package/build/esm/components/PostInfo/PostInfo.js +2 -2
- package/build/esm/components/PostInfo/PostInfo.js.map +1 -1
- package/build/esm/components/PostInfo/SuggestPostInfo.js +2 -2
- package/build/esm/components/PostInfo/SuggestPostInfo.js.map +1 -1
- package/build/esm/components/PostInfo/components/ReadingTime.js +1 -1
- package/build/esm/components/PostInfo/components/ReadingTime.js.map +1 -1
- package/build/esm/components/PostInfo/components/Save.js +2 -2
- package/build/esm/components/PostInfo/components/Save.js.map +1 -1
- package/build/esm/components/PostInfo/components/Sharing.js +1 -1
- package/build/esm/components/PostInfo/components/Sharing.js.map +1 -1
- package/build/esm/components/Search/Search.js +1 -1
- package/build/esm/components/Search/Search.js.map +1 -1
- package/build/esm/constructor/blocksMap.d.ts +1 -0
- package/build/esm/constructor/blocksMap.js +2 -0
- package/build/esm/constructor/blocksMap.js.map +1 -1
- package/build/esm/containers/BlogPage/BlogPage.js +1 -1
- package/build/esm/containers/BlogPage/BlogPage.js.map +1 -1
- package/build/esm/containers/BlogPostPage/BlogPostPage.js +1 -1
- package/build/esm/containers/BlogPostPage/BlogPostPage.js.map +1 -1
- package/build/esm/contexts/LocaleContext.js.map +1 -1
- package/build/esm/contexts/PostPageContext.d.ts +1 -1
- package/build/esm/contexts/PostPageContext.js.map +1 -1
- package/build/esm/contexts/SettingsContext.js.map +1 -1
- package/build/esm/hooks/useExtendedComponentMap.d.ts +1 -0
- package/build/esm/models/blocks.d.ts +12 -2
- package/build/esm/models/blocks.js.map +1 -1
- package/build/esm/models/common.d.ts +2 -1
- package/build/esm/models/common.js +1 -0
- package/build/esm/models/common.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 +135 -0
- package/build/esm/schema/index.js +2 -1
- package/build/esm/schema/index.js.map +1 -1
- package/build/esm/utils/common.d.ts +1 -1
- package/build/esm/utils/common.js +1 -1
- package/build/esm/utils/common.js.map +1 -1
- package/package.json +2 -2
- package/server/data/transformPost.d.ts +1 -1
- package/server/models/blocks.d.ts +12 -2
- package/server/models/common.d.ts +2 -1
- package/server/models/common.js +1 -0
- package/styles/storybook/index.scss +4 -0
@@ -5,11 +5,11 @@ const tslib_1 = require("tslib");
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
6
6
|
const page_constructor_1 = require("@gravity-ui/page-constructor");
|
7
7
|
const Wrapper_1 = require("../../components/Wrapper/Wrapper.js");
|
8
|
+
const constants_1 = require("../../constants.js");
|
9
|
+
const utils_1 = require("../../counters/utils.js");
|
8
10
|
const paddings_1 = require("../../models/paddings.js");
|
9
11
|
const cn_1 = require("../../utils/cn.js");
|
10
12
|
const common_1 = require("../../utils/common.js");
|
11
|
-
const constants_1 = require("../../constants.js");
|
12
|
-
const utils_1 = require("../../counters/utils.js");
|
13
13
|
const b = (0, cn_1.block)('banner');
|
14
14
|
const BANNER_CUSTOM_QA_ATTRIBUTES = ['image-container'];
|
15
15
|
const buttonGoals = (0, common_1.prepareAnalyticsEvent)({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Banner.js","sourceRoot":"../../../../src","sources":["blocks/Banner/Banner.tsx"],"names":[],"mappings":";;;;;AAAA,mEAA4D;AAE5D,iEAAyD;
|
1
|
+
{"version":3,"file":"Banner.js","sourceRoot":"../../../../src","sources":["blocks/Banner/Banner.tsx"],"names":[],"mappings":";;;;;AAAA,mEAA4D;AAE5D,iEAAyD;AACzD,kDAA+C;AAC/C,mDAAsD;AAEtD,uDAAyD;AACzD,0CAAqC;AACrC,kDAK4B;AAI5B,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,QAAQ,CAAC,CAAC;AAE1B,MAAM,2BAA2B,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAExD,MAAM,WAAW,GAAG,IAAA,8BAAqB,EAAC;IACtC,IAAI,EAAE,0BAAc,CAAC,YAAY;IACjC,OAAO,EAAE,wBAAgB,CAAC,SAAS;CACtC,CAAC,CAAC;AAEI,MAAM,MAAM,GAAG,CAAC,EAQT,EAAE,EAAE;;QARK,EACnB,KAAK,EACL,SAAS,GAAG,GAAG,EACf,KAAK,EACL,UAAU,EACV,aAAa,EACb,EAAE,OAEQ,EADP,OAAO,sBAPS,oEAQtB,CADa;IAEV,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,MAAM,YAAY,GAAG,IAAA,wBAAe,EAAC,EAAE,EAAE,2BAA2B,CAAC,CAAC;IAEtE,IAAI,KAAK,EAAE,CAAC;QACR,YAAY,CAAC,eAAe,GAAG,KAAK,CAAC;IACzC,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,2BAAkB,EAAC,OAAO,CAAC,CAAC;IAEhD,MAAA,WAAW,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACpC,mFAAmF;QACnF,MAAM,CAAC,eAAe,GAAG,IAAA,iCAAwB,EAAC,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,OAAO,CACH,uBAAC,iBAAO,IACJ,QAAQ,EAAE;YACN,CAAC,6BAAkB,CAAC,GAAG,CAAC,EAAE,UAAU;YACpC,CAAC,6BAAkB,CAAC,MAAM,CAAC,EAAE,aAAa;SAC7C,EACD,EAAE,EAAE,YAAY,CAAC,OAAO,EACxB,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,YAEzB,iCAAK,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,aAAW,YAAY,CAAC,OAAO,aAC5E,gCAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,uBAAC,0BAAO,oBAAK,WAAW,IAAE,EAAE,EAAE,YAAY,CAAC,OAAO,IAAI,GACpD,EACL,KAAK,IAAI,CACN,gCACI,SAAS,EAAE,CAAC,CAAC,iBAAiB,EAAE,EAAC,CAAC,YAAY,CAAC,EAAE,SAAS,EAAC,CAAC,aACnD,YAAY,CAAC,cAAc,YAEpC,uBAAC,wBAAK,IAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,GAAI,GAC1C,CACT,IACC,GACA,CACb,CAAC;AACN,CAAC,CAAC;AA/CW,QAAA,MAAM,UA+CjB","sourcesContent":["import {Content, Image} from '@gravity-ui/page-constructor';\n\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {DefaultGoalIds} from '../../constants';\nimport {AnalyticsCounter} from '../../counters/utils';\nimport {BannerProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {block} from '../../utils/cn';\nimport {\n getMergedAnalyticsEvents,\n getQaAttributes,\n prepareAnalyticsEvent,\n updateContentSizes,\n} from '../../utils/common';\n\nimport './Banner.scss';\n\nconst b = block('banner');\n\nconst BANNER_CUSTOM_QA_ATTRIBUTES = ['image-container'];\n\nconst buttonGoals = prepareAnalyticsEvent({\n name: DefaultGoalIds.bannerCommon,\n counter: AnalyticsCounter.CrossSite,\n});\n\nexport const Banner = ({\n color,\n imageSize = 's',\n image,\n paddingTop,\n paddingBottom,\n qa,\n ...content\n}: BannerProps) => {\n const contentStyle: Record<string, string> = {};\n const qaAttributes = getQaAttributes(qa, BANNER_CUSTOM_QA_ATTRIBUTES);\n\n if (color) {\n contentStyle.backgroundColor = color;\n }\n\n const contentData = updateContentSizes(content);\n\n contentData.buttons?.forEach((button) => {\n // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign\n button.analyticsEvents = getMergedAnalyticsEvents(buttonGoals, button.analyticsEvents);\n });\n\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n qa={qaAttributes.wrapper}\n className={b('container')}\n >\n <div className={b('content')} style={contentStyle} data-qa={qaAttributes.content}>\n <div className={b('info')}>\n <Content {...contentData} qa={qaAttributes.content} />\n </div>\n {image && (\n <div\n className={b('image-container', {['image-size']: imageSize})}\n data-qa={qaAttributes.imageContainer}\n >\n <Image className={b('image')} src={image} />\n </div>\n )}\n </div>\n </Wrapper>\n );\n};\n"]}
|
@@ -4,11 +4,11 @@ exports.CTA = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
5
5
|
const page_constructor_1 = require("@gravity-ui/page-constructor");
|
6
6
|
const Wrapper_1 = require("../../components/Wrapper/Wrapper.js");
|
7
|
+
const constants_1 = require("../../constants.js");
|
8
|
+
const utils_1 = require("../../counters/utils.js");
|
7
9
|
const paddings_1 = require("../../models/paddings.js");
|
8
10
|
const cn_1 = require("../../utils/cn.js");
|
9
11
|
const common_1 = require("../../utils/common.js");
|
10
|
-
const constants_1 = require("../../constants.js");
|
11
|
-
const utils_1 = require("../../counters/utils.js");
|
12
12
|
const b = (0, cn_1.block)('cta');
|
13
13
|
const linkGoals = (0, common_1.prepareAnalyticsEvent)({
|
14
14
|
name: constants_1.DefaultGoalIds.cta,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CTA.js","sourceRoot":"../../../../src","sources":["blocks/CTA/CTA.tsx"],"names":[],"mappings":";;;;AAAA,mEAAwE;AAExE,iEAAyD;
|
1
|
+
{"version":3,"file":"CTA.js","sourceRoot":"../../../../src","sources":["blocks/CTA/CTA.tsx"],"names":[],"mappings":";;;;AAAA,mEAAwE;AAExE,iEAAyD;AACzD,kDAA+C;AAC/C,mDAAsD;AAEtD,uDAAyD;AACzD,0CAAqC;AACrC,kDAK4B;AAI5B,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,KAAK,CAAC,CAAC;AAEvB,MAAM,SAAS,GAAG,IAAA,8BAAqB,EAAC;IACpC,IAAI,EAAE,0BAAc,CAAC,GAAG;IACxB,OAAO,EAAE,wBAAgB,CAAC,SAAS;CACtC,CAAC,CAAC;AAEI,MAAM,GAAG,GAAG,CAAC,EAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAW,EAAE,EAAE;IACpE,MAAM,YAAY,GAAG,IAAA,wBAAe,EAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAEjD,OAAO,CACH,uBAAC,iBAAO,IACJ,QAAQ,EAAE;YACN,CAAC,6BAAkB,CAAC,GAAG,CAAC,EAAE,UAAU;YACpC,CAAC,6BAAkB,CAAC,MAAM,CAAC,EAAE,aAAa;SAC7C,EACD,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EACvB,EAAE,EAAE,YAAY,CAAC,OAAO,YAEvB,KAAK,CAAC,GAAG,CAAC,CAAC,OAA0B,EAAE,KAAa,EAAE,EAAE;;YACrD,MAAM,WAAW,GAAG,IAAA,2BAAkB,EAAC,OAAO,CAAC,CAAC;YAEhD,MAAA,WAAW,CAAC,KAAK,0CAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAChC,mFAAmF;gBACnF,IAAI,CAAC,eAAe,GAAG,IAAA,iCAAwB,EAC3C,SAAS,EACT,IAAI,CAAC,eAAe,CACvB,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,OAAO,CACH,gCAAiB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,aAAW,YAAY,CAAC,IAAI,YAC7D,uBAAC,0BAAO,oBAAK,WAAW,IAAE,EAAE,EAAE,YAAY,CAAC,OAAO,IAAI,IADhD,KAAK,CAET,CACT,CAAC;QACN,CAAC,CAAC,GACI,CACb,CAAC;AACN,CAAC,CAAC;AA/BW,QAAA,GAAG,OA+Bd","sourcesContent":["import {Content, ContentBlockProps} from '@gravity-ui/page-constructor';\n\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {DefaultGoalIds} from '../../constants';\nimport {AnalyticsCounter} from '../../counters/utils';\nimport {CTAProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {block} from '../../utils/cn';\nimport {\n getMergedAnalyticsEvents,\n getQaAttributes,\n prepareAnalyticsEvent,\n updateContentSizes,\n} from '../../utils/common';\n\nimport './CTA.scss';\n\nconst b = block('cta');\n\nconst linkGoals = prepareAnalyticsEvent({\n name: DefaultGoalIds.cta,\n counter: AnalyticsCounter.CrossSite,\n});\n\nexport const CTA = ({items, paddingTop, paddingBottom, qa}: CTAProps) => {\n const qaAttributes = getQaAttributes(qa, 'card');\n\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n className={b('content')}\n qa={qaAttributes.wrapper}\n >\n {items.map((content: ContentBlockProps, index: number) => {\n const contentData = updateContentSizes(content);\n\n contentData.links?.forEach((link) => {\n // eslint-disable-next-line no-not-accumulator-reassign/no-not-accumulator-reassign\n link.analyticsEvents = getMergedAnalyticsEvents(\n linkGoals,\n link.analyticsEvents,\n );\n });\n\n return (\n <div key={index} className={b('card')} data-qa={qaAttributes.card}>\n <Content {...contentData} qa={qaAttributes.content} />\n </div>\n );\n })}\n </Wrapper>\n );\n};\n"]}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
2
|
+
unpredictable css rules order in build */
|
3
|
+
.bc-compact-media__container {
|
4
|
+
max-width: 296px;
|
5
|
+
}
|
6
|
+
.bc-compact-media__media {
|
7
|
+
max-width: 232px;
|
8
|
+
padding: 8px 0;
|
9
|
+
}
|
10
|
+
.bc-compact-media__image {
|
11
|
+
object-fit: contain;
|
12
|
+
object-position: left;
|
13
|
+
max-height: 88px;
|
14
|
+
max-width: 232px;
|
15
|
+
width: auto;
|
16
|
+
}
|
17
|
+
@media (max-width: 1081px) {
|
18
|
+
.bc-compact-media__container {
|
19
|
+
max-width: none;
|
20
|
+
width: 50%;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
@media (max-width: 577px) {
|
24
|
+
.bc-compact-media__container {
|
25
|
+
width: 100%;
|
26
|
+
}
|
27
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.CompactMedia = void 0;
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
5
|
+
const page_constructor_1 = require("@gravity-ui/page-constructor");
|
6
|
+
const Wrapper_1 = require("../../components/Wrapper/Wrapper.js");
|
7
|
+
const paddings_1 = require("../../models/paddings.js");
|
8
|
+
const cn_1 = require("../../utils/cn.js");
|
9
|
+
const b = (0, cn_1.block)('compact-media');
|
10
|
+
const CompactMedia = ({ paddingBottom, paddingTop, description, paddingRight, paddingLeft, image, }) => {
|
11
|
+
return ((0, jsx_runtime_1.jsxs)(Wrapper_1.Wrapper, { paddings: {
|
12
|
+
[paddings_1.PaddingsDirections.top]: paddingTop,
|
13
|
+
[paddings_1.PaddingsDirections.bottom]: paddingBottom,
|
14
|
+
[paddings_1.PaddingsDirections.left]: paddingLeft,
|
15
|
+
[paddings_1.PaddingsDirections.right]: paddingRight,
|
16
|
+
}, className: b('container'), children: [(0, jsx_runtime_1.jsx)(page_constructor_1.Media, { className: b('media'), imageClassName: b('image'), image: image }), description && ((0, jsx_runtime_1.jsx)("div", { className: b('text-content'), children: (0, jsx_runtime_1.jsx)(page_constructor_1.YFMWrapper, { content: description, modifiers: {
|
17
|
+
blog: true,
|
18
|
+
resetPaddings: true,
|
19
|
+
} }) }))] }));
|
20
|
+
};
|
21
|
+
exports.CompactMedia = CompactMedia;
|
22
|
+
//# sourceMappingURL=CompactMedia.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"CompactMedia.js","sourceRoot":"../../../../src","sources":["blocks/CompactMedia/CompactMedia.tsx"],"names":[],"mappings":";;;;AAAA,mEAA0E;AAE1E,iEAAyD;AAEzD,uDAAyD;AACzD,0CAAqC;AAIrC,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,eAAe,CAAC,CAAC;AAC1B,MAAM,YAAY,GAAG,CAAC,EACzB,aAAa,EACb,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,KAAK,GACW,EAAE,EAAE;IACpB,OAAO,CACH,wBAAC,iBAAO,IACJ,QAAQ,EAAE;YACN,CAAC,6BAAkB,CAAC,GAAG,CAAC,EAAE,UAAU;YACpC,CAAC,6BAAkB,CAAC,MAAM,CAAC,EAAE,aAAa;YAC1C,CAAC,6BAAkB,CAAC,IAAI,CAAC,EAAE,WAAW;YACtC,CAAC,6BAAkB,CAAC,KAAK,CAAC,EAAE,YAAY;SAC3C,EACD,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,aAEzB,uBAAC,wBAAO,IAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,GAAI,EAC3E,WAAW,IAAI,CACZ,gCAAK,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,YAC7B,uBAAC,6BAAU,IACP,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE;wBACP,IAAI,EAAE,IAAI;wBACV,aAAa,EAAE,IAAI;qBACtB,GACH,GACA,CACT,IACK,CACb,CAAC;AACN,CAAC,CAAC;AAhCW,QAAA,YAAY,gBAgCvB","sourcesContent":["import {Media as PCMedia, YFMWrapper} from '@gravity-ui/page-constructor';\n\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {CompactMediaProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {block} from '../../utils/cn';\n\nimport './CompactMedia.scss';\n\nconst b = block('compact-media');\nexport const CompactMedia = ({\n paddingBottom,\n paddingTop,\n description,\n paddingRight,\n paddingLeft,\n image,\n}: CompactMediaProps) => {\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n [PaddingsDirections.left]: paddingLeft,\n [PaddingsDirections.right]: paddingRight,\n }}\n className={b('container')}\n >\n <PCMedia className={b('media')} imageClassName={b('image')} image={image} />\n {description && (\n <div className={b('text-content')}>\n <YFMWrapper\n content={description}\n modifiers={{\n blog: true,\n resetPaddings: true,\n }}\n />\n </div>\n )}\n </Wrapper>\n );\n};\n"]}
|
@@ -0,0 +1,135 @@
|
|
1
|
+
export declare const CompactMedia: {
|
2
|
+
"blog-compact-media-block": {
|
3
|
+
type: string;
|
4
|
+
additionalProperties: boolean;
|
5
|
+
properties: {
|
6
|
+
image: {
|
7
|
+
oneOf: ({
|
8
|
+
optionName: string;
|
9
|
+
oneOf: ({
|
10
|
+
type: string;
|
11
|
+
properties: {
|
12
|
+
when: {
|
13
|
+
type: string;
|
14
|
+
};
|
15
|
+
};
|
16
|
+
} | {
|
17
|
+
type: string;
|
18
|
+
pattern: string;
|
19
|
+
optionName: string;
|
20
|
+
items?: undefined;
|
21
|
+
} | {
|
22
|
+
type: string;
|
23
|
+
items: {
|
24
|
+
type: string;
|
25
|
+
properties: {
|
26
|
+
when: {
|
27
|
+
type: string;
|
28
|
+
};
|
29
|
+
};
|
30
|
+
};
|
31
|
+
optionName: string;
|
32
|
+
pattern?: undefined;
|
33
|
+
})[];
|
34
|
+
type?: undefined;
|
35
|
+
items?: undefined;
|
36
|
+
} | {
|
37
|
+
type: string;
|
38
|
+
items: {
|
39
|
+
oneOf: ({
|
40
|
+
type: string;
|
41
|
+
properties: {
|
42
|
+
when: {
|
43
|
+
type: string;
|
44
|
+
};
|
45
|
+
};
|
46
|
+
} | {
|
47
|
+
type: string;
|
48
|
+
pattern: string;
|
49
|
+
optionName: string;
|
50
|
+
items?: undefined;
|
51
|
+
} | {
|
52
|
+
type: string;
|
53
|
+
items: {
|
54
|
+
type: string;
|
55
|
+
properties: {
|
56
|
+
when: {
|
57
|
+
type: string;
|
58
|
+
};
|
59
|
+
};
|
60
|
+
};
|
61
|
+
optionName: string;
|
62
|
+
pattern?: undefined;
|
63
|
+
})[];
|
64
|
+
};
|
65
|
+
optionName: string;
|
66
|
+
})[];
|
67
|
+
};
|
68
|
+
description: {
|
69
|
+
type: string;
|
70
|
+
contentType: string;
|
71
|
+
};
|
72
|
+
paddingTop: {
|
73
|
+
type: string;
|
74
|
+
enum: string[];
|
75
|
+
};
|
76
|
+
paddingBottom: {
|
77
|
+
type: string;
|
78
|
+
enum: string[];
|
79
|
+
};
|
80
|
+
fullWidth: {
|
81
|
+
type: string;
|
82
|
+
};
|
83
|
+
column: {
|
84
|
+
type: string;
|
85
|
+
enum: string[];
|
86
|
+
};
|
87
|
+
qa: {
|
88
|
+
type: string;
|
89
|
+
};
|
90
|
+
anchor: {
|
91
|
+
type: string;
|
92
|
+
additionalProperties: boolean;
|
93
|
+
required: string[];
|
94
|
+
properties: {
|
95
|
+
text: {
|
96
|
+
type: string;
|
97
|
+
contentType: string;
|
98
|
+
};
|
99
|
+
url: {
|
100
|
+
type: string;
|
101
|
+
};
|
102
|
+
urlTitle: {
|
103
|
+
type: string;
|
104
|
+
};
|
105
|
+
};
|
106
|
+
};
|
107
|
+
visible: {
|
108
|
+
type: string;
|
109
|
+
enum: string[];
|
110
|
+
};
|
111
|
+
resetPaddings: {
|
112
|
+
type: string;
|
113
|
+
};
|
114
|
+
context: {
|
115
|
+
type: string;
|
116
|
+
};
|
117
|
+
indent: {
|
118
|
+
type: string;
|
119
|
+
additionalProperties: boolean;
|
120
|
+
properties: {
|
121
|
+
top: {
|
122
|
+
enum: string[];
|
123
|
+
};
|
124
|
+
bottom: {
|
125
|
+
enum: string[];
|
126
|
+
};
|
127
|
+
};
|
128
|
+
};
|
129
|
+
type: {};
|
130
|
+
when: {
|
131
|
+
type: string;
|
132
|
+
};
|
133
|
+
};
|
134
|
+
};
|
135
|
+
};
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.CompactMedia = void 0;
|
4
|
+
const page_constructor_1 = require("@gravity-ui/page-constructor");
|
5
|
+
const common_1 = require("../../models/common.js");
|
6
|
+
const common_2 = require("../../schema/common.js");
|
7
|
+
const { common: { BlockBaseProps, MediaProps }, } = page_constructor_1.validators;
|
8
|
+
exports.CompactMedia = {
|
9
|
+
[common_1.BlockType.CompactMedia]: {
|
10
|
+
type: 'object',
|
11
|
+
additionalProperties: false,
|
12
|
+
properties: Object.assign(Object.assign(Object.assign({}, BlockBaseProps), common_2.BlogBlockBase), { image: MediaProps['image'], description: {
|
13
|
+
type: 'string',
|
14
|
+
contentType: 'text',
|
15
|
+
} }),
|
16
|
+
},
|
17
|
+
};
|
18
|
+
//# sourceMappingURL=schema.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"../../../../src","sources":["blocks/CompactMedia/schema.ts"],"names":[],"mappings":";;;AAAA,mEAAwD;AAExD,mDAA8C;AAC9C,mDAAkD;AAElD,MAAM,EACF,MAAM,EAAE,EAAC,cAAc,EAAE,UAAU,EAAC,GACvC,GAAG,6BAAU,CAAC;AAEF,QAAA,YAAY,GAAG;IACxB,CAAC,kBAAS,CAAC,YAAY,CAAC,EAAE;QACtB,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,UAAU,gDACH,cAAc,GACd,sBAAa,KAChB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,EAC1B,WAAW,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM;aACtB,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, MediaProps},\n} = validators;\n\nexport const CompactMedia = {\n [BlockType.CompactMedia]: {\n type: 'object',\n additionalProperties: false,\n properties: {\n ...BlockBaseProps,\n ...BlogBlockBase,\n image: MediaProps['image'],\n description: {\n type: 'string',\n contentType: 'text',\n },\n },\n },\n};\n"]}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
2
|
+
unpredictable css rules order in build */
|
3
|
+
.bc-header-block__grid {
|
4
|
+
z-index: 10;
|
5
|
+
}
|
6
|
+
.bc-header-block_image-out-grid .bc-header-block__image {
|
7
|
+
right: 16px;
|
8
|
+
left: 50%;
|
9
|
+
max-width: 1440px;
|
10
|
+
width: 100%;
|
11
|
+
transform: translateX(calc(-50% - 16px));
|
12
|
+
}
|
13
|
+
.bc-header-block_image-out-grid .bc-header-block__image img {
|
14
|
+
margin-left: auto;
|
15
|
+
width: 33.3333333333%;
|
16
|
+
border-radius: 16px;
|
17
|
+
}
|
18
|
+
.bc-header-block_image-out-grid .bc-header-block__content-wrapper {
|
19
|
+
position: static;
|
20
|
+
min-height: 420px;
|
21
|
+
}
|
22
|
+
.bc-header-block_image-out-grid .bc-header-block__content-inner {
|
23
|
+
padding-right: 0;
|
24
|
+
}
|
25
|
+
@media (min-width: 1081px) {
|
26
|
+
.bc-header-block_image-out-grid .bc-header-block__content-inner {
|
27
|
+
max-width: 66.6666666667%;
|
28
|
+
padding-right: 48px;
|
29
|
+
}
|
30
|
+
}
|
31
|
+
@media (max-width: 1081px) and (min-width: 1081px) {
|
32
|
+
.bc-header-block_image-out-grid .bc-header-block__content-inner {
|
33
|
+
max-width: calc(66.6666666667% + 48px);
|
34
|
+
padding-right: 48px;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
@media (max-width: 1081px) and (min-width: 769px) {
|
38
|
+
.bc-header-block_image-out-grid .bc-header-block__image img {
|
39
|
+
width: calc(50% - 16px);
|
40
|
+
}
|
41
|
+
.bc-header-block_image-out-grid .bc-header-block__content-inner {
|
42
|
+
max-width: 50%;
|
43
|
+
padding-right: 48px;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
@media (max-width: 769px) {
|
47
|
+
.bc-header-block_image-out-grid .bc-header-block__image {
|
48
|
+
display: none;
|
49
|
+
}
|
50
|
+
.bc-header-block_image-out-grid .bc-header-block__content-wrapper {
|
51
|
+
max-width: none;
|
52
|
+
min-height: auto;
|
53
|
+
}
|
54
|
+
}
|
@@ -10,10 +10,12 @@ const Wrapper_1 = require("../../components/Wrapper/Wrapper.js");
|
|
10
10
|
const constants_1 = require("../../constants.js");
|
11
11
|
const LocaleContext_1 = require("../../contexts/LocaleContext.js");
|
12
12
|
const PostPageContext_1 = require("../../contexts/PostPageContext.js");
|
13
|
-
const paddings_1 = require("../../models/paddings.js");
|
14
|
-
const common_1 = require("../../utils/common.js");
|
15
13
|
const SettingsContext_1 = require("../../contexts/SettingsContext.js");
|
16
14
|
const utils_1 = require("../../counters/utils.js");
|
15
|
+
const paddings_1 = require("../../models/paddings.js");
|
16
|
+
const cn_1 = require("../../utils/cn.js");
|
17
|
+
const common_1 = require("../../utils/common.js");
|
18
|
+
const b = (0, cn_1.block)('header-block');
|
17
19
|
const analyticsEventsContainer = {
|
18
20
|
sharing: (0, common_1.prepareAnalyticsEvent)({ name: constants_1.DefaultGoalIds.shareTop }),
|
19
21
|
save: (0, common_1.prepareAnalyticsEvent)({ name: constants_1.DefaultGoalIds.saveTop }),
|
@@ -23,7 +25,7 @@ const breadcrumbsGoals = (0, common_1.prepareAnalyticsEvent)({
|
|
23
25
|
counter: utils_1.AnalyticsCounter.CrossSite,
|
24
26
|
});
|
25
27
|
const Header = (props) => {
|
26
|
-
const { theme, paddingTop, paddingBottom } = props;
|
28
|
+
const { theme, paddingTop, paddingBottom, imageInGrid = true } = props;
|
27
29
|
const { post, breadcrumbs: customBreadcrumbs = {} } = React.useContext(PostPageContext_1.PostPageContext);
|
28
30
|
const { locale } = React.useContext(LocaleContext_1.LocaleContext);
|
29
31
|
const { getBlogPath = common_1.getBlogPath } = React.useContext(SettingsContext_1.SettingsContext);
|
@@ -37,7 +39,7 @@ const Header = (props) => {
|
|
37
39
|
return ((0, jsx_runtime_1.jsx)(Wrapper_1.Wrapper, { paddings: {
|
38
40
|
[paddings_1.PaddingsDirections.top]: paddingTop,
|
39
41
|
[paddings_1.PaddingsDirections.bottom]: paddingBottom,
|
40
|
-
}, children: (0, jsx_runtime_1.jsx)(page_constructor_1.HeaderBlock, Object.assign({}, props, { title: title, description: description, breadcrumbs: Object.assign(Object.assign({}, breadcrumbs), customBreadcrumbs), children: (0, jsx_runtime_1.jsx)(PostInfo_1.PostInfo, { postId: id, date: date, readingTime: readingTime, analyticsEventsContainer: analyticsEventsContainer, theme: theme, qa: "blog-header-meta-container" }) })) }));
|
42
|
+
}, children: (0, jsx_runtime_1.jsx)("div", { className: b({ 'image-out-grid': !imageInGrid }), children: (0, jsx_runtime_1.jsx)(page_constructor_1.HeaderBlock, Object.assign({}, props, { title: title, description: description, breadcrumbs: Object.assign(Object.assign({}, breadcrumbs), customBreadcrumbs), mediaClassName: b('image'), gridClassName: b('grid'), contentWrapperClassName: b('content-wrapper'), contentInnerClassName: b('content-inner'), children: (0, jsx_runtime_1.jsx)(PostInfo_1.PostInfo, { postId: id, date: date, readingTime: readingTime, analyticsEventsContainer: analyticsEventsContainer, theme: theme, qa: "blog-header-meta-container" }) })) }) }));
|
41
43
|
};
|
42
44
|
exports.Header = Header;
|
43
45
|
//# sourceMappingURL=Header.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"../../../../src","sources":["blocks/Header/Header.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,mEAA8E;AAE9E,oEAA4D;AAC5D,iEAAyD;AACzD,kDAA+C;AAC/C,mEAA2D;AAC3D,uEAA+D;
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"../../../../src","sources":["blocks/Header/Header.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,mEAA8E;AAE9E,oEAA4D;AAC5D,iEAAyD;AACzD,kDAA+C;AAC/C,mEAA2D;AAC3D,uEAA+D;AAC/D,uEAA+D;AAC/D,mDAAsD;AAEtD,uDAAyD;AACzD,0CAAqC;AACrC,kDAI4B;AAI5B,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,cAAc,CAAC,CAAC;AAEhC,MAAM,wBAAwB,GAAwC;IAClE,OAAO,EAAE,IAAA,8BAAqB,EAAC,EAAC,IAAI,EAAE,0BAAc,CAAC,QAAQ,EAAC,CAAC;IAC/D,IAAI,EAAE,IAAA,8BAAqB,EAAC,EAAC,IAAI,EAAE,0BAAc,CAAC,OAAO,EAAC,CAAC;CAC9D,CAAC;AAEF,MAAM,gBAAgB,GAAG,IAAA,8BAAqB,EAAC;IAC3C,IAAI,EAAE,0BAAc,CAAC,cAAc;IACnC,OAAO,EAAE,wBAAgB,CAAC,SAAS;CACtC,CAAC,CAAC;AAEI,MAAM,MAAM,GAAG,CAAC,KAAkB,EAAE,EAAE;IACzC,MAAM,EAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,GAAG,IAAI,EAAC,GAAG,KAAK,CAAC;IACrE,MAAM,EAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,GAAG,EAAE,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAe,CAAC,CAAC;IACtF,MAAM,EAAC,MAAM,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,6BAAa,CAAC,CAAC;IACjD,MAAM,EAAC,WAAW,GAAG,oBAAkB,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAe,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAEtD,MAAM,EAAC,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC;IAE/D,MAAM,WAAW,GAAG,IAAA,uBAAc,EAAC,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;IAErD,IAAI,KAAK,KAAK,MAAM,IAAI,WAAW,EAAE,CAAC;QAClC,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;IAC/B,CAAC;IAED,WAAW,CAAC,eAAe,GAAG,gBAAgB,CAAC;IAE/C,OAAO,CACH,uBAAC,iBAAO,IACJ,QAAQ,EAAE;YACN,CAAC,6BAAkB,CAAC,GAAG,CAAC,EAAE,UAAU;YACpC,CAAC,6BAAkB,CAAC,MAAM,CAAC,EAAE,aAAa;SAC7C,YAED,gCAAK,SAAS,EAAE,CAAC,CAAC,EAAC,gBAAgB,EAAE,CAAC,WAAW,EAAC,CAAC,YAC/C,uBAAC,8BAAW,oBACJ,KAAK,IACT,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,WAAW,kCAAM,WAAW,GAAK,iBAAiB,GAClD,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,EAC1B,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,EACxB,uBAAuB,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAC7C,qBAAqB,EAAE,CAAC,CAAC,eAAe,CAAC,YAEzC,uBAAC,mBAAQ,IACL,MAAM,EAAE,EAAE,EACV,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,wBAAwB,EAAE,wBAAwB,EAClD,KAAK,EAAE,KAAK,EACZ,EAAE,EAAC,4BAA4B,GACjC,IACQ,GACZ,GACA,CACb,CAAC;AACN,CAAC,CAAC;AA/CW,QAAA,MAAM,UA+CjB","sourcesContent":["import * as React from 'react';\n\nimport {AnalyticsEventsProp, HeaderBlock} from '@gravity-ui/page-constructor';\n\nimport {PostInfo} from '../../components/PostInfo/PostInfo';\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {DefaultGoalIds} from '../../constants';\nimport {LocaleContext} from '../../contexts/LocaleContext';\nimport {PostPageContext} from '../../contexts/PostPageContext';\nimport {SettingsContext} from '../../contexts/SettingsContext';\nimport {AnalyticsCounter} from '../../counters/utils';\nimport {HeaderProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {block} from '../../utils/cn';\nimport {\n getBreadcrumbs,\n getBlogPath as getDefaultBlogPath,\n prepareAnalyticsEvent,\n} from '../../utils/common';\n\nimport './Header.scss';\n\nconst b = block('header-block');\n\nconst analyticsEventsContainer: Record<string, AnalyticsEventsProp> = {\n sharing: prepareAnalyticsEvent({name: DefaultGoalIds.shareTop}),\n save: prepareAnalyticsEvent({name: DefaultGoalIds.saveTop}),\n};\n\nconst breadcrumbsGoals = prepareAnalyticsEvent({\n name: DefaultGoalIds.breadcrumbsTop,\n counter: AnalyticsCounter.CrossSite,\n});\n\nexport const Header = (props: HeaderProps) => {\n const {theme, paddingTop, paddingBottom, imageInGrid = true} = props;\n const {post, breadcrumbs: customBreadcrumbs = {}} = React.useContext(PostPageContext);\n const {locale} = React.useContext(LocaleContext);\n const {getBlogPath = getDefaultBlogPath} = React.useContext(SettingsContext);\n const blogPath = getBlogPath(locale.pathPrefix || '');\n\n const {description, title, id, date, readingTime, tags} = post;\n\n const breadcrumbs = getBreadcrumbs({tags, blogPath});\n\n if (theme === 'dark' && breadcrumbs) {\n breadcrumbs.theme = 'dark';\n }\n\n breadcrumbs.analyticsEvents = breadcrumbsGoals;\n\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n >\n <div className={b({'image-out-grid': !imageInGrid})}>\n <HeaderBlock\n {...props}\n title={title}\n description={description}\n breadcrumbs={{...breadcrumbs, ...customBreadcrumbs}}\n mediaClassName={b('image')}\n gridClassName={b('grid')}\n contentWrapperClassName={b('content-wrapper')}\n contentInnerClassName={b('content-inner')}\n >\n <PostInfo\n postId={id}\n date={date}\n readingTime={readingTime}\n analyticsEventsContainer={analyticsEventsContainer}\n theme={theme}\n qa=\"blog-header-meta-container\"\n />\n </HeaderBlock>\n </div>\n </Wrapper>\n );\n};\n"]}
|
@@ -9,12 +9,12 @@ const PostInfo_1 = require("../../components/PostInfo/PostInfo.js");
|
|
9
9
|
const Wrapper_1 = require("../../components/Wrapper/Wrapper.js");
|
10
10
|
const constants_1 = require("../../constants.js");
|
11
11
|
const LocaleContext_1 = require("../../contexts/LocaleContext.js");
|
12
|
-
const SettingsContext_1 = require("../../contexts/SettingsContext.js");
|
13
12
|
const PostPageContext_1 = require("../../contexts/PostPageContext.js");
|
13
|
+
const SettingsContext_1 = require("../../contexts/SettingsContext.js");
|
14
|
+
const utils_1 = require("../../counters/utils.js");
|
14
15
|
const paddings_1 = require("../../models/paddings.js");
|
15
16
|
const cn_1 = require("../../utils/cn.js");
|
16
17
|
const common_1 = require("../../utils/common.js");
|
17
|
-
const utils_1 = require("../../counters/utils.js");
|
18
18
|
const b = (0, cn_1.block)('meta');
|
19
19
|
const analyticsEventsContainer = {
|
20
20
|
sharing: (0, common_1.prepareAnalyticsEvent)({ name: constants_1.DefaultGoalIds.shareBottom }),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Meta.js","sourceRoot":"../../../../src","sources":["blocks/Meta/Meta.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,mEAAgG;AAEhG,oEAA4D;AAC5D,iEAAyD;AACzD,kDAA+C;AAC/C,mEAA2D;AAC3D,uEAA+D;AAC/D,uEAA+D;
|
1
|
+
{"version":3,"file":"Meta.js","sourceRoot":"../../../../src","sources":["blocks/Meta/Meta.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,mEAAgG;AAEhG,oEAA4D;AAC5D,iEAAyD;AACzD,kDAA+C;AAC/C,mEAA2D;AAC3D,uEAA+D;AAC/D,uEAA+D;AAC/D,mDAAsD;AAEtD,uDAAyD;AACzD,0CAAqC;AACrC,kDAM4B;AAI5B,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,MAAM,CAAC,CAAC;AAExB,MAAM,wBAAwB,GAAwC;IAClE,OAAO,EAAE,IAAA,8BAAqB,EAAC,EAAC,IAAI,EAAE,0BAAc,CAAC,WAAW,EAAC,CAAC;IAClE,IAAI,EAAE,IAAA,8BAAqB,EAAC,EAAC,IAAI,EAAE,0BAAc,CAAC,UAAU,EAAC,CAAC;CACjE,CAAC;AAEF,MAAM,gBAAgB,GAAG,IAAA,8BAAqB,EAAC;IAC3C,IAAI,EAAE,0BAAc,CAAC,iBAAiB;IACtC,OAAO,EAAE,wBAAgB,CAAC,SAAS;CACtC,CAAC,CAAC;AAEI,MAAM,IAAI,GAAG,CAAC,KAAgB,EAAE,EAAE;IACrC,MAAM,EAAC,UAAU,GAAG,GAAG,EAAE,aAAa,GAAG,GAAG,EAAE,KAAK,GAAG,OAAO,EAAE,EAAE,EAAC,GAAG,KAAK,CAAC;IAC3E,MAAM,EAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAe,CAAC,CAAC;IACjF,MAAM,EAAC,MAAM,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,6BAAa,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,IAAA,wBAAe,EAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACtD,MAAM,EAAC,WAAW,GAAG,oBAAkB,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAe,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAEtD,MAAM,EAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC;IAElD,MAAM,WAAW,GAAG,IAAA,uBAAc,EAAC,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;IAErD,WAAW,CAAC,eAAe,GAAG,IAAA,iCAAwB,EAAC,gBAAgB,CAAC,CAAC;IAEzE,OAAO,CACH,wBAAC,iBAAO,IACJ,QAAQ,EAAE;YACN,CAAC,6BAAkB,CAAC,GAAG,CAAC,EAAE,UAAU;YACpC,CAAC,6BAAkB,CAAC,MAAM,CAAC,EAAE,aAAa;SAC7C,EACD,EAAE,EAAE,YAAY,CAAC,OAAO,aAEvB,WAAW,IAAI,CACZ,uBAAC,oCAAiB,IACd,KAAK,EAAE,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,KAAK,KAAI,WAAW,CAAC,KAAK,EACpD,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,EAC3B,KAAK,EAAE,KAAK,GACd,CACL,EACA,KAAK,IAAI,CACN,uBAAC,6BAAU,IACP,OAAO,EAAE,KAAK,EACd,SAAS,EAAE;oBACP,eAAe,EAAE,IAAI;oBACrB,aAAa,EAAE,IAAI;iBACtB,GACH,CACL,EACA,IAAI,IAAI,CACL,uBAAC,mBAAQ,IACL,MAAM,EAAE,EAAE,EACV,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,wBAAwB,EAAE,wBAAwB,EAClD,EAAE,EAAE,YAAY,CAAC,QAAQ,GAC3B,CACL,IACK,CACb,CAAC;AACN,CAAC,CAAC;AAjDW,QAAA,IAAI,QAiDf","sourcesContent":["import * as React from 'react';\n\nimport {AnalyticsEventsProp, HeaderBreadcrumbs, YFMWrapper} from '@gravity-ui/page-constructor';\n\nimport {PostInfo} from '../../components/PostInfo/PostInfo';\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {DefaultGoalIds} from '../../constants';\nimport {LocaleContext} from '../../contexts/LocaleContext';\nimport {PostPageContext} from '../../contexts/PostPageContext';\nimport {SettingsContext} from '../../contexts/SettingsContext';\nimport {AnalyticsCounter} from '../../counters/utils';\nimport {MetaProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {block} from '../../utils/cn';\nimport {\n getBreadcrumbs,\n getBlogPath as getDefaultBlogPath,\n getMergedAnalyticsEvents,\n getQaAttributes,\n prepareAnalyticsEvent,\n} from '../../utils/common';\n\nimport './Meta.scss';\n\nconst b = block('meta');\n\nconst analyticsEventsContainer: Record<string, AnalyticsEventsProp> = {\n sharing: prepareAnalyticsEvent({name: DefaultGoalIds.shareBottom}),\n save: prepareAnalyticsEvent({name: DefaultGoalIds.saveBottom}),\n};\n\nconst breadcrumbsGoals = prepareAnalyticsEvent({\n name: DefaultGoalIds.breadcrumbsBottom,\n counter: AnalyticsCounter.CrossSite,\n});\n\nexport const Meta = (props: MetaProps) => {\n const {paddingTop = 'l', paddingBottom = 'l', theme = 'light', qa} = props;\n const {post, breadcrumbs: customBreadcrumbs} = React.useContext(PostPageContext);\n const {locale} = React.useContext(LocaleContext);\n const qaAttributes = getQaAttributes(qa, 'post-info');\n const {getBlogPath = getDefaultBlogPath} = React.useContext(SettingsContext);\n const blogPath = getBlogPath(locale.pathPrefix || '');\n\n const {title, id, date, readingTime, tags} = post;\n\n const breadcrumbs = getBreadcrumbs({tags, blogPath});\n\n breadcrumbs.analyticsEvents = getMergedAnalyticsEvents(breadcrumbsGoals);\n\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n qa={qaAttributes.wrapper}\n >\n {breadcrumbs && (\n <HeaderBreadcrumbs\n items={customBreadcrumbs?.items || breadcrumbs.items}\n className={b('breadcrumbs')}\n theme={theme}\n />\n )}\n {title && (\n <YFMWrapper\n content={title}\n modifiers={{\n blogBreadcrumbs: true,\n resetPaddings: true,\n }}\n />\n )}\n {post && (\n <PostInfo\n postId={id}\n date={date}\n readingTime={readingTime}\n analyticsEventsContainer={analyticsEventsContainer}\n qa={qaAttributes.postInfo}\n />\n )}\n </Wrapper>\n );\n};\n"]}
|
@@ -7,12 +7,12 @@ const React = tslib_1.__importStar(require("react"));
|
|
7
7
|
const page_constructor_1 = require("@gravity-ui/page-constructor");
|
8
8
|
const PostCard_1 = require("../../components/PostCard/PostCard.js");
|
9
9
|
const Wrapper_1 = require("../../components/Wrapper/Wrapper.js");
|
10
|
+
const constants_1 = require("../../constants.js");
|
10
11
|
const PostPageContext_1 = require("../../contexts/PostPageContext.js");
|
12
|
+
const utils_1 = require("../../counters/utils.js");
|
11
13
|
const i18n_1 = require("../../i18n/index.js");
|
12
14
|
const paddings_1 = require("../../models/paddings.js");
|
13
15
|
const common_1 = require("../../utils/common.js");
|
14
|
-
const constants_1 = require("../../constants.js");
|
15
|
-
const utils_1 = require("../../counters/utils.js");
|
16
16
|
const suggestGoals = (0, common_1.prepareAnalyticsEvent)({
|
17
17
|
name: constants_1.DefaultGoalIds.suggest,
|
18
18
|
counter: utils_1.AnalyticsCounter.CrossSite,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Suggest.js","sourceRoot":"../../../../src","sources":["blocks/Suggest/Suggest.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,mEAAyD;AAEzD,oEAA4D;AAC5D,iEAAyD;AACzD,uEAA+D;AAC/D,8CAAwC;AAExC,uDAAyD;AACzD,kDAAyD;
|
1
|
+
{"version":3,"file":"Suggest.js","sourceRoot":"../../../../src","sources":["blocks/Suggest/Suggest.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,mEAAyD;AAEzD,oEAA4D;AAC5D,iEAAyD;AACzD,kDAA+C;AAC/C,uEAA+D;AAC/D,mDAAsD;AACtD,8CAAwC;AAExC,uDAAyD;AACzD,kDAAyD;AAEzD,MAAM,YAAY,GAAG,IAAA,8BAAqB,EAAC;IACvC,IAAI,EAAE,0BAAc,CAAC,OAAO;IAC5B,OAAO,EAAE,wBAAgB,CAAC,SAAS;CACtC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACI,MAAM,OAAO,GAAG,CAAC,EAAC,UAAU,GAAG,GAAG,EAAE,aAAa,GAAG,GAAG,EAAe,EAAE,EAAE;IAC7E,MAAM,EAAC,cAAc,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAe,CAAC,CAAC;IAE3D,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CACH,uBAAC,iBAAO,IACJ,QAAQ,EAAE;YACN,CAAC,6BAAkB,CAAC,GAAG,CAAC,EAAE,UAAU;YACpC,CAAC,6BAAkB,CAAC,MAAM,CAAC,EAAE,aAAa;SAC7C,YAED,uBAAC,8BAAW,IACR,YAAY,EAAE,EAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAC,EACnC,KAAK,EAAE,EAAC,IAAI,EAAE,IAAA,WAAI,EAAC,aAAM,CAAC,YAAY,CAAC,EAAC,YAEvC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC1B,uBAAC,mBAAQ,IAAe,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,IAAlD,IAAI,CAAC,EAAE,CAA+C,CACxE,CAAC,GACQ,GACR,CACb,CAAC;AACN,CAAC,CAAC;AAxBW,QAAA,OAAO,WAwBlB","sourcesContent":["import * as React from 'react';\n\nimport {SliderBlock} from '@gravity-ui/page-constructor';\n\nimport {PostCard} from '../../components/PostCard/PostCard';\nimport {Wrapper} from '../../components/Wrapper/Wrapper';\nimport {DefaultGoalIds} from '../../constants';\nimport {PostPageContext} from '../../contexts/PostPageContext';\nimport {AnalyticsCounter} from '../../counters/utils';\nimport {Keyset, i18n} from '../../i18n';\nimport {SuggestProps} from '../../models/blocks';\nimport {PaddingsDirections} from '../../models/paddings';\nimport {prepareAnalyticsEvent} from '../../utils/common';\n\nconst suggestGoals = prepareAnalyticsEvent({\n name: DefaultGoalIds.suggest,\n counter: AnalyticsCounter.CrossSite,\n});\n\n/**\n * Suggested posts block\n *\n * @param posts - suggested posts list\n * @param paddingTop - padding top code\n * @param paddingBottom - padding bottom code\n *\n * @returns -jsx\n */\nexport const Suggest = ({paddingTop = 'l', paddingBottom = 'l'}: SuggestProps) => {\n const {suggestedPosts} = React.useContext(PostPageContext);\n\n if (suggestedPosts.length === 0) {\n return null;\n }\n\n return (\n <Wrapper\n paddings={{\n [PaddingsDirections.top]: paddingTop,\n [PaddingsDirections.bottom]: paddingBottom,\n }}\n >\n <SliderBlock\n slidesToShow={{xl: 3, lg: 2, sm: 1}}\n title={{text: i18n(Keyset.TitleSuggest)}}\n >\n {suggestedPosts.map((post) => (\n <PostCard key={post.id} analyticsEvents={suggestGoals} post={post} />\n ))}\n </SliderBlock>\n </Wrapper>\n );\n};\n"]}
|
@@ -4,9 +4,9 @@ exports.Controls = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
6
6
|
const React = tslib_1.__importStar(require("react"));
|
7
|
+
const icons_1 = require("@gravity-ui/icons");
|
7
8
|
const page_constructor_1 = require("@gravity-ui/page-constructor");
|
8
9
|
const uikit_1 = require("@gravity-ui/uikit");
|
9
|
-
const icons_1 = require("@gravity-ui/icons");
|
10
10
|
const constants_1 = require("../../../../constants.js");
|
11
11
|
const LikesContext_1 = require("../../../../contexts/LikesContext.js");
|
12
12
|
const MobileContext_1 = require("../../../../contexts/MobileContext.js");
|
@@ -14,8 +14,8 @@ const utils_1 = require("../../../../counters/utils.js");
|
|
14
14
|
const i18n_1 = require("../../../../i18n/index.js");
|
15
15
|
const common_1 = require("../../../../models/common.js");
|
16
16
|
const cn_1 = require("../../../../utils/cn.js");
|
17
|
-
const Search_1 = require("../../../Search/Search.js");
|
18
17
|
const common_2 = require("../../../../utils/common.js");
|
18
|
+
const Search_1 = require("../../../Search/Search.js");
|
19
19
|
const customRenders_1 = require("./customRenders.js");
|
20
20
|
const b = (0, cn_1.block)('feed-controls');
|
21
21
|
const ICON_SIZE = 16;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Controls.js","sourceRoot":"../../../../../../src","sources":["components/FeedHeader/components/Controls/Controls.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {useAnalytics} from '@gravity-ui/page-constructor';\nimport {Button, Icon, MobileProvider, Select} from '@gravity-ui/uikit';\nimport {Bookmark} from '@gravity-ui/icons';\n\nimport {DefaultGoalIds} from '../../../../constants';\nimport {LikesContext} from '../../../../contexts/LikesContext';\nimport {MobileContext} from '../../../../contexts/MobileContext';\nimport {AnalyticsCounter} from '../../../../counters/utils';\nimport {Keyset, i18n} from '../../../../i18n';\nimport {DefaultEventNames, FetchArgs, Query} from '../../../../models/common';\nimport {block} from '../../../../utils/cn';\nimport {Search} from '../../../Search/Search';\nimport {prepareAnalyticsEvent} from '../../../../utils/common';\n\nimport {renderFilter, renderOption, renderSwitcher} from './customRenders';\n\nimport './Controls.scss';\n\nconst b = block('feed-controls');\n\nexport type SelectItem = {\n content: string;\n value: string;\n icon?: React.ReactNode;\n};\n\nexport type ControlsProps = {\n handleLoadData: (props: FetchArgs) => void;\n tags?: SelectItem[];\n services?: SelectItem[];\n queryParams: Query;\n};\n\nconst ICON_SIZE = 16;\nconst DEFAULT_PAGE = 1;\nconst VIRTUALIZATION_THRESHOLD = 1000;\n\nexport const Controls = ({\n handleLoadData,\n tags = [],\n services = [],\n queryParams,\n}: ControlsProps) => {\n const {hasLikes} = React.useContext(LikesContext);\n const handleAnalyticsTag = useAnalytics(DefaultEventNames.Tag);\n const handleAnalyticsService = useAnalytics(DefaultEventNames.Service);\n const handleAnalyticsSaveOnly = useAnalytics(DefaultEventNames.SaveOnly);\n\n const {\n savedOnly: savedOnlyInitial,\n search: searchInitial,\n tags: tagInitial,\n services: servicesInitial,\n } = queryParams || {};\n\n const [savedOnly, setSavedOnly] = React.useState<boolean>(savedOnlyInitial === 'true');\n const [search, setSearch] = React.useState<string>(searchInitial as string);\n\n const isMobile = React.useContext(MobileContext);\n\n const handleSavedOnly = () => {\n handleAnalyticsSaveOnly();\n setSavedOnly(!savedOnly);\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {\n savedOnly: savedOnly ? '' : 'true',\n search: '',\n tags: '',\n page: DEFAULT_PAGE,\n services: '',\n },\n });\n };\n\n const handleSearch = (searchValue: string) => {\n setSearch(searchValue);\n\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {search: searchValue, page: DEFAULT_PAGE},\n });\n };\n\n const handleTagSelect = (selectedTags: string[]) => {\n const event = prepareAnalyticsEvent({\n name: DefaultGoalIds.tag,\n counter: AnalyticsCounter.CrossSite,\n });\n handleAnalyticsTag(event, {\n theme: selectedTags[0],\n });\n\n const isEmptyTag = selectedTags.some((tag) => tag === 'empty');\n\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {\n tags: isEmptyTag ? '' : selectedTags[0],\n page: DEFAULT_PAGE,\n },\n });\n };\n\n const handleServicesSelect = (selectedServices: string[]) => {\n const forAnalyticsServices = services.filter((service) => {\n return selectedServices.includes(service.value);\n });\n\n const servicesAsStringForAnalytics = forAnalyticsServices\n .map((service) => service.content)\n .join(',');\n\n const event = prepareAnalyticsEvent({\n name: DefaultGoalIds.service,\n counter: AnalyticsCounter.CrossSite,\n });\n handleAnalyticsService(event, {\n service: servicesAsStringForAnalytics,\n });\n\n const servicesAsString = selectedServices.join(',');\n\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {services: servicesAsString, page: DEFAULT_PAGE},\n });\n };\n\n const tagsItems = React.useMemo(\n () => [{value: 'empty', content: i18n(Keyset.AllTags)} as unknown as SelectItem, ...tags],\n [tags],\n );\n\n const servicesItems = React.useMemo(\n () => (servicesInitial ? [...(servicesInitial as string).split(',')] : []),\n [servicesInitial],\n );\n\n return (\n <MobileProvider mobile={false}>\n <div className={b('header')}>\n <h1 className={b('header-item', {title: true})}>{i18n(Keyset.Title)}</h1>\n <div className={b('header-item', {filters: true})}>\n <div className={b('filter-item')}>\n <Search\n className={b('search')}\n placeholder={i18n(Keyset.Search)}\n initialValue={search && typeof search === 'string' ? search : ''}\n onSubmit={handleSearch}\n />\n </div>\n <div className={b('filter-item')}>\n <Select\n className={b('select')}\n size=\"xl\"\n options={tagsItems}\n defaultValue={[tagInitial] as string[]}\n onUpdate={handleTagSelect}\n placeholder={i18n(Keyset.AllTags)}\n popupClassName={b('popup', {isMobile})}\n renderControl={renderSwitcher({\n initial: [tagInitial],\n list: tagsItems,\n defaultLabel: i18n(Keyset.AllTags),\n })}\n disablePortal\n virtualizationThreshold={VIRTUALIZATION_THRESHOLD}\n renderOption={renderOption}\n />\n </div>\n\n {services.length > 0 ? (\n <div className={b('filter-item')}>\n <Select\n className={b('select')}\n size=\"xl\"\n multiple\n filterable\n hasClear\n disablePortal\n options={services}\n defaultValue={servicesItems}\n popupClassName={b('popup', {isMobile})}\n onUpdate={handleServicesSelect}\n placeholder={i18n(Keyset.AllServices)}\n renderControl={renderSwitcher({\n initial: servicesItems,\n list: services,\n defaultLabel: i18n(Keyset.AllServices),\n qa: 'service-select',\n })}\n virtualizationThreshold={VIRTUALIZATION_THRESHOLD}\n renderOption={renderOption}\n renderFilter={renderFilter}\n />\n </div>\n ) : null}\n {hasLikes ? (\n <div className={b('filter-item', {'width-auto': true})}>\n <Button\n view={'outlined'}\n className={b('saved-only-button', {savedOnly})}\n size=\"xl\"\n onClick={handleSavedOnly}\n selected={savedOnly}\n >\n <Icon\n data={Bookmark}\n size={ICON_SIZE}\n className={b('icon', {savedOnly})}\n />\n {i18n(Keyset.ActionSavedOnly)}\n </Button>\n </div>\n ) : null}\n </div>\n </div>\n </MobileProvider>\n );\n};\n"]}
|
1
|
+
{"version":3,"file":"Controls.js","sourceRoot":"../../../../../../src","sources":["components/FeedHeader/components/Controls/Controls.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {Bookmark} from '@gravity-ui/icons';\nimport {useAnalytics} from '@gravity-ui/page-constructor';\nimport {Button, Icon, MobileProvider, Select} from '@gravity-ui/uikit';\n\nimport {DefaultGoalIds} from '../../../../constants';\nimport {LikesContext} from '../../../../contexts/LikesContext';\nimport {MobileContext} from '../../../../contexts/MobileContext';\nimport {AnalyticsCounter} from '../../../../counters/utils';\nimport {Keyset, i18n} from '../../../../i18n';\nimport {DefaultEventNames, FetchArgs, Query} from '../../../../models/common';\nimport {block} from '../../../../utils/cn';\nimport {prepareAnalyticsEvent} from '../../../../utils/common';\nimport {Search} from '../../../Search/Search';\n\nimport {renderFilter, renderOption, renderSwitcher} from './customRenders';\n\nimport './Controls.scss';\n\nconst b = block('feed-controls');\n\nexport type SelectItem = {\n content: string;\n value: string;\n icon?: React.ReactNode;\n};\n\nexport type ControlsProps = {\n handleLoadData: (props: FetchArgs) => void;\n tags?: SelectItem[];\n services?: SelectItem[];\n queryParams: Query;\n};\n\nconst ICON_SIZE = 16;\nconst DEFAULT_PAGE = 1;\nconst VIRTUALIZATION_THRESHOLD = 1000;\n\nexport const Controls = ({\n handleLoadData,\n tags = [],\n services = [],\n queryParams,\n}: ControlsProps) => {\n const {hasLikes} = React.useContext(LikesContext);\n const handleAnalyticsTag = useAnalytics(DefaultEventNames.Tag);\n const handleAnalyticsService = useAnalytics(DefaultEventNames.Service);\n const handleAnalyticsSaveOnly = useAnalytics(DefaultEventNames.SaveOnly);\n\n const {\n savedOnly: savedOnlyInitial,\n search: searchInitial,\n tags: tagInitial,\n services: servicesInitial,\n } = queryParams || {};\n\n const [savedOnly, setSavedOnly] = React.useState<boolean>(savedOnlyInitial === 'true');\n const [search, setSearch] = React.useState<string>(searchInitial as string);\n\n const isMobile = React.useContext(MobileContext);\n\n const handleSavedOnly = () => {\n handleAnalyticsSaveOnly();\n setSavedOnly(!savedOnly);\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {\n savedOnly: savedOnly ? '' : 'true',\n search: '',\n tags: '',\n page: DEFAULT_PAGE,\n services: '',\n },\n });\n };\n\n const handleSearch = (searchValue: string) => {\n setSearch(searchValue);\n\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {search: searchValue, page: DEFAULT_PAGE},\n });\n };\n\n const handleTagSelect = (selectedTags: string[]) => {\n const event = prepareAnalyticsEvent({\n name: DefaultGoalIds.tag,\n counter: AnalyticsCounter.CrossSite,\n });\n handleAnalyticsTag(event, {\n theme: selectedTags[0],\n });\n\n const isEmptyTag = selectedTags.some((tag) => tag === 'empty');\n\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {\n tags: isEmptyTag ? '' : selectedTags[0],\n page: DEFAULT_PAGE,\n },\n });\n };\n\n const handleServicesSelect = (selectedServices: string[]) => {\n const forAnalyticsServices = services.filter((service) => {\n return selectedServices.includes(service.value);\n });\n\n const servicesAsStringForAnalytics = forAnalyticsServices\n .map((service) => service.content)\n .join(',');\n\n const event = prepareAnalyticsEvent({\n name: DefaultGoalIds.service,\n counter: AnalyticsCounter.CrossSite,\n });\n handleAnalyticsService(event, {\n service: servicesAsStringForAnalytics,\n });\n\n const servicesAsString = selectedServices.join(',');\n\n handleLoadData({\n page: DEFAULT_PAGE,\n query: {services: servicesAsString, page: DEFAULT_PAGE},\n });\n };\n\n const tagsItems = React.useMemo(\n () => [{value: 'empty', content: i18n(Keyset.AllTags)} as unknown as SelectItem, ...tags],\n [tags],\n );\n\n const servicesItems = React.useMemo(\n () => (servicesInitial ? [...(servicesInitial as string).split(',')] : []),\n [servicesInitial],\n );\n\n return (\n <MobileProvider mobile={false}>\n <div className={b('header')}>\n <h1 className={b('header-item', {title: true})}>{i18n(Keyset.Title)}</h1>\n <div className={b('header-item', {filters: true})}>\n <div className={b('filter-item')}>\n <Search\n className={b('search')}\n placeholder={i18n(Keyset.Search)}\n initialValue={search && typeof search === 'string' ? search : ''}\n onSubmit={handleSearch}\n />\n </div>\n <div className={b('filter-item')}>\n <Select\n className={b('select')}\n size=\"xl\"\n options={tagsItems}\n defaultValue={[tagInitial] as string[]}\n onUpdate={handleTagSelect}\n placeholder={i18n(Keyset.AllTags)}\n popupClassName={b('popup', {isMobile})}\n renderControl={renderSwitcher({\n initial: [tagInitial],\n list: tagsItems,\n defaultLabel: i18n(Keyset.AllTags),\n })}\n disablePortal\n virtualizationThreshold={VIRTUALIZATION_THRESHOLD}\n renderOption={renderOption}\n />\n </div>\n\n {services.length > 0 ? (\n <div className={b('filter-item')}>\n <Select\n className={b('select')}\n size=\"xl\"\n multiple\n filterable\n hasClear\n disablePortal\n options={services}\n defaultValue={servicesItems}\n popupClassName={b('popup', {isMobile})}\n onUpdate={handleServicesSelect}\n placeholder={i18n(Keyset.AllServices)}\n renderControl={renderSwitcher({\n initial: servicesItems,\n list: services,\n defaultLabel: i18n(Keyset.AllServices),\n qa: 'service-select',\n })}\n virtualizationThreshold={VIRTUALIZATION_THRESHOLD}\n renderOption={renderOption}\n renderFilter={renderFilter}\n />\n </div>\n ) : null}\n {hasLikes ? (\n <div className={b('filter-item', {'width-auto': true})}>\n <Button\n view={'outlined'}\n className={b('saved-only-button', {savedOnly})}\n size=\"xl\"\n onClick={handleSavedOnly}\n selected={savedOnly}\n >\n <Icon\n data={Bookmark}\n size={ICON_SIZE}\n className={b('icon', {savedOnly})}\n />\n {i18n(Keyset.ActionSavedOnly)}\n </Button>\n </div>\n ) : null}\n </div>\n </div>\n </MobileProvider>\n );\n};\n"]}
|
@@ -4,8 +4,8 @@ exports.CustomSwitcher = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
6
6
|
const React = tslib_1.__importStar(require("react"));
|
7
|
-
const uikit_1 = require("@gravity-ui/uikit");
|
8
7
|
const icons_1 = require("@gravity-ui/icons");
|
8
|
+
const uikit_1 = require("@gravity-ui/uikit");
|
9
9
|
const cn_1 = require("../../../../utils/cn.js");
|
10
10
|
const b = (0, cn_1.block)('feed-custom-switcher');
|
11
11
|
const ICON_SIZE = 12;
|