strapi-plugin-comments 2.1.8 → 2.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/README.md +11 -3
- package/admin/src/components/Avatar/index.d.ts +3 -2
- package/admin/src/components/CommentReviewModal/index.d.ts +11 -0
- package/admin/src/components/CommentReviewModal/index.js +19 -0
- package/admin/src/components/ConfirmationDialog/index.d.ts +12 -10
- package/admin/src/components/ConfirmationDialog/index.js +3 -3
- package/admin/src/components/DiscussionStatus/index.d.ts +2 -1
- package/admin/src/components/DiscussionThread/index.d.ts +11 -5
- package/admin/src/components/DiscussionThread/index.js +3 -3
- package/admin/src/components/DiscussionThreadItem/index.d.ts +2 -7
- package/admin/src/components/DiscussionThreadItem/index.js +3 -12
- package/admin/src/components/DiscussionThreadItemActions/index.d.ts +10 -6
- package/admin/src/components/DiscussionThreadItemActions/index.js +75 -53
- package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.d.ts +9 -6
- package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.js +6 -9
- package/admin/src/components/DiscussionThreadItemFooter/index.d.ts +14 -7
- package/admin/src/components/DiscussionThreadItemFooter/index.js +3 -3
- package/admin/src/components/DiscussionThreadItemReviewAction/index.d.ts +14 -18
- package/admin/src/components/DiscussionThreadItemReviewAction/index.js +71 -52
- package/admin/src/components/FormSwitch/index.d.ts +2 -1
- package/admin/src/components/Hint/index.d.ts +14 -0
- package/admin/src/components/Hint/index.js +22 -0
- package/admin/src/components/LoadingIndicatorOverlay/index.d.ts +2 -1
- package/admin/src/components/ModeratorResponse/index.d.ts +8 -0
- package/admin/src/components/ModeratorResponse/index.js +108 -0
- package/admin/src/components/ModeratorResponse/styles.d.ts +2 -0
- package/admin/src/components/ModeratorResponse/styles.js +12 -0
- package/admin/src/components/ModeratorResponseModal/ModeratorResponseModal.d.ts +11 -0
- package/admin/src/components/ModeratorResponseModal/ModeratorResponseModal.js +98 -0
- package/admin/src/components/Nav/index.d.ts +2 -1
- package/admin/src/components/Nav/index.js +6 -9
- package/admin/src/components/PluginIcon/index.d.ts +2 -1
- package/admin/src/components/PluginIcon/index.js +2 -6
- package/admin/src/components/PreviewWysiwyg/Wrapper.d.ts +3 -0
- package/admin/src/components/PreviewWysiwyg/Wrapper.js +162 -0
- package/admin/src/components/PreviewWysiwyg/index.d.ts +7 -0
- package/admin/src/components/PreviewWysiwyg/index.js +39 -0
- package/admin/src/components/PreviewWysiwyg/utils/mdRenderer.d.ts +3 -0
- package/admin/src/components/PreviewWysiwyg/utils/mdRenderer.js +88 -0
- package/admin/src/components/PreviewWysiwyg/utils/satinizeHtml.d.ts +3 -0
- package/admin/src/components/PreviewWysiwyg/utils/satinizeHtml.js +18 -0
- package/admin/src/components/ReportsActions/components/BlockMenu/index.d.ts +16 -0
- package/admin/src/components/ReportsActions/components/BlockMenu/index.js +51 -0
- package/admin/src/components/ReportsActions/index.d.ts +12 -0
- package/admin/src/components/ReportsActions/index.js +31 -0
- package/admin/src/components/ReportsReviewModal/index.d.ts +14 -8
- package/admin/src/components/ReportsReviewTable/index.d.ts +13 -24
- package/admin/src/components/ReportsReviewTable/index.js +11 -24
- package/admin/src/components/StatusBadge/index.d.ts +2 -1
- package/admin/src/components/TableFilters/index.d.ts +12 -2
- package/admin/src/components/TableFilters/index.js +2 -2
- package/admin/src/components/TablePagination/index.d.ts +9 -2
- package/admin/src/components/Wysiwyg/Editor.d.ts +17 -0
- package/admin/src/components/Wysiwyg/Editor.js +84 -0
- package/admin/src/components/Wysiwyg/EditorLayout.d.ts +12 -0
- package/admin/src/components/Wysiwyg/EditorLayout.js +99 -0
- package/admin/src/components/Wysiwyg/EditorStylesContainer.d.ts +2 -0
- package/admin/src/components/Wysiwyg/EditorStylesContainer.js +348 -0
- package/admin/src/components/Wysiwyg/WysiwygFooter.d.ts +7 -0
- package/admin/src/components/Wysiwyg/WysiwygFooter.js +25 -0
- package/admin/src/components/Wysiwyg/WysiwygNav.d.ts +13 -0
- package/admin/src/components/Wysiwyg/WysiwygNav.js +118 -0
- package/admin/src/components/Wysiwyg/WysiwygStyles.d.ts +8 -0
- package/admin/src/components/Wysiwyg/WysiwygStyles.js +59 -0
- package/admin/src/components/Wysiwyg/index.d.ts +28 -0
- package/admin/src/components/Wysiwyg/index.js +136 -0
- package/admin/src/components/Wysiwyg/tests/index.test.d.ts +2 -0
- package/admin/src/components/Wysiwyg/tests/index.test.js +1633 -0
- package/admin/src/components/Wysiwyg/utils/continueList.d.ts +3 -0
- package/admin/src/components/Wysiwyg/utils/continueList.js +83 -0
- package/admin/src/components/Wysiwyg/utils/utils.d.ts +15 -0
- package/admin/src/components/Wysiwyg/utils/utils.js +249 -0
- package/admin/src/components/icons/comments.d.ts +2 -1
- package/admin/src/components/icons/index.d.ts +2 -5
- package/admin/src/components/icons/index.js +24 -12
- package/admin/src/components/icons/lock.d.ts +2 -1
- package/admin/src/components/icons/review.d.ts +2 -1
- package/admin/src/components/icons/strapiIcons.d.ts +24 -0
- package/admin/src/components/icons/strapiIcons.js +35 -0
- package/admin/src/components/icons/unlock.d.ts +2 -1
- package/admin/src/custom-fields/comments/components/icon.d.ts +3 -0
- package/admin/src/custom-fields/comments/components/icon.js +14 -0
- package/admin/src/custom-fields/comments/components/index.d.ts +3 -0
- package/admin/src/custom-fields/comments/components/index.js +19 -0
- package/admin/src/custom-fields/comments/components/input/index.d.ts +3 -0
- package/admin/src/custom-fields/comments/components/input/index.js +5 -0
- package/admin/src/custom-fields/comments/components/input/input.d.ts +4 -0
- package/admin/src/custom-fields/comments/components/input/input.js +102 -0
- package/admin/src/custom-fields/comments/components/input/types.d.ts +10 -0
- package/admin/src/custom-fields/comments/components/input/types.js +3 -0
- package/admin/src/custom-fields/comments/components/input/utils.d.ts +35 -0
- package/admin/src/custom-fields/comments/components/input/utils.js +146 -0
- package/admin/src/custom-fields/comments/index.d.ts +3 -0
- package/admin/src/custom-fields/comments/index.js +53 -0
- package/admin/src/custom-fields/index.d.ts +3 -0
- package/admin/src/custom-fields/index.js +13 -0
- package/admin/src/hooks/useConfig.d.ts +4 -4
- package/admin/src/hooks/useConfig.js +3 -6
- package/admin/src/hooks/useReportsActionsHandlers.d.ts +19 -0
- package/admin/src/hooks/useReportsActionsHandlers.js +70 -0
- package/admin/src/index.d.ts +2 -1
- package/admin/src/index.js +4 -2
- package/admin/src/pages/App/index.js +8 -7
- package/admin/src/pages/App/reducer/index.d.ts +1 -1
- package/admin/src/pages/ComingSoonPage/index.d.ts +2 -1
- package/admin/src/pages/ComingSoonPage/index.js +2 -2
- package/admin/src/pages/Details/components/DetailsEntity/index.d.ts +8 -6
- package/admin/src/pages/Details/components/DetailsFilters/index.d.ts +5 -3
- package/admin/src/pages/Details/index.js +10 -7
- package/admin/src/pages/Discover/components/DiscoverTableRow/index.d.ts +11 -5
- package/admin/src/pages/Discover/components/DiscoverTableRow/index.js +7 -81
- package/admin/src/pages/Discover/index.js +14 -13
- package/admin/src/pages/NoAccessPage/index.d.ts +4 -0
- package/admin/src/pages/NoAccessPage/index.js +31 -0
- package/admin/src/pages/Reports/components/ReportsTableRow/index.d.ts +16 -0
- package/admin/src/pages/Reports/components/ReportsTableRow/index.js +91 -0
- package/admin/src/pages/Reports/components/ReportsTableRow/styles.d.ts +2 -0
- package/admin/src/pages/Reports/components/ReportsTableRow/styles.js +14 -0
- package/admin/src/pages/Reports/index.d.ts +4 -0
- package/admin/src/pages/Reports/index.js +196 -0
- package/admin/src/pages/Reports/utils/api.d.ts +2 -0
- package/admin/src/pages/Reports/utils/api.js +16 -0
- package/admin/src/pages/Reports/utils/filtersSchema.d.ts +11 -0
- package/admin/src/pages/Reports/utils/filtersSchema.js +11 -0
- package/admin/src/pages/Settings/index.d.ts +2 -1
- package/admin/src/pages/Settings/index.js +6 -7
- package/admin/src/pages/utils/api.d.ts +17 -10
- package/admin/src/pages/utils/api.js +25 -2
- package/admin/src/reducers.d.ts +1 -1
- package/admin/src/translations/en.json +49 -1
- package/admin/src/utils/axiosInstance.d.ts +1 -1
- package/admin/src/utils/constants.d.ts +9 -5
- package/admin/src/utils/constants.js +5 -3
- package/admin/src/utils/errors.d.ts +5 -0
- package/admin/src/utils/errors.js +10 -0
- package/admin/src/utils/functions.d.ts +2 -0
- package/admin/src/utils/functions.js +11 -0
- package/admin/src/utils/getMessage.d.ts +1 -1
- package/admin/src/utils/getMessage.js +1 -1
- package/admin/src/utils/getRelatedGroups.d.ts +6 -2
- package/admin/src/utils/handleAPIError.d.ts +1 -1
- package/admin/src/utils/index.d.ts +16 -11
- package/admin/src/utils/index.js +12 -1
- package/admin/src/utils/resolveCommentStatus.d.ts +8 -2
- package/admin/src/utils/resolveReportStatus.d.ts +4 -0
- package/admin/src/utils/resolveReportStatus.js +23 -0
- package/admin/src/utils/resolveReportStatusColor.d.ts +4 -0
- package/admin/src/utils/resolveReportStatusColor.js +17 -0
- package/package.json +6 -3
- package/server/controllers/admin.js +67 -2
- package/server/index.d.ts +1 -1
- package/server/register/custom-fields/comments.d.ts +6 -0
- package/server/register/custom-fields/comments.js +9 -0
- package/server/register/custom-fields/index.d.ts +3 -0
- package/server/register/custom-fields/index.js +14 -0
- package/server/register/index.d.ts +4 -0
- package/server/register/index.js +8 -0
- package/server/routes/admin.js +56 -0
- package/server/services/admin.d.ts +1 -1
- package/server/services/admin.js +196 -10
- package/server/utils/error.js +1 -1
- package/strapi-server.d.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/types/utils.d.ts +5 -0
- package/types/utils.js +10 -0
- package/server/register.d.ts +0 -3
- package/server/register.js +0 -4
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const react_1 = __importStar(require("react"));
|
|
30
|
+
const react_intl_1 = require("react-intl");
|
|
31
|
+
const FocusTrap_1 = require("@strapi/design-system/FocusTrap");
|
|
32
|
+
const Box_1 = require("@strapi/design-system/Box");
|
|
33
|
+
const Button_1 = require("@strapi/design-system/Button");
|
|
34
|
+
const IconButton_1 = require("@strapi/design-system/IconButton");
|
|
35
|
+
const Select_1 = require("@strapi/design-system/Select");
|
|
36
|
+
const Popover_1 = require("@strapi/design-system/Popover");
|
|
37
|
+
const Flex_1 = require("@strapi/design-system/Flex");
|
|
38
|
+
const Bold_1 = __importDefault(require("@strapi/icons/Bold"));
|
|
39
|
+
const Italic_1 = __importDefault(require("@strapi/icons/Italic"));
|
|
40
|
+
const Underline_1 = __importDefault(require("@strapi/icons/Underline"));
|
|
41
|
+
const StrikeThrough_1 = __importDefault(require("@strapi/icons/StrikeThrough"));
|
|
42
|
+
const BulletList_1 = __importDefault(require("@strapi/icons/BulletList"));
|
|
43
|
+
const NumberList_1 = __importDefault(require("@strapi/icons/NumberList"));
|
|
44
|
+
const Code_1 = __importDefault(require("@strapi/icons/Code"));
|
|
45
|
+
const Picture_1 = __importDefault(require("@strapi/icons/Picture"));
|
|
46
|
+
const Link_1 = __importDefault(require("@strapi/icons/Link"));
|
|
47
|
+
const Quote_1 = __importDefault(require("@strapi/icons/Quote"));
|
|
48
|
+
const More_1 = __importDefault(require("@strapi/icons/More"));
|
|
49
|
+
const WysiwygStyles_1 = require("./WysiwygStyles");
|
|
50
|
+
const WysiwygNav = ({ disabled, editorRef, isExpandMode, isPreviewMode, onActionClick, onToggleMediaLib, onTogglePreviewMode, }) => {
|
|
51
|
+
const [visiblePopover, setVisiblePopover] = (0, react_1.useState)(false);
|
|
52
|
+
const { formatMessage } = (0, react_intl_1.useIntl)();
|
|
53
|
+
const selectPlaceholder = formatMessage({
|
|
54
|
+
id: 'components.Wysiwyg.selectOptions.title',
|
|
55
|
+
defaultMessage: 'Add a title',
|
|
56
|
+
});
|
|
57
|
+
const buttonMoreRef = (0, react_1.useRef)();
|
|
58
|
+
const handleTogglePopover = () => {
|
|
59
|
+
setVisiblePopover(prev => !prev);
|
|
60
|
+
};
|
|
61
|
+
if (disabled || isPreviewMode) {
|
|
62
|
+
return (react_1.default.createElement(Box_1.Box, { padding: 2, background: "neutral100" },
|
|
63
|
+
react_1.default.createElement(Flex_1.Flex, { justifyContent: "space-between" },
|
|
64
|
+
react_1.default.createElement(Flex_1.Flex, null,
|
|
65
|
+
react_1.default.createElement(Select_1.Select, { disabled: true, id: "selectTitle", placeholder: selectPlaceholder, size: "S", "aria-label": selectPlaceholder },
|
|
66
|
+
react_1.default.createElement(Select_1.Option, { value: "h1" }, "h1"),
|
|
67
|
+
react_1.default.createElement(Select_1.Option, { value: "h2" }, "h2"),
|
|
68
|
+
react_1.default.createElement(Select_1.Option, { value: "h3" }, "h3"),
|
|
69
|
+
react_1.default.createElement(Select_1.Option, { value: "h4" }, "h4"),
|
|
70
|
+
react_1.default.createElement(Select_1.Option, { value: "h5" }, "h5"),
|
|
71
|
+
react_1.default.createElement(Select_1.Option, { value: "h6" }, "h6")),
|
|
72
|
+
react_1.default.createElement(WysiwygStyles_1.MainButtons, null,
|
|
73
|
+
react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { disabled: true, id: "Bold", label: "Bold", name: "Bold", icon: react_1.default.createElement(Bold_1.default, null) }),
|
|
74
|
+
react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { disabled: true, id: "Italic", label: "Italic", name: "Italic", icon: react_1.default.createElement(Italic_1.default, null) }),
|
|
75
|
+
react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { disabled: true, id: "Underline", label: "Underline", name: "Underline", icon: react_1.default.createElement(Underline_1.default, null) })),
|
|
76
|
+
react_1.default.createElement(WysiwygStyles_1.MoreButton, { disabled: true, id: "more", label: "More", icon: react_1.default.createElement(More_1.default, null) })),
|
|
77
|
+
!isExpandMode && (react_1.default.createElement(Button_1.Button, { onClick: onTogglePreviewMode, variant: "tertiary", id: "preview" }, formatMessage({
|
|
78
|
+
id: 'components.Wysiwyg.ToggleMode.markdown-mode',
|
|
79
|
+
defaultMessage: 'Markdown mode',
|
|
80
|
+
}))))));
|
|
81
|
+
}
|
|
82
|
+
return (react_1.default.createElement(Box_1.Box, { padding: 2, background: "neutral100" },
|
|
83
|
+
react_1.default.createElement(Flex_1.Flex, { justifyContent: "space-between" },
|
|
84
|
+
react_1.default.createElement(Flex_1.Flex, null,
|
|
85
|
+
react_1.default.createElement(Select_1.Select, { id: "selectTitle", placeholder: selectPlaceholder, size: "S", onChange: (value) => onActionClick(value, editorRef) },
|
|
86
|
+
react_1.default.createElement(Select_1.Option, { value: "h1" }, "h1"),
|
|
87
|
+
react_1.default.createElement(Select_1.Option, { value: "h2" }, "h2"),
|
|
88
|
+
react_1.default.createElement(Select_1.Option, { value: "h3" }, "h3"),
|
|
89
|
+
react_1.default.createElement(Select_1.Option, { value: "h4" }, "h4"),
|
|
90
|
+
react_1.default.createElement(Select_1.Option, { value: "h5" }, "h5"),
|
|
91
|
+
react_1.default.createElement(Select_1.Option, { value: "h6" }, "h6")),
|
|
92
|
+
react_1.default.createElement(WysiwygStyles_1.MainButtons, null,
|
|
93
|
+
react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('Bold', editorRef), id: "Bold", label: "Bold", name: "Bold", icon: react_1.default.createElement(Bold_1.default, null) }),
|
|
94
|
+
react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('Italic', editorRef), id: "Italic", label: "Italic", name: "Italic", icon: react_1.default.createElement(Italic_1.default, null) }),
|
|
95
|
+
react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('Underline', editorRef), id: "Underline", label: "Underline", name: "Underline", icon: react_1.default.createElement(Underline_1.default, null) })),
|
|
96
|
+
react_1.default.createElement(WysiwygStyles_1.MoreButton, { ref: buttonMoreRef, onClick: handleTogglePopover, id: "more", label: "More", icon: react_1.default.createElement(More_1.default, null) }),
|
|
97
|
+
visiblePopover && (react_1.default.createElement(Popover_1.Popover, { centered: true, source: buttonMoreRef, spacing: 4, id: "popover" },
|
|
98
|
+
react_1.default.createElement(FocusTrap_1.FocusTrap, { onEscape: handleTogglePopover, restoreFocus: false },
|
|
99
|
+
react_1.default.createElement(Flex_1.Flex, null,
|
|
100
|
+
react_1.default.createElement(WysiwygStyles_1.IconButtonGroupMargin, null,
|
|
101
|
+
react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('Strikethrough', editorRef, handleTogglePopover), id: "Strikethrough", label: "Strikethrough", name: "Strikethrough", icon: react_1.default.createElement(StrikeThrough_1.default, null) }),
|
|
102
|
+
react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('BulletList', editorRef, handleTogglePopover), id: "BulletList", label: "BulletList", name: "BulletList", icon: react_1.default.createElement(BulletList_1.default, null) }),
|
|
103
|
+
react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('NumberList', editorRef, handleTogglePopover), id: "NumberList", label: "NumberList", name: "NumberList", icon: react_1.default.createElement(NumberList_1.default, null) })),
|
|
104
|
+
react_1.default.createElement(IconButton_1.IconButtonGroup, null,
|
|
105
|
+
react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('Code', editorRef, handleTogglePopover), id: "Code", label: "Code", name: "Code", icon: react_1.default.createElement(Code_1.default, null) }),
|
|
106
|
+
react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => {
|
|
107
|
+
handleTogglePopover();
|
|
108
|
+
onToggleMediaLib();
|
|
109
|
+
}, id: "Image", label: "Image", name: "Image", icon: react_1.default.createElement(Picture_1.default, null) }),
|
|
110
|
+
react_1.default.createElement(WysiwygStyles_1.CustomLinkIconButton, { onClick: () => onActionClick('Link', editorRef, handleTogglePopover), id: "Link", label: "Link", name: "Link", icon: react_1.default.createElement(Link_1.default, null) }),
|
|
111
|
+
react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('Quote', editorRef, handleTogglePopover), id: "Quote", label: "Quote", name: "Quote", icon: react_1.default.createElement(Quote_1.default, null) }))))))),
|
|
112
|
+
onTogglePreviewMode && (react_1.default.createElement(Button_1.Button, { onClick: onTogglePreviewMode, variant: "tertiary", id: "preview" }, formatMessage({
|
|
113
|
+
id: 'components.Wysiwyg.ToggleMode.preview-mode',
|
|
114
|
+
defaultMessage: 'Preview mode',
|
|
115
|
+
}))))));
|
|
116
|
+
};
|
|
117
|
+
exports.default = WysiwygNav;
|
|
118
|
+
//# sourceMappingURL=WysiwygNav.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const CustomIconButton: any;
|
|
2
|
+
export declare const CustomLinkIconButton: any;
|
|
3
|
+
export declare const MainButtons: any;
|
|
4
|
+
export declare const MoreButton: any;
|
|
5
|
+
export declare const IconButtonGroupMargin: any;
|
|
6
|
+
export declare const EditorAndPreviewWrapper: any;
|
|
7
|
+
export declare const ExpandButton: any;
|
|
8
|
+
//# sourceMappingURL=WysiwygStyles.d.ts.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ExpandButton = exports.EditorAndPreviewWrapper = exports.IconButtonGroupMargin = exports.MoreButton = exports.MainButtons = exports.CustomLinkIconButton = exports.CustomIconButton = void 0;
|
|
7
|
+
const styled_components_1 = __importDefault(require("styled-components"));
|
|
8
|
+
const IconButton_1 = require("@strapi/design-system/IconButton");
|
|
9
|
+
const BaseButton_1 = require("@strapi/design-system/BaseButton");
|
|
10
|
+
exports.CustomIconButton = (0, styled_components_1.default)(IconButton_1.IconButton) `
|
|
11
|
+
padding: ${({ theme }) => theme.spaces[2]};
|
|
12
|
+
/* Trick to prevent the outline from overflowing because of the general outline-offset */
|
|
13
|
+
outline-offset: -2px !important;
|
|
14
|
+
|
|
15
|
+
svg {
|
|
16
|
+
width: ${18 / 16}rem;
|
|
17
|
+
height: ${18 / 16}rem;
|
|
18
|
+
}
|
|
19
|
+
`;
|
|
20
|
+
exports.CustomLinkIconButton = (0, styled_components_1.default)(exports.CustomIconButton) `
|
|
21
|
+
svg {
|
|
22
|
+
width: ${8 / 16}rem;
|
|
23
|
+
height: ${8 / 16}rem;
|
|
24
|
+
}
|
|
25
|
+
`;
|
|
26
|
+
exports.MainButtons = (0, styled_components_1.default)(IconButton_1.IconButtonGroup) `
|
|
27
|
+
margin-left: ${({ theme }) => theme.spaces[4]};
|
|
28
|
+
`;
|
|
29
|
+
exports.MoreButton = (0, styled_components_1.default)(IconButton_1.IconButton) `
|
|
30
|
+
margin: ${({ theme }) => `0 ${theme.spaces[2]}`};
|
|
31
|
+
padding: ${({ theme }) => theme.spaces[2]};
|
|
32
|
+
|
|
33
|
+
svg {
|
|
34
|
+
width: ${18 / 16}rem;
|
|
35
|
+
height: ${18 / 16}rem;
|
|
36
|
+
}
|
|
37
|
+
`;
|
|
38
|
+
exports.IconButtonGroupMargin = (0, styled_components_1.default)(IconButton_1.IconButtonGroup) `
|
|
39
|
+
margin-right: ${({ theme }) => `${theme.spaces[2]}`};
|
|
40
|
+
`;
|
|
41
|
+
exports.EditorAndPreviewWrapper = styled_components_1.default.div `
|
|
42
|
+
position: relative;
|
|
43
|
+
height: calc(100% - 48px);
|
|
44
|
+
`;
|
|
45
|
+
exports.ExpandButton = (0, styled_components_1.default)(BaseButton_1.BaseButton) `
|
|
46
|
+
background-color: transparent;
|
|
47
|
+
border: none;
|
|
48
|
+
align-items: center;
|
|
49
|
+
|
|
50
|
+
svg {
|
|
51
|
+
margin-left: ${({ theme }) => `${theme.spaces[2]}`};
|
|
52
|
+
path {
|
|
53
|
+
fill: ${({ theme }) => theme.colors.neutral700};
|
|
54
|
+
width: ${12 / 16}rem;
|
|
55
|
+
height: ${12 / 16}rem;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
`;
|
|
59
|
+
//# sourceMappingURL=WysiwygStyles.js.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare type WysiwygProps = {
|
|
3
|
+
description?: {
|
|
4
|
+
id: string;
|
|
5
|
+
defaultMessage: string;
|
|
6
|
+
values: {};
|
|
7
|
+
};
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
error?: string;
|
|
10
|
+
intlLabel: {
|
|
11
|
+
id: string;
|
|
12
|
+
defaultMessage: string;
|
|
13
|
+
values: {};
|
|
14
|
+
};
|
|
15
|
+
labelAction?: JSX.Element;
|
|
16
|
+
name: string;
|
|
17
|
+
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
18
|
+
placeholder?: {
|
|
19
|
+
id: string;
|
|
20
|
+
defaultMessage: string;
|
|
21
|
+
values: {};
|
|
22
|
+
};
|
|
23
|
+
required?: boolean;
|
|
24
|
+
value: string;
|
|
25
|
+
};
|
|
26
|
+
declare const Wysiwyg: React.FC<WysiwygProps>;
|
|
27
|
+
export default Wysiwyg;
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const react_1 = __importStar(require("react"));
|
|
30
|
+
const styled_components_1 = __importDefault(require("styled-components"));
|
|
31
|
+
const react_intl_1 = require("react-intl");
|
|
32
|
+
const Typography_1 = require("@strapi/design-system/Typography");
|
|
33
|
+
const Box_1 = require("@strapi/design-system/Box");
|
|
34
|
+
const Stack_1 = require("@strapi/design-system/Stack");
|
|
35
|
+
const helper_plugin_1 = require("@strapi/helper-plugin");
|
|
36
|
+
const Editor_1 = __importDefault(require("./Editor"));
|
|
37
|
+
const WysiwygNav_1 = __importDefault(require("./WysiwygNav"));
|
|
38
|
+
const WysiwygFooter_1 = __importDefault(require("./WysiwygFooter"));
|
|
39
|
+
const Hint_1 = __importDefault(require("../Hint"));
|
|
40
|
+
const utils_1 = require("./utils/utils");
|
|
41
|
+
const EditorLayout_1 = require("./EditorLayout");
|
|
42
|
+
const LabelAction = (0, styled_components_1.default)(Box_1.Box) `
|
|
43
|
+
svg path {
|
|
44
|
+
fill: ${({ theme }) => theme.colors.neutral500};
|
|
45
|
+
}
|
|
46
|
+
`;
|
|
47
|
+
const TypographyAsterisk = (0, styled_components_1.default)(Typography_1.Typography) `
|
|
48
|
+
line-height: 0;
|
|
49
|
+
`;
|
|
50
|
+
const Wysiwyg = ({ description, disabled, error, intlLabel, labelAction, name, onChange, placeholder, value, required, }) => {
|
|
51
|
+
const { formatMessage } = (0, react_intl_1.useIntl)();
|
|
52
|
+
const textareaRef = (0, react_1.useRef)(null);
|
|
53
|
+
const editorRef = (0, react_1.useRef)(null);
|
|
54
|
+
const [isPreviewMode, setIsPreviewMode] = (0, react_1.useState)(false);
|
|
55
|
+
const [mediaLibVisible, setMediaLibVisible] = (0, react_1.useState)(false);
|
|
56
|
+
const [isExpandMode, setIsExpandMode] = (0, react_1.useState)(false);
|
|
57
|
+
const { components } = (0, helper_plugin_1.useLibrary)();
|
|
58
|
+
const MediaLibraryDialog = components['media-library'];
|
|
59
|
+
const handleToggleMediaLib = () => setMediaLibVisible(prev => !prev);
|
|
60
|
+
const handleTogglePreviewMode = () => setIsPreviewMode(prev => !prev);
|
|
61
|
+
const handleToggleExpand = () => {
|
|
62
|
+
setIsPreviewMode(false);
|
|
63
|
+
setIsExpandMode(prev => !prev);
|
|
64
|
+
};
|
|
65
|
+
const handleActionClick = (value, currentEditorRef, togglePopover) => {
|
|
66
|
+
switch (value) {
|
|
67
|
+
case 'Link':
|
|
68
|
+
case 'Strikethrough': {
|
|
69
|
+
(0, utils_1.markdownHandler)(currentEditorRef, value);
|
|
70
|
+
togglePopover();
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
case 'Code':
|
|
74
|
+
case 'Quote': {
|
|
75
|
+
(0, utils_1.quoteAndCodeHandler)(currentEditorRef, value);
|
|
76
|
+
togglePopover();
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
case 'Bold':
|
|
80
|
+
case 'Italic':
|
|
81
|
+
case 'Underline': {
|
|
82
|
+
(0, utils_1.markdownHandler)(currentEditorRef, value);
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
case 'BulletList':
|
|
86
|
+
case 'NumberList': {
|
|
87
|
+
(0, utils_1.listHandler)(currentEditorRef, value);
|
|
88
|
+
togglePopover();
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
case 'h1':
|
|
92
|
+
case 'h2':
|
|
93
|
+
case 'h3':
|
|
94
|
+
case 'h4':
|
|
95
|
+
case 'h5':
|
|
96
|
+
case 'h6': {
|
|
97
|
+
(0, utils_1.titleHandler)(currentEditorRef, value);
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
default: {
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
const handleSelectAssets = (files) => {
|
|
105
|
+
const formattedFiles = files.map((f) => ({
|
|
106
|
+
alt: f.alternativeText || f.name,
|
|
107
|
+
url: (0, helper_plugin_1.prefixFileUrlWithBackendUrl)(f.url),
|
|
108
|
+
mime: f.mime,
|
|
109
|
+
}));
|
|
110
|
+
(0, utils_1.insertFile)(editorRef, formattedFiles);
|
|
111
|
+
setMediaLibVisible(false);
|
|
112
|
+
};
|
|
113
|
+
const formattedPlaceholder = placeholder
|
|
114
|
+
? formatMessage({ id: placeholder.id, defaultMessage: placeholder.defaultMessage }, { ...placeholder.values })
|
|
115
|
+
: '';
|
|
116
|
+
const label = intlLabel.id
|
|
117
|
+
? formatMessage({ id: intlLabel.id, defaultMessage: intlLabel.defaultMessage }, { ...intlLabel.values })
|
|
118
|
+
: name;
|
|
119
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
120
|
+
react_1.default.createElement(Stack_1.Stack, { spacing: 1 },
|
|
121
|
+
react_1.default.createElement(Stack_1.Stack, { horizontal: true, spacing: 1 },
|
|
122
|
+
react_1.default.createElement(Typography_1.Typography, { variant: "pi", fontWeight: "bold", textColor: "neutral800" },
|
|
123
|
+
label,
|
|
124
|
+
required && react_1.default.createElement(TypographyAsterisk, { textColor: "danger600" }, "*")),
|
|
125
|
+
labelAction && react_1.default.createElement(LabelAction, { paddingLeft: 1 }, labelAction)),
|
|
126
|
+
react_1.default.createElement(EditorLayout_1.EditorLayout, { isExpandMode: isExpandMode, error: error, previewContent: value, onCollapse: handleToggleExpand },
|
|
127
|
+
react_1.default.createElement(WysiwygNav_1.default, { isExpandMode: isExpandMode, editorRef: editorRef, isPreviewMode: isPreviewMode, onActionClick: handleActionClick, onToggleMediaLib: handleToggleMediaLib, onTogglePreviewMode: isExpandMode ? undefined : handleTogglePreviewMode, disabled: disabled }),
|
|
128
|
+
react_1.default.createElement(Editor_1.default, { disabled: disabled, isExpandMode: isExpandMode, editorRef: editorRef, error: error, isPreviewMode: isPreviewMode, name: name, onChange: onChange, placeholder: formattedPlaceholder, textareaRef: textareaRef, value: value }),
|
|
129
|
+
!isExpandMode && react_1.default.createElement(WysiwygFooter_1.default, { onToggleExpand: handleToggleExpand })),
|
|
130
|
+
react_1.default.createElement(Hint_1.default, { description: description, name: name, error: error, id: name })),
|
|
131
|
+
error && (react_1.default.createElement(Box_1.Box, { paddingTop: 1 },
|
|
132
|
+
react_1.default.createElement(Typography_1.Typography, { variant: "pi", textColor: "danger600", "data-strapi-field-error": true }, error))),
|
|
133
|
+
mediaLibVisible && (react_1.default.createElement(MediaLibraryDialog, { onClose: handleToggleMediaLib, onSelectAssets: handleSelectAssets }))));
|
|
134
|
+
};
|
|
135
|
+
exports.default = Wysiwyg;
|
|
136
|
+
//# sourceMappingURL=index.js.map
|