@dhis2/analytics 26.6.14 → 26.7.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/components/AboutAOUnit/AboutAOUnit.js +5 -3
- package/build/cjs/components/Interpretations/InterpretationModal/CommentAddForm.js +5 -4
- package/build/cjs/components/Interpretations/InterpretationModal/CommentUpdateForm.js +4 -3
- package/build/cjs/components/Interpretations/InterpretationsUnit/InterpretationForm.js +5 -4
- package/build/cjs/components/Interpretations/common/Interpretation/InterpretationUpdateForm.js +5 -4
- package/build/cjs/components/Interpretations/common/Message/Message.js +2 -2
- package/build/cjs/components/Interpretations/common/Message/MessageEditorContainer.js +5 -5
- package/build/cjs/components/Interpretations/common/index.js +0 -11
- package/build/cjs/components/{Interpretations/common/RichTextEditor/RichTextEditor.js → RichText/Editor/Editor.js} +76 -53
- package/build/cjs/components/RichText/Editor/__tests__/Editor.spec.js +38 -0
- package/build/cjs/components/RichText/Editor/__tests__/convertCtrlKey.spec.js +204 -0
- package/build/cjs/components/{Interpretations/common/RichTextEditor → RichText/Editor}/markdownHandler.js +12 -6
- package/build/cjs/components/{Interpretations/common/RichTextEditor/styles/RichTextEditor.style.js → RichText/Editor/styles/Editor.style.js} +2 -2
- package/build/cjs/components/RichText/Parser/MdParser.js +106 -0
- package/build/cjs/components/RichText/Parser/Parser.js +35 -0
- package/build/cjs/components/RichText/Parser/__tests__/MdParser.spec.js +42 -0
- package/build/cjs/components/RichText/Parser/__tests__/Parser.spec.js +41 -0
- package/build/cjs/components/RichText/index.js +26 -0
- package/build/cjs/components/{Interpretations/common/UserMention → UserMention}/UserMentionWrapper.js +19 -9
- package/build/cjs/components/{Interpretations/common/UserMention → UserMention}/styles/UserMentionWrapper.style.js +2 -2
- package/build/cjs/components/{Interpretations/common/UserMention → UserMention}/useUserSearchResults.js +2 -2
- package/build/cjs/index.js +58 -46
- package/build/cjs/locales/en/translations.json +11 -11
- package/build/es/components/AboutAOUnit/AboutAOUnit.js +5 -3
- package/build/es/components/Interpretations/InterpretationModal/CommentAddForm.js +2 -1
- package/build/es/components/Interpretations/InterpretationModal/CommentUpdateForm.js +2 -1
- package/build/es/components/Interpretations/InterpretationsUnit/InterpretationForm.js +3 -2
- package/build/es/components/Interpretations/common/Interpretation/InterpretationUpdateForm.js +2 -1
- package/build/es/components/Interpretations/common/Message/Message.js +1 -1
- package/build/es/components/Interpretations/common/Message/MessageEditorContainer.js +5 -5
- package/build/es/components/Interpretations/common/index.js +0 -1
- package/build/es/components/{Interpretations/common/RichTextEditor/RichTextEditor.js → RichText/Editor/Editor.js} +51 -28
- package/build/es/components/RichText/Editor/__tests__/Editor.spec.js +35 -0
- package/build/es/components/RichText/Editor/__tests__/convertCtrlKey.spec.js +202 -0
- package/build/es/components/{Interpretations/common/RichTextEditor → RichText/Editor}/markdownHandler.js +12 -6
- package/build/es/components/{Interpretations/common/RichTextEditor/styles/RichTextEditor.style.js → RichText/Editor/styles/Editor.style.js} +2 -2
- package/build/es/components/RichText/Parser/MdParser.js +98 -0
- package/build/es/components/RichText/Parser/Parser.js +25 -0
- package/build/es/components/RichText/Parser/__tests__/MdParser.spec.js +40 -0
- package/build/es/components/RichText/Parser/__tests__/Parser.spec.js +38 -0
- package/build/es/components/RichText/index.js +3 -0
- package/build/es/components/{Interpretations/common/UserMention → UserMention}/UserMentionWrapper.js +19 -8
- package/build/es/components/UserMention/styles/UserMentionWrapper.style.js +16 -0
- package/build/es/components/{Interpretations/common/UserMention → UserMention}/useUserSearchResults.js +2 -2
- package/build/es/index.js +1 -0
- package/build/es/locales/en/translations.json +11 -11
- package/package.json +2 -2
- package/build/cjs/components/Interpretations/common/RichTextEditor/index.js +0 -12
- package/build/es/components/Interpretations/common/RichTextEditor/index.js +0 -1
- package/build/es/components/Interpretations/common/UserMention/styles/UserMentionWrapper.style.js +0 -16
- /package/build/cjs/components/{Interpretations/common/UserMention → UserMention}/UserList.js +0 -0
- /package/build/es/components/{Interpretations/common/UserMention → UserMention}/UserList.js +0 -0
|
@@ -7,13 +7,13 @@ exports.default = void 0;
|
|
|
7
7
|
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
|
8
8
|
var _appRuntime = require("@dhis2/app-runtime");
|
|
9
9
|
var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n"));
|
|
10
|
-
var _d2UiRichText = require("@dhis2/d2-ui-rich-text");
|
|
11
10
|
var _ui = require("@dhis2/ui");
|
|
12
11
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
12
|
var _moment = _interopRequireDefault(require("moment"));
|
|
14
13
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
14
|
var _react = _interopRequireWildcard(require("react"));
|
|
16
15
|
var _list = require("../../modules/list.js");
|
|
16
|
+
var _index = require("../RichText/index.js");
|
|
17
17
|
var _AboutAOUnitStyle = _interopRequireDefault(require("./styles/AboutAOUnit.style.js"));
|
|
18
18
|
var _utils = require("./utils.js");
|
|
19
19
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -154,12 +154,14 @@ const AboutAOUnit = /*#__PURE__*/(0, _react.forwardRef)((_ref3, ref) => {
|
|
|
154
154
|
small: true
|
|
155
155
|
})), data && /*#__PURE__*/_react.default.createElement("div", {
|
|
156
156
|
className: `jsx-${_AboutAOUnitStyle.default.__hash}` + " " + "content"
|
|
157
|
-
}, /*#__PURE__*/_react.default.createElement("
|
|
157
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
158
158
|
className: `jsx-${_AboutAOUnitStyle.default.__hash}` + " " + ((0, _classnames.default)('detailLine', {
|
|
159
159
|
description: true,
|
|
160
160
|
noDescription: !data.ao.displayDescription
|
|
161
161
|
}) || "")
|
|
162
|
-
}, data.ao.displayDescription ? /*#__PURE__*/_react.default.createElement(
|
|
162
|
+
}, data.ao.displayDescription ? /*#__PURE__*/_react.default.createElement(_index.RichTextParser, null, data.ao.displayDescription) : /*#__PURE__*/_react.default.createElement("p", {
|
|
163
|
+
className: `jsx-${_AboutAOUnitStyle.default.__hash}`
|
|
164
|
+
}, _d2I18n.default.t('No description'))), /*#__PURE__*/_react.default.createElement("div", {
|
|
163
165
|
className: `jsx-${_AboutAOUnitStyle.default.__hash}`
|
|
164
166
|
}, /*#__PURE__*/_react.default.createElement("p", {
|
|
165
167
|
className: `jsx-${_AboutAOUnitStyle.default.__hash}` + " " + "detailLine"
|
|
@@ -9,7 +9,8 @@ var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n"));
|
|
|
9
9
|
var _ui = require("@dhis2/ui");
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
-
var _index = require("
|
|
12
|
+
var _index = require("../../RichText/index.js");
|
|
13
|
+
var _index2 = require("../common/index.js");
|
|
13
14
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
14
15
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -42,7 +43,7 @@ const CommentAddForm = _ref => {
|
|
|
42
43
|
}
|
|
43
44
|
});
|
|
44
45
|
const inputPlaceholder = _d2I18n.default.t('Write a reply');
|
|
45
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
46
|
+
return /*#__PURE__*/_react.default.createElement(_index2.MessageEditorContainer, {
|
|
46
47
|
currentUser: currentUser
|
|
47
48
|
}, showRichTextEditor ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_index.RichTextEditor, {
|
|
48
49
|
inputPlaceholder: inputPlaceholder,
|
|
@@ -50,7 +51,7 @@ const CommentAddForm = _ref => {
|
|
|
50
51
|
value: commentText,
|
|
51
52
|
ref: focusRef,
|
|
52
53
|
disabled: loading
|
|
53
|
-
}), /*#__PURE__*/_react.default.createElement(
|
|
54
|
+
}), /*#__PURE__*/_react.default.createElement(_index2.MessageButtonStrip, null, /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
54
55
|
primary: true,
|
|
55
56
|
small: true,
|
|
56
57
|
onClick: () => save({
|
|
@@ -65,7 +66,7 @@ const CommentAddForm = _ref => {
|
|
|
65
66
|
setCommentText('');
|
|
66
67
|
setShowRichTextEditor(false);
|
|
67
68
|
}
|
|
68
|
-
}, _d2I18n.default.t('Cancel')))) : /*#__PURE__*/_react.default.createElement(
|
|
69
|
+
}, _d2I18n.default.t('Cancel')))) : /*#__PURE__*/_react.default.createElement(_index2.MessageInput, {
|
|
69
70
|
onFocus: () => setShowRichTextEditor(true),
|
|
70
71
|
placeholder: inputPlaceholder,
|
|
71
72
|
ref: focusRef
|
|
@@ -10,7 +10,8 @@ var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n"));
|
|
|
10
10
|
var _ui = require("@dhis2/ui");
|
|
11
11
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
-
var _index = require("
|
|
13
|
+
var _index = require("../../RichText/index.js");
|
|
14
|
+
var _index2 = require("../common/index.js");
|
|
14
15
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
16
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -47,7 +48,7 @@ const CommentUpdateForm = _ref => {
|
|
|
47
48
|
const errorText = error ? _d2I18n.default.t('Could not update comment') : '';
|
|
48
49
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
49
50
|
className: _style.default.dynamic([["2690082310", [_ui.spacers.dp8, _ui.spacers.dp8, _ui.colors.grey100]]]) + " " + "message"
|
|
50
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
51
|
+
}, /*#__PURE__*/_react.default.createElement(_index2.MessageEditorContainer, {
|
|
51
52
|
currentUser: currentUser
|
|
52
53
|
}, /*#__PURE__*/_react.default.createElement(_index.RichTextEditor, {
|
|
53
54
|
inputPlaceholder: _d2I18n.default.t('Enter comment text'),
|
|
@@ -55,7 +56,7 @@ const CommentUpdateForm = _ref => {
|
|
|
55
56
|
value: commentText,
|
|
56
57
|
disabled: loading,
|
|
57
58
|
errorText: errorText
|
|
58
|
-
}), /*#__PURE__*/_react.default.createElement(
|
|
59
|
+
}), /*#__PURE__*/_react.default.createElement(_index2.MessageButtonStrip, null, /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
59
60
|
loading: loading,
|
|
60
61
|
primary: true,
|
|
61
62
|
small: true,
|
|
@@ -9,7 +9,8 @@ var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n"));
|
|
|
9
9
|
var _ui = require("@dhis2/ui");
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
-
var _index = require("
|
|
12
|
+
var _index = require("../../RichText/index.js");
|
|
13
|
+
var _index2 = require("../common/index.js");
|
|
13
14
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
14
15
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -44,16 +45,16 @@ const InterpretationForm = _ref => {
|
|
|
44
45
|
}
|
|
45
46
|
});
|
|
46
47
|
const inputPlaceholder = _d2I18n.default.t('Write an interpretation');
|
|
47
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
48
|
+
return /*#__PURE__*/_react.default.createElement(_index2.MessageEditorContainer, {
|
|
48
49
|
currentUser: currentUser,
|
|
49
50
|
dataTest: "interpretation-form"
|
|
50
|
-
}, showRichTextEditor ? /*#__PURE__*/_react.default.createElement(
|
|
51
|
+
}, showRichTextEditor ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_index.RichTextEditor, {
|
|
51
52
|
disabled: saveMutationInProgress,
|
|
52
53
|
inputPlaceholder: inputPlaceholder,
|
|
53
54
|
onChange: setInterpretationText,
|
|
54
55
|
value: interpretationText,
|
|
55
56
|
helpText: showNoTimeDimensionHelpText ? _d2I18n.default.t('Other people viewing this interpretation in the future may see more data.') : undefined
|
|
56
|
-
}), /*#__PURE__*/_react.default.createElement(
|
|
57
|
+
}), /*#__PURE__*/_react.default.createElement(_index2.MessageButtonStrip, null, /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
57
58
|
primary: true,
|
|
58
59
|
small: true,
|
|
59
60
|
loading: saveMutationInProgress,
|
package/build/cjs/components/Interpretations/common/Interpretation/InterpretationUpdateForm.js
CHANGED
|
@@ -10,7 +10,8 @@ var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n"));
|
|
|
10
10
|
var _ui = require("@dhis2/ui");
|
|
11
11
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
-
var _index = require("
|
|
13
|
+
var _index = require("../../../RichText/index.js");
|
|
14
|
+
var _index2 = require("../index.js");
|
|
14
15
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
16
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -56,7 +57,7 @@ const InterpretationUpdateForm = _ref3 => {
|
|
|
56
57
|
const errorText = error ? error.message || _d2I18n.default.t('Could not update interpretation') : '';
|
|
57
58
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
58
59
|
className: _style.default.dynamic([["2690082310", [_ui.spacers.dp8, _ui.spacers.dp8, _ui.colors.grey100]]]) + " " + "message"
|
|
59
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
60
|
+
}, /*#__PURE__*/_react.default.createElement(_index2.MessageEditorContainer, {
|
|
60
61
|
currentUser: currentUser
|
|
61
62
|
}, /*#__PURE__*/_react.default.createElement(_index.RichTextEditor, {
|
|
62
63
|
inputPlaceholder: _d2I18n.default.t('Enter interpretation text'),
|
|
@@ -64,10 +65,10 @@ const InterpretationUpdateForm = _ref3 => {
|
|
|
64
65
|
value: interpretationText,
|
|
65
66
|
disabled: loading,
|
|
66
67
|
errorText: errorText
|
|
67
|
-
}), showSharingLink && /*#__PURE__*/_react.default.createElement(
|
|
68
|
+
}), showSharingLink && /*#__PURE__*/_react.default.createElement(_index2.InterpretationSharingLink, {
|
|
68
69
|
id: id,
|
|
69
70
|
type: "interpretation"
|
|
70
|
-
}), /*#__PURE__*/_react.default.createElement(
|
|
71
|
+
}), /*#__PURE__*/_react.default.createElement(_index2.MessageButtonStrip, null, /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
71
72
|
loading: loading,
|
|
72
73
|
primary: true,
|
|
73
74
|
small: true,
|
|
@@ -6,11 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.Message = void 0;
|
|
7
7
|
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
|
8
8
|
var _appRuntime = require("@dhis2/app-runtime");
|
|
9
|
-
var _d2UiRichText = require("@dhis2/d2-ui-rich-text");
|
|
10
9
|
var _ui = require("@dhis2/ui");
|
|
11
10
|
var _moment = _interopRequireDefault(require("moment"));
|
|
12
11
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
12
|
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
var _index = require("../../../RichText/index.js");
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
15
|
const Message = _ref => {
|
|
16
16
|
let {
|
|
@@ -34,7 +34,7 @@ const Message = _ref => {
|
|
|
34
34
|
className: _style.default.dynamic([["4031345705", [_ui.spacers.dp8, _ui.colors.grey100, _ui.spacers.dp8, _ui.colors.grey900, _ui.colors.grey600, _ui.colors.grey900, _ui.spacers.dp8]]])
|
|
35
35
|
}, (0, _moment.default)(fromServerDate(created)).format('lll'))), /*#__PURE__*/_react.default.createElement("div", {
|
|
36
36
|
className: _style.default.dynamic([["4031345705", [_ui.spacers.dp8, _ui.colors.grey100, _ui.spacers.dp8, _ui.colors.grey900, _ui.colors.grey600, _ui.colors.grey900, _ui.spacers.dp8]]]) + " " + "content"
|
|
37
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
37
|
+
}, /*#__PURE__*/_react.default.createElement(_index.RichTextParser, null, text)), /*#__PURE__*/_react.default.createElement("div", {
|
|
38
38
|
className: _style.default.dynamic([["4031345705", [_ui.spacers.dp8, _ui.colors.grey100, _ui.spacers.dp8, _ui.colors.grey900, _ui.colors.grey600, _ui.colors.grey900, _ui.spacers.dp8]]]) + " " + "footer"
|
|
39
39
|
}, children), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
40
40
|
id: "4031345705",
|
|
@@ -17,18 +17,18 @@ const MessageEditorContainer = _ref => {
|
|
|
17
17
|
} = _ref;
|
|
18
18
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
19
19
|
"data-test": dataTest,
|
|
20
|
-
className: _style.default.dynamic([["
|
|
20
|
+
className: _style.default.dynamic([["969803715", [_ui.spacers.dp8, _ui.spacers.dp12]]]) + " " + "container"
|
|
21
21
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
22
|
-
className: _style.default.dynamic([["
|
|
22
|
+
className: _style.default.dynamic([["969803715", [_ui.spacers.dp8, _ui.spacers.dp12]]]) + " " + "avatar"
|
|
23
23
|
}, /*#__PURE__*/_react.default.createElement(_ui.UserAvatar, {
|
|
24
24
|
name: currentUser.name,
|
|
25
25
|
medium: true
|
|
26
26
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
27
|
-
className: _style.default.dynamic([["
|
|
27
|
+
className: _style.default.dynamic([["969803715", [_ui.spacers.dp8, _ui.spacers.dp12]]]) + " " + "editor"
|
|
28
28
|
}, children), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
29
|
-
id: "
|
|
29
|
+
id: "969803715",
|
|
30
30
|
dynamic: [_ui.spacers.dp8, _ui.spacers.dp12]
|
|
31
|
-
}, [`.container.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:${_ui.spacers.dp8};margin-top:${_ui.spacers.dp12};}`, ".avatar.__jsx-style-dynamic-selector{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;}", ".editor.__jsx-style-dynamic-selector{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}"]));
|
|
31
|
+
}, [`.container.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:${_ui.spacers.dp8};margin-top:${_ui.spacers.dp12};}`, ".avatar.__jsx-style-dynamic-selector{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;}", ".editor.__jsx-style-dynamic-selector{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;height:100%;}"]));
|
|
32
32
|
};
|
|
33
33
|
exports.MessageEditorContainer = MessageEditorContainer;
|
|
34
34
|
MessageEditorContainer.propTypes = {
|
|
@@ -25,17 +25,6 @@ Object.keys(_index2).forEach(function (key) {
|
|
|
25
25
|
}
|
|
26
26
|
});
|
|
27
27
|
});
|
|
28
|
-
var _index3 = require("./RichTextEditor/index.js");
|
|
29
|
-
Object.keys(_index3).forEach(function (key) {
|
|
30
|
-
if (key === "default" || key === "__esModule") return;
|
|
31
|
-
if (key in exports && exports[key] === _index3[key]) return;
|
|
32
|
-
Object.defineProperty(exports, key, {
|
|
33
|
-
enumerable: true,
|
|
34
|
-
get: function () {
|
|
35
|
-
return _index3[key];
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
28
|
var _getInterpretationAccess = require("./getInterpretationAccess.js");
|
|
40
29
|
Object.keys(_getInterpretationAccess).forEach(function (key) {
|
|
41
30
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -3,16 +3,17 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.Editor = void 0;
|
|
7
7
|
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
|
8
8
|
var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n"));
|
|
9
|
-
var _d2UiRichText = require("@dhis2/d2-ui-rich-text");
|
|
10
9
|
var _ui = require("@dhis2/ui");
|
|
10
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
11
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
-
var _UserMentionWrapper = require("
|
|
13
|
+
var _UserMentionWrapper = require("../../UserMention/UserMentionWrapper.js");
|
|
14
|
+
var _Parser = require("../Parser/Parser.js");
|
|
14
15
|
var _markdownHandler = require("./markdownHandler.js");
|
|
15
|
-
var
|
|
16
|
+
var _EditorStyle = require("./styles/Editor.style.js");
|
|
16
17
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
18
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
18
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -26,22 +27,22 @@ const EmojisPopover = _ref => {
|
|
|
26
27
|
reference: reference,
|
|
27
28
|
onClickOutside: onClose
|
|
28
29
|
}, /*#__PURE__*/_react.default.createElement("ul", {
|
|
29
|
-
className: `jsx-${
|
|
30
|
+
className: `jsx-${_EditorStyle.emojisPopoverClasses.__hash}` + " " + "emojisList"
|
|
30
31
|
}, /*#__PURE__*/_react.default.createElement("li", {
|
|
31
32
|
onClick: () => onInsertMarkdown(_markdownHandler.EMOJI_SMILEY_FACE),
|
|
32
|
-
className: `jsx-${
|
|
33
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
33
|
+
className: `jsx-${_EditorStyle.emojisPopoverClasses.__hash}`
|
|
34
|
+
}, /*#__PURE__*/_react.default.createElement(_Parser.Parser, null, _markdownHandler.emojis[_markdownHandler.EMOJI_SMILEY_FACE])), /*#__PURE__*/_react.default.createElement("li", {
|
|
34
35
|
onClick: () => onInsertMarkdown(_markdownHandler.EMOJI_SAD_FACE),
|
|
35
|
-
className: `jsx-${
|
|
36
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
36
|
+
className: `jsx-${_EditorStyle.emojisPopoverClasses.__hash}`
|
|
37
|
+
}, /*#__PURE__*/_react.default.createElement(_Parser.Parser, null, _markdownHandler.emojis[_markdownHandler.EMOJI_SAD_FACE])), /*#__PURE__*/_react.default.createElement("li", {
|
|
37
38
|
onClick: () => onInsertMarkdown(_markdownHandler.EMOJI_THUMBS_UP),
|
|
38
|
-
className: `jsx-${
|
|
39
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
39
|
+
className: `jsx-${_EditorStyle.emojisPopoverClasses.__hash}`
|
|
40
|
+
}, /*#__PURE__*/_react.default.createElement(_Parser.Parser, null, _markdownHandler.emojis[_markdownHandler.EMOJI_THUMBS_UP])), /*#__PURE__*/_react.default.createElement("li", {
|
|
40
41
|
onClick: () => onInsertMarkdown(_markdownHandler.EMOJI_THUMBS_DOWN),
|
|
41
|
-
className: `jsx-${
|
|
42
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
43
|
-
id:
|
|
44
|
-
},
|
|
42
|
+
className: `jsx-${_EditorStyle.emojisPopoverClasses.__hash}`
|
|
43
|
+
}, /*#__PURE__*/_react.default.createElement(_Parser.Parser, null, _markdownHandler.emojis[_markdownHandler.EMOJI_THUMBS_DOWN]))), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
44
|
+
id: _EditorStyle.emojisPopoverClasses.__hash
|
|
45
|
+
}, _EditorStyle.emojisPopoverClasses));
|
|
45
46
|
};
|
|
46
47
|
EmojisPopover.propTypes = {
|
|
47
48
|
onClose: _propTypes.default.func.isRequired,
|
|
@@ -69,7 +70,7 @@ const IconButtonWithTooltip = _ref2 => {
|
|
|
69
70
|
ref: ref,
|
|
70
71
|
onMouseOver: onMouseOver,
|
|
71
72
|
onMouseOut: onMouseOut,
|
|
72
|
-
className: `jsx-${
|
|
73
|
+
className: `jsx-${_EditorStyle.tooltipAnchorClasses.__hash}` + " " + "tooltip"
|
|
73
74
|
}, /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
74
75
|
secondary: true,
|
|
75
76
|
small: true,
|
|
@@ -78,8 +79,8 @@ const IconButtonWithTooltip = _ref2 => {
|
|
|
78
79
|
onClick: onClick
|
|
79
80
|
}));
|
|
80
81
|
}), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
81
|
-
id:
|
|
82
|
-
},
|
|
82
|
+
id: _EditorStyle.tooltipAnchorClasses.__hash
|
|
83
|
+
}, _EditorStyle.tooltipAnchorClasses));
|
|
83
84
|
};
|
|
84
85
|
IconButtonWithTooltip.propTypes = {
|
|
85
86
|
disabled: _propTypes.default.bool,
|
|
@@ -99,11 +100,11 @@ const Toolbar = _ref4 => {
|
|
|
99
100
|
const [emojisPopoverIsOpen, setEmojisPopoverIsOpen] = (0, _react.useState)(false);
|
|
100
101
|
const iconColor = disabled ? _ui.colors.grey600 : _ui.colors.grey700;
|
|
101
102
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
102
|
-
className: `jsx-${
|
|
103
|
+
className: `jsx-${_EditorStyle.tooltipAnchorClasses.__hash} jsx-${_EditorStyle.toolbarClasses.__hash}` + " " + "toolbar"
|
|
103
104
|
}, !previewMode ? /*#__PURE__*/_react.default.createElement("div", {
|
|
104
|
-
className: `jsx-${
|
|
105
|
+
className: `jsx-${_EditorStyle.tooltipAnchorClasses.__hash} jsx-${_EditorStyle.toolbarClasses.__hash}` + " " + "actionsWrapper"
|
|
105
106
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
106
|
-
className: `jsx-${
|
|
107
|
+
className: `jsx-${_EditorStyle.tooltipAnchorClasses.__hash} jsx-${_EditorStyle.toolbarClasses.__hash}` + " " + "mainActions"
|
|
107
108
|
}, /*#__PURE__*/_react.default.createElement(IconButtonWithTooltip, {
|
|
108
109
|
tooltipContent: _d2I18n.default.t('Bold text'),
|
|
109
110
|
disabled: disabled,
|
|
@@ -134,7 +135,7 @@ const Toolbar = _ref4 => {
|
|
|
134
135
|
onClick: () => onInsertMarkdown(_markdownHandler.MENTION)
|
|
135
136
|
}), /*#__PURE__*/_react.default.createElement("span", {
|
|
136
137
|
ref: emojisButtonRef,
|
|
137
|
-
className: `jsx-${
|
|
138
|
+
className: `jsx-${_EditorStyle.tooltipAnchorClasses.__hash} jsx-${_EditorStyle.toolbarClasses.__hash}` + " " + "tooltip"
|
|
138
139
|
}, /*#__PURE__*/_react.default.createElement(IconButtonWithTooltip, {
|
|
139
140
|
tooltipContent: _d2I18n.default.t('Add emoji'),
|
|
140
141
|
disabled: disabled,
|
|
@@ -150,24 +151,24 @@ const Toolbar = _ref4 => {
|
|
|
150
151
|
},
|
|
151
152
|
reference: emojisButtonRef
|
|
152
153
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
153
|
-
className: `jsx-${
|
|
154
|
+
className: `jsx-${_EditorStyle.tooltipAnchorClasses.__hash} jsx-${_EditorStyle.toolbarClasses.__hash}` + " " + "sideActions"
|
|
154
155
|
}, /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
155
156
|
secondary: true,
|
|
156
157
|
small: true,
|
|
157
158
|
disabled: previewButtonDisabled || disabled,
|
|
158
159
|
onClick: onTogglePreview
|
|
159
160
|
}, _d2I18n.default.t('Preview')))) : /*#__PURE__*/_react.default.createElement("div", {
|
|
160
|
-
className: `jsx-${
|
|
161
|
+
className: `jsx-${_EditorStyle.tooltipAnchorClasses.__hash} jsx-${_EditorStyle.toolbarClasses.__hash}` + " " + "previewWrapper"
|
|
161
162
|
}, /*#__PURE__*/_react.default.createElement(_ui.Button, {
|
|
162
163
|
secondary: true,
|
|
163
164
|
small: true,
|
|
164
165
|
onClick: onTogglePreview,
|
|
165
166
|
disabled: disabled
|
|
166
167
|
}, _d2I18n.default.t('Back to write mode'))), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
167
|
-
id:
|
|
168
|
-
},
|
|
169
|
-
id:
|
|
170
|
-
},
|
|
168
|
+
id: _EditorStyle.tooltipAnchorClasses.__hash
|
|
169
|
+
}, _EditorStyle.tooltipAnchorClasses), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
170
|
+
id: _EditorStyle.toolbarClasses.__hash
|
|
171
|
+
}, _EditorStyle.toolbarClasses));
|
|
171
172
|
};
|
|
172
173
|
Toolbar.propTypes = {
|
|
173
174
|
previewButtonDisabled: _propTypes.default.bool.isRequired,
|
|
@@ -176,31 +177,45 @@ Toolbar.propTypes = {
|
|
|
176
177
|
onTogglePreview: _propTypes.default.func.isRequired,
|
|
177
178
|
disabled: _propTypes.default.bool
|
|
178
179
|
};
|
|
179
|
-
const
|
|
180
|
+
const Editor = /*#__PURE__*/(0, _react.forwardRef)((_ref5, externalRef) => {
|
|
180
181
|
let {
|
|
181
182
|
value,
|
|
182
183
|
disabled,
|
|
183
184
|
inputPlaceholder,
|
|
184
185
|
onChange,
|
|
185
186
|
errorText,
|
|
186
|
-
helpText
|
|
187
|
+
helpText,
|
|
188
|
+
initialFocus,
|
|
189
|
+
resizable
|
|
187
190
|
} = _ref5;
|
|
188
191
|
const [previewMode, setPreviewMode] = (0, _react.useState)(false);
|
|
189
192
|
const internalRef = (0, _react.useRef)();
|
|
190
193
|
const textareaRef = externalRef || internalRef;
|
|
194
|
+
const caretPosRef = (0, _react.useRef)(undefined);
|
|
195
|
+
const insertMarkdownCallback = (text, caretPos) => {
|
|
196
|
+
caretPosRef.current = caretPos;
|
|
197
|
+
onChange(text);
|
|
198
|
+
textareaRef.current.focus();
|
|
199
|
+
};
|
|
191
200
|
(0, _react.useEffect)(() => {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
201
|
+
if (initialFocus) {
|
|
202
|
+
var _textareaRef$current;
|
|
203
|
+
(_textareaRef$current = textareaRef.current) === null || _textareaRef$current === void 0 ? void 0 : _textareaRef$current.focus();
|
|
204
|
+
}
|
|
205
|
+
}, [initialFocus, textareaRef]);
|
|
206
|
+
(0, _react.useEffect)(() => {
|
|
207
|
+
if (caretPosRef.current) {
|
|
208
|
+
var _textareaRef$current2;
|
|
209
|
+
(_textareaRef$current2 = textareaRef.current) === null || _textareaRef$current2 === void 0 ? void 0 : _textareaRef$current2.setSelectionRange(caretPosRef.current, caretPosRef.current);
|
|
210
|
+
caretPosRef.current = undefined;
|
|
211
|
+
}
|
|
212
|
+
}, [value, textareaRef]);
|
|
195
213
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
196
|
-
|
|
214
|
+
"data-test": "@dhis2-analytics-richtexteditor",
|
|
215
|
+
className: `jsx-${_EditorStyle.mainClasses.__hash}` + " " + "container"
|
|
197
216
|
}, /*#__PURE__*/_react.default.createElement(Toolbar, {
|
|
198
217
|
onInsertMarkdown: markdown => {
|
|
199
|
-
(0, _markdownHandler.insertMarkdown)(markdown, textareaRef.current,
|
|
200
|
-
onChange(text);
|
|
201
|
-
textareaRef.current.focus();
|
|
202
|
-
textareaRef.current.selectionEnd = caretPos;
|
|
203
|
-
});
|
|
218
|
+
(0, _markdownHandler.insertMarkdown)(markdown, textareaRef.current, insertMarkdownCallback);
|
|
204
219
|
if (markdown === _markdownHandler.MENTION) {
|
|
205
220
|
textareaRef.current.dispatchEvent(new KeyboardEvent('keydown', {
|
|
206
221
|
key: '@',
|
|
@@ -213,11 +228,9 @@ const RichTextEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref5, externalRef)
|
|
|
213
228
|
previewButtonDisabled: !value,
|
|
214
229
|
disabled: disabled
|
|
215
230
|
}), previewMode ? /*#__PURE__*/_react.default.createElement("div", {
|
|
216
|
-
className: `jsx-${
|
|
217
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
218
|
-
|
|
219
|
-
validationText: errorText,
|
|
220
|
-
helpText: helpText
|
|
231
|
+
className: `jsx-${_EditorStyle.mainClasses.__hash}` + " " + "preview"
|
|
232
|
+
}, /*#__PURE__*/_react.default.createElement(_Parser.Parser, null, value)) : /*#__PURE__*/_react.default.createElement("div", {
|
|
233
|
+
className: `jsx-${_EditorStyle.mainClasses.__hash}` + " " + "edit"
|
|
221
234
|
}, /*#__PURE__*/_react.default.createElement(_UserMentionWrapper.UserMentionWrapper, {
|
|
222
235
|
onUserSelect: onChange,
|
|
223
236
|
inputReference: textareaRef
|
|
@@ -227,19 +240,29 @@ const RichTextEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref5, externalRef)
|
|
|
227
240
|
disabled: disabled,
|
|
228
241
|
value: value,
|
|
229
242
|
onChange: event => onChange(event.target.value),
|
|
230
|
-
onKeyDown: event => (0, _markdownHandler.convertCtrlKey)(event,
|
|
231
|
-
className: `jsx-${
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
},
|
|
243
|
+
onKeyDown: event => (0, _markdownHandler.convertCtrlKey)(event, insertMarkdownCallback),
|
|
244
|
+
className: `jsx-${_EditorStyle.mainClasses.__hash}` + " " + ((0, _classnames.default)('textarea', {
|
|
245
|
+
resizable
|
|
246
|
+
}) || "")
|
|
247
|
+
})), errorText && /*#__PURE__*/_react.default.createElement(_ui.Help, {
|
|
248
|
+
error: !!errorText
|
|
249
|
+
}, errorText), helpText && /*#__PURE__*/_react.default.createElement(_ui.Help, null, helpText)), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
250
|
+
id: _EditorStyle.mainClasses.__hash
|
|
251
|
+
}, _EditorStyle.mainClasses));
|
|
235
252
|
});
|
|
236
|
-
exports.
|
|
237
|
-
|
|
238
|
-
|
|
253
|
+
exports.Editor = Editor;
|
|
254
|
+
Editor.displayName = 'Editor';
|
|
255
|
+
Editor.defaultProps = {
|
|
256
|
+
initialFocus: true,
|
|
257
|
+
resizable: true
|
|
258
|
+
};
|
|
259
|
+
Editor.propTypes = {
|
|
239
260
|
value: _propTypes.default.string.isRequired,
|
|
240
261
|
onChange: _propTypes.default.func.isRequired,
|
|
241
262
|
disabled: _propTypes.default.bool,
|
|
242
263
|
errorText: _propTypes.default.string,
|
|
243
264
|
helpText: _propTypes.default.string,
|
|
244
|
-
|
|
265
|
+
initialFocus: _propTypes.default.bool,
|
|
266
|
+
inputPlaceholder: _propTypes.default.string,
|
|
267
|
+
resizable: _propTypes.default.bool
|
|
245
268
|
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("@testing-library/jest-dom");
|
|
4
|
+
var _react = require("@testing-library/react");
|
|
5
|
+
var _react2 = _interopRequireDefault(require("react"));
|
|
6
|
+
var _Editor = require("../Editor.js");
|
|
7
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
8
|
+
const mockConvertCtrlKey = jest.fn();
|
|
9
|
+
jest.mock('../markdownHandler.js', () => ({
|
|
10
|
+
convertCtrlKey: () => mockConvertCtrlKey()
|
|
11
|
+
}));
|
|
12
|
+
jest.mock('../../../UserMention/UserMentionWrapper.js', () => ({
|
|
13
|
+
UserMentionWrapper: jest.fn(props => /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, props.children))
|
|
14
|
+
}));
|
|
15
|
+
describe('RichText: Editor component', () => {
|
|
16
|
+
const componentProps = {
|
|
17
|
+
value: '',
|
|
18
|
+
onChange: jest.fn()
|
|
19
|
+
};
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
mockConvertCtrlKey.mockClear();
|
|
22
|
+
});
|
|
23
|
+
const renderComponent = props => {
|
|
24
|
+
return (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_Editor.Editor, props));
|
|
25
|
+
};
|
|
26
|
+
it('renders a result', () => {
|
|
27
|
+
renderComponent(componentProps);
|
|
28
|
+
expect(_react.screen.getByTestId('@dhis2-analytics-richtexteditor')).toBeVisible();
|
|
29
|
+
});
|
|
30
|
+
it('calls convertCtrlKey on keydown', () => {
|
|
31
|
+
renderComponent(componentProps);
|
|
32
|
+
_react.fireEvent.keyDown(_react.screen.getByRole('textbox'), {
|
|
33
|
+
key: 'A',
|
|
34
|
+
code: 'keyA'
|
|
35
|
+
});
|
|
36
|
+
expect(mockConvertCtrlKey).toHaveBeenCalled();
|
|
37
|
+
});
|
|
38
|
+
});
|