@gravity-ui/page-constructor 5.3.0 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  const react_1 = tslib_1.__importStar(require("react"));
5
5
  const __1 = require("..");
6
+ const FormsContext_1 = require("../../context/formsContext/FormsContext");
6
7
  const models_1 = require("../../models");
7
8
  const sub_blocks_1 = require("../../sub-blocks");
8
9
  const InnerForm = (props) => {
9
10
  const { formData, onContentLoad, className } = props;
11
+ const formsConfig = (0, react_1.useContext)(FormsContext_1.FormsContext);
10
12
  (0, react_1.useEffect)(() => {
11
13
  if ((0, models_1.isHubspotDataForm)(formData)) {
12
14
  onContentLoad();
@@ -15,13 +17,13 @@ const InnerForm = (props) => {
15
17
  if ((0, models_1.isYandexDataForm)(formData)) {
16
18
  const _a = formData.yandex, { onLoad } = _a, rest = tslib_1.__rest(_a, ["onLoad"]);
17
19
  return (react_1.default.createElement("div", { className: className },
18
- react_1.default.createElement(__1.YandexForm, Object.assign({}, rest, { onLoad: () => {
20
+ react_1.default.createElement(__1.YandexForm, Object.assign({}, formsConfig.yandex, rest, { onLoad: () => {
19
21
  onContentLoad();
20
22
  onLoad === null || onLoad === void 0 ? void 0 : onLoad();
21
23
  } }))));
22
24
  }
23
25
  if ((0, models_1.isHubspotDataForm)(formData)) {
24
- return react_1.default.createElement(sub_blocks_1.HubspotForm, Object.assign({ createDOMElement: true }, formData.hubspot));
26
+ return (react_1.default.createElement(sub_blocks_1.HubspotForm, Object.assign({ createDOMElement: true }, formsConfig.hubspot, formData.hubspot)));
25
27
  }
26
28
  return null;
27
29
  };
@@ -1,4 +1,5 @@
1
1
  import { AnalyticsContextProps } from '../../context/analyticsContext';
2
+ import { FormsContextProps } from '../../context/formsContext/FormsContext';
2
3
  import { ImageContextProps } from '../../context/imageContext';
3
4
  import { LocaleContextProps } from '../../context/localeContext';
4
5
  import { LocationContextProps } from '../../context/locationContext';
@@ -15,6 +16,7 @@ export interface PageConstructorProviderProps {
15
16
  mapsContext?: MapsContextType;
16
17
  projectSettings?: ProjectSettingsContextProps;
17
18
  analytics?: AnalyticsContextProps;
19
+ forms?: FormsContextProps;
18
20
  image?: ImageContextProps;
19
21
  }
20
22
  export declare const PageConstructorProvider: (props: WithChildren<PageConstructorProviderProps>) => JSX.Element;
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importStar(require("react"));
6
6
  const constants_1 = require("../../components/constants");
7
7
  const analyticsContext_1 = require("../../context/analyticsContext");
8
+ const FormsContext_1 = require("../../context/formsContext/FormsContext");
8
9
  const imageContext_1 = require("../../context/imageContext");
9
10
  const localeContext_1 = require("../../context/localeContext");
10
11
  const locationContext_1 = require("../../context/locationContext");
@@ -14,7 +15,7 @@ const projectSettingsContext_1 = require("../../context/projectSettingsContext")
14
15
  const ssrContext_1 = require("../../context/ssrContext");
15
16
  const theme_1 = require("../../context/theme");
16
17
  const PageConstructorProvider = (props) => {
17
- const { isMobile, mapsContext = mapsContext_1.initialMapValue, locale = {}, location = {}, analytics = {}, ssrConfig = {}, projectSettings = {}, theme = constants_1.DEFAULT_THEME, children, image = {}, } = props;
18
+ const { isMobile, mapsContext = mapsContext_1.initialMapValue, locale = {}, location = {}, analytics = {}, ssrConfig = {}, projectSettings = {}, theme = constants_1.DEFAULT_THEME, children, image = {}, forms = FormsContext_1.DEFAULT_FORMS_CONTEXT_VALUE, } = props;
18
19
  /* eslint-disable react/jsx-key */
19
20
  const context = [
20
21
  react_1.default.createElement(theme_1.ThemeContext.Provider, { value: { theme } }),
@@ -25,6 +26,7 @@ const PageConstructorProvider = (props) => {
25
26
  react_1.default.createElement(mobileContext_1.MobileContext.Provider, { value: Boolean(isMobile) }),
26
27
  react_1.default.createElement(mapsContext_1.MapsContext.Provider, { value: mapsContext }),
27
28
  react_1.default.createElement(analyticsContext_1.AnalyticsContext.Provider, { value: analytics }),
29
+ react_1.default.createElement(FormsContext_1.FormsContext.Provider, { value: forms }),
28
30
  react_1.default.createElement(ssrContext_1.SSRContext.Provider, { value: { isServer: ssrConfig === null || ssrConfig === void 0 ? void 0 : ssrConfig.isServer } }),
29
31
  ].reduceRight((prev, provider) => react_1.default.cloneElement(provider, {}, prev), children);
30
32
  /* eslint-enable react/jsx-key */
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { YandexFormProps } from '../../models/constructor-items/common';
3
+ import { HubspotFormProps } from '../../models/constructor-items/sub-blocks';
4
+ export declare const DEFAULT_FORMS_CONTEXT_VALUE: FormsContextProps;
5
+ export interface FormsContextProps {
6
+ yandex?: YandexFormsContextProps;
7
+ hubspot?: HubspotFormsContextProps;
8
+ }
9
+ export interface YandexFormsContextProps extends Partial<Pick<YandexFormProps, 'customFormOrigin'>> {
10
+ }
11
+ export interface HubspotFormsContextProps extends Partial<Pick<HubspotFormProps, 'createDOMElement'>> {
12
+ }
13
+ export declare const FormsContext: React.Context<FormsContextProps>;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FormsContext = exports.DEFAULT_FORMS_CONTEXT_VALUE = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importDefault(require("react"));
6
+ exports.DEFAULT_FORMS_CONTEXT_VALUE = {};
7
+ exports.FormsContext = react_1.default.createContext(exports.DEFAULT_FORMS_CONTEXT_VALUE);
@@ -0,0 +1 @@
1
+ export * from './FormsContext';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./FormsContext"), exports);
@@ -70,6 +70,7 @@ export interface HeaderData {
70
70
  rightItems?: NavigationItemModel[];
71
71
  iconSize?: number;
72
72
  withBorder?: boolean;
73
+ withBorderOnScroll?: boolean;
73
74
  }
74
75
  export interface FooterColumn {
75
76
  title: string;
@@ -12,7 +12,7 @@ const DesktopNavigation_1 = tslib_1.__importDefault(require("../DesktopNavigatio
12
12
  const MobileNavigation_1 = tslib_1.__importDefault(require("../MobileNavigation/MobileNavigation"));
13
13
  const b = (0, utils_1.block)('navigation');
14
14
  const Navigation = ({ data, logo, className }) => {
15
- const { leftItems, rightItems, iconSize = 20, withBorder = false } = data;
15
+ const { leftItems, rightItems, iconSize = 20, withBorder = false, withBorderOnScroll = true, } = data;
16
16
  const [isSidebarOpened, setIsSidebarOpened] = (0, react_1.useState)(false);
17
17
  const [activeItemId, setActiveItemId] = (0, react_1.useState)(undefined);
18
18
  const [showBorder, setShowBorder] = (0, react_1.useState)(withBorder);
@@ -24,6 +24,8 @@ const Navigation = ({ data, logo, className }) => {
24
24
  };
25
25
  const onSidebarOpenedChange = (isOpen) => setIsSidebarOpened(isOpen);
26
26
  (0, react_1.useEffect)(() => {
27
+ if (!withBorderOnScroll)
28
+ return () => { };
27
29
  const showBorderOnScroll = () => {
28
30
  if (!showBorder) {
29
31
  setShowBorder(window.scrollY > 0);
@@ -1,10 +1,12 @@
1
1
  import { __rest } from "tslib";
2
- import React, { useEffect } from 'react';
2
+ import React, { useContext, useEffect } from 'react';
3
3
  import { YandexForm } from '..';
4
+ import { FormsContext, } from '../../context/formsContext/FormsContext';
4
5
  import { isHubspotDataForm, isYandexDataForm } from '../../models';
5
6
  import { HubspotForm } from '../../sub-blocks';
6
7
  const InnerForm = (props) => {
7
8
  const { formData, onContentLoad, className } = props;
9
+ const formsConfig = useContext(FormsContext);
8
10
  useEffect(() => {
9
11
  if (isHubspotDataForm(formData)) {
10
12
  onContentLoad();
@@ -13,13 +15,13 @@ const InnerForm = (props) => {
13
15
  if (isYandexDataForm(formData)) {
14
16
  const _a = formData.yandex, { onLoad } = _a, rest = __rest(_a, ["onLoad"]);
15
17
  return (React.createElement("div", { className: className },
16
- React.createElement(YandexForm, Object.assign({}, rest, { onLoad: () => {
18
+ React.createElement(YandexForm, Object.assign({}, formsConfig.yandex, rest, { onLoad: () => {
17
19
  onContentLoad();
18
20
  onLoad === null || onLoad === void 0 ? void 0 : onLoad();
19
21
  } }))));
20
22
  }
21
23
  if (isHubspotDataForm(formData)) {
22
- return React.createElement(HubspotForm, Object.assign({ createDOMElement: true }, formData.hubspot));
24
+ return (React.createElement(HubspotForm, Object.assign({ createDOMElement: true }, formsConfig.hubspot, formData.hubspot)));
23
25
  }
24
26
  return null;
25
27
  };
@@ -1,4 +1,5 @@
1
1
  import { AnalyticsContextProps } from '../../context/analyticsContext';
2
+ import { FormsContextProps } from '../../context/formsContext/FormsContext';
2
3
  import { ImageContextProps } from '../../context/imageContext';
3
4
  import { LocaleContextProps } from '../../context/localeContext';
4
5
  import { LocationContextProps } from '../../context/locationContext';
@@ -15,6 +16,7 @@ export interface PageConstructorProviderProps {
15
16
  mapsContext?: MapsContextType;
16
17
  projectSettings?: ProjectSettingsContextProps;
17
18
  analytics?: AnalyticsContextProps;
19
+ forms?: FormsContextProps;
18
20
  image?: ImageContextProps;
19
21
  }
20
22
  export declare const PageConstructorProvider: (props: WithChildren<PageConstructorProviderProps>) => JSX.Element;
@@ -1,6 +1,7 @@
1
1
  import React, { Fragment } from 'react';
2
2
  import { DEFAULT_THEME } from '../../components/constants';
3
3
  import { AnalyticsContext } from '../../context/analyticsContext';
4
+ import { DEFAULT_FORMS_CONTEXT_VALUE, FormsContext, } from '../../context/formsContext/FormsContext';
4
5
  import { ImageContext } from '../../context/imageContext';
5
6
  import { LocaleContext } from '../../context/localeContext';
6
7
  import { LocationContext } from '../../context/locationContext';
@@ -10,7 +11,7 @@ import { ProjectSettingsContext, } from '../../context/projectSettingsContext';
10
11
  import { SSRContext } from '../../context/ssrContext';
11
12
  import { ThemeContext } from '../../context/theme';
12
13
  export const PageConstructorProvider = (props) => {
13
- const { isMobile, mapsContext = initialMapValue, locale = {}, location = {}, analytics = {}, ssrConfig = {}, projectSettings = {}, theme = DEFAULT_THEME, children, image = {}, } = props;
14
+ const { isMobile, mapsContext = initialMapValue, locale = {}, location = {}, analytics = {}, ssrConfig = {}, projectSettings = {}, theme = DEFAULT_THEME, children, image = {}, forms = DEFAULT_FORMS_CONTEXT_VALUE, } = props;
14
15
  /* eslint-disable react/jsx-key */
15
16
  const context = [
16
17
  React.createElement(ThemeContext.Provider, { value: { theme } }),
@@ -21,6 +22,7 @@ export const PageConstructorProvider = (props) => {
21
22
  React.createElement(MobileContext.Provider, { value: Boolean(isMobile) }),
22
23
  React.createElement(MapsContext.Provider, { value: mapsContext }),
23
24
  React.createElement(AnalyticsContext.Provider, { value: analytics }),
25
+ React.createElement(FormsContext.Provider, { value: forms }),
24
26
  React.createElement(SSRContext.Provider, { value: { isServer: ssrConfig === null || ssrConfig === void 0 ? void 0 : ssrConfig.isServer } }),
25
27
  ].reduceRight((prev, provider) => React.cloneElement(provider, {}, prev), children);
26
28
  /* eslint-enable react/jsx-key */
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { YandexFormProps } from '../../models/constructor-items/common';
3
+ import { HubspotFormProps } from '../../models/constructor-items/sub-blocks';
4
+ export declare const DEFAULT_FORMS_CONTEXT_VALUE: FormsContextProps;
5
+ export interface FormsContextProps {
6
+ yandex?: YandexFormsContextProps;
7
+ hubspot?: HubspotFormsContextProps;
8
+ }
9
+ export interface YandexFormsContextProps extends Partial<Pick<YandexFormProps, 'customFormOrigin'>> {
10
+ }
11
+ export interface HubspotFormsContextProps extends Partial<Pick<HubspotFormProps, 'createDOMElement'>> {
12
+ }
13
+ export declare const FormsContext: React.Context<FormsContextProps>;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export const DEFAULT_FORMS_CONTEXT_VALUE = {};
3
+ export const FormsContext = React.createContext(DEFAULT_FORMS_CONTEXT_VALUE);
@@ -0,0 +1 @@
1
+ export * from './FormsContext';
@@ -0,0 +1 @@
1
+ export * from './FormsContext';
@@ -70,6 +70,7 @@ export interface HeaderData {
70
70
  rightItems?: NavigationItemModel[];
71
71
  iconSize?: number;
72
72
  withBorder?: boolean;
73
+ withBorderOnScroll?: boolean;
73
74
  }
74
75
  export interface FooterColumn {
75
76
  title: string;
@@ -9,7 +9,7 @@ import MobileNavigation from '../MobileNavigation/MobileNavigation';
9
9
  import './Navigation.css';
10
10
  const b = block('navigation');
11
11
  export const Navigation = ({ data, logo, className }) => {
12
- const { leftItems, rightItems, iconSize = 20, withBorder = false } = data;
12
+ const { leftItems, rightItems, iconSize = 20, withBorder = false, withBorderOnScroll = true, } = data;
13
13
  const [isSidebarOpened, setIsSidebarOpened] = useState(false);
14
14
  const [activeItemId, setActiveItemId] = useState(undefined);
15
15
  const [showBorder, setShowBorder] = useState(withBorder);
@@ -21,6 +21,8 @@ export const Navigation = ({ data, logo, className }) => {
21
21
  };
22
22
  const onSidebarOpenedChange = (isOpen) => setIsSidebarOpened(isOpen);
23
23
  useEffect(() => {
24
+ if (!withBorderOnScroll)
25
+ return () => { };
24
26
  const showBorderOnScroll = () => {
25
27
  if (!showBorder) {
26
28
  setShowBorder(window.scrollY > 0);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/page-constructor",
3
- "version": "5.3.0",
3
+ "version": "5.5.0",
4
4
  "description": "Gravity UI Page Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -70,6 +70,7 @@ export interface HeaderData {
70
70
  rightItems?: NavigationItemModel[];
71
71
  iconSize?: number;
72
72
  withBorder?: boolean;
73
+ withBorderOnScroll?: boolean;
73
74
  }
74
75
  export interface FooterColumn {
75
76
  title: string;