@gravity-ui/blog-constructor 8.1.0 → 8.2.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/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/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/models/blocks.d.ts +5 -1
- package/build/cjs/models/blocks.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/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/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/models/blocks.d.ts +5 -1
- package/build/esm/models/blocks.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 +5 -1
- package/styles/storybook/index.scss +4 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SuggestPostInfo.js","sourceRoot":"../../../../src","sources":["components/PostInfo/SuggestPostInfo.tsx"],"names":[],"mappings":";;;;AAAA,sDAA8C;AAC9C,mDAA4F;AAC5F,0CAAqC;
|
1
|
+
{"version":3,"file":"SuggestPostInfo.js","sourceRoot":"../../../../src","sources":["components/PostInfo/SuggestPostInfo.tsx"],"names":[],"mappings":";;;;AAAA,kDAA+C;AAC/C,sDAA8C;AAC9C,mDAA4F;AAC5F,0CAAqC;AACrC,kDAAyD;AAEzD,+CAAuC;AACvC,6DAAqD;AACrD,+CAAuC;AAIvC,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,WAAW,CAAC,CAAC;AAE7B,MAAM,UAAU,GAAG,IAAA,8BAAqB,EAAC,EAAC,IAAI,EAAE,0BAAc,CAAC,WAAW,EAAC,CAAC,CAAC;AAgB7E;;;;;;;;;;;;;;;GAeG;AACI,MAAM,eAAe,GAAG,CAAC,EAC5B,MAAM,EACN,IAAI,EACJ,WAAW,EACX,KAAK,EACL,IAAI,GAAG,qBAAY,CAAC,KAAK,EACzB,EAAE,EACF,MAAM,EACN,aAAa,GACM,EAAE,EAAE;IACvB,MAAM,EAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAC,GAAG,IAAA,mBAAQ,EAAC;QACnD,OAAO,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW;QAC3B,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU;QACxB,kBAAkB,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU;QACrC,MAAM,EAAE,MAAM;KACjB,CAAC,CAAC;IAEH,OAAO,CACH,iCAAK,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,aAC1B,iCAAK,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC,aACjC,IAAI,IAAI,uBAAC,WAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,GAAI,EACpD,WAAW,IAAI,CACZ,uBAAC,yBAAW,IAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,GAAI,CAC3E,IACC,EACL,KAAK,IAAI,MAAM,IAAI,CAChB,uBAAC,WAAI,IACD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,UAAU,EACjB,eAAe,EAAE,UAAU,EAC3B,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,UAAU,EAC1B,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,EAAE,GACR,CACL,IACC,CACT,CAAC;AACN,CAAC,CAAC;AAtCW,QAAA,eAAe,mBAsC1B","sourcesContent":["import {DefaultGoalIds} from '../../constants';\nimport {useLikes} from '../../hooks/useLikes';\nimport {PostCardSize, PostData, QAProps, ToggleLikeCallbackType} from '../../models/common';\nimport {block} from '../../utils/cn';\nimport {prepareAnalyticsEvent} from '../../utils/common';\n\nimport {Date} from './components/Date';\nimport {ReadingTime} from './components/ReadingTime';\nimport {Save} from './components/Save';\n\nimport './PostInfo.scss';\n\nconst b = block('post-info');\n\nconst saveEvents = prepareAnalyticsEvent({name: DefaultGoalIds.saveSuggest});\n\nexport interface SuggestPostInfoProps\n extends Pick<PostData, 'date' | 'readingTime' | 'hasUserLike'>,\n QAProps {\n postId: PostData['blogPostId'];\n size?: PostCardSize;\n likes?: {\n likesCount?: number;\n hasUserLike?: boolean;\n toggleLike?: ToggleLikeCallbackType;\n };\n dateId?: string;\n readingTimeId?: string;\n}\n\n/**\n * Suggest blog card info component\n *\n * @param postId - post id\n * @param date - post create date\n * @param readingTime - post reading time\n * @param hasUserLike - flag that the user liked the post\n * @param likes - likes count\n * @param qa - test-attr\n * @param size - text size\n * @param isModernIcon - flag what we need render 'bookmark' icon\n * @param dateId - id value for element with post date. Useful when providing accessible description\n * @param readingTimeId - id value for element with reading time. Useful when providing accessible description\n *\n * @returns jsx\n */\nexport const SuggestPostInfo = ({\n postId,\n date,\n readingTime,\n likes,\n size = PostCardSize.SMALL,\n qa,\n dateId,\n readingTimeId,\n}: SuggestPostInfoProps) => {\n const {hasUserLike, likesCount, handleLike} = useLikes({\n hasLike: likes?.hasUserLike,\n count: likes?.likesCount,\n toggleLikeCallback: likes?.toggleLike,\n postId: postId,\n });\n\n return (\n <div className={b('container')}>\n <div className={b('suggest-container')}>\n {date && <Date date={date} size={size} id={dateId} />}\n {readingTime && (\n <ReadingTime readingTime={readingTime} size={size} id={readingTimeId} />\n )}\n </div>\n {likes && postId && (\n <Save\n postId={postId}\n title={likesCount}\n analyticsEvents={saveEvents}\n hasUserLike={hasUserLike}\n handleUserLike={handleLike}\n size={size}\n qa={qa}\n />\n )}\n </div>\n );\n};\n"]}
|
@@ -2,8 +2,8 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.ReadingTime = void 0;
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
5
|
-
const uikit_1 = require("@gravity-ui/uikit");
|
6
5
|
const icons_1 = require("@gravity-ui/icons");
|
6
|
+
const uikit_1 = require("@gravity-ui/uikit");
|
7
7
|
const i18n_1 = require("../../../i18n/index.js");
|
8
8
|
const cn_1 = require("../../../utils/cn.js");
|
9
9
|
const b = (0, cn_1.block)('post-info');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ReadingTime.js","sourceRoot":"../../../../../src","sources":["components/PostInfo/components/ReadingTime.tsx"],"names":[],"mappings":";;;;AAAA,
|
1
|
+
{"version":3,"file":"ReadingTime.js","sourceRoot":"../../../../../src","sources":["components/PostInfo/components/ReadingTime.tsx"],"names":[],"mappings":";;;;AAAA,6CAAwC;AACxC,6CAAuC;AAEvC,iDAA2C;AAE3C,6CAAwC;AAIxC,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,WAAW,CAAC,CAAC;AAE7B,MAAM,SAAS,GAAG,EAAE,CAAC;AAQd,MAAM,WAAW,GAAG,CAAC,EAAC,WAAW,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAmB,EAAE,EAAE,CAAC,CAChF,iCAAK,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,IAAI,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,aAAW,EAAE,aAClD,iCAAM,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACtB,uBAAC,YAAI,IAAC,IAAI,EAAE,aAAK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,GAAI,GAC/D,EACN,IAAA,WAAI,EAAC,aAAM,CAAC,kBAAkB,EAAE,EAAC,KAAK,EAAE,WAAW,EAAC,CAAC,IACpD,CACT,CAAC;AAPW,QAAA,WAAW,eAOtB","sourcesContent":["import {Clock} from '@gravity-ui/icons';\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {Keyset, i18n} from '../../../i18n';\nimport {QAProps} from '../../../models/common';\nimport {block} from '../../../utils/cn';\n\nimport '../PostInfo.scss';\n\nconst b = block('post-info');\n\nconst ICON_SIZE = 16;\n\ntype ReadingTimeProps = QAProps & {\n readingTime: number;\n size?: 's' | 'm';\n id?: string;\n};\n\nexport const ReadingTime = ({readingTime, size = 's', id, qa}: ReadingTimeProps) => (\n <div className={b('item', {size})} id={id} data-qa={qa}>\n <span className={b('icon')}>\n <Icon data={Clock} size={ICON_SIZE} className={b('icon-color')} />\n </span>\n {i18n(Keyset.ContextReadingTime, {count: readingTime})}\n </div>\n);\n"]}
|
@@ -4,14 +4,14 @@ exports.Save = 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 LikesContext_1 = require("../../../contexts/LikesContext.js");
|
11
|
+
const i18n_1 = require("../../../i18n/index.js");
|
11
12
|
const common_1 = require("../../../models/common.js");
|
12
13
|
const cn_1 = require("../../../utils/cn.js");
|
13
14
|
const common_2 = require("../../../utils/common.js");
|
14
|
-
const i18n_1 = require("../../../i18n/index.js");
|
15
15
|
const ICON_SIZE = 16;
|
16
16
|
const b = (0, cn_1.block)('post-info');
|
17
17
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Save.js","sourceRoot":"../../../../../src","sources":["components/PostInfo/components/Save.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,mEAA+E;AAC/E,6CAAkD;
|
1
|
+
{"version":3,"file":"Save.js","sourceRoot":"../../../../../src","sources":["components/PostInfo/components/Save.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,6CAAyD;AACzD,mEAA+E;AAC/E,6CAAkD;AAElD,oEAA4D;AAC5D,iDAA2C;AAC3C,sDAAkE;AAClE,6CAAwC;AACxC,qDAAqD;AAIrD,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,WAAW,CAAC,CAAC;AAY7B;;;;;;;;;;;GAWG;AACI,MAAM,IAAI,GAAG,CAAC,EACjB,KAAK,EACL,MAAM,EACN,WAAW,EACX,cAAc,EACd,IAAI,EACJ,KAAK,EACL,EAAE,EACF,eAAe,GACP,EAAE,EAAE;IACZ,MAAM,EAAC,UAAU,EAAE,cAAc,EAAE,aAAa,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,2BAAY,CAAC,CAAC;IACnF,MAAM,eAAe,GAAG,IAAA,+BAAY,EAAC,0BAAiB,CAAC,UAAU,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvC,MAAM,cAAc,GAAG,IAAA,iBAAS,GAAE,CAAC;IACnC,MAAM,cAAc,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;IAEjD,OAAO,CACH,mCACI,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,EACxC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACf,6EAA6E;YAC7E,mHAAmH;YACnH,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,WAAW,CAAC,wBAAwB,EAAE,CAAC;YAE7C,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,OAAO;YACX,CAAC;YAED,8CAA8C;YAC9C,IAAI,CAAC,cAAc,IAAI,aAAa,EAAE,CAAC;gBACnC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,OAAO;YACX,CAAC;YAED,IAAA,uBAAc,EAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;YAC7C,cAAc,EAAE,CAAC;YACjB,eAAe,CAAC,eAAe,CAAC,CAAC;QACrC,CAAC,aACQ,EAAE,kBACG,WAAW,gBACb,cAAc,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,aAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,sBACxC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,YAE7D,iCAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAC,CAAC,aACrD,iCAAM,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACtB,uBAAC,YAAI,IACD,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,oBAAY,CAAC,CAAC,CAAC,gBAAQ,EAC3C,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAC,CAAC,GAC9C,GACC,EACP,iCAAM,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,EAAC,MAAM,EAAE,UAAU,EAAC,CAAC,YAChE,KAAK,GACH,IACL,GACD,CACZ,CAAC;AACN,CAAC,CAAC;AA3DW,QAAA,IAAI,QA2Df","sourcesContent":["import * as React from 'react';\n\nimport {Bookmark, BookmarkFill} from '@gravity-ui/icons';\nimport {AnalyticsEventsProp, useAnalytics} from '@gravity-ui/page-constructor';\nimport {Icon, useUniqId} from '@gravity-ui/uikit';\n\nimport {LikesContext} from '../../../contexts/LikesContext';\nimport {Keyset, i18n} from '../../../i18n';\nimport {DefaultEventNames, QAProps} from '../../../models/common';\nimport {block} from '../../../utils/cn';\nimport {postLikeStatus} from '../../../utils/common';\n\nimport '../PostInfo.scss';\n\nconst ICON_SIZE = 16;\n\nconst b = block('post-info');\n\ntype SaveProps = QAProps & {\n title: string | number;\n postId: number | string;\n hasUserLike: boolean;\n handleUserLike: () => void;\n theme?: 'light' | 'dark';\n size?: 's' | 'm';\n analyticsEvents?: AnalyticsEventsProp;\n};\n\n/**\n * Components for 'save' blog UI-component\n *\n * @param title - post title\n * @param postId - post id\n * @param hasUserLike - flag what blog has like from current user\n * @param qa - test-attr\n * @param size - text size\n * @param analyticsEvents - a single or collection of objects detailing analytics events\n *\n * @returns jsx\n */\nexport const Save = ({\n title,\n postId,\n hasUserLike,\n handleUserLike,\n size,\n theme,\n qa,\n analyticsEvents,\n}: SaveProps) => {\n const {toggleLike, isSignedInUser, requireSignIn} = React.useContext(LikesContext);\n const handleAnalytics = useAnalytics(DefaultEventNames.SaveButton);\n const isLikeable = Boolean(toggleLike);\n\n const titleElementId = useUniqId();\n const isNumericTitle = typeof title === 'number';\n\n return (\n <button\n className={b('item', {size, save: true})}\n onClick={(event) => {\n // both preventDefault and stopImmediatePropagation required to work properly\n // https://stackoverflow.com/questions/24415631/reactjs-syntheticevent-stoppropagation-only-works-with-react-events\n event.preventDefault();\n event.nativeEvent.stopImmediatePropagation();\n\n if (!isLikeable) {\n return;\n }\n\n // Open Popup to ask the User to sign in first\n if (!isSignedInUser && requireSignIn) {\n requireSignIn(event);\n return;\n }\n\n postLikeStatus(postId, Boolean(hasUserLike));\n handleUserLike();\n handleAnalytics(analyticsEvents);\n }}\n data-qa={qa}\n aria-pressed={hasUserLike}\n aria-label={isNumericTitle ? i18n(Keyset.Save) : undefined}\n aria-describedby={isNumericTitle ? titleElementId : undefined}\n >\n <div className={b('content', {cursor: isLikeable, theme})}>\n <span className={b('icon')}>\n <Icon\n data={hasUserLike ? BookmarkFill : Bookmark}\n size={ICON_SIZE}\n className={b({filled: Boolean(hasUserLike)})}\n />\n </span>\n <span id={titleElementId} className={b('title', {cursor: isLikeable})}>\n {title}\n </span>\n </div>\n </button>\n );\n};\n"]}
|
@@ -5,8 +5,8 @@ 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
7
|
const components_1 = require("@gravity-ui/components");
|
8
|
-
const page_constructor_1 = require("@gravity-ui/page-constructor");
|
9
8
|
const icons_1 = require("@gravity-ui/icons");
|
9
|
+
const page_constructor_1 = require("@gravity-ui/page-constructor");
|
10
10
|
const MobileContext_1 = require("../../../contexts/MobileContext.js");
|
11
11
|
const PostPageContext_1 = require("../../../contexts/PostPageContext.js");
|
12
12
|
const RouterContext_1 = require("../../../contexts/RouterContext.js");
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Sharing.js","sourceRoot":"../../../../../src","sources":["components/PostInfo/components/Sharing.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,uDAA0E;AAC1E,mEAA+E;
|
1
|
+
{"version":3,"file":"Sharing.js","sourceRoot":"../../../../../src","sources":["components/PostInfo/components/Sharing.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,uDAA0E;AAC1E,6CAAoD;AACpD,mEAA+E;AAE/E,sEAA8D;AAC9D,0EAAkE;AAClE,sEAA8D;AAC9D,iDAA2C;AAC3C,sDAAyD;AACzD,6CAAwC;AACxC,qDAAsD;AAItD,MAAM,CAAC,GAAG,IAAA,UAAK,EAAC,WAAW,CAAC,CAAC;AAOtB,MAAM,OAAO,GAAG,CAAC,EAAC,KAAK,EAAE,eAAe,EAAe,EAAE,EAAE;IAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,6BAAa,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,6BAAa,CAAC,CAAC;IACjD,MAAM,EAAC,YAAY,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAe,CAAC,CAAC;IACzD,MAAM,qBAAqB,GAAG,IAAA,+BAAY,EAAC,0BAAiB,CAAC,WAAW,CAAC,CAAC;IAE1E,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC3C,qBAAqB,CAAC,eAAe,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAE7C,OAAO,CACH,gCAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,gCAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,uBAAC,yBAAY,IACT,GAAG,EAAE,IAAA,wBAAe,EAAC,MAAM,CAAC,EAC5B,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EACrB,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,EAC1B,iBAAiB,EAAE,CAAC,CAAC,UAAU,EAAE,EAAC,KAAK,EAAC,CAAC,EACzC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,EAC5B,cAAc,EAAE,QAAQ,EACxB,SAAS,EAAE,iCAAoB,CAAC,MAAM,EACtC,WAAW,EAAE,IAAA,WAAI,EAAC,aAAM,CAAC,WAAW,CAAC,EACrC,UAAU,EAAE,yBAAiB,EAC7B,SAAS,EAAC,QAAQ,EAClB,WAAW,EAAE,KAAK,EAClB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,eAAe,GAC1B,GACA,GACJ,CACT,CAAC;AACN,CAAC,CAAC;AA/BW,QAAA,OAAO,WA+BlB","sourcesContent":["import * as React from 'react';\n\nimport {ShareLayoutDirection, SharePopover} from '@gravity-ui/components';\nimport {ArrowUpFromSquare} from '@gravity-ui/icons';\nimport {AnalyticsEventsProp, useAnalytics} from '@gravity-ui/page-constructor';\n\nimport {MobileContext} from '../../../contexts/MobileContext';\nimport {PostPageContext} from '../../../contexts/PostPageContext';\nimport {RouterContext} from '../../../contexts/RouterContext';\nimport {Keyset, i18n} from '../../../i18n';\nimport {DefaultEventNames} from '../../../models/common';\nimport {block} from '../../../utils/cn';\nimport {getAbsolutePath} from '../../../utils/common';\n\nimport '../PostInfo.scss';\n\nconst b = block('post-info');\n\ntype SharingProps = {\n theme?: 'light' | 'dark';\n analyticsEvents?: AnalyticsEventsProp;\n};\n\nexport const Sharing = ({theme, analyticsEvents}: SharingProps) => {\n const router = React.useContext(RouterContext);\n const isMobile = React.useContext(MobileContext);\n const {shareOptions} = React.useContext(PostPageContext);\n const handleAnalyticsGlobal = useAnalytics(DefaultEventNames.ShareButton);\n\n const handleAnalytics = React.useCallback(() => {\n handleAnalyticsGlobal(analyticsEvents);\n }, [analyticsEvents, handleAnalyticsGlobal]);\n\n return (\n <div className={b('item')}>\n <div className={b('icon')}>\n <SharePopover\n url={getAbsolutePath(router)}\n className={b('share')}\n iconClass={b('share-icon')}\n switcherClassName={b('switcher', {theme})}\n tooltipClassName={b('popup')}\n useWebShareApi={isMobile}\n direction={ShareLayoutDirection.Column}\n buttonTitle={i18n(Keyset.ActionShare)}\n customIcon={ArrowUpFromSquare}\n placement=\"bottom\"\n openByHover={false}\n shareOptions={shareOptions}\n onClick={handleAnalytics}\n />\n </div>\n </div>\n );\n};\n"]}
|
@@ -4,8 +4,8 @@ exports.Search = 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 debounce_1 = tslib_1.__importDefault(require("lodash/debounce.js"));
|
10
10
|
const useIsIPhone_1 = require("../../hooks/useIsIPhone.js");
|
11
11
|
const i18n_1 = require("../../i18n/index.js");
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Search.js","sourceRoot":"../../../../src","sources":["components/Search/Search.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,6CAAkD;AAClD,
|
1
|
+
{"version":3,"file":"Search.js","sourceRoot":"../../../../src","sources":["components/Search/Search.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport {Magnifier, Xmark} from '@gravity-ui/icons';\nimport {Icon, TextInput} from '@gravity-ui/uikit';\nimport lodashDebounce from 'lodash/debounce';\n\nimport {useIsIPhone} from '../../hooks/useIsIPhone';\nimport {Keyset, i18n} from '../../i18n';\nimport {ClassNameProps} from '../../models/common';\nimport {block} from '../../utils/cn';\n\nimport './Search.scss';\n\nconst b = block('search');\n\nexport type SearchSize = 's' | 'm';\n\ninterface SearchProps extends ClassNameProps {\n value?: string;\n initialValue: string;\n onSubmit: (value: string) => void;\n debounce?: number;\n placeholder?: string;\n size?: SearchSize;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst SEARCH_ICON_SIZE = 16;\nconst CLOSE_ICON_SIZE = 20;\nconst AUTOFOCUS_TIMEOUT = 0;\n\n/**\n * Search component, placed on blog main page,\n * based on TextInput from uikit\n *\n * @returns {JSX|null}\n */\nexport const Search = ({\n className,\n initialValue,\n onSubmit,\n debounce = 300,\n placeholder = i18n(Keyset.Search),\n size = 'm',\n autoFocus = false,\n value: externalValue,\n}: SearchProps) => {\n const handleChange = lodashDebounce(onSubmit, debounce);\n\n const [value, setValue] = React.useState<string>(initialValue);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const isIPhone = useIsIPhone();\n\n React.useEffect(() => {\n if (externalValue !== undefined) {\n setValue(externalValue);\n }\n }, [externalValue]);\n\n React.useEffect(() => {\n if (autoFocus && !isIPhone) {\n setTimeout(() => inputRef?.current?.focus({preventScroll: true}), AUTOFOCUS_TIMEOUT);\n }\n }, [autoFocus, inputRef, isIPhone]);\n\n const rightContent = React.useMemo(() => {\n const isClose = Boolean(value);\n const iconSize = value ? CLOSE_ICON_SIZE : SEARCH_ICON_SIZE;\n\n const handleClick = () => {\n if (value) {\n handleChange.cancel();\n setValue('');\n onSubmit('');\n inputRef.current?.focus();\n }\n };\n\n return (\n <button\n className={b('input-icon', {close: isClose})}\n onClick={handleClick}\n aria-label={value ? i18n(Keyset.ClearAction) : undefined}\n aria-hidden={!value}\n >\n <Icon size={iconSize} data={isClose ? Xmark : Magnifier} />\n </button>\n );\n }, [handleChange, onSubmit, value]);\n\n return (\n <div className={b({size}, className)}>\n <TextInput\n className={b('search-suggest')}\n value={value}\n onUpdate={(query) => {\n setValue(query);\n handleChange(query);\n }}\n placeholder={placeholder}\n size={size === 'm' ? 'xl' : 'l'}\n controlRef={inputRef}\n view=\"clear\"\n controlProps={{\n className: b('search-suggest-control'),\n }}\n endContent={rightContent}\n />\n </div>\n );\n};\n"]}
|
@@ -10,8 +10,8 @@ const PromptSignIn_1 = require("../../components/PromptSignIn/PromptSignIn.js");
|
|
10
10
|
const usePromptSignInProps_1 = require("../../components/PromptSignIn/hooks/usePromptSignInProps.js");
|
11
11
|
const FeedContext_1 = require("../../contexts/FeedContext.js");
|
12
12
|
const LikesContext_1 = require("../../contexts/LikesContext.js");
|
13
|
-
const useExtendedComponentMap_1 = require("../../hooks/useExtendedComponentMap.js");
|
14
13
|
const SettingsContext_1 = require("../../contexts/SettingsContext.js");
|
14
|
+
const useExtendedComponentMap_1 = require("../../hooks/useExtendedComponentMap.js");
|
15
15
|
const BlogPage = ({ content, posts, tags, services, getPosts, metaData, custom, hasLikes = false, toggleLike, navigation, settings, pageCountForShowSupportButtons, isSignedInUser = false, onClickSignIn, }) => {
|
16
16
|
const { isAnimationEnabled } = React.useContext(SettingsContext_1.SettingsContext);
|
17
17
|
const _a = (0, usePromptSignInProps_1.usePromptSignInProps)(onClickSignIn), { requireSignIn } = _a, promptSignInProps = tslib_1.__rest(_a, ["requireSignIn"]);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"BlogPage.js","sourceRoot":"../../../../src","sources":["containers/BlogPage/BlogPage.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,mEAOsC;AAEtC,6EAAqE;AACrE,gFAAwE;AACxE,sGAA8F;AAC9F,+DAAuD;AACvD,iEAAyD;AACzD,
|
1
|
+
{"version":3,"file":"BlogPage.js","sourceRoot":"../../../../src","sources":["containers/BlogPage/BlogPage.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAE/B,mEAOsC;AAEtC,6EAAqE;AACrE,gFAAwE;AACxE,sGAA8F;AAC9F,+DAAuD;AACvD,iEAAyD;AACzD,uEAA+D;AAC/D,oFAA4E;AA8BrE,MAAM,QAAQ,GAAG,CAAC,EACrB,OAAO,EACP,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,QAAQ,GAAG,KAAK,EAChB,UAAU,EACV,UAAU,EACV,QAAQ,EACR,8BAA8B,EAC9B,cAAc,GAAG,KAAK,EACtB,aAAa,GACD,EAAE,EAAE;IAChB,MAAM,EAAC,kBAAkB,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAe,CAAC,CAAC;IAC/D,MAAM,KAAwC,IAAA,2CAAoB,EAAC,aAAa,CAAC,EAA3E,EAAC,aAAa,OAA6D,EAAxD,iBAAiB,sBAApC,iBAAqC,CAAsC,CAAC;IAElF,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAClC,GAAG,EAAE,CAAC,CAAC,EAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAC,CAAC,EAC7D,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,CACxD,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,iDAAuB,EAAC,MAAM,CAAC,CAAC;IAE3D,OAAO,CACH,wBAAC,2BAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,gBAAgB,aAC1C,uBAAC,yBAAW,CAAC,QAAQ,IACjB,KAAK,EAAE;oBACH,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,UAAU,EAAE,KAAK,CAAC,KAAK;oBACvB,IAAI;oBACJ,QAAQ,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE;oBACxB,QAAQ;oBACR,8BAA8B;iBACjC,YAED,wBAAC,0CAAuB,oBAChB,QAAQ,IACZ,eAAe,kCAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,KAAI,EAAE,CAAC,KAAE,kBAAkB,gBAEzE,QAAQ,CAAC,CAAC,CAAC,uBAAC,yBAAW,oBAAK,QAAQ,EAAI,CAAC,CAAC,CAAC,IAAI,EAChD,uBAAC,kCAAe,IACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,kBAAkB,EAC1B,UAAU,EAAE,UAAU,GACxB,KACoB,GACP,EACvB,uBAAC,2BAAY,oBAAK,iBAAiB,EAAI,IACnB,CAC3B,CAAC;AACN,CAAC,CAAC;AAtDW,QAAA,QAAQ,YAsDnB","sourcesContent":["import * as React from 'react';\n\nimport {\n CustomConfig,\n NavigationData,\n PageConstructor,\n PageConstructorProvider,\n PageConstructorProviderProps,\n PageContent,\n} from '@gravity-ui/page-constructor';\n\nimport {MetaWrapper} from '../../components/MetaWrapper/MetaWrapper';\nimport {PromptSignIn} from '../../components/PromptSignIn/PromptSignIn';\nimport {usePromptSignInProps} from '../../components/PromptSignIn/hooks/usePromptSignInProps';\nimport {FeedContext} from '../../contexts/FeedContext';\nimport {LikesContext} from '../../contexts/LikesContext';\nimport {SettingsContext} from '../../contexts/SettingsContext';\nimport {useExtendedComponentMap} from '../../hooks/useExtendedComponentMap';\nimport {\n GetPostsType,\n MetaProps,\n PostsProps,\n Service,\n Tag,\n ToggleLikeCallbackType,\n} from '../../models/common';\n\nimport './BlogPage.scss';\n\nexport type BlogPageProps = {\n content: PageContent;\n posts: PostsProps;\n tags: Tag[];\n services?: Service[];\n navigation?: NavigationData;\n getPosts: GetPostsType;\n hasLikes?: boolean;\n toggleLike?: ToggleLikeCallbackType;\n metaData?: MetaProps;\n settings?: PageConstructorProviderProps;\n custom?: CustomConfig;\n pageCountForShowSupportButtons?: number;\n isSignedInUser?: boolean;\n // Required to enable Sign In on Post like\n onClickSignIn?: React.EventHandler<React.SyntheticEvent>;\n};\n\nexport const BlogPage = ({\n content,\n posts,\n tags,\n services,\n getPosts,\n metaData,\n custom,\n hasLikes = false,\n toggleLike,\n navigation,\n settings,\n pageCountForShowSupportButtons,\n isSignedInUser = false,\n onClickSignIn,\n}: BlogPageProps) => {\n const {isAnimationEnabled} = React.useContext(SettingsContext);\n const {requireSignIn, ...promptSignInProps} = usePromptSignInProps(onClickSignIn);\n\n const likesContextData = React.useMemo(\n () => ({toggleLike, hasLikes, isSignedInUser, requireSignIn}),\n [toggleLike, hasLikes, isSignedInUser, requireSignIn],\n );\n\n const actualComponentMap = useExtendedComponentMap(custom);\n\n return (\n <LikesContext.Provider value={likesContextData}>\n <FeedContext.Provider\n value={{\n posts: posts.posts,\n pinnedPost: posts.pinnedPost,\n totalCount: posts.count,\n tags,\n services: services ?? [],\n getPosts,\n pageCountForShowSupportButtons,\n }}\n >\n <PageConstructorProvider\n {...settings}\n projectSettings={{...(settings?.projectSettings || {}), isAnimationEnabled}}\n >\n {metaData ? <MetaWrapper {...metaData} /> : null}\n <PageConstructor\n content={content}\n custom={actualComponentMap}\n navigation={navigation}\n />\n </PageConstructorProvider>\n </FeedContext.Provider>\n <PromptSignIn {...promptSignInProps} />\n </LikesContext.Provider>\n );\n};\n"]}
|
@@ -10,9 +10,9 @@ const PromptSignIn_1 = require("../../components/PromptSignIn/PromptSignIn.js");
|
|
10
10
|
const usePromptSignInProps_1 = require("../../components/PromptSignIn/hooks/usePromptSignInProps.js");
|
11
11
|
const LikesContext_1 = require("../../contexts/LikesContext.js");
|
12
12
|
const PostPageContext_1 = require("../../contexts/PostPageContext.js");
|
13
|
+
const SettingsContext_1 = require("../../contexts/SettingsContext.js");
|
13
14
|
const useExtendedComponentMap_1 = require("../../hooks/useExtendedComponentMap.js");
|
14
15
|
const useLikes_1 = require("../../hooks/useLikes.js");
|
15
|
-
const SettingsContext_1 = require("../../contexts/SettingsContext.js");
|
16
16
|
const BlogPostPage = ({ metaData, suggestedPosts, likes, content, post, settings, microdata, navigation, custom, shareOptions, isSignedInUser = false, onClickSignIn, breadcrumbs, }) => {
|
17
17
|
const { isAnimationEnabled } = React.useContext(SettingsContext_1.SettingsContext);
|
18
18
|
const { hasUserLike, likesCount, handleLike } = (0, useLikes_1.useLikes)({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"BlogPostPage.js","sourceRoot":"../../../../src","sources":["containers/BlogPostPage/BlogPostPage.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAG/B,mEASsC;AAEtC,6EAAqE;AACrE,gFAAwE;AACxE,sGAA8F;AAC9F,iEAAyD;AACzD,uEAA+D;AAC/D,oFAA4E;AAC5E,sDAA8C;
|
1
|
+
{"version":3,"file":"BlogPostPage.js","sourceRoot":"../../../../src","sources":["containers/BlogPostPage/BlogPostPage.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;AAG/B,mEASsC;AAEtC,6EAAqE;AACrE,gFAAwE;AACxE,sGAA8F;AAC9F,iEAAyD;AACzD,uEAA+D;AAC/D,uEAA+D;AAC/D,oFAA4E;AAC5E,sDAA8C;AA0BvC,MAAM,YAAY,GAAG,CAAC,EACzB,QAAQ,EACR,cAAc,EACd,KAAK,EACL,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,YAAY,EACZ,cAAc,GAAG,KAAK,EACtB,aAAa,EACb,WAAW,GACK,EAAE,EAAE;IACpB,MAAM,EAAC,kBAAkB,EAAC,GAAG,KAAK,CAAC,UAAU,CAAC,iCAAe,CAAC,CAAC;IAC/D,MAAM,EAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAC,GAAG,IAAA,mBAAQ,EAAC;QACnD,OAAO,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW;QAC3B,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU;QACxB,kBAAkB,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU;QACrC,MAAM,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU;KAC3B,CAAC,CAAC;IAEH,MAAM,KAAwC,IAAA,2CAAoB,EAAC,aAAa,CAAC,EAA3E,EAAC,aAAa,OAA6D,EAAxD,iBAAiB,sBAApC,iBAAqC,CAAsC,CAAC;IAElF,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAClC,GAAG,EAAE,CAAC,CAAC;QACH,UAAU,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU;QAC7B,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC;QACxB,cAAc;QACd,aAAa;KAChB,CAAC,EACF,CAAC,KAAK,EAAE,cAAc,EAAE,aAAa,CAAC,CACzC,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,iDAAuB,EAAC,MAAM,CAAC,CAAC;IAE3D,OAAO,CACH,wBAAC,2BAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,gBAAgB,aAC1C,uBAAC,iCAAe,CAAC,QAAQ,IACrB,KAAK,EAAE;oBACH,IAAI;oBACJ,cAAc;oBACd,KAAK,EAAE,KAAK;wBACR,CAAC,CAAC;4BACI,cAAc,EAAE,UAAU;4BAC1B,WAAW;4BACX,UAAU;yBACb;wBACH,CAAC,CAAC,SAAS;oBACf,YAAY;oBACZ,WAAW;iBACd,YAED,wBAAC,0CAAuB,oBAChB,QAAQ,IACZ,eAAe,kCAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,KAAI,EAAE,CAAC,KAAE,kBAAkB,gBAEzE,QAAQ,CAAC,CAAC,CAAC,uBAAC,yBAAW,oBAAK,QAAQ,EAAI,CAAC,CAAC,CAAC,IAAI,EAChD,uBAAC,kCAAe,IACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,kBAAkB,EAC1B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,GACtB,KACoB,GACH,EAC3B,uBAAC,2BAAY,oBAAK,iBAAiB,EAAI,IACnB,CAC3B,CAAC;AACN,CAAC,CAAC;AAtEW,QAAA,YAAY,gBAsEvB","sourcesContent":["import * as React from 'react';\n\nimport {ShareOptions} from '@gravity-ui/components';\nimport {\n CustomConfig,\n HeaderBreadCrumbsProps,\n NavigationData,\n PageConstructor,\n PageConstructorProps,\n PageConstructorProvider,\n PageConstructorProviderProps,\n PageContent,\n} from '@gravity-ui/page-constructor';\n\nimport {MetaWrapper} from '../../components/MetaWrapper/MetaWrapper';\nimport {PromptSignIn} from '../../components/PromptSignIn/PromptSignIn';\nimport {usePromptSignInProps} from '../../components/PromptSignIn/hooks/usePromptSignInProps';\nimport {LikesContext} from '../../contexts/LikesContext';\nimport {PostPageContext} from '../../contexts/PostPageContext';\nimport {SettingsContext} from '../../contexts/SettingsContext';\nimport {useExtendedComponentMap} from '../../hooks/useExtendedComponentMap';\nimport {useLikes} from '../../hooks/useLikes';\nimport {MetaProps, PostData, ToggleLikeCallbackType} from '../../models/common';\n\nimport './BlogPostPage.scss';\n\nexport interface BlogPostPageProps {\n suggestedPosts: PostData[];\n metaData?: MetaProps;\n likes?: {\n hasUserLike?: boolean;\n likesCount?: number;\n toggleLike?: ToggleLikeCallbackType;\n };\n content: PageContent;\n post: PostData;\n settings?: PageConstructorProviderProps;\n navigation?: NavigationData;\n microdata?: PageConstructorProps['microdata'];\n custom?: CustomConfig;\n shareOptions?: ShareOptions[];\n isSignedInUser?: boolean;\n // Required to enable Sign In on Post like\n onClickSignIn?: React.EventHandler<React.SyntheticEvent>;\n breadcrumbs?: HeaderBreadCrumbsProps;\n}\n\nexport const BlogPostPage = ({\n metaData,\n suggestedPosts,\n likes,\n content,\n post,\n settings,\n microdata,\n navigation,\n custom,\n shareOptions,\n isSignedInUser = false,\n onClickSignIn,\n breadcrumbs,\n}: BlogPostPageProps) => {\n const {isAnimationEnabled} = React.useContext(SettingsContext);\n const {hasUserLike, likesCount, handleLike} = useLikes({\n hasLike: likes?.hasUserLike,\n count: likes?.likesCount,\n toggleLikeCallback: likes?.toggleLike,\n postId: post?.blogPostId,\n });\n\n const {requireSignIn, ...promptSignInProps} = usePromptSignInProps(onClickSignIn);\n\n const likesContextData = React.useMemo(\n () => ({\n toggleLike: likes?.toggleLike,\n hasLikes: Boolean(likes),\n isSignedInUser,\n requireSignIn,\n }),\n [likes, isSignedInUser, requireSignIn],\n );\n\n const actualComponentMap = useExtendedComponentMap(custom);\n\n return (\n <LikesContext.Provider value={likesContextData}>\n <PostPageContext.Provider\n value={{\n post,\n suggestedPosts,\n likes: likes\n ? {\n handleUserLike: handleLike,\n hasUserLike,\n likesCount,\n }\n : undefined,\n shareOptions,\n breadcrumbs,\n }}\n >\n <PageConstructorProvider\n {...settings}\n projectSettings={{...(settings?.projectSettings || {}), isAnimationEnabled}}\n >\n {metaData ? <MetaWrapper {...metaData} /> : null}\n <PageConstructor\n content={content}\n custom={actualComponentMap}\n navigation={navigation}\n microdata={microdata}\n />\n </PageConstructorProvider>\n </PostPageContext.Provider>\n <PromptSignIn {...promptSignInProps} />\n </LikesContext.Provider>\n );\n};\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LocaleContext.js","sourceRoot":"../../../src","sources":["contexts/LocaleContext.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;
|
1
|
+
{"version":3,"file":"LocaleContext.js","sourceRoot":"../../../src","sources":["contexts/LocaleContext.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAE/B,6CAAuC;AAQ1B,QAAA,aAAa,GAAG,KAAK,CAAC,aAAa,CAAqB;IACjE,MAAM,EAAE;QACJ,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,YAAI,CAAC,EAAE;QACb,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,IAAI;KACnB;CACJ,CAAC,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {Lang} from '@gravity-ui/uikit';\n\nimport {Locale} from '../models/locale';\n\nexport type LocaleContextProps = {\n locale: Locale;\n};\n\nexport const LocaleContext = React.createContext<LocaleContextProps>({\n locale: {\n code: 'en-En',\n lang: Lang.En,\n langName: 'English',\n pathPrefix: 'en',\n },\n});\n"]}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import * as React from 'react';
|
2
2
|
import { ShareOptions } from '@gravity-ui/components';
|
3
|
-
import { PostData } from "../models/common.js";
|
4
3
|
import { HeaderBreadCrumbsProps } from '@gravity-ui/page-constructor';
|
4
|
+
import { PostData } from "../models/common.js";
|
5
5
|
export type LikesRoutineType = {
|
6
6
|
handleUserLike: () => void;
|
7
7
|
hasUserLike: boolean;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"PostPageContext.js","sourceRoot":"../../../src","sources":["contexts/PostPageContext.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAqBlB,QAAA,eAAe,GAAG,KAAK,CAAC,aAAa,CAC9C,EAA0B,CAC7B,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {ShareOptions} from '@gravity-ui/components';\
|
1
|
+
{"version":3,"file":"PostPageContext.js","sourceRoot":"../../../src","sources":["contexts/PostPageContext.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAqBlB,QAAA,eAAe,GAAG,KAAK,CAAC,aAAa,CAC9C,EAA0B,CAC7B,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {ShareOptions} from '@gravity-ui/components';\nimport {HeaderBreadCrumbsProps} from '@gravity-ui/page-constructor';\n\nimport {PostData} from '../models/common';\n\nexport type LikesRoutineType = {\n handleUserLike: () => void;\n hasUserLike: boolean;\n likesCount: number;\n};\n\nexport interface PostPageContextProps {\n post: PostData;\n suggestedPosts: PostData[];\n likes?: LikesRoutineType;\n shareOptions?: ShareOptions[];\n breadcrumbs?: HeaderBreadCrumbsProps;\n}\n\nexport const PostPageContext = React.createContext<PostPageContextProps>(\n {} as PostPageContextProps,\n);\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SettingsContext.js","sourceRoot":"../../../src","sources":["contexts/SettingsContext.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;
|
1
|
+
{"version":3,"file":"SettingsContext.js","sourceRoot":"../../../src","sources":["contexts/SettingsContext.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAYlB,QAAA,eAAe,GAAG,KAAK,CAAC,aAAa,CAAuB,EAAE,CAAC,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {CustomInfoItemComponent} from '../components/PostInfo/PostInfo';\n\nexport interface SettingsContextProps {\n addNavigationLinkForPages?: boolean;\n isAnimationEnabled?: boolean;\n\n getBlogPath?: (pathPrefix: string) => string;\n extraInfoItems?: CustomInfoItemComponent[];\n}\n\nexport const SettingsContext = React.createContext<SettingsContextProps>({});\n"]}
|
@@ -21,7 +21,10 @@ export type ColoredTextProps = ContentBlockProps & QAProps & {
|
|
21
21
|
export type CTAProps = QAProps & {
|
22
22
|
items: Array<ContentBlockProps>;
|
23
23
|
} & PaddingsYFMProps;
|
24
|
-
|
24
|
+
type HeaderBlogProps = {
|
25
|
+
imageInGrid?: boolean;
|
26
|
+
};
|
27
|
+
export type HeaderProps = HeaderBlockProps & PaddingsYFMProps & HeaderBlogProps;
|
25
28
|
export type LayoutProps = {
|
26
29
|
fullWidth?: boolean;
|
27
30
|
mobileOrder?: string;
|
@@ -87,3 +90,4 @@ export type BlockModel = AuthorBlockModel | BannerBlockModel | ColoredTextBlockM
|
|
87
90
|
export type Block = BlockModel & {
|
88
91
|
[x: string]: any;
|
89
92
|
};
|
93
|
+
export {};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"blocks.js","sourceRoot":"../../../src","sources":["models/blocks.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\n\nimport {\n ContentBlockProps,\n FormBlockData,\n HeaderBlockProps,\n MediaProps as PCMediaProps,\n TextTheme,\n} from '@gravity-ui/page-constructor';\n\nimport {BlockType, ClassNameProps, PostData, QAProps} from './common';\nimport {PaddingsYFMProps} from './paddings';\n\n// blocks props\nexport type AuthorProps = ClassNameProps & {\n authorId: number | string;\n image: string;\n} & PaddingsYFMProps &\n QAProps;\n\nexport type BannerProps = ContentBlockProps &\n QAProps & {\n color?: string;\n image?: string;\n imageSize?: 's' | 'm';\n } & PaddingsYFMProps;\n\nexport type ColoredTextProps = ContentBlockProps &\n QAProps & {\n background?: {\n color?: string;\n image?: string;\n altText?: string;\n };\n } & PaddingsYFMProps;\n\nexport type CTAProps = QAProps & {\n items: Array<ContentBlockProps>;\n} & PaddingsYFMProps;\n\nexport type HeaderProps = HeaderBlockProps & PaddingsYFMProps;\n\nexport type LayoutProps = {\n fullWidth?: boolean;\n mobileOrder?: string;\n children: React.ReactElement[];\n} & PaddingsYFMProps;\n\nexport type MediaProps = ClassNameProps &\n PaddingsYFMProps &\n Partial<\n Pick<\n PCMediaProps,\n | 'youtube'\n | 'previewImg'\n | 'image'\n | 'video'\n | 'dataLens'\n | 'videoIframe'\n | 'videoMicrodata'\n >\n > & {\n text?: string;\n };\n\nexport type MetaProps = QAProps & {\n locale: string;\n theme?: TextTheme;\n} & PaddingsYFMProps;\n\nexport type SuggestProps = ClassNameProps & {\n posts: PostData[];\n} & PaddingsYFMProps;\n\nexport type YFMProps = {\n text: string;\n} & PaddingsYFMProps &\n QAProps;\n\nexport type FeedProps = {\n image: string;\n};\n\nexport type FormProps = {\n formData: FormBlockData;\n border?: 'shadow' | 'line' | 'none';\n} & PaddingsYFMProps &\n QAProps;\n\n// blocks models\nexport type AuthorBlockModel = {\n type: BlockType.Author;\n} & AuthorProps;\n\nexport type BannerBlockModel = {\n type: BlockType.Banner;\n} & BannerProps;\n\nexport type ColoredTextBlockModel = {\n type: BlockType.ColoredText;\n} & ColoredTextProps;\n\nexport type CTABlockModel = {\n type: BlockType.CTA;\n} & CTAProps;\n\nexport type HeaderBlockModel = {\n type: BlockType.Header;\n} & HeaderProps;\n\nexport type LayoutBlockModel = {\n type: BlockType.Layout;\n} & LayoutProps;\n\nexport type MediaBlockModel = {\n type: BlockType.Media;\n} & MediaProps;\n\nexport type MetaBlockModel = {\n type: BlockType.Meta;\n} & MetaProps;\n\nexport type SuggestBlockModel = {\n type: BlockType.Suggest;\n} & SuggestProps;\n\nexport type YFMBlockModel = {\n type: BlockType.YFM;\n} & YFMProps;\n\nexport type FeedBlockModel = {\n type: BlockType.Feed;\n} & FeedProps;\n\nexport type FormBlockModel = {\n type: BlockType.Form;\n} & FormProps;\n\nexport type BlockModel =\n | AuthorBlockModel\n | BannerBlockModel\n | ColoredTextBlockModel\n | CTABlockModel\n | HeaderBlockModel\n | LayoutBlockModel\n | MediaBlockModel\n | MetaBlockModel\n | SuggestBlockModel\n | YFMBlockModel\n | FeedBlockModel;\n\nexport type Block = BlockModel & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [x: string]: any;\n};\n"]}
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"../../../src","sources":["models/blocks.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\n\nimport {\n ContentBlockProps,\n FormBlockData,\n HeaderBlockProps,\n MediaProps as PCMediaProps,\n TextTheme,\n} from '@gravity-ui/page-constructor';\n\nimport {BlockType, ClassNameProps, PostData, QAProps} from './common';\nimport {PaddingsYFMProps} from './paddings';\n\n// blocks props\nexport type AuthorProps = ClassNameProps & {\n authorId: number | string;\n image: string;\n} & PaddingsYFMProps &\n QAProps;\n\nexport type BannerProps = ContentBlockProps &\n QAProps & {\n color?: string;\n image?: string;\n imageSize?: 's' | 'm';\n } & PaddingsYFMProps;\n\nexport type ColoredTextProps = ContentBlockProps &\n QAProps & {\n background?: {\n color?: string;\n image?: string;\n altText?: string;\n };\n } & PaddingsYFMProps;\n\nexport type CTAProps = QAProps & {\n items: Array<ContentBlockProps>;\n} & PaddingsYFMProps;\n\ntype HeaderBlogProps = {\n imageInGrid?: boolean;\n};\n\nexport type HeaderProps = HeaderBlockProps & PaddingsYFMProps & HeaderBlogProps;\n\nexport type LayoutProps = {\n fullWidth?: boolean;\n mobileOrder?: string;\n children: React.ReactElement[];\n} & PaddingsYFMProps;\n\nexport type MediaProps = ClassNameProps &\n PaddingsYFMProps &\n Partial<\n Pick<\n PCMediaProps,\n | 'youtube'\n | 'previewImg'\n | 'image'\n | 'video'\n | 'dataLens'\n | 'videoIframe'\n | 'videoMicrodata'\n >\n > & {\n text?: string;\n };\n\nexport type MetaProps = QAProps & {\n locale: string;\n theme?: TextTheme;\n} & PaddingsYFMProps;\n\nexport type SuggestProps = ClassNameProps & {\n posts: PostData[];\n} & PaddingsYFMProps;\n\nexport type YFMProps = {\n text: string;\n} & PaddingsYFMProps &\n QAProps;\n\nexport type FeedProps = {\n image: string;\n};\n\nexport type FormProps = {\n formData: FormBlockData;\n border?: 'shadow' | 'line' | 'none';\n} & PaddingsYFMProps &\n QAProps;\n\n// blocks models\nexport type AuthorBlockModel = {\n type: BlockType.Author;\n} & AuthorProps;\n\nexport type BannerBlockModel = {\n type: BlockType.Banner;\n} & BannerProps;\n\nexport type ColoredTextBlockModel = {\n type: BlockType.ColoredText;\n} & ColoredTextProps;\n\nexport type CTABlockModel = {\n type: BlockType.CTA;\n} & CTAProps;\n\nexport type HeaderBlockModel = {\n type: BlockType.Header;\n} & HeaderProps;\n\nexport type LayoutBlockModel = {\n type: BlockType.Layout;\n} & LayoutProps;\n\nexport type MediaBlockModel = {\n type: BlockType.Media;\n} & MediaProps;\n\nexport type MetaBlockModel = {\n type: BlockType.Meta;\n} & MetaProps;\n\nexport type SuggestBlockModel = {\n type: BlockType.Suggest;\n} & SuggestProps;\n\nexport type YFMBlockModel = {\n type: BlockType.YFM;\n} & YFMProps;\n\nexport type FeedBlockModel = {\n type: BlockType.Feed;\n} & FeedProps;\n\nexport type FormBlockModel = {\n type: BlockType.Form;\n} & FormProps;\n\nexport type BlockModel =\n | AuthorBlockModel\n | BannerBlockModel\n | ColoredTextBlockModel\n | CTABlockModel\n | HeaderBlockModel\n | LayoutBlockModel\n | MediaBlockModel\n | MetaBlockModel\n | SuggestBlockModel\n | YFMBlockModel\n | FeedBlockModel;\n\nexport type Block = BlockModel & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [x: string]: any;\n};\n"]}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { AnalyticsEvent, AnalyticsEventsProp, ContentBlockProps, HeaderBreadCrumbsProps } from '@gravity-ui/page-constructor';
|
2
2
|
import { RouterContextProps } from "../contexts/RouterContext.js";
|
3
|
-
import { GetPostsRequest, Query, Tag } from "../models/common.js";
|
4
3
|
import { AnalyticsCounter } from "../counters/utils.js";
|
4
|
+
import { GetPostsRequest, Query, Tag } from "../models/common.js";
|
5
5
|
export interface QueryParam {
|
6
6
|
name: string;
|
7
7
|
value?: string | number | null;
|
@@ -10,8 +10,8 @@ const debounce_1 = tslib_1.__importDefault(require("lodash/debounce.js"));
|
|
10
10
|
const flatten_1 = tslib_1.__importDefault(require("lodash/flatten.js"));
|
11
11
|
const memoize_1 = tslib_1.__importDefault(require("lodash/memoize.js"));
|
12
12
|
const constants_1 = require("../blocks/constants.js");
|
13
|
-
const i18n_1 = require("../i18n/index.js");
|
14
13
|
const utils_1 = require("../counters/utils.js");
|
14
|
+
const i18n_1 = require("../i18n/index.js");
|
15
15
|
const QA_ATTRIBUTES_KEYS = ['container', 'content', 'wrapper', 'image', 'button'];
|
16
16
|
function getAbsolutePath(router, url) {
|
17
17
|
if (!router || !router.pathname) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"../../../src","sources":["utils/common.ts"],"names":[],"mappings":"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","sourcesContent":["import {format, parse} from 'url';\n\nimport {\n AnalyticsEvent,\n AnalyticsEventsProp,\n ContentBlockProps,\n HeaderBreadCrumbsProps,\n} from '@gravity-ui/page-constructor';\nimport camelCase from 'lodash/camelCase';\nimport debounce from 'lodash/debounce';\nimport flatten from 'lodash/flatten';\nimport memoize from 'lodash/memoize';\n\nimport {\n CONTENT_DEFAULT_COL_SIZES,\n CONTENT_DEFAULT_SIZE,\n CONTENT_DEFAULT_THEME,\n DEFAULT_PAGE,\n DEFAULT_ROWS_PER_PAGE,\n} from '../blocks/constants';\nimport {RouterContextProps} from '../contexts/RouterContext';\nimport {Keyset, i18n} from '../i18n';\nimport {GetPostsRequest, Query, Tag} from '../models/common';\nimport {AnalyticsCounter} from '../counters/utils';\n\nconst QA_ATTRIBUTES_KEYS = ['container', 'content', 'wrapper', 'image', 'button'];\n\nexport interface QueryParam {\n name: string;\n value?: string | number | null;\n}\n\nexport interface RouterActionOptions {\n shallow?: boolean;\n}\n\nexport function getAbsolutePath(router: RouterContextProps, url?: string) {\n if (!router || !router.pathname) {\n return url ?? '';\n }\n\n const parsed = parse(url || router.as || '');\n\n return format({\n ...parsed,\n protocol: parsed.protocol || 'https',\n hostname: parsed.hostname || router.hostname,\n pathname: parsed.pathname || router.pathname,\n });\n}\n\nexport const getPageSearchParams = (query: Query = {}) => {\n const searchParams = new URLSearchParams();\n\n Object.entries(query).forEach(([key, value]) => {\n searchParams.set(key, String(value));\n });\n\n return searchParams;\n};\n\nexport const scrollToHash = (hash: string, browser?: string) => {\n if (!hash) {\n return;\n }\n\n const element = document.getElementById(hash);\n\n if (!element) {\n return;\n }\n\n setTimeout(\n () => element.scrollIntoView({behavior: browser === 'Yandex' ? 'auto' : 'smooth'}),\n 0,\n );\n};\n\ntype CloudListTagStub = {};\n\nexport const getTags = memoize((tags: Tag[], blogPath: string) => {\n return tags.map(({slug, ...tag}) => {\n const queryParams = new URLSearchParams();\n queryParams.set('tags', slug);\n\n return {\n ...tag,\n id: slug,\n url: `${blogPath}?${queryParams}`,\n } as CloudListTagStub;\n });\n});\n\nconst stub = (postId: number | string) => postId;\n\nexport const postLikeStatus = debounce((postId: number | string, hasUserLike: boolean) => {\n (hasUserLike ? stub : stub)(postId);\n}, 300);\n\nexport const updateContentSizes = ({size, colSizes, theme, ...contentData}: ContentBlockProps) => ({\n ...contentData,\n size: size || CONTENT_DEFAULT_SIZE,\n colSizes: colSizes || CONTENT_DEFAULT_COL_SIZES,\n theme: theme || CONTENT_DEFAULT_THEME,\n});\n\ntype GetBreadcrumbsProps = {\n tags?: Tag[];\n blogPath: string;\n};\n\nexport const getBlogPath = (pathPrefix: string) => {\n const prefix = pathPrefix ? `/${pathPrefix}` : '';\n return `${prefix}/blog`;\n};\n\nexport function getBreadcrumbs({tags, blogPath}: GetBreadcrumbsProps) {\n const breadcrumbs: HeaderBreadCrumbsProps = {\n items: [{text: i18n(Keyset.TitleBreadcrumbs), url: blogPath}],\n theme: 'light',\n };\n\n if (tags?.length) {\n const localizedTags = getTags(tags, blogPath);\n const tag = localizedTags[0];\n // @ts-ignore todo fix\n breadcrumbs.items.push({text: tag.name, url: tag.url});\n }\n\n return breadcrumbs;\n}\n\nconst getArrayOfEvents = (events?: AnalyticsEventsProp) => {\n if (!events) {\n return [];\n }\n\n if (Array.isArray(events)) {\n return events;\n }\n\n return [events];\n};\n\nexport const getMergedAnalyticsEvents = (\n analyticEvents: AnalyticsEventsProp,\n existringEvents?: AnalyticsEventsProp,\n) => {\n const eventsAsArray = getArrayOfEvents(analyticEvents);\n const existingAsArray = getArrayOfEvents(existringEvents);\n\n return eventsAsArray.concat(existingAsArray);\n};\n\nexport const getFeedQueryParams = (queryString: Query, pageNumber?: number): GetPostsRequest => {\n const queryParams = getPageSearchParams(queryString);\n const tags = queryParams.get('tags') || undefined;\n const page = pageNumber || Number(queryParams.get('page') || DEFAULT_PAGE);\n const perPage = Number(queryParams.get('perPage') || DEFAULT_ROWS_PER_PAGE);\n const savedOnly = queryParams.get('savedOnly') === 'true';\n const search = queryParams.get('search') || undefined;\n const serviceIds = queryParams.get('services') || undefined;\n\n return {tags, page, perPage, savedOnly, search, services: serviceIds};\n};\n\nexport const scrollOnPageChange = (containerId: string) => {\n const cardsContainerEl = document.getElementById(containerId);\n const y = cardsContainerEl?.getBoundingClientRect()?.y || 0;\n\n if (y < 0) {\n scrollToHash(containerId);\n }\n};\n\nexport const getQaAttributes = (qa?: string, ...customKeys: (string | Array<string>)[]) => {\n const attributes: Record<string, string> = {};\n\n if (qa) {\n const keys = QA_ATTRIBUTES_KEYS.concat(flatten(customKeys));\n\n keys.forEach((key) => {\n attributes[camelCase(key)] = `${qa}-${key}`;\n });\n\n attributes.default = qa;\n }\n\n return attributes;\n};\n\ntype PrepareAnalyticsEventArgs = {\n name: string;\n counter?: AnalyticsCounter;\n options?: Record<string, string | number>;\n};\n\nexport const prepareAnalyticsEvent = ({\n name,\n counter = AnalyticsCounter.Main,\n options = {},\n}: PrepareAnalyticsEventArgs): AnalyticsEvent => ({\n ...options,\n name,\n counters: {\n include: [counter],\n },\n});\n"]}
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"../../../src","sources":["utils/common.ts"],"names":[],"mappings":"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","sourcesContent":["import {format, parse} from 'url';\n\nimport {\n AnalyticsEvent,\n AnalyticsEventsProp,\n ContentBlockProps,\n HeaderBreadCrumbsProps,\n} from '@gravity-ui/page-constructor';\nimport camelCase from 'lodash/camelCase';\nimport debounce from 'lodash/debounce';\nimport flatten from 'lodash/flatten';\nimport memoize from 'lodash/memoize';\n\nimport {\n CONTENT_DEFAULT_COL_SIZES,\n CONTENT_DEFAULT_SIZE,\n CONTENT_DEFAULT_THEME,\n DEFAULT_PAGE,\n DEFAULT_ROWS_PER_PAGE,\n} from '../blocks/constants';\nimport {RouterContextProps} from '../contexts/RouterContext';\nimport {AnalyticsCounter} from '../counters/utils';\nimport {Keyset, i18n} from '../i18n';\nimport {GetPostsRequest, Query, Tag} from '../models/common';\n\nconst QA_ATTRIBUTES_KEYS = ['container', 'content', 'wrapper', 'image', 'button'];\n\nexport interface QueryParam {\n name: string;\n value?: string | number | null;\n}\n\nexport interface RouterActionOptions {\n shallow?: boolean;\n}\n\nexport function getAbsolutePath(router: RouterContextProps, url?: string) {\n if (!router || !router.pathname) {\n return url ?? '';\n }\n\n const parsed = parse(url || router.as || '');\n\n return format({\n ...parsed,\n protocol: parsed.protocol || 'https',\n hostname: parsed.hostname || router.hostname,\n pathname: parsed.pathname || router.pathname,\n });\n}\n\nexport const getPageSearchParams = (query: Query = {}) => {\n const searchParams = new URLSearchParams();\n\n Object.entries(query).forEach(([key, value]) => {\n searchParams.set(key, String(value));\n });\n\n return searchParams;\n};\n\nexport const scrollToHash = (hash: string, browser?: string) => {\n if (!hash) {\n return;\n }\n\n const element = document.getElementById(hash);\n\n if (!element) {\n return;\n }\n\n setTimeout(\n () => element.scrollIntoView({behavior: browser === 'Yandex' ? 'auto' : 'smooth'}),\n 0,\n );\n};\n\ntype CloudListTagStub = {};\n\nexport const getTags = memoize((tags: Tag[], blogPath: string) => {\n return tags.map(({slug, ...tag}) => {\n const queryParams = new URLSearchParams();\n queryParams.set('tags', slug);\n\n return {\n ...tag,\n id: slug,\n url: `${blogPath}?${queryParams}`,\n } as CloudListTagStub;\n });\n});\n\nconst stub = (postId: number | string) => postId;\n\nexport const postLikeStatus = debounce((postId: number | string, hasUserLike: boolean) => {\n (hasUserLike ? stub : stub)(postId);\n}, 300);\n\nexport const updateContentSizes = ({size, colSizes, theme, ...contentData}: ContentBlockProps) => ({\n ...contentData,\n size: size || CONTENT_DEFAULT_SIZE,\n colSizes: colSizes || CONTENT_DEFAULT_COL_SIZES,\n theme: theme || CONTENT_DEFAULT_THEME,\n});\n\ntype GetBreadcrumbsProps = {\n tags?: Tag[];\n blogPath: string;\n};\n\nexport const getBlogPath = (pathPrefix: string) => {\n const prefix = pathPrefix ? `/${pathPrefix}` : '';\n return `${prefix}/blog`;\n};\n\nexport function getBreadcrumbs({tags, blogPath}: GetBreadcrumbsProps) {\n const breadcrumbs: HeaderBreadCrumbsProps = {\n items: [{text: i18n(Keyset.TitleBreadcrumbs), url: blogPath}],\n theme: 'light',\n };\n\n if (tags?.length) {\n const localizedTags = getTags(tags, blogPath);\n const tag = localizedTags[0];\n // @ts-ignore todo fix\n breadcrumbs.items.push({text: tag.name, url: tag.url});\n }\n\n return breadcrumbs;\n}\n\nconst getArrayOfEvents = (events?: AnalyticsEventsProp) => {\n if (!events) {\n return [];\n }\n\n if (Array.isArray(events)) {\n return events;\n }\n\n return [events];\n};\n\nexport const getMergedAnalyticsEvents = (\n analyticEvents: AnalyticsEventsProp,\n existringEvents?: AnalyticsEventsProp,\n) => {\n const eventsAsArray = getArrayOfEvents(analyticEvents);\n const existingAsArray = getArrayOfEvents(existringEvents);\n\n return eventsAsArray.concat(existingAsArray);\n};\n\nexport const getFeedQueryParams = (queryString: Query, pageNumber?: number): GetPostsRequest => {\n const queryParams = getPageSearchParams(queryString);\n const tags = queryParams.get('tags') || undefined;\n const page = pageNumber || Number(queryParams.get('page') || DEFAULT_PAGE);\n const perPage = Number(queryParams.get('perPage') || DEFAULT_ROWS_PER_PAGE);\n const savedOnly = queryParams.get('savedOnly') === 'true';\n const search = queryParams.get('search') || undefined;\n const serviceIds = queryParams.get('services') || undefined;\n\n return {tags, page, perPage, savedOnly, search, services: serviceIds};\n};\n\nexport const scrollOnPageChange = (containerId: string) => {\n const cardsContainerEl = document.getElementById(containerId);\n const y = cardsContainerEl?.getBoundingClientRect()?.y || 0;\n\n if (y < 0) {\n scrollToHash(containerId);\n }\n};\n\nexport const getQaAttributes = (qa?: string, ...customKeys: (string | Array<string>)[]) => {\n const attributes: Record<string, string> = {};\n\n if (qa) {\n const keys = QA_ATTRIBUTES_KEYS.concat(flatten(customKeys));\n\n keys.forEach((key) => {\n attributes[camelCase(key)] = `${qa}-${key}`;\n });\n\n attributes.default = qa;\n }\n\n return attributes;\n};\n\ntype PrepareAnalyticsEventArgs = {\n name: string;\n counter?: AnalyticsCounter;\n options?: Record<string, string | number>;\n};\n\nexport const prepareAnalyticsEvent = ({\n name,\n counter = AnalyticsCounter.Main,\n options = {},\n}: PrepareAnalyticsEventArgs): AnalyticsEvent => ({\n ...options,\n name,\n counters: {\n include: [counter],\n },\n});\n"]}
|
@@ -2,11 +2,11 @@ import { __rest } from "tslib";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
3
3
|
import { Content, Image } from '@gravity-ui/page-constructor';
|
4
4
|
import { Wrapper } from "../../components/Wrapper/Wrapper.js";
|
5
|
+
import { DefaultGoalIds } from "../../constants.js";
|
6
|
+
import { AnalyticsCounter } from "../../counters/utils.js";
|
5
7
|
import { PaddingsDirections } from "../../models/paddings.js";
|
6
8
|
import { block } from "../../utils/cn.js";
|
7
9
|
import { getMergedAnalyticsEvents, getQaAttributes, prepareAnalyticsEvent, updateContentSizes, } from "../../utils/common.js";
|
8
|
-
import { DefaultGoalIds } from "../../constants.js";
|
9
|
-
import { AnalyticsCounter } from "../../counters/utils.js";
|
10
10
|
import './Banner.css';
|
11
11
|
const b = block('banner');
|
12
12
|
const BANNER_CUSTOM_QA_ATTRIBUTES = ['image-container'];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Banner.js","sourceRoot":"../../../../src","sources":["blocks/Banner/Banner.tsx"],"names":[],"mappings":";;AAAA,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAC,OAAO,EAAC,4CAAyC;
|
1
|
+
{"version":3,"file":"Banner.js","sourceRoot":"../../../../src","sources":["blocks/Banner/Banner.tsx"],"names":[],"mappings":";;AAAA,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAC,OAAO,EAAC,4CAAyC;AACzD,OAAO,EAAC,cAAc,EAAC,2BAAwB;AAC/C,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAEtD,OAAO,EAAC,kBAAkB,EAAC,iCAA8B;AACzD,OAAO,EAAC,KAAK,EAAC,0BAAuB;AACrC,OAAO,EACH,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,GACrB,8BAA2B;AAE5B,OAAO,cAAc,CAAC;AAEtB,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAE1B,MAAM,2BAA2B,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAExD,MAAM,WAAW,GAAG,qBAAqB,CAAC;IACtC,IAAI,EAAE,cAAc,CAAC,YAAY;IACjC,OAAO,EAAE,gBAAgB,CAAC,SAAS;CACtC,CAAC,CAAC;AAEH,MAAM,CAAC,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,cAPS,oEAQtB,CADa;IAEV,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAC;IAEtE,IAAI,KAAK,EAAE,CAAC;QACR,YAAY,CAAC,eAAe,GAAG,KAAK,CAAC;IACzC,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEhD,MAAA,WAAW,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACpC,mFAAmF;QACnF,MAAM,CAAC,eAAe,GAAG,wBAAwB,CAAC,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,OAAO,CACH,KAAC,OAAO,IACJ,QAAQ,EAAE;YACN,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,UAAU;YACpC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,aAAa;SAC7C,EACD,EAAE,EAAE,YAAY,CAAC,OAAO,EACxB,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,YAEzB,eAAK,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,aAAW,YAAY,CAAC,OAAO,aAC5E,cAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YACrB,KAAC,OAAO,oBAAK,WAAW,IAAE,EAAE,EAAE,YAAY,CAAC,OAAO,IAAI,GACpD,EACL,KAAK,IAAI,CACN,cACI,SAAS,EAAE,CAAC,CAAC,iBAAiB,EAAE,EAAC,CAAC,YAAY,CAAC,EAAE,SAAS,EAAC,CAAC,aACnD,YAAY,CAAC,cAAc,YAEpC,KAAC,KAAK,IAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,GAAI,GAC1C,CACT,IACC,GACA,CACb,CAAC;AACN,CAAC,CAAC","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"]}
|
@@ -1,11 +1,11 @@
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
2
2
|
import { Content } from '@gravity-ui/page-constructor';
|
3
3
|
import { Wrapper } from "../../components/Wrapper/Wrapper.js";
|
4
|
+
import { DefaultGoalIds } from "../../constants.js";
|
5
|
+
import { AnalyticsCounter } from "../../counters/utils.js";
|
4
6
|
import { PaddingsDirections } from "../../models/paddings.js";
|
5
7
|
import { block } from "../../utils/cn.js";
|
6
8
|
import { getMergedAnalyticsEvents, getQaAttributes, prepareAnalyticsEvent, updateContentSizes, } from "../../utils/common.js";
|
7
|
-
import { DefaultGoalIds } from "../../constants.js";
|
8
|
-
import { AnalyticsCounter } from "../../counters/utils.js";
|
9
9
|
import './CTA.css';
|
10
10
|
const b = block('cta');
|
11
11
|
const linkGoals = prepareAnalyticsEvent({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CTA.js","sourceRoot":"../../../../src","sources":["blocks/CTA/CTA.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,OAAO,EAAoB,MAAM,8BAA8B,CAAC;AAExE,OAAO,EAAC,OAAO,EAAC,4CAAyC;
|
1
|
+
{"version":3,"file":"CTA.js","sourceRoot":"../../../../src","sources":["blocks/CTA/CTA.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,OAAO,EAAoB,MAAM,8BAA8B,CAAC;AAExE,OAAO,EAAC,OAAO,EAAC,4CAAyC;AACzD,OAAO,EAAC,cAAc,EAAC,2BAAwB;AAC/C,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAEtD,OAAO,EAAC,kBAAkB,EAAC,iCAA8B;AACzD,OAAO,EAAC,KAAK,EAAC,0BAAuB;AACrC,OAAO,EACH,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,GACrB,8BAA2B;AAE5B,OAAO,WAAW,CAAC;AAEnB,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAEvB,MAAM,SAAS,GAAG,qBAAqB,CAAC;IACpC,IAAI,EAAE,cAAc,CAAC,GAAG;IACxB,OAAO,EAAE,gBAAgB,CAAC,SAAS;CACtC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,EAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAW,EAAE,EAAE;IACpE,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAEjD,OAAO,CACH,KAAC,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,SAAS,CAAC,EACvB,EAAE,EAAE,YAAY,CAAC,OAAO,YAEvB,KAAK,CAAC,GAAG,CAAC,CAAC,OAA0B,EAAE,KAAa,EAAE,EAAE;;YACrD,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAEhD,MAAA,WAAW,CAAC,KAAK,0CAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAChC,mFAAmF;gBACnF,IAAI,CAAC,eAAe,GAAG,wBAAwB,CAC3C,SAAS,EACT,IAAI,CAAC,eAAe,CACvB,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,OAAO,CACH,cAAiB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,aAAW,YAAY,CAAC,IAAI,YAC7D,KAAC,OAAO,oBAAK,WAAW,IAAE,EAAE,EAAE,YAAY,CAAC,OAAO,IAAI,IADhD,KAAK,CAET,CACT,CAAC;QACN,CAAC,CAAC,GACI,CACb,CAAC;AACN,CAAC,CAAC","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,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
|
+
}
|
@@ -6,10 +6,13 @@ import { Wrapper } from "../../components/Wrapper/Wrapper.js";
|
|
6
6
|
import { DefaultGoalIds } from "../../constants.js";
|
7
7
|
import { LocaleContext } from "../../contexts/LocaleContext.js";
|
8
8
|
import { PostPageContext } from "../../contexts/PostPageContext.js";
|
9
|
-
import { PaddingsDirections } from "../../models/paddings.js";
|
10
|
-
import { getBreadcrumbs, getBlogPath as getDefaultBlogPath, prepareAnalyticsEvent, } from "../../utils/common.js";
|
11
9
|
import { SettingsContext } from "../../contexts/SettingsContext.js";
|
12
10
|
import { AnalyticsCounter } from "../../counters/utils.js";
|
11
|
+
import { PaddingsDirections } from "../../models/paddings.js";
|
12
|
+
import { block } from "../../utils/cn.js";
|
13
|
+
import { getBreadcrumbs, getBlogPath as getDefaultBlogPath, prepareAnalyticsEvent, } from "../../utils/common.js";
|
14
|
+
import './Header.css';
|
15
|
+
const b = block('header-block');
|
13
16
|
const analyticsEventsContainer = {
|
14
17
|
sharing: prepareAnalyticsEvent({ name: DefaultGoalIds.shareTop }),
|
15
18
|
save: prepareAnalyticsEvent({ name: DefaultGoalIds.saveTop }),
|
@@ -19,7 +22,7 @@ const breadcrumbsGoals = prepareAnalyticsEvent({
|
|
19
22
|
counter: AnalyticsCounter.CrossSite,
|
20
23
|
});
|
21
24
|
export const Header = (props) => {
|
22
|
-
const { theme, paddingTop, paddingBottom } = props;
|
25
|
+
const { theme, paddingTop, paddingBottom, imageInGrid = true } = props;
|
23
26
|
const { post, breadcrumbs: customBreadcrumbs = {} } = React.useContext(PostPageContext);
|
24
27
|
const { locale } = React.useContext(LocaleContext);
|
25
28
|
const { getBlogPath = getDefaultBlogPath } = React.useContext(SettingsContext);
|
@@ -33,6 +36,6 @@ export const Header = (props) => {
|
|
33
36
|
return (_jsx(Wrapper, { paddings: {
|
34
37
|
[PaddingsDirections.top]: paddingTop,
|
35
38
|
[PaddingsDirections.bottom]: paddingBottom,
|
36
|
-
}, children: _jsx(HeaderBlock, Object.assign({}, props, { title: title, description: description, breadcrumbs: Object.assign(Object.assign({}, breadcrumbs), customBreadcrumbs), children: _jsx(PostInfo, { postId: id, date: date, readingTime: readingTime, analyticsEventsContainer: analyticsEventsContainer, theme: theme, qa: "blog-header-meta-container" }) })) }));
|
39
|
+
}, children: _jsx("div", { className: b({ 'image-out-grid': !imageInGrid }), children: _jsx(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: _jsx(PostInfo, { postId: id, date: date, readingTime: readingTime, analyticsEventsContainer: analyticsEventsContainer, theme: theme, qa: "blog-header-meta-container" }) })) }) }));
|
37
40
|
};
|
38
41
|
//# sourceMappingURL=Header.js.map
|