@gravity-ui/page-constructor 3.3.0 → 3.5.0-alpha.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/CHANGELOG.md +0 -20
- package/README.md +0 -2
- package/build/cjs/blocks/Banner/schema.d.ts +21 -63
- package/build/cjs/blocks/CardLayout/schema.d.ts +4 -10
- package/build/cjs/blocks/Companies/schema.d.ts +2 -5
- package/build/cjs/blocks/ContentLayout/ContentLayout.js +2 -3
- package/build/cjs/blocks/ContentLayout/schema.d.ts +61 -107
- package/build/cjs/blocks/ContentLayout/schema.js +18 -23
- package/build/cjs/blocks/ExtendedFeatures/schema.d.ts +4 -31
- package/build/cjs/blocks/ExtendedFeatures/schema.js +3 -2
- package/build/cjs/blocks/FilterBlock/schema.d.ts +5 -13
- package/build/cjs/blocks/FilterBlock/schema.js +2 -13
- package/build/cjs/blocks/Header/Header.css +7 -6
- package/build/cjs/blocks/Header/schema.d.ts +36 -92
- package/build/cjs/blocks/Header/schema.js +0 -1
- package/build/cjs/blocks/HeaderSlider/schema.d.ts +53 -48
- package/build/cjs/blocks/HeaderSlider/schema.js +1 -3
- package/build/cjs/blocks/Icons/schema.d.ts +1 -3
- package/build/cjs/blocks/Icons/schema.js +1 -2
- package/build/cjs/blocks/Info/schema.d.ts +8 -19
- package/build/cjs/blocks/Map/schema.d.ts +6 -17
- package/build/cjs/blocks/Media/schema.d.ts +152 -204
- package/build/cjs/blocks/Media/schema.js +1 -1
- package/build/cjs/blocks/PromoFeaturesBlock/schema.d.ts +8 -22
- package/build/cjs/blocks/PromoFeaturesBlock/schema.js +0 -1
- package/build/cjs/blocks/Questions/schema.d.ts +3 -7
- package/build/cjs/blocks/Slider/schema.d.ts +18 -13
- package/build/cjs/blocks/Slider/schema.js +5 -4
- package/build/cjs/blocks/Table/schema.d.ts +2 -5
- package/build/cjs/blocks/Table/schema.js +2 -12
- package/build/cjs/blocks/Tabs/schema.d.ts +16 -43
- package/build/cjs/components/BlockBase/BlockBase.js +2 -2
- package/build/cjs/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +1 -1
- package/build/cjs/components/Image/schema.d.ts +0 -1
- package/build/cjs/components/Image/schema.js +2 -3
- package/build/cjs/containers/PageConstructor/components/ConstructorBlock/ConstructorBlock.js +1 -1
- package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +1 -1
- package/build/cjs/customization/BlockDecoration.d.ts +1 -1
- package/build/cjs/customization/BlockDecoration.js +6 -5
- package/build/cjs/editor/{components → Components}/AddBlock/AddBlock.css +7 -0
- package/build/cjs/editor/Components/AddBlock/AddBlock.d.ts +7 -0
- package/build/cjs/editor/{components → Components}/AddBlock/AddBlock.js +2 -2
- package/build/cjs/editor/Components/EditBlock/EditBlock.d.ts +4 -0
- package/build/cjs/editor/Components/EditBlock/EditBlock.js +32 -0
- package/build/cjs/editor/Containers/Editor.d.ts +2 -0
- package/build/cjs/editor/Containers/Editor.js +24 -0
- package/build/cjs/editor/index.d.ts +1 -1
- package/build/cjs/editor/index.js +1 -1
- package/build/cjs/editor/store/index.d.ts +11 -8
- package/build/cjs/editor/store/index.js +15 -61
- package/build/cjs/editor/store/reducer.d.ts +9 -17
- package/build/cjs/editor/store/reducer.js +31 -14
- package/build/cjs/editor/store/utils.d.ts +0 -1
- package/build/cjs/editor/store/utils.js +1 -3
- package/build/cjs/editor/types/index.d.ts +9 -11
- package/build/cjs/editor/utils/index.d.ts +3 -4
- package/build/cjs/editor/utils/index.js +4 -6
- package/build/cjs/grid/Col/Col.d.ts +1 -1
- package/build/cjs/models/constructor-items/blocks.d.ts +8 -13
- package/build/cjs/models/constructor.d.ts +2 -2
- package/build/cjs/models/customization.d.ts +8 -3
- package/build/cjs/models/navigation.d.ts +0 -1
- package/build/cjs/navigation/components/Header/Header.css +0 -2
- package/build/cjs/navigation/components/Header/Header.js +4 -15
- package/build/cjs/navigation/schema.d.ts +0 -1
- package/build/cjs/schema/index.d.ts +228 -9
- package/build/cjs/schema/index.js +46 -8
- package/build/cjs/schema/validators/common.d.ts +27 -71
- package/build/cjs/schema/validators/common.js +17 -50
- package/build/cjs/sub-blocks/BackgroundCard/schema.d.ts +5 -12
- package/build/cjs/sub-blocks/BasicCard/schema.d.ts +3 -8
- package/build/cjs/sub-blocks/Content/schema.d.ts +6 -14
- package/build/cjs/sub-blocks/Content/schema.js +1 -9
- package/build/cjs/sub-blocks/LayoutItem/schema.d.ts +9 -23
- package/build/cjs/sub-blocks/MediaCard/schema.d.ts +6 -16
- package/build/cjs/sub-blocks/PriceDetailed/schema.d.ts +0 -1
- package/build/cjs/sub-blocks/PriceDetailed/schema.js +1 -5
- package/build/cjs/sub-blocks/Quote/schema.d.ts +2 -6
- package/build/cjs/text-transform/utils.js +6 -1
- package/build/esm/blocks/Banner/schema.d.ts +21 -63
- package/build/esm/blocks/CardLayout/schema.d.ts +4 -10
- package/build/esm/blocks/Companies/schema.d.ts +2 -5
- package/build/esm/blocks/ContentLayout/ContentLayout.js +2 -3
- package/build/esm/blocks/ContentLayout/schema.d.ts +61 -107
- package/build/esm/blocks/ContentLayout/schema.js +18 -23
- package/build/esm/blocks/ExtendedFeatures/schema.d.ts +4 -31
- package/build/esm/blocks/ExtendedFeatures/schema.js +4 -3
- package/build/esm/blocks/FilterBlock/schema.d.ts +5 -13
- package/build/esm/blocks/FilterBlock/schema.js +2 -13
- package/build/esm/blocks/Header/Header.css +7 -6
- package/build/esm/blocks/Header/schema.d.ts +36 -92
- package/build/esm/blocks/Header/schema.js +0 -1
- package/build/esm/blocks/HeaderSlider/schema.d.ts +53 -48
- package/build/esm/blocks/HeaderSlider/schema.js +1 -2
- package/build/esm/blocks/Icons/schema.d.ts +1 -3
- package/build/esm/blocks/Icons/schema.js +1 -2
- package/build/esm/blocks/Info/schema.d.ts +8 -19
- package/build/esm/blocks/Map/schema.d.ts +6 -17
- package/build/esm/blocks/Media/schema.d.ts +152 -204
- package/build/esm/blocks/Media/schema.js +2 -2
- package/build/esm/blocks/PromoFeaturesBlock/schema.d.ts +8 -22
- package/build/esm/blocks/PromoFeaturesBlock/schema.js +0 -1
- package/build/esm/blocks/Questions/schema.d.ts +3 -7
- package/build/esm/blocks/Slider/schema.d.ts +18 -13
- package/build/esm/blocks/Slider/schema.js +5 -4
- package/build/esm/blocks/Table/schema.d.ts +2 -5
- package/build/esm/blocks/Table/schema.js +2 -12
- package/build/esm/blocks/Tabs/schema.d.ts +16 -43
- package/build/esm/components/BlockBase/BlockBase.js +2 -2
- package/build/esm/components/HeaderBreadcrumbs/HeaderBreadcrumbs.js +1 -1
- package/build/esm/components/Image/schema.d.ts +0 -1
- package/build/esm/components/Image/schema.js +2 -3
- package/build/esm/containers/PageConstructor/components/ConstructorBlock/ConstructorBlock.js +1 -1
- package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +1 -1
- package/build/esm/customization/BlockDecoration.d.ts +1 -1
- package/build/esm/customization/BlockDecoration.js +6 -6
- package/build/esm/editor/{components → Components}/AddBlock/AddBlock.css +7 -0
- package/build/esm/editor/Components/AddBlock/AddBlock.d.ts +8 -0
- package/build/esm/editor/{components → Components}/AddBlock/AddBlock.js +2 -2
- package/build/esm/editor/Components/EditBlock/EditBlock.d.ts +5 -0
- package/build/esm/editor/Components/EditBlock/EditBlock.js +30 -0
- package/build/esm/editor/Containers/Editor.d.ts +2 -0
- package/build/esm/editor/Containers/Editor.js +20 -0
- package/build/esm/editor/index.d.ts +1 -1
- package/build/esm/editor/index.js +1 -1
- package/build/esm/editor/store/index.d.ts +11 -8
- package/build/esm/editor/store/index.js +17 -63
- package/build/esm/editor/store/reducer.d.ts +9 -17
- package/build/esm/editor/store/reducer.js +29 -12
- package/build/esm/editor/store/utils.d.ts +0 -1
- package/build/esm/editor/store/utils.js +0 -1
- package/build/esm/editor/types/index.d.ts +9 -11
- package/build/esm/editor/utils/index.d.ts +3 -4
- package/build/esm/editor/utils/index.js +3 -4
- package/build/esm/grid/Col/Col.d.ts +1 -1
- package/build/esm/models/constructor-items/blocks.d.ts +8 -13
- package/build/esm/models/constructor.d.ts +2 -2
- package/build/esm/models/customization.d.ts +8 -3
- package/build/esm/models/navigation.d.ts +0 -1
- package/build/esm/navigation/components/Header/Header.css +0 -2
- package/build/esm/navigation/components/Header/Header.js +5 -16
- package/build/esm/navigation/schema.d.ts +0 -1
- package/build/esm/schema/index.d.ts +228 -9
- package/build/esm/schema/index.js +42 -4
- package/build/esm/schema/validators/common.d.ts +27 -71
- package/build/esm/schema/validators/common.js +16 -49
- package/build/esm/sub-blocks/BackgroundCard/schema.d.ts +5 -12
- package/build/esm/sub-blocks/BasicCard/schema.d.ts +3 -8
- package/build/esm/sub-blocks/Content/schema.d.ts +6 -14
- package/build/esm/sub-blocks/Content/schema.js +1 -9
- package/build/esm/sub-blocks/LayoutItem/schema.d.ts +9 -23
- package/build/esm/sub-blocks/MediaCard/schema.d.ts +6 -16
- package/build/esm/sub-blocks/PriceDetailed/schema.d.ts +0 -1
- package/build/esm/sub-blocks/PriceDetailed/schema.js +1 -5
- package/build/esm/sub-blocks/Quote/schema.d.ts +2 -6
- package/build/esm/text-transform/utils.js +6 -1
- package/package.json +4 -5
- package/server/models/constructor-items/blocks.d.ts +8 -13
- package/server/models/constructor.d.ts +2 -2
- package/server/models/customization.d.ts +8 -3
- package/server/models/navigation.d.ts +0 -1
- package/server/text-transform/utils.js +6 -1
- package/build/cjs/editor/components/AddBlock/AddBlock.d.ts +0 -7
- package/build/cjs/editor/components/BlockForm/BlockForm.d.ts +0 -12
- package/build/cjs/editor/components/BlockForm/BlockForm.js +0 -26
- package/build/cjs/editor/components/EditBlock/EditBlock.d.ts +0 -13
- package/build/cjs/editor/components/EditBlock/EditBlock.js +0 -44
- package/build/cjs/editor/components/ErrorBoundary/ErrorBoundary.css +0 -27
- package/build/cjs/editor/components/ErrorBoundary/ErrorBoundary.d.ts +0 -13
- package/build/cjs/editor/components/ErrorBoundary/ErrorBoundary.js +0 -35
- package/build/cjs/editor/components/ErrorBoundary/i18n/en.json +0 -4
- package/build/cjs/editor/components/ErrorBoundary/i18n/index.d.ts +0 -2
- package/build/cjs/editor/components/ErrorBoundary/i18n/index.js +0 -8
- package/build/cjs/editor/components/ErrorBoundary/i18n/ru.json +0 -4
- package/build/cjs/editor/components/PagePropsForm/PagePropsForm.d.ts +0 -10
- package/build/cjs/editor/components/PagePropsForm/PagePropsForm.js +0 -17
- package/build/cjs/editor/containers/Editor/Editor.css +0 -28
- package/build/cjs/editor/containers/Editor/Editor.d.ts +0 -2
- package/build/cjs/editor/containers/Editor/Editor.js +0 -37
- package/build/cjs/editor/containers/Form/Form.css +0 -94
- package/build/cjs/editor/containers/Form/Form.d.ts +0 -11
- package/build/cjs/editor/containers/Form/Form.js +0 -47
- package/build/cjs/editor/containers/Form/dynamic-form-custom.css +0 -0
- package/build/cjs/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.css +0 -27
- package/build/cjs/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.d.ts +0 -19
- package/build/cjs/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.js +0 -72
- package/build/cjs/editor/dynamic-forms-custom/config.d.ts +0 -2
- package/build/cjs/editor/dynamic-forms-custom/config.js +0 -13
- package/build/cjs/editor/dynamic-forms-custom/hooks/useOneOf.d.ts +0 -12
- package/build/cjs/editor/dynamic-forms-custom/hooks/useOneOf.js +0 -75
- package/build/cjs/editor/dynamic-forms-custom/parser/detect.d.ts +0 -9
- package/build/cjs/editor/dynamic-forms-custom/parser/detect.js +0 -36
- package/build/cjs/editor/dynamic-forms-custom/parser/index.d.ts +0 -28
- package/build/cjs/editor/dynamic-forms-custom/parser/index.js +0 -188
- package/build/cjs/editor/dynamic-forms-custom/parser/types.d.ts +0 -29
- package/build/cjs/editor/dynamic-forms-custom/parser/types.js +0 -2
- package/build/cjs/editor/dynamic-forms-custom/parser/views.d.ts +0 -37
- package/build/cjs/editor/dynamic-forms-custom/parser/views.js +0 -46
- package/build/cjs/editor/hooks/useFormSpec.d.ts +0 -2
- package/build/cjs/editor/hooks/useFormSpec.js +0 -13
- package/build/cjs/schema/constants.d.ts +0 -908
- package/build/cjs/schema/constants.js +0 -42
- package/build/esm/editor/components/AddBlock/AddBlock.d.ts +0 -8
- package/build/esm/editor/components/BlockForm/BlockForm.d.ts +0 -12
- package/build/esm/editor/components/BlockForm/BlockForm.js +0 -23
- package/build/esm/editor/components/EditBlock/EditBlock.d.ts +0 -14
- package/build/esm/editor/components/EditBlock/EditBlock.js +0 -41
- package/build/esm/editor/components/ErrorBoundary/ErrorBoundary.css +0 -27
- package/build/esm/editor/components/ErrorBoundary/ErrorBoundary.d.ts +0 -14
- package/build/esm/editor/components/ErrorBoundary/ErrorBoundary.js +0 -31
- package/build/esm/editor/components/ErrorBoundary/i18n/en.json +0 -4
- package/build/esm/editor/components/ErrorBoundary/i18n/index.d.ts +0 -2
- package/build/esm/editor/components/ErrorBoundary/i18n/index.js +0 -5
- package/build/esm/editor/components/ErrorBoundary/i18n/ru.json +0 -4
- package/build/esm/editor/components/PagePropsForm/PagePropsForm.d.ts +0 -10
- package/build/esm/editor/components/PagePropsForm/PagePropsForm.js +0 -13
- package/build/esm/editor/containers/Editor/Editor.css +0 -28
- package/build/esm/editor/containers/Editor/Editor.d.ts +0 -3
- package/build/esm/editor/containers/Editor/Editor.js +0 -34
- package/build/esm/editor/containers/Form/Form.css +0 -94
- package/build/esm/editor/containers/Form/Form.d.ts +0 -12
- package/build/esm/editor/containers/Form/Form.js +0 -45
- package/build/esm/editor/containers/Form/dynamic-form-custom.css +0 -0
- package/build/esm/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.css +0 -27
- package/build/esm/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.d.ts +0 -20
- package/build/esm/editor/dynamic-forms-custom/components/OneOfCustom/OneOfCustom.js +0 -68
- package/build/esm/editor/dynamic-forms-custom/config.d.ts +0 -2
- package/build/esm/editor/dynamic-forms-custom/config.js +0 -9
- package/build/esm/editor/dynamic-forms-custom/hooks/useOneOf.d.ts +0 -12
- package/build/esm/editor/dynamic-forms-custom/hooks/useOneOf.js +0 -69
- package/build/esm/editor/dynamic-forms-custom/parser/detect.d.ts +0 -9
- package/build/esm/editor/dynamic-forms-custom/parser/detect.js +0 -32
- package/build/esm/editor/dynamic-forms-custom/parser/index.d.ts +0 -28
- package/build/esm/editor/dynamic-forms-custom/parser/index.js +0 -186
- package/build/esm/editor/dynamic-forms-custom/parser/types.d.ts +0 -29
- package/build/esm/editor/dynamic-forms-custom/parser/types.js +0 -1
- package/build/esm/editor/dynamic-forms-custom/parser/views.d.ts +0 -37
- package/build/esm/editor/dynamic-forms-custom/parser/views.js +0 -39
- package/build/esm/editor/hooks/useFormSpec.d.ts +0 -2
- package/build/esm/editor/hooks/useFormSpec.js +0 -9
- package/build/esm/schema/constants.d.ts +0 -908
- package/build/esm/schema/constants.js +0 -39
- /package/build/cjs/editor/{components → Components}/EditBlock/EditBlock.css +0 -0
- /package/build/esm/editor/{components → Components}/EditBlock/EditBlock.css +0 -0
|
@@ -9,14 +9,14 @@ const utils_1 = require("../../../utils");
|
|
|
9
9
|
const data_1 = tslib_1.__importDefault(require("../../data"));
|
|
10
10
|
const b = (0, utils_1.block)('add-block');
|
|
11
11
|
const sortedBlockNames = Object.keys(constructor_items_1.blockMap).sort();
|
|
12
|
-
const AddBlock = ({ onAdd
|
|
12
|
+
const AddBlock = ({ onAdd }) => {
|
|
13
13
|
const [isOpened, setIsOpened] = (0, react_1.useState)(false);
|
|
14
14
|
const [search, setSearch] = (0, react_1.useState)('');
|
|
15
15
|
const ref = (0, react_1.useRef)(null);
|
|
16
16
|
const blocks = (0, react_1.useMemo)(() => sortedBlockNames.filter((blockName) => data_1.default[blockName].meta.title
|
|
17
17
|
.toLocaleLowerCase()
|
|
18
18
|
.startsWith(search.toLocaleLowerCase())), [search]);
|
|
19
|
-
return (react_1.default.createElement("div", { className: b(
|
|
19
|
+
return (react_1.default.createElement("div", { className: b(), ref: ref },
|
|
20
20
|
react_1.default.createElement("button", { className: b('button'), onClick: () => {
|
|
21
21
|
setIsOpened(!isOpened);
|
|
22
22
|
setSearch('');
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { EditBlockProps } from '../../../editor/types';
|
|
3
|
+
declare const _default: React.MemoExoticComponent<({ id, isHeader, activeBlockId, onDelete, onSelect, onCopy, onOrderChange, children, orderedBlocksCount, }: EditBlockProps) => JSX.Element>;
|
|
4
|
+
export default _default;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
5
|
+
const icons_1 = require("@gravity-ui/icons");
|
|
6
|
+
const utils_1 = require("../../../utils");
|
|
7
|
+
const b = (0, utils_1.block)('edit-block');
|
|
8
|
+
const EditBlock = ({ id, isHeader, activeBlockId, onDelete, onSelect, onCopy, onOrderChange, children, orderedBlocksCount, }) => {
|
|
9
|
+
const ref = (0, react_1.useRef)(null);
|
|
10
|
+
const controlsActive = activeBlockId === id;
|
|
11
|
+
(0, react_1.useEffect)(() => {
|
|
12
|
+
var _a;
|
|
13
|
+
if (controlsActive && ref.current) {
|
|
14
|
+
(_a = ref.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
15
|
+
}
|
|
16
|
+
}, [controlsActive]);
|
|
17
|
+
return (react_1.default.createElement("div", { className: b(), onClick: () => {
|
|
18
|
+
onSelect(id);
|
|
19
|
+
}, ref: ref },
|
|
20
|
+
react_1.default.createElement("div", { className: b('controls', { active: controlsActive, isHeader }) }, controlsActive && (react_1.default.createElement("div", { className: b('controls-content'), onClick: (e) => e.stopPropagation() },
|
|
21
|
+
typeof id === 'number' && (react_1.default.createElement(react_1.Fragment, null,
|
|
22
|
+
id > 0 && (react_1.default.createElement("div", { className: b('control'), onClick: () => onOrderChange(id, id - 1) },
|
|
23
|
+
react_1.default.createElement(icons_1.ChevronUp, null))),
|
|
24
|
+
id < orderedBlocksCount - 1 && (react_1.default.createElement("div", { className: b('control'), onClick: () => onOrderChange(id, id + 1) },
|
|
25
|
+
react_1.default.createElement(icons_1.ChevronDown, null))),
|
|
26
|
+
react_1.default.createElement("div", { className: b('control'), onClick: () => onCopy(id) },
|
|
27
|
+
react_1.default.createElement(icons_1.Copy, null)))),
|
|
28
|
+
react_1.default.createElement("div", { className: b('control'), onClick: () => onDelete(id) },
|
|
29
|
+
react_1.default.createElement(icons_1.TrashBin, null))))),
|
|
30
|
+
children));
|
|
31
|
+
};
|
|
32
|
+
exports.default = react_1.default.memo(EditBlock);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Editor = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const AddBlock_1 = tslib_1.__importDefault(require("../Components/AddBlock/AddBlock"));
|
|
7
|
+
const EditBlock_1 = tslib_1.__importDefault(require("../Components/EditBlock/EditBlock"));
|
|
8
|
+
const store_1 = require("../store");
|
|
9
|
+
const utils_1 = require("../utils");
|
|
10
|
+
const Editor = (_a) => {
|
|
11
|
+
var { children } = _a, rest = tslib_1.__rest(_a, ["children"]);
|
|
12
|
+
const { content, onAdd, editControlsProps } = (0, store_1.useEditorState)(rest);
|
|
13
|
+
const constructorProps = (0, react_1.useMemo)(() => {
|
|
14
|
+
const editControlsDecorator = (props) => (react_1.default.createElement(EditBlock_1.default, Object.assign({}, props, editControlsProps)));
|
|
15
|
+
return {
|
|
16
|
+
content,
|
|
17
|
+
custom: (0, utils_1.addCustomDecorator)(editControlsDecorator, rest.custom),
|
|
18
|
+
};
|
|
19
|
+
}, [editControlsProps, content, rest.custom]);
|
|
20
|
+
return (react_1.default.createElement("div", null,
|
|
21
|
+
children(constructorProps),
|
|
22
|
+
react_1.default.createElement(AddBlock_1.default, { onAdd: onAdd })));
|
|
23
|
+
};
|
|
24
|
+
exports.Editor = Editor;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Editor } from './
|
|
1
|
+
export { Editor } from './Containers/Editor';
|
|
2
2
|
export * from './types';
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Editor = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
var Editor_1 = require("./
|
|
5
|
+
var Editor_1 = require("./Containers/Editor");
|
|
6
6
|
Object.defineProperty(exports, "Editor", { enumerable: true, get: function () { return Editor_1.Editor; } });
|
|
7
7
|
tslib_1.__exportStar(require("./types"), exports);
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import { Block
|
|
2
|
-
import {
|
|
1
|
+
import { Block } from '../../models';
|
|
2
|
+
import { EditorProps } from '../types';
|
|
3
3
|
export type EditorBlockId = number | string;
|
|
4
4
|
export declare function useEditorState({ content: intialContent, custom }: Omit<EditorProps, 'children'>): {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
content: import("../../models").PageContent;
|
|
6
|
+
editControlsProps: {
|
|
7
|
+
activeBlockId: import("./reducer").EditorBlockId;
|
|
8
|
+
orderedBlocksCount: number;
|
|
9
|
+
onDelete: (id: EditorBlockId) => void;
|
|
10
|
+
onSelect: (id: EditorBlockId) => void;
|
|
11
|
+
onCopy: (index: number) => void;
|
|
12
|
+
onOrderChange: (oldIndex: number, newIndex: number) => void;
|
|
13
|
+
};
|
|
9
14
|
onAdd: (block: Block) => void;
|
|
10
|
-
onSelect: (index: number) => void;
|
|
11
|
-
onContentUpdate: (newContent: PageContent) => void;
|
|
12
15
|
};
|
|
@@ -4,75 +4,29 @@ exports.useEditorState = void 0;
|
|
|
4
4
|
const react_1 = require("react");
|
|
5
5
|
const models_1 = require("../../models");
|
|
6
6
|
const utils_1 = require("../../utils");
|
|
7
|
-
const EditBlock_1 = require("../components/EditBlock/EditBlock");
|
|
8
7
|
const reducer_1 = require("./reducer");
|
|
9
8
|
const utils_2 = require("./utils");
|
|
10
9
|
function useEditorState({ content: intialContent, custom }) {
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
const headerBlockTypes = (0, react_1.useMemo)(() => [...models_1.HeaderBlockTypes, ...(0, utils_1.getCustomHeaderTypes)(custom)], [custom]);
|
|
11
|
+
const reducer = (0, react_1.useMemo)(() => (0, reducer_1.getReducer)(headerBlockTypes), [headerBlockTypes]);
|
|
12
|
+
const [{ activeBlockId, content, orderedBlocksCount }, dispatch] = (0, react_1.useReducer)(reducer, {
|
|
13
|
+
activeBlockId: 0,
|
|
14
|
+
orderedBlocksCount: (0, utils_1.getOrderedBlocks)(intialContent.blocks, headerBlockTypes).length,
|
|
14
15
|
content: (0, utils_2.addEditorProps)(intialContent),
|
|
15
16
|
});
|
|
16
17
|
return (0, react_1.useMemo)(() => {
|
|
17
|
-
const headerBlockTypes = [...models_1.HeaderBlockTypes, ...(0, utils_1.getCustomHeaderTypes)(custom)];
|
|
18
|
-
const contentHasHeader = Boolean((0, utils_1.getHeaderBlock)(content.blocks, headerBlockTypes));
|
|
19
|
-
const checkIsHeader = (type) => headerBlockTypes.includes(type);
|
|
20
|
-
const onAdd = (block) => {
|
|
21
|
-
const isHeader = checkIsHeader(block.type);
|
|
22
|
-
if (contentHasHeader && isHeader) {
|
|
23
|
-
//TODO: add warning that it should be only one header block
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
// eslint-disable-next-line no-nested-ternary
|
|
27
|
-
const index = isHeader
|
|
28
|
-
? 0
|
|
29
|
-
: activeBlockIndex === -1
|
|
30
|
-
? content.blocks.length
|
|
31
|
-
: activeBlockIndex + 1;
|
|
32
|
-
dispatch({ type: reducer_1.ADD_BLOCK, payload: { block, index } });
|
|
33
|
-
};
|
|
34
|
-
const onSelect = (index) => dispatch({ type: reducer_1.SELECT_BLOCK, payload: index });
|
|
35
|
-
const onContentUpdate = (newContent) => dispatch({ type: reducer_1.UPDATE_CONTENT, payload: newContent });
|
|
36
|
-
const injectEditBlockProps = ({ type, index: relativeIndex = 0, children, }) => {
|
|
37
|
-
const orderedBlocksStartIndex = contentHasHeader ? 1 : 0;
|
|
38
|
-
const isHeader = checkIsHeader(type);
|
|
39
|
-
const index = isHeader ? 0 : relativeIndex + orderedBlocksStartIndex;
|
|
40
|
-
const isActive = activeBlockIndex === index;
|
|
41
|
-
const actions = {
|
|
42
|
-
[EditBlock_1.EditBlockControls.Delete]: () => dispatch({ type: reducer_1.DELETE_BLOCK, payload: index }),
|
|
43
|
-
};
|
|
44
|
-
if (!isHeader) {
|
|
45
|
-
actions[EditBlock_1.EditBlockControls.Copy] = () => dispatch({ type: reducer_1.COPY_BLOCK, payload: index });
|
|
46
|
-
if (index > orderedBlocksStartIndex) {
|
|
47
|
-
actions[EditBlock_1.EditBlockControls.Up] = () => dispatch({
|
|
48
|
-
type: reducer_1.ORDER_BLOCK,
|
|
49
|
-
payload: { oldIndex: index, newIndex: index - 1 },
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
if (index < content.blocks.length - 1) {
|
|
53
|
-
actions[EditBlock_1.EditBlockControls.Down] = () => dispatch({
|
|
54
|
-
type: reducer_1.ORDER_BLOCK,
|
|
55
|
-
payload: { oldIndex: index, newIndex: index + 1 },
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return {
|
|
60
|
-
children,
|
|
61
|
-
isHeader,
|
|
62
|
-
isActive,
|
|
63
|
-
actions,
|
|
64
|
-
onSelect: () => onSelect(index),
|
|
65
|
-
};
|
|
66
|
-
};
|
|
67
18
|
return {
|
|
68
|
-
activeBlockIndex,
|
|
69
19
|
content,
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
20
|
+
editControlsProps: {
|
|
21
|
+
activeBlockId,
|
|
22
|
+
orderedBlocksCount,
|
|
23
|
+
onDelete: (id) => dispatch({ type: reducer_1.DELETE_BLOCK, payload: id }),
|
|
24
|
+
onSelect: (id) => dispatch({ type: reducer_1.SELECT_BLOCK, payload: id }),
|
|
25
|
+
onCopy: (index) => dispatch({ type: reducer_1.COPY_BLOCK, payload: index }),
|
|
26
|
+
onOrderChange: (oldIndex, newIndex) => dispatch({ type: reducer_1.ORDER_BLOCK, payload: { oldIndex, newIndex } }),
|
|
27
|
+
},
|
|
28
|
+
onAdd: (block) => dispatch({ type: reducer_1.ADD_BLOCK, payload: block }),
|
|
75
29
|
};
|
|
76
|
-
}, [content,
|
|
30
|
+
}, [content, activeBlockId, orderedBlocksCount]);
|
|
77
31
|
}
|
|
78
32
|
exports.useEditorState = useEditorState;
|
|
@@ -1,32 +1,28 @@
|
|
|
1
|
-
import { Block, PageContent } from '../../models';
|
|
1
|
+
import { Block, CustomConfig, PageContent } from '../../models';
|
|
2
2
|
export type EditorBlockId = number | string;
|
|
3
3
|
interface EditorState {
|
|
4
4
|
content: PageContent;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
activeBlockId: EditorBlockId;
|
|
6
|
+
orderedBlocksCount: number;
|
|
7
|
+
custom?: CustomConfig;
|
|
7
8
|
}
|
|
8
9
|
interface OrderBlockParams {
|
|
9
10
|
oldIndex: number;
|
|
10
11
|
newIndex: number;
|
|
11
12
|
}
|
|
12
|
-
interface AddBlockParams {
|
|
13
|
-
block: Block;
|
|
14
|
-
index: number;
|
|
15
|
-
}
|
|
16
13
|
export declare const SELECT_BLOCK = "SELECT_BLOCK";
|
|
17
14
|
export declare const DELETE_BLOCK = "DELETE_BLOCK";
|
|
18
15
|
export declare const COPY_BLOCK = "COPY_BLOCK";
|
|
19
16
|
export declare const ADD_BLOCK = "ADD_BLOCK";
|
|
20
17
|
export declare const SET_REGION = "SET_REGION";
|
|
21
18
|
export declare const ORDER_BLOCK = "ORDER_BLOCK";
|
|
22
|
-
export declare const UPDATE_CONTENT = "UPDATE_CONTENT";
|
|
23
19
|
interface SelectBlock {
|
|
24
20
|
type: typeof SELECT_BLOCK;
|
|
25
|
-
payload:
|
|
21
|
+
payload: EditorBlockId;
|
|
26
22
|
}
|
|
27
23
|
interface DeleteBlock {
|
|
28
24
|
type: typeof DELETE_BLOCK;
|
|
29
|
-
payload:
|
|
25
|
+
payload: EditorBlockId;
|
|
30
26
|
}
|
|
31
27
|
interface CopyBlock {
|
|
32
28
|
type: typeof COPY_BLOCK;
|
|
@@ -34,16 +30,12 @@ interface CopyBlock {
|
|
|
34
30
|
}
|
|
35
31
|
interface AddBlock {
|
|
36
32
|
type: typeof ADD_BLOCK;
|
|
37
|
-
payload:
|
|
33
|
+
payload: Block;
|
|
38
34
|
}
|
|
39
35
|
interface OrderBlock {
|
|
40
36
|
type: typeof ORDER_BLOCK;
|
|
41
37
|
payload: OrderBlockParams;
|
|
42
38
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
payload: PageContent;
|
|
46
|
-
}
|
|
47
|
-
export type EditorAction = SelectBlock | DeleteBlock | CopyBlock | AddBlock | OrderBlock | UpdateContent;
|
|
48
|
-
export declare const reducer: (state: EditorState, action: EditorAction) => EditorState;
|
|
39
|
+
export type EditorAction = SelectBlock | DeleteBlock | CopyBlock | AddBlock | OrderBlock;
|
|
40
|
+
export declare const getReducer: (headerBlockTypes: string[]) => (state: EditorState, action: EditorAction) => EditorState;
|
|
49
41
|
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const utils_1 = require("
|
|
3
|
+
exports.getReducer = exports.ORDER_BLOCK = exports.SET_REGION = exports.ADD_BLOCK = exports.COPY_BLOCK = exports.DELETE_BLOCK = exports.SELECT_BLOCK = void 0;
|
|
4
|
+
const utils_1 = require("../../utils");
|
|
5
|
+
const utils_2 = require("./utils");
|
|
5
6
|
// actions
|
|
6
7
|
exports.SELECT_BLOCK = 'SELECT_BLOCK';
|
|
7
8
|
exports.DELETE_BLOCK = 'DELETE_BLOCK';
|
|
@@ -9,34 +10,50 @@ exports.COPY_BLOCK = 'COPY_BLOCK';
|
|
|
9
10
|
exports.ADD_BLOCK = 'ADD_BLOCK';
|
|
10
11
|
exports.SET_REGION = 'SET_REGION';
|
|
11
12
|
exports.ORDER_BLOCK = 'ORDER_BLOCK';
|
|
12
|
-
exports.UPDATE_CONTENT = 'UPDATE_CONTENT';
|
|
13
13
|
// reducer
|
|
14
|
-
const
|
|
14
|
+
const getReducer = (headerBlockTypes) => (state, action) => {
|
|
15
15
|
const { content } = state;
|
|
16
|
-
const
|
|
16
|
+
const header = (0, utils_1.getHeaderBlock)(content.blocks, headerBlockTypes);
|
|
17
|
+
const orderedBlocks = (0, utils_1.getOrderedBlocks)(content.blocks, headerBlockTypes);
|
|
18
|
+
const withHeader = (blocks) => [header, ...blocks].filter(Boolean);
|
|
19
|
+
const getNewState = (blocks, activeBlockId) => (Object.assign(Object.assign({}, state), { content: Object.assign(Object.assign({}, content), { blocks }), activeBlockId, orderedBlocksCount: orderedBlocks.length }));
|
|
17
20
|
switch (action.type) {
|
|
18
|
-
case exports.UPDATE_CONTENT:
|
|
19
|
-
return Object.assign(Object.assign({}, state), { content: action.payload, errorBoundaryState: (0, utils_1.getErrorBoundaryState)(state.errorBoundaryState) });
|
|
20
21
|
case exports.SELECT_BLOCK:
|
|
21
|
-
return
|
|
22
|
+
return getNewState(content.blocks, action.payload);
|
|
22
23
|
case exports.DELETE_BLOCK: {
|
|
23
24
|
const blockId = action.payload;
|
|
24
|
-
return getNewState(
|
|
25
|
+
return getNewState(typeof blockId === 'string'
|
|
26
|
+
? content.blocks.filter(({ type }) => type !== blockId)
|
|
27
|
+
: withHeader(orderedBlocks.filter((_block, index) => index !== blockId)), -1);
|
|
25
28
|
}
|
|
26
29
|
case exports.COPY_BLOCK: {
|
|
27
30
|
const index = action.payload;
|
|
28
|
-
return getNewState((0,
|
|
31
|
+
return getNewState(withHeader((0, utils_2.duplicateBlock)(orderedBlocks, index)), index + 1);
|
|
29
32
|
}
|
|
30
33
|
case exports.ADD_BLOCK: {
|
|
31
|
-
|
|
32
|
-
|
|
34
|
+
let blocks;
|
|
35
|
+
let activeBlockId;
|
|
36
|
+
const block = action.payload;
|
|
37
|
+
if (headerBlockTypes.includes(block.type)) {
|
|
38
|
+
blocks = header ? blocks : [block, ...orderedBlocks];
|
|
39
|
+
activeBlockId = block.type;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
const newBlockIndex = (0, utils_2.getNewBlockIndex)(state.activeBlockId, orderedBlocks.length);
|
|
43
|
+
blocks = withHeader((0, utils_2.addBlock)(orderedBlocks, block, newBlockIndex));
|
|
44
|
+
activeBlockId = newBlockIndex;
|
|
45
|
+
}
|
|
46
|
+
if (blocks) {
|
|
47
|
+
return getNewState(blocks, activeBlockId);
|
|
48
|
+
}
|
|
49
|
+
return state;
|
|
33
50
|
}
|
|
34
51
|
case exports.ORDER_BLOCK: {
|
|
35
52
|
const { oldIndex, newIndex } = action.payload;
|
|
36
|
-
return getNewState((0,
|
|
53
|
+
return getNewState(withHeader((0, utils_2.changeBlocksOrder)(orderedBlocks, oldIndex, newIndex)), newIndex);
|
|
37
54
|
}
|
|
38
55
|
default:
|
|
39
56
|
return state;
|
|
40
57
|
}
|
|
41
58
|
};
|
|
42
|
-
exports.
|
|
59
|
+
exports.getReducer = getReducer;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.addEditorProps = exports.addBlock = exports.getNewBlockIndex = exports.duplicateBlock = exports.changeBlocksOrder = void 0;
|
|
4
4
|
const changeBlocksOrder = (array, oldIndex, newIndex) => {
|
|
5
5
|
const result = [...array];
|
|
6
6
|
const element = result.splice(oldIndex, 1)[0];
|
|
@@ -32,5 +32,3 @@ const addEditorProps = (content) => {
|
|
|
32
32
|
return Object.assign(Object.assign({}, content), { animated: false });
|
|
33
33
|
};
|
|
34
34
|
exports.addEditorProps = addEditorProps;
|
|
35
|
-
const getErrorBoundaryState = (prevState) => prevState === Number.MAX_SAFE_INTEGER ? 0 : prevState + 1;
|
|
36
|
-
exports.getErrorBoundaryState = getErrorBoundaryState;
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { PageConstructorProps } from '../../containers/PageConstructor';
|
|
3
|
-
import {
|
|
4
|
-
import { SchemaCustomConfig } from '../../schema';
|
|
5
|
-
import { EditBlockActions } from '../components/EditBlock/EditBlock';
|
|
3
|
+
import { BlockDecoratorProps, PageData } from '../../models';
|
|
6
4
|
export type EditorBlockId = number | string;
|
|
7
5
|
export interface EditorProps extends Required<Pick<PageConstructorProps, 'content'>>, Partial<Omit<PageConstructorProps, 'content'>> {
|
|
8
6
|
children: (props: Partial<PageConstructorProps>) => React.ReactNode;
|
|
9
|
-
onChange?: (data:
|
|
10
|
-
customSchema?: SchemaCustomConfig;
|
|
7
|
+
onChange?: (data: PageData) => void;
|
|
11
8
|
}
|
|
12
9
|
export interface EditBlockEditorProps {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
activeBlockId: EditorBlockId;
|
|
11
|
+
orderedBlocksCount: number;
|
|
12
|
+
onSelect: (index: EditorBlockId) => void;
|
|
13
|
+
onDelete: (index: EditorBlockId) => void;
|
|
14
|
+
onCopy: (index: number) => void;
|
|
15
|
+
onOrderChange: (index: number, newIndex: number) => void;
|
|
19
16
|
}
|
|
17
|
+
export type EditBlockProps = EditBlockEditorProps & BlockDecoratorProps;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BlockDecorator, CustomConfig } from '../../models';
|
|
2
2
|
export declare const formatBlockName: (name: string) => string;
|
|
3
|
-
export declare const addCustomDecorator: (
|
|
3
|
+
export declare const addCustomDecorator: (decorator: BlockDecorator, custom?: CustomConfig) => {
|
|
4
4
|
decorators: {
|
|
5
|
-
block: ((props:
|
|
5
|
+
block: ((props: import("../../models").BlockDecoratorProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>)[];
|
|
6
6
|
};
|
|
7
7
|
blocks?: import("../../models").CustomItems | undefined;
|
|
8
8
|
subBlocks?: import("../../models").CustomItems | undefined;
|
|
9
9
|
headers?: import("../../models").CustomItems | undefined;
|
|
10
10
|
loadable?: import("../../models").LoadableConfig | undefined;
|
|
11
11
|
};
|
|
12
|
-
export declare const getBlockId: ({ index, type }: BlockDecorationProps) => string;
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.addCustomDecorator = exports.formatBlockName = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
6
6
|
const formatBlockName = (name) => lodash_1.default.capitalize(name).replace(/(block|-)/g, ' ');
|
|
7
7
|
exports.formatBlockName = formatBlockName;
|
|
8
|
-
const addCustomDecorator = (
|
|
9
|
-
const
|
|
10
|
-
return Object.assign(Object.assign({}, custom), { decorators: Object.assign(Object.assign({},
|
|
8
|
+
const addCustomDecorator = (decorator, custom = {}) => {
|
|
9
|
+
const decorators = custom.decorators || {};
|
|
10
|
+
return Object.assign(Object.assign({}, custom), { decorators: Object.assign(Object.assign({}, decorators), { block: [...(decorators.block || []), decorator] }) });
|
|
11
11
|
};
|
|
12
12
|
exports.addCustomDecorator = addCustomDecorator;
|
|
13
|
-
const getBlockId = ({ index, type }) => `${type}${index === undefined ? '' : `-${index}`}`;
|
|
14
|
-
exports.getBlockId = getBlockId;
|
|
@@ -7,4 +7,4 @@ export interface GridColumnProps extends GridColumnClassParams, Refable<HTMLDivE
|
|
|
7
7
|
dataQa?: string;
|
|
8
8
|
children?: React.ReactNode;
|
|
9
9
|
}
|
|
10
|
-
export declare const Col: React.ForwardRefExoticComponent<Pick<WithChildren<GridColumnProps>, "style" | "children" | "className" | "
|
|
10
|
+
export declare const Col: React.ForwardRefExoticComponent<Pick<WithChildren<GridColumnProps>, "style" | "children" | "className" | "reset" | "visible" | "sizes" | "offsets" | "orders" | "hidden" | "alignSelf" | "justifyContent" | "dataQa"> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -30,7 +30,6 @@ export interface Childable {
|
|
|
30
30
|
children?: SubBlock[];
|
|
31
31
|
}
|
|
32
32
|
export interface BlockBaseProps {
|
|
33
|
-
type: BlockType;
|
|
34
33
|
index?: number;
|
|
35
34
|
anchor?: AnchorProps;
|
|
36
35
|
visible?: GridColumnSize;
|
|
@@ -245,18 +244,14 @@ export interface IconsBlockProps {
|
|
|
245
244
|
src: string;
|
|
246
245
|
}[];
|
|
247
246
|
}
|
|
248
|
-
interface
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
/**
|
|
257
|
-
* @deprecated Use params on top level instead
|
|
258
|
-
*/
|
|
259
|
-
properties?: ContentLayoutBlockParams;
|
|
247
|
+
export interface ContentLayoutBlockProps {
|
|
248
|
+
properties?: {
|
|
249
|
+
size?: ContentSize;
|
|
250
|
+
background?: BackgroundImageProps;
|
|
251
|
+
centered?: boolean;
|
|
252
|
+
theme?: ContentTheme;
|
|
253
|
+
textWidth?: ContentTextSize;
|
|
254
|
+
};
|
|
260
255
|
textContent: ContentBlockProps;
|
|
261
256
|
fileContent?: FileLinkProps[];
|
|
262
257
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
|
-
import { Animatable, Block,
|
|
2
|
+
import { Animatable, Block, BlockDecoratorProps, ConstructorItem, ThemedMediaProps, WithChildren } from './';
|
|
3
3
|
export interface PageData {
|
|
4
4
|
content: PageContent;
|
|
5
5
|
}
|
|
@@ -41,7 +41,7 @@ export interface CustomConfig {
|
|
|
41
41
|
headers?: CustomItems;
|
|
42
42
|
loadable?: LoadableConfig;
|
|
43
43
|
decorators?: {
|
|
44
|
-
block?: ((props:
|
|
44
|
+
block?: ((props: BlockDecoratorProps) => React.ReactElement)[];
|
|
45
45
|
};
|
|
46
46
|
}
|
|
47
47
|
export {};
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { PropsWithChildren } from 'react';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
export interface BlockDecorationProps extends PropsWithChildren {
|
|
3
|
+
id: string | number;
|
|
4
|
+
}
|
|
5
|
+
export interface BlockDecoratorProps extends PropsWithChildren {
|
|
6
|
+
id: string | number;
|
|
7
|
+
isHeader?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export type BlockDecorator = (props: BlockDecoratorProps) => React.ReactElement;
|
|
@@ -9,8 +9,6 @@ unpredictable css rules order in build */
|
|
|
9
9
|
align-items: center;
|
|
10
10
|
height: var(--header-height);
|
|
11
11
|
background-color: var(--yc-color-base-background);
|
|
12
|
-
}
|
|
13
|
-
.pc-header_with-border {
|
|
14
12
|
box-shadow: inset 0 -1px 0 var(--yc-color-line-generic);
|
|
15
13
|
}
|
|
16
14
|
.pc-header__wrapper {
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Header = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
-
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
7
6
|
const Control_1 = tslib_1.__importDefault(require("../../../components/Control/Control"));
|
|
8
7
|
const OutsideClick_1 = tslib_1.__importDefault(require("../../../components/OutsideClick/OutsideClick"));
|
|
9
8
|
const grid_1 = require("../../../grid");
|
|
@@ -31,10 +30,9 @@ const iconSizeKey = 'iconSize';
|
|
|
31
30
|
const isButtonItem = (item) => item.type === models_1.NavigationItemType.Button;
|
|
32
31
|
const isDropdownItem = (item) => item.type === models_1.NavigationItemType.Dropdown;
|
|
33
32
|
const Header = ({ data, logo }) => {
|
|
34
|
-
const { leftItems, rightItems, iconSize = 20
|
|
33
|
+
const { leftItems, rightItems, iconSize = 20 } = data;
|
|
35
34
|
const [isSidebarOpened, setIsSidebarOpened] = (0, react_1.useState)(false);
|
|
36
|
-
const [activeItemId,
|
|
37
|
-
const [showBorder, setShowBorder] = (0, react_1.useState)(withBorder);
|
|
35
|
+
const [activeItemId, setactiveItemId] = (0, react_1.useState)(undefined);
|
|
38
36
|
const getNavigationItemWithIconSize = (0, react_1.useCallback)((item) => {
|
|
39
37
|
const newItem = Object.assign({}, item);
|
|
40
38
|
if ('items' in newItem && isDropdownItem(newItem)) {
|
|
@@ -48,7 +46,7 @@ const Header = ({ data, logo }) => {
|
|
|
48
46
|
const leftItemsWithIconSize = (0, react_1.useMemo)(() => leftItems.map(getNavigationItemWithIconSize), [getNavigationItemWithIconSize, leftItems]);
|
|
49
47
|
const rightItemsWithIconSize = (0, react_1.useMemo)(() => rightItems === null || rightItems === void 0 ? void 0 : rightItems.map(getNavigationItemWithIconSize), [getNavigationItemWithIconSize, rightItems]);
|
|
50
48
|
const onActiveItemChange = (0, react_1.useCallback)((id) => {
|
|
51
|
-
|
|
49
|
+
setactiveItemId(id);
|
|
52
50
|
}, []);
|
|
53
51
|
const hidePopup = (0, react_1.useCallback)(() => {
|
|
54
52
|
onActiveItemChange();
|
|
@@ -59,16 +57,7 @@ const Header = ({ data, logo }) => {
|
|
|
59
57
|
const hideSidebar = (0, react_1.useCallback)(() => {
|
|
60
58
|
setIsSidebarOpened(false);
|
|
61
59
|
}, []);
|
|
62
|
-
(
|
|
63
|
-
const showBorderOnScroll = () => {
|
|
64
|
-
if (!showBorder) {
|
|
65
|
-
setShowBorder(window.scrollY > 0);
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
window.addEventListener('scroll', lodash_1.default.debounce(showBorderOnScroll, 20), { passive: true });
|
|
69
|
-
return () => window.removeEventListener('scroll', lodash_1.default.debounce(showBorderOnScroll, 20));
|
|
70
|
-
});
|
|
71
|
-
return (react_1.default.createElement(grid_1.Grid, { className: b({ 'with-border': showBorder }) },
|
|
60
|
+
return (react_1.default.createElement(grid_1.Grid, { className: b() },
|
|
72
61
|
react_1.default.createElement(grid_1.Row, null,
|
|
73
62
|
react_1.default.createElement(grid_1.Col, null,
|
|
74
63
|
react_1.default.createElement("header", { className: b('wrapper') },
|