@eccenca/gui-elements 24.0.0-rc.3 → 24.0.0-rc.5
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 +45 -26
- package/dist/cjs/cmem/markdown/Markdown.js +7 -5
- package/dist/cjs/cmem/markdown/Markdown.js.map +1 -1
- package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js +14 -10
- package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
- package/dist/cjs/components/Icon/canonicalIconNames.js +2 -1
- package/dist/cjs/components/Icon/canonicalIconNames.js.map +1 -1
- package/dist/cjs/components/MultiSelect/MultiSelect.js +27 -1
- package/dist/cjs/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/cjs/components/Typography/HtmlContentBlock.js.map +1 -1
- package/dist/cjs/extensions/codemirror/CodeMirror.js +4 -3
- package/dist/cjs/extensions/codemirror/CodeMirror.js.map +1 -1
- package/dist/cjs/extensions/react-flow/handles/HandleContent.js +1 -1
- package/dist/cjs/extensions/react-flow/handles/HandleContent.js.map +1 -1
- package/dist/cjs/extensions/react-flow/handles/HandleDefault.js +18 -20
- package/dist/cjs/extensions/react-flow/handles/HandleDefault.js.map +1 -1
- package/dist/cjs/extensions/react-flow/handles/HandleTools.js +4 -3
- package/dist/cjs/extensions/react-flow/handles/HandleTools.js.map +1 -1
- package/dist/esm/cmem/markdown/Markdown.js +7 -5
- package/dist/esm/cmem/markdown/Markdown.js.map +1 -1
- package/dist/esm/components/AutoSuggestion/AutoSuggestion.js +14 -10
- package/dist/esm/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
- package/dist/esm/components/Icon/canonicalIconNames.js +2 -1
- package/dist/esm/components/Icon/canonicalIconNames.js.map +1 -1
- package/dist/esm/components/MultiSelect/MultiSelect.js +29 -3
- package/dist/esm/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/esm/components/Typography/HtmlContentBlock.js.map +1 -1
- package/dist/esm/extensions/codemirror/CodeMirror.js +4 -3
- package/dist/esm/extensions/codemirror/CodeMirror.js.map +1 -1
- package/dist/esm/extensions/react-flow/handles/HandleContent.js +1 -1
- package/dist/esm/extensions/react-flow/handles/HandleContent.js.map +1 -1
- package/dist/esm/extensions/react-flow/handles/HandleDefault.js +18 -20
- package/dist/esm/extensions/react-flow/handles/HandleDefault.js.map +1 -1
- package/dist/esm/extensions/react-flow/handles/HandleTools.js +4 -3
- package/dist/esm/extensions/react-flow/handles/HandleTools.js.map +1 -1
- package/dist/types/cmem/markdown/Markdown.d.ts +8 -3
- package/dist/types/components/Icon/canonicalIconNames.d.ts +2 -1
- package/dist/types/components/MultiSelect/MultiSelect.d.ts +7 -1
- package/dist/types/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/types/components/Typography/HtmlContentBlock.d.ts +16 -4
- package/dist/types/extensions/codemirror/CodeMirror.d.ts +2 -2
- package/package.json +28 -26
- package/src/cmem/markdown/Markdown.stories.tsx +6 -0
- package/src/cmem/markdown/Markdown.tsx +21 -7
- package/src/components/Application/_config.scss +1 -1
- package/src/components/Application/stories/Application.stories.tsx +11 -1
- package/src/components/AutoSuggestion/AutoSuggestion.scss +21 -8
- package/src/components/AutoSuggestion/AutoSuggestion.tsx +34 -24
- package/src/components/Breadcrumb/breadcrumb.scss +8 -1
- package/src/components/Depiction/stories/Depiction.stories.tsx +18 -1
- package/src/components/Icon/canonicalIconNames.tsx +2 -1
- package/src/components/MultiSelect/MultiSelect.tsx +37 -0
- package/src/components/MultiSuggestField/MultiSuggestField.stories.tsx +22 -19
- package/src/components/MultiSuggestField/_multisuggestfield.scss +8 -0
- package/src/components/MultiSuggestField/tests/MultiSuggestField.test.tsx +103 -9
- package/src/components/OverviewItem/overviewitem.scss +18 -7
- package/src/components/OverviewItem/stories/OverviewItem.stories.tsx +1 -1
- package/src/components/OverviewItem/stories/OverviewItemDepiction.stories.tsx +25 -7
- package/src/components/TextField/textfield.scss +1 -2
- package/src/components/Tooltip/Tooltip.tsx +1 -1
- package/src/components/Typography/HtmlContentBlock.tsx +16 -4
- package/src/components/Typography/stories/HtmlContentBlock.stories.tsx +50 -0
- package/src/components/Typography/stories/WhiteSpaceContainer.stories.tsx +15 -30
- package/src/components/Typography/typography.scss +10 -0
- package/src/components/index.scss +1 -1
- package/src/extensions/_index.scss +1 -6
- package/src/extensions/codemirror/CodeMirror.tsx +10 -7
- package/src/extensions/codemirror/_codemirror.scss +1 -1
- package/src/extensions/react-flow/handles/HandleContent.tsx +1 -1
- package/src/extensions/react-flow/handles/HandleDefault.tsx +21 -33
- package/src/extensions/react-flow/handles/HandleTools.tsx +4 -3
- package/src/extensions/react-flow/handles/_handles.scss +2 -1
- package/src/extensions/react-flow/handles/stories/HandleDefault.stories.tsx +12 -9
- package/src/index.scss +0 -1
|
@@ -39,6 +39,7 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
39
39
|
import React, { memo } from "react";
|
|
40
40
|
import { Handle as HandleLegacy } from "react-flow-renderer";
|
|
41
41
|
import { Handle as HandleNext } from "react-flow-renderer-lts";
|
|
42
|
+
import { Classes as BlueprintClasses } from "@blueprintjs/core";
|
|
42
43
|
import { intentClassName } from "../../../common/Intent/index.js";
|
|
43
44
|
import { CLASSPREFIX as eccgui } from "../../../configuration/constants.js";
|
|
44
45
|
import { useReactFlowVersion } from "../versionsupport.js";
|
|
@@ -49,22 +50,9 @@ export var HandleDefault = memo(function (_a) {
|
|
|
49
50
|
var flowVersionCheck = flowVersion || evaluateFlowVersion;
|
|
50
51
|
var handleDefaultRef = React.useRef();
|
|
51
52
|
var _b = __read(React.useState(false), 2), extendedTooltipDisplayed = _b[0], setExtendedTooltipDisplayed = _b[1];
|
|
52
|
-
var
|
|
53
|
-
var routeClickToTools = React.useCallback(function (e) {
|
|
54
|
-
var toolsTarget = handleDefaultRef.current.getElementsByClassName("".concat(eccgui, "-graphviz__handletools-target"));
|
|
55
|
-
if (toolsTarget.length > 0 && e.target === handleDefaultRef.current) {
|
|
56
|
-
setHandleToolsDisplayed(true);
|
|
57
|
-
setExtendedTooltipDisplayed(false);
|
|
58
|
-
}
|
|
59
|
-
}, [handleDefaultRef]);
|
|
60
|
-
React.useEffect(function () {
|
|
61
|
-
var toolsTarget = handleDefaultRef.current.getElementsByClassName("".concat(eccgui, "-graphviz__handletools-target"));
|
|
62
|
-
if (toolsTarget && toolsTarget[0] && handleToolsDisplayed) {
|
|
63
|
-
toolsTarget[0].click();
|
|
64
|
-
}
|
|
65
|
-
}, [handleToolsDisplayed]);
|
|
53
|
+
var toolsTarget;
|
|
66
54
|
React.useEffect(function () {
|
|
67
|
-
|
|
55
|
+
toolsTarget = handleDefaultRef.current.getElementsByClassName("".concat(eccgui, "-graphviz__handletools-target"));
|
|
68
56
|
if (toolsTarget && toolsTarget[0]) {
|
|
69
57
|
// Polyfill for FF that does not support the `:has()` pseudo selector until at least version 119 or 120
|
|
70
58
|
// need to be re-evaluated then
|
|
@@ -87,23 +75,33 @@ export var HandleDefault = memo(function (_a) {
|
|
|
87
75
|
},
|
|
88
76
|
intent: intent,
|
|
89
77
|
className: "".concat(eccgui, "-graphviz__handle__tooltip-target"),
|
|
90
|
-
isOpen: extendedTooltipDisplayed
|
|
78
|
+
isOpen: extendedTooltipDisplayed,
|
|
91
79
|
};
|
|
92
80
|
var handleContentProps = __assign(__assign({}, data), { tooltipProps: __assign(__assign({}, handleContentTooltipProps), data === null || data === void 0 ? void 0 : data.tooltipProps) });
|
|
93
81
|
var handleContent = React.createElement(HandleContent, __assign({}, handleContentProps), children);
|
|
94
82
|
var switchTooltipTimerOn;
|
|
83
|
+
var switchToolsTimerOff;
|
|
95
84
|
var handleConfig = __assign(__assign(__assign({}, handleProps), tooltipTitle), { className: intent ? "".concat(intentClassName(intent), " ") : "", onClick: function (e) {
|
|
96
85
|
if (handleProps.onClick) {
|
|
97
86
|
handleProps.onClick(e);
|
|
98
87
|
}
|
|
99
|
-
|
|
100
|
-
|
|
88
|
+
if (toolsTarget.length > 0 && e.target === handleDefaultRef.current) {
|
|
89
|
+
setExtendedTooltipDisplayed(false);
|
|
90
|
+
toolsTarget[0].click();
|
|
91
|
+
}
|
|
92
|
+
}, "data-category": category, onMouseEnter: function (e) {
|
|
101
93
|
var _a, _b;
|
|
102
|
-
|
|
103
|
-
|
|
94
|
+
if (switchToolsTimerOff)
|
|
95
|
+
clearTimeout(switchToolsTimerOff);
|
|
96
|
+
if (e.target === handleDefaultRef.current) {
|
|
97
|
+
switchTooltipTimerOn = setTimeout(function () { return setExtendedTooltipDisplayed(true); }, (_b = (_a = data === null || data === void 0 ? void 0 : data.tooltipProps) === null || _a === void 0 ? void 0 : _a.hoverOpenDelay) !== null && _b !== void 0 ? _b : 500);
|
|
98
|
+
}
|
|
104
99
|
}, onMouseLeave: function () {
|
|
105
100
|
if (switchTooltipTimerOn)
|
|
106
101
|
clearTimeout(switchTooltipTimerOn);
|
|
102
|
+
if (toolsTarget.length > 0 && toolsTarget[0].classList.contains(BlueprintClasses.POPOVER_OPEN)) {
|
|
103
|
+
switchToolsTimerOff = setTimeout(function () { return toolsTarget[0].click(); }, 500);
|
|
104
|
+
}
|
|
107
105
|
setExtendedTooltipDisplayed(false);
|
|
108
106
|
} });
|
|
109
107
|
switch (flowVersionCheck) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandleDefault.js","sourceRoot":"","sources":["../../../../../src/extensions/react-flow/handles/HandleDefault.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,MAAM,IAAI,YAAY,EAA6C,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,MAAM,IAAI,UAAU,EAA2C,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"HandleDefault.js","sourceRoot":"","sources":["../../../../../src/extensions/react-flow/handles/HandleDefault.tsx"],"names":[],"mappings":"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"}
|
|
@@ -46,8 +46,9 @@ export var HandleTools = function (_a) {
|
|
|
46
46
|
var configToolsDisplayed = toolsDisplayed
|
|
47
47
|
? {
|
|
48
48
|
defaultIsOpen: true,
|
|
49
|
-
autoFocus:
|
|
50
|
-
interactionKind: BlueprintPopoverInteractionKind.
|
|
49
|
+
autoFocus: false,
|
|
50
|
+
interactionKind: BlueprintPopoverInteractionKind.CLICK,
|
|
51
|
+
openOnTargetFocus: true,
|
|
51
52
|
onClosing: function () { return setToolsDisplayed(false); },
|
|
52
53
|
}
|
|
53
54
|
: {
|
|
@@ -56,6 +57,6 @@ export var HandleTools = function (_a) {
|
|
|
56
57
|
},
|
|
57
58
|
};
|
|
58
59
|
return (React.createElement(ContextOverlay, __assign({ hoverCloseDelay: 500 }, configToolsDisplayed, otherContextOverlayProps, { content: React.createElement("div", { className: "".concat(eccgui, "-graphviz__handletools-content") }, children), className: "".concat(eccgui, "-graphviz__handletools-target"), popoverClassName: "".concat(eccgui, "-graphviz__handletools-overlay") }),
|
|
59
|
-
React.createElement("div", { className: "".concat(eccgui, "-graphviz__handletools-
|
|
60
|
+
React.createElement("div", { className: "".concat(eccgui, "-graphviz__handletools-placeholder"), "data-test-id": otherContextOverlayProps["data-test-id"], "data-testid": otherContextOverlayProps["data-testid"] })));
|
|
60
61
|
};
|
|
61
62
|
//# sourceMappingURL=HandleTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandleTools.js","sourceRoot":"","sources":["../../../../../src/extensions/react-flow/handles/HandleTools.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,sBAAsB,IAAI,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAE9F,OAAO,EAAE,WAAW,IAAI,MAAM,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAqB,MAAM,gBAAgB,CAAC;AAUnE,MAAM,CAAC,IAAM,WAAW,GAAG,UAAC,EAA2D;IAAzD,IAAA,QAAQ,cAAA,EAAK,wBAAwB,cAAvC,YAAyC,CAAF;IACzD,IAAA,KAAA,OAAsC,KAAK,CAAC,QAAQ,CAAU,KAAK,CAAC,IAAA,EAAnE,cAAc,QAAA,EAAE,iBAAiB,QAAkC,CAAC;IAE3E,IAAM,oBAAoB,GAAG,cAAc;QACvC,CAAC,CAAC;YACI,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"HandleTools.js","sourceRoot":"","sources":["../../../../../src/extensions/react-flow/handles/HandleTools.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,sBAAsB,IAAI,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAE9F,OAAO,EAAE,WAAW,IAAI,MAAM,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAqB,MAAM,gBAAgB,CAAC;AAUnE,MAAM,CAAC,IAAM,WAAW,GAAG,UAAC,EAA2D;IAAzD,IAAA,QAAQ,cAAA,EAAK,wBAAwB,cAAvC,YAAyC,CAAF;IACzD,IAAA,KAAA,OAAsC,KAAK,CAAC,QAAQ,CAAU,KAAK,CAAC,IAAA,EAAnE,cAAc,QAAA,EAAE,iBAAiB,QAAkC,CAAC;IAE3E,IAAM,oBAAoB,GAAG,cAAc;QACvC,CAAC,CAAC;YACI,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE,KAAK;YAChB,eAAe,EAAE,+BAA+B,CAAC,KAAK;YACtD,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,cAAM,OAAA,iBAAiB,CAAC,KAAK,CAAC,EAAxB,CAAwB;SAC5C;QACH,CAAC,CAAC;YACI,SAAS,EAAE;gBACP,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;SACJ,CAAC;IAER,OAAO,CACH,oBAAC,cAAc,aACX,eAAe,EAAE,GAAG,IAChB,oBAAoB,EACpB,wBAAwB,IAC5B,OAAO,EAAE,6BAAK,SAAS,EAAE,UAAG,MAAM,mCAAgC,IAAG,QAAQ,CAAO,EACpF,SAAS,EAAE,UAAG,MAAM,kCAA+B,EACnD,gBAAgB,EAAE,UAAG,MAAM,mCAAgC;QAE3D,6BACI,SAAS,EAAE,UAAG,MAAM,uCAAoC,kBAC1C,wBAAwB,CAAC,cAAc,CAAC,iBACzC,wBAAwB,CAAC,aAAa,CAAC,GACtD,CACW,CACpB,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { PluggableList } from "react-markdown/lib/react-markdown";
|
|
3
|
-
import { TestableComponent } from "../../index";
|
|
3
|
+
import { HtmlContentBlockProps, TestableComponent } from "../../index";
|
|
4
4
|
export interface MarkdownProps extends TestableComponent {
|
|
5
5
|
children: string;
|
|
6
6
|
/**
|
|
@@ -18,7 +18,8 @@ export interface MarkdownProps extends TestableComponent {
|
|
|
18
18
|
*/
|
|
19
19
|
allowedElements?: string[];
|
|
20
20
|
/**
|
|
21
|
-
* Do not wrap
|
|
21
|
+
* Do not wrap content in a `HtmlContentBlock` component.
|
|
22
|
+
* This option is ignored if `htmlContentBlockProps` or `data-test-id` is given.
|
|
22
23
|
*/
|
|
23
24
|
inheritBlock?: boolean;
|
|
24
25
|
/**
|
|
@@ -31,6 +32,10 @@ export interface MarkdownProps extends TestableComponent {
|
|
|
31
32
|
* Set to `false` to disable this feature.
|
|
32
33
|
*/
|
|
33
34
|
linkTargetName?: false | string;
|
|
35
|
+
/**
|
|
36
|
+
* Configure the `HtmlContentBlock` component that is automatically used as wrapper for the parsed Markdown content.
|
|
37
|
+
*/
|
|
38
|
+
htmlContentBlockProps?: Omit<HtmlContentBlockProps, "children" | "className" | "data-test-id">;
|
|
34
39
|
}
|
|
35
40
|
/** Renders a markdown string. */
|
|
36
|
-
export declare const Markdown: ({ children, allowHtml, removeMarkup, inheritBlock, allowedElements, reHypePlugins, linkTargetName, ...otherProps }: MarkdownProps) => React.JSX.Element;
|
|
41
|
+
export declare const Markdown: ({ children, allowHtml, removeMarkup, inheritBlock, allowedElements, reHypePlugins, linkTargetName, htmlContentBlockProps, ...otherProps }: MarkdownProps) => React.JSX.Element;
|
|
@@ -15,7 +15,8 @@ declare const canonicalIcons: {
|
|
|
15
15
|
"application-notification": icons.CarbonIconType;
|
|
16
16
|
"artefact-chatlog": icons.CarbonIconType;
|
|
17
17
|
"artefact-commit": icons.CarbonIconType;
|
|
18
|
-
"artefact-
|
|
18
|
+
"artefact-task-deleteprojectfiles": icons.CarbonIconType;
|
|
19
|
+
"artefact-task-downloadfile": icons.CarbonIconType;
|
|
19
20
|
"artefact-dataset-csv": icons.CarbonIconType;
|
|
20
21
|
"artefact-dataset-eccencadataplatform": icons.CarbonIconType;
|
|
21
22
|
"artefact-dataset-excel": icons.CarbonIconType;
|
|
@@ -103,6 +103,12 @@ interface MultiSelectCommonProps<T> extends TestableComponent, Pick<BlueprintMul
|
|
|
103
103
|
* If not provided, values are filtered by their labels
|
|
104
104
|
*/
|
|
105
105
|
searchPredicate?: (item: T, query: string) => boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Limits the height of the input target plus its dropdown menu when it is opened.
|
|
108
|
+
* Need to be a `number not greater than 100` (as `vh`, a unit describing a length relative to the viewport height) or `true` (equals 100).
|
|
109
|
+
* If not set than the dropdown menu cannot be larger that appr. the half of the available viewport hight.
|
|
110
|
+
*/
|
|
111
|
+
limitHeightOpened?: boolean | number;
|
|
106
112
|
}
|
|
107
113
|
/** @deprecated (v25) use MultiSuggestFieldProps */
|
|
108
114
|
export type MultiSelectProps<T> = MultiSelectCommonProps<T> & ({
|
|
@@ -122,7 +128,7 @@ export type MultiSelectProps<T> = MultiSelectCommonProps<T> & ({
|
|
|
122
128
|
* This component will be re-implemented as `Select` like element allowing multiple selections (or a `Select` option).
|
|
123
129
|
* New name for this component is `MultiSuggestField`.
|
|
124
130
|
*/
|
|
125
|
-
declare function MultiSelect<T>({ items, selectedItems: externalSelectedItems, prePopulateWithItems, itemId, itemLabel, onSelection, contextOverlayProps, tagInputProps, inputProps, runOnQueryChange, fullWidth, noResultText, newItemCreationText, newItemPostfix, hasStatePrimary, hasStateDanger, hasStateSuccess, hasStateWarning, disabled, createNewItemFromQuery, requestDelay, clearQueryOnSelection, className, "data-test-id": dataTestId, "data-testid": dataTestid, wrapperProps, searchPredicate, ...otherMultiSelectProps }: MultiSelectProps<T>): React.JSX.Element;
|
|
131
|
+
declare function MultiSelect<T>({ items, selectedItems: externalSelectedItems, prePopulateWithItems, itemId, itemLabel, onSelection, contextOverlayProps, tagInputProps, inputProps, runOnQueryChange, fullWidth, noResultText, newItemCreationText, newItemPostfix, hasStatePrimary, hasStateDanger, hasStateSuccess, hasStateWarning, disabled, createNewItemFromQuery, requestDelay, clearQueryOnSelection, className, "data-test-id": dataTestId, "data-testid": dataTestid, wrapperProps, searchPredicate, limitHeightOpened, ...otherMultiSelectProps }: MultiSelectProps<T>): React.JSX.Element;
|
|
126
132
|
declare namespace MultiSelect {
|
|
127
133
|
var ofType: typeof BlueprintMultiSelect.ofType;
|
|
128
134
|
}
|
|
@@ -12,7 +12,7 @@ export interface TooltipProps extends Omit<BlueprintTooltipProps, "position"> {
|
|
|
12
12
|
*/
|
|
13
13
|
size?: "small" | "medium" | "large";
|
|
14
14
|
/**
|
|
15
|
-
* The
|
|
15
|
+
* The tooltip will be attached to this element when it is hovered.
|
|
16
16
|
*/
|
|
17
17
|
children: React.ReactNode | React.ReactNode[];
|
|
18
18
|
/**
|
|
@@ -1,16 +1,28 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
export interface HtmlContentBlockProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Content block uses smaller font size.
|
|
5
|
+
*/
|
|
4
6
|
small?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* To prevent overflow, an otherwise unbreakable string of characters — like a long word or URL — may be broken at any point if there are no otherwise-acceptable break points in the line.
|
|
9
|
+
*/
|
|
10
|
+
linebreakForced?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* No automatic line breaks are inserted.
|
|
13
|
+
*/
|
|
14
|
+
linebreakPrevented?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Sub elements like code blocks are displayed without own scrollbars.
|
|
17
|
+
* This option may infer with `linebreakForced` and `linebreakPrevented`.
|
|
18
|
+
*/
|
|
19
|
+
noScrollbarsOnChildren?: boolean;
|
|
5
20
|
/** currently not supported */
|
|
6
21
|
large?: boolean;
|
|
7
22
|
/** currently not supported */
|
|
8
23
|
muted?: boolean;
|
|
9
24
|
/** currently not supported */
|
|
10
25
|
disabled?: boolean;
|
|
11
|
-
linebreakForced?: boolean;
|
|
12
|
-
linebreakPrevented?: boolean;
|
|
13
|
-
noScrollbarsOnChildren?: boolean;
|
|
14
26
|
}
|
|
15
27
|
export declare const HtmlContentBlock: ({ className, children, small, large, muted, disabled, linebreakForced, linebreakPrevented, noScrollbarsOnChildren, ...otherProps }: HtmlContentBlockProps) => React.JSX.Element;
|
|
16
28
|
export default HtmlContentBlock;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from "react";
|
|
2
2
|
import { Extension } from "@codemirror/state";
|
|
3
3
|
import { EditorView, Rect } from "@codemirror/view";
|
|
4
4
|
import { SupportedCodeEditorModes } from "./hooks/useCodemirrorModeExtension.hooks";
|
|
@@ -63,7 +63,7 @@ export interface CodeEditorProps {
|
|
|
63
63
|
height?: number | string;
|
|
64
64
|
/** Long lines are wrapped and displayed on multiple lines */
|
|
65
65
|
wrapLines?: boolean;
|
|
66
|
-
outerDivAttributes?:
|
|
66
|
+
outerDivAttributes?: Omit<React.HTMLAttributes<HTMLDivElement>, "id" | "data-test-id">;
|
|
67
67
|
/**
|
|
68
68
|
* Size in spaces that is used for a tabulator key.
|
|
69
69
|
*/
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eccenca/gui-elements",
|
|
3
3
|
"description": "GUI elements based on other libraries, usable in React application, written in Typescript.",
|
|
4
|
-
"version": "24.0.0-rc.
|
|
4
|
+
"version": "24.0.0-rc.5",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/eccenca/gui-elements",
|
|
7
7
|
"bugs": "https://github.com/eccenca/gui-elements/issues",
|
|
@@ -70,52 +70,52 @@
|
|
|
70
70
|
"@blueprintjs/select": "^5.2.2",
|
|
71
71
|
"@carbon/icons": "^11.47.1",
|
|
72
72
|
"@carbon/react": "^1.64.1",
|
|
73
|
-
"@mavrin/remark-typograf": "^2.2.0",
|
|
74
|
-
"codemirror": "^6.0.1",
|
|
75
|
-
"@codemirror/legacy-modes": "^6.4.1",
|
|
76
|
-
"@codemirror/lang-markdown": "^6.2.5",
|
|
77
73
|
"@codemirror/lang-json": "^6.0.1",
|
|
74
|
+
"@codemirror/lang-markdown": "^6.3.1",
|
|
78
75
|
"@codemirror/lang-xml": "^6.1.0",
|
|
79
|
-
"
|
|
76
|
+
"@codemirror/legacy-modes": "^6.4.2",
|
|
77
|
+
"@mavrin/remark-typograf": "^2.2.0",
|
|
78
|
+
"codemirror": "^6.0.1",
|
|
80
79
|
"color": "^4.2.3",
|
|
81
80
|
"compute-scroll-into-view": "^3.1.0",
|
|
82
81
|
"lodash": "^4.17.21",
|
|
83
|
-
"re-resizable": "6.
|
|
82
|
+
"re-resizable": "^6.10.1",
|
|
84
83
|
"react": "^16.13.1",
|
|
85
84
|
"react-dom": "^16.13.1",
|
|
86
85
|
"react-flow-renderer": "9.7.4",
|
|
87
86
|
"react-flow-renderer-lts": "npm:react-flow-renderer@^10.3.17",
|
|
88
87
|
"react-inlinesvg": "^3.0.3",
|
|
89
88
|
"react-markdown": "^8.0.7",
|
|
90
|
-
"react-syntax-highlighter": "^15.
|
|
89
|
+
"react-syntax-highlighter": "^15.6.1",
|
|
91
90
|
"rehype-raw": "^6.1.1",
|
|
92
91
|
"remark-definition-list": "^1.2.0",
|
|
93
92
|
"remark-gfm": "^3.0.1",
|
|
94
93
|
"remark-parse": "^10.0.2",
|
|
95
94
|
"reset-css": "^5.0.2",
|
|
96
95
|
"unified": "^11.0.5",
|
|
97
|
-
"wicg-inert": "^3.1.3"
|
|
96
|
+
"wicg-inert": "^3.1.3",
|
|
97
|
+
"xml-formatter": "^3.6.3"
|
|
98
98
|
},
|
|
99
99
|
"devDependencies": {
|
|
100
|
-
"@babel/core": "^7.
|
|
100
|
+
"@babel/core": "^7.26.0",
|
|
101
101
|
"@babel/plugin-proposal-class-properties": "^7.16.7",
|
|
102
102
|
"@babel/plugin-proposal-private-methods": "^7.16.11",
|
|
103
103
|
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
|
104
|
-
"@babel/preset-env": "^7.
|
|
105
|
-
"@babel/preset-flow": "^7.
|
|
106
|
-
"@babel/preset-react": "^7.
|
|
107
|
-
"@babel/preset-typescript": "^7.
|
|
108
|
-
"@storybook/addon-actions": "^8.
|
|
109
|
-
"@storybook/addon-essentials": "^8.
|
|
110
|
-
"@storybook/addon-jest": "^8.
|
|
111
|
-
"@storybook/addon-links": "^8.
|
|
104
|
+
"@babel/preset-env": "^7.26.0",
|
|
105
|
+
"@babel/preset-flow": "^7.25.9",
|
|
106
|
+
"@babel/preset-react": "^7.25.9",
|
|
107
|
+
"@babel/preset-typescript": "^7.26.0",
|
|
108
|
+
"@storybook/addon-actions": "^8.4.3",
|
|
109
|
+
"@storybook/addon-essentials": "^8.4.3",
|
|
110
|
+
"@storybook/addon-jest": "^8.4.3",
|
|
111
|
+
"@storybook/addon-links": "^8.4.3",
|
|
112
112
|
"@storybook/addon-webpack5-compiler-babel": "^3.0.3",
|
|
113
|
-
"@storybook/cli": "^8.
|
|
113
|
+
"@storybook/cli": "^8.4.3",
|
|
114
114
|
"@storybook/preset-scss": "^1.0.3",
|
|
115
|
-
"@storybook/react": "^8.
|
|
116
|
-
"@storybook/react-webpack5": "^8.
|
|
117
|
-
"@storybook/test": "^8.
|
|
118
|
-
"@testing-library/jest-dom": "^6.
|
|
115
|
+
"@storybook/react": "^8.4.3",
|
|
116
|
+
"@storybook/react-webpack5": "^8.4.3",
|
|
117
|
+
"@storybook/test": "^8.4.3",
|
|
118
|
+
"@testing-library/jest-dom": "^6.6.3",
|
|
119
119
|
"@testing-library/react": "^12.1.2",
|
|
120
120
|
"@types/codemirror": "^5.60.15",
|
|
121
121
|
"@types/color": "^3.0.6",
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
|
126
126
|
"@typescript-eslint/parser": "^5.62.0",
|
|
127
127
|
"babel-jest": "^29.7.0",
|
|
128
|
-
"chromatic": "^11.
|
|
128
|
+
"chromatic": "^11.18.1",
|
|
129
129
|
"eslint": "^8.57.0",
|
|
130
130
|
"eslint-plugin-react": "^7.35.0",
|
|
131
131
|
"eslint-plugin-react-hooks": "^4.6.2",
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
"rimraf": "^5.0.10",
|
|
145
145
|
"sass": "1.62.1",
|
|
146
146
|
"sass-loader": "10.3.1",
|
|
147
|
-
"storybook": "^8.
|
|
147
|
+
"storybook": "^8.4.3",
|
|
148
148
|
"stylelint": "^15.11.0",
|
|
149
149
|
"stylelint-config-recess-order": "^4.6.0",
|
|
150
150
|
"stylelint-config-standard-scss": "^9.0.0",
|
|
@@ -161,7 +161,9 @@
|
|
|
161
161
|
},
|
|
162
162
|
"resolutions": {
|
|
163
163
|
"**/@types/react": "^17.0.80",
|
|
164
|
-
"node-sass-package-importer/**/postcss": "^8.4.41"
|
|
164
|
+
"node-sass-package-importer/**/postcss": "^8.4.41",
|
|
165
|
+
"**/cross-spawn": "^7.0.5 ",
|
|
166
|
+
"**/micromatch": "^4.0.8"
|
|
165
167
|
},
|
|
166
168
|
"husky": {
|
|
167
169
|
"hooks": {
|
|
@@ -2,14 +2,14 @@ import React from "react";
|
|
|
2
2
|
import ReactMarkdown from "react-markdown";
|
|
3
3
|
import { PluggableList } from "react-markdown/lib/react-markdown";
|
|
4
4
|
import { Prism as SyntaxHighlighter } from "react-syntax-highlighter";
|
|
5
|
-
import { materialLight } from "react-syntax-highlighter/dist/esm/styles/prism";
|
|
6
5
|
// @ts-ignore: No declaration file for module (TODO: should be @ts-expect-error but GUI elements is used inside project with `noImplicitAny=false`)
|
|
7
6
|
import remarkTypograf from "@mavrin/remark-typograf";
|
|
8
7
|
import rehypeRaw from "rehype-raw";
|
|
9
8
|
import { remarkDefinitionList } from "remark-definition-list";
|
|
10
9
|
import remarkGfm from "remark-gfm";
|
|
11
10
|
|
|
12
|
-
import {
|
|
11
|
+
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
|
|
12
|
+
import { HtmlContentBlock, HtmlContentBlockProps, TestableComponent } from "../../index";
|
|
13
13
|
|
|
14
14
|
export interface MarkdownProps extends TestableComponent {
|
|
15
15
|
children: string;
|
|
@@ -28,7 +28,8 @@ export interface MarkdownProps extends TestableComponent {
|
|
|
28
28
|
*/
|
|
29
29
|
allowedElements?: string[];
|
|
30
30
|
/**
|
|
31
|
-
* Do not wrap
|
|
31
|
+
* Do not wrap content in a `HtmlContentBlock` component.
|
|
32
|
+
* This option is ignored if `htmlContentBlockProps` or `data-test-id` is given.
|
|
32
33
|
*/
|
|
33
34
|
inheritBlock?: boolean;
|
|
34
35
|
/**
|
|
@@ -41,6 +42,10 @@ export interface MarkdownProps extends TestableComponent {
|
|
|
41
42
|
* Set to `false` to disable this feature.
|
|
42
43
|
*/
|
|
43
44
|
linkTargetName?: false | string;
|
|
45
|
+
/**
|
|
46
|
+
* Configure the `HtmlContentBlock` component that is automatically used as wrapper for the parsed Markdown content.
|
|
47
|
+
*/
|
|
48
|
+
htmlContentBlockProps?: Omit<HtmlContentBlockProps, "children" | "className" | "data-test-id">;
|
|
44
49
|
}
|
|
45
50
|
|
|
46
51
|
const configDefault = {
|
|
@@ -102,6 +107,7 @@ export const Markdown = ({
|
|
|
102
107
|
allowedElements,
|
|
103
108
|
reHypePlugins,
|
|
104
109
|
linkTargetName = "_mdref",
|
|
110
|
+
htmlContentBlockProps,
|
|
105
111
|
...otherProps
|
|
106
112
|
}: MarkdownProps) => {
|
|
107
113
|
const configHtml = allowHtml
|
|
@@ -134,15 +140,17 @@ export const Markdown = ({
|
|
|
134
140
|
: undefined,
|
|
135
141
|
components: {
|
|
136
142
|
code(props: any) {
|
|
137
|
-
const { children, className, node, ...rest } = props;
|
|
143
|
+
const { children, className, node, inline, ...rest } = props;
|
|
138
144
|
const match = /language-(\w+)/.exec(className || "");
|
|
139
145
|
return match ? (
|
|
140
146
|
<SyntaxHighlighter
|
|
141
147
|
{...rest}
|
|
142
148
|
PreTag="div"
|
|
149
|
+
codeTagProps={{
|
|
150
|
+
className: `${eccgui}-markdown__syntaxhighlighter`,
|
|
151
|
+
}}
|
|
143
152
|
children={String(children).replace(/\n$/, "")}
|
|
144
153
|
language={match[1]}
|
|
145
|
-
style={materialLight}
|
|
146
154
|
/>
|
|
147
155
|
) : (
|
|
148
156
|
<code {...rest} className={className}>
|
|
@@ -160,9 +168,15 @@ export const Markdown = ({
|
|
|
160
168
|
|
|
161
169
|
// @ts-ignore because against the lib spec it does not allow a function for linkTarget.
|
|
162
170
|
const markdownDisplay = <ReactMarkdown {...reactMarkdownProperties} />;
|
|
163
|
-
return inheritBlock ? (
|
|
171
|
+
return inheritBlock && !(otherProps["data-test-id"] || htmlContentBlockProps) ? (
|
|
164
172
|
markdownDisplay
|
|
165
173
|
) : (
|
|
166
|
-
<HtmlContentBlock
|
|
174
|
+
<HtmlContentBlock
|
|
175
|
+
{...htmlContentBlockProps}
|
|
176
|
+
className={`${eccgui}-markdown__container`}
|
|
177
|
+
data-test-id={otherProps["data-test-id"]}
|
|
178
|
+
>
|
|
179
|
+
{markdownDisplay}
|
|
180
|
+
</HtmlContentBlock>
|
|
167
181
|
);
|
|
168
182
|
};
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
Button,
|
|
18
18
|
Depiction,
|
|
19
19
|
Icon,
|
|
20
|
+
OverviewItem,
|
|
20
21
|
WorkspaceHeader,
|
|
21
22
|
} from "../../../index";
|
|
22
23
|
|
|
@@ -76,7 +77,16 @@ const TemplateBasicExample: StoryFn<typeof ApplicationBasicExample> = (args) =>
|
|
|
76
77
|
<code>Menu</code> with <code>MenuItem</code>s.
|
|
77
78
|
</ApplicationSidebarNavigation>
|
|
78
79
|
|
|
79
|
-
<WorkspaceHeader id={"ApplicationBasicExample"}
|
|
80
|
+
<WorkspaceHeader id={"ApplicationBasicExample"}>
|
|
81
|
+
<OverviewItem>
|
|
82
|
+
<Depiction
|
|
83
|
+
image={<Icon name={"application-homepage"} />}
|
|
84
|
+
backgroundColor={"dark"}
|
|
85
|
+
padding="medium"
|
|
86
|
+
ratio="1:1"
|
|
87
|
+
/>
|
|
88
|
+
</OverviewItem>
|
|
89
|
+
</WorkspaceHeader>
|
|
80
90
|
|
|
81
91
|
<ApplicationToolbar>
|
|
82
92
|
<ApplicationToolbarSection>
|
|
@@ -27,37 +27,50 @@
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
.#{$eccgui}-autosuggestion__inputfield {
|
|
31
|
+
background-color: $eccgui-color-textfield-background;
|
|
32
|
+
}
|
|
33
|
+
|
|
30
34
|
.#{$eccgui}-singlelinecodeeditor {
|
|
31
|
-
|
|
32
|
-
padding: 0 1px;
|
|
35
|
+
padding: 0;
|
|
33
36
|
|
|
34
37
|
[class^="cm-theme"] {
|
|
35
38
|
width: 100%;
|
|
36
39
|
}
|
|
37
40
|
|
|
41
|
+
&:has(.cm-editor.cm-focused) {
|
|
42
|
+
box-shadow: input-transition-shadow($input-shadow-color-focus, true), $input-box-shadow-focus;
|
|
43
|
+
}
|
|
44
|
+
|
|
38
45
|
.cm-editor {
|
|
39
|
-
top:
|
|
46
|
+
top: 1px;
|
|
40
47
|
height: calc(#{$eccgui-size-textfield-height-regular} - 2px);
|
|
41
48
|
padding: 0;
|
|
42
49
|
margin: 0;
|
|
43
50
|
overflow: hidden;
|
|
51
|
+
background-color: transparent;
|
|
52
|
+
border-radius: 0;
|
|
53
|
+
box-shadow: none;
|
|
44
54
|
|
|
45
55
|
&.cm-focused {
|
|
46
56
|
outline: none;
|
|
57
|
+
box-shadow: none;
|
|
47
58
|
}
|
|
48
59
|
|
|
49
60
|
.cm-scroller {
|
|
61
|
+
height: 100%;
|
|
50
62
|
padding: 0;
|
|
51
63
|
margin: 0;
|
|
52
64
|
overflow: auto hidden !important;
|
|
53
65
|
}
|
|
54
66
|
|
|
55
|
-
.CodeMirror-vscrollbar {
|
|
56
|
-
display: none !important;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
67
|
.cm-content {
|
|
60
|
-
|
|
68
|
+
display: flex;
|
|
69
|
+
flex-direction: column;
|
|
70
|
+
justify-content: center;
|
|
71
|
+
height: 100%;
|
|
72
|
+
min-height: 100%;
|
|
73
|
+
padding: 0;
|
|
61
74
|
border: none;
|
|
62
75
|
}
|
|
63
76
|
|
|
@@ -240,15 +240,9 @@ const AutoSuggestion = ({
|
|
|
240
240
|
}, [cm, editorState]);
|
|
241
241
|
|
|
242
242
|
const dispatch = // eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
if (initialValue != null && cm) {
|
|
247
|
-
dispatch({
|
|
248
|
-
changes: { from: 0, to: cm?.state?.doc.length, insert: initialValue },
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
}, [initialValue, cm]);
|
|
243
|
+
(
|
|
244
|
+
typeof editorState?.cm?.dispatch === "function" ? editorState?.cm?.dispatch : () => {}
|
|
245
|
+
) as EditorView["dispatch"];
|
|
252
246
|
|
|
253
247
|
React.useEffect(() => {
|
|
254
248
|
editorState.dropdownShown = shouldShowDropdown;
|
|
@@ -609,6 +603,36 @@ const AutoSuggestion = ({
|
|
|
609
603
|
[]
|
|
610
604
|
);
|
|
611
605
|
|
|
606
|
+
const codeEditor = React.useMemo(() => {
|
|
607
|
+
return (
|
|
608
|
+
<ExtendedCodeEditor
|
|
609
|
+
mode={mode}
|
|
610
|
+
setCM={setCM}
|
|
611
|
+
onChange={handleChange}
|
|
612
|
+
onCursorChange={handleCursorChange}
|
|
613
|
+
initialValue={initialValue}
|
|
614
|
+
onFocusChange={handleInputFocus}
|
|
615
|
+
onKeyDown={handleInputEditorKeyPress}
|
|
616
|
+
enableTab={useTabForCompletions}
|
|
617
|
+
placeholder={placeholder}
|
|
618
|
+
onSelection={onSelection}
|
|
619
|
+
showScrollBar={showScrollBar}
|
|
620
|
+
multiline={multiline}
|
|
621
|
+
onMouseDown={handleInputMouseDown}
|
|
622
|
+
/>
|
|
623
|
+
);
|
|
624
|
+
}, [
|
|
625
|
+
mode,
|
|
626
|
+
setCM,
|
|
627
|
+
handleChange,
|
|
628
|
+
initialValue,
|
|
629
|
+
useTabForCompletions,
|
|
630
|
+
placeholder,
|
|
631
|
+
showScrollBar,
|
|
632
|
+
multiline,
|
|
633
|
+
handleInputMouseDown,
|
|
634
|
+
]);
|
|
635
|
+
|
|
612
636
|
const hasError = !!value.current && !pathIsValid && !pathValidationPending;
|
|
613
637
|
const autoSuggestionInput = (
|
|
614
638
|
<div
|
|
@@ -642,21 +666,7 @@ const AutoSuggestion = ({
|
|
|
642
666
|
/>
|
|
643
667
|
}
|
|
644
668
|
>
|
|
645
|
-
|
|
646
|
-
mode={mode}
|
|
647
|
-
setCM={setCM}
|
|
648
|
-
onChange={handleChange}
|
|
649
|
-
onCursorChange={handleCursorChange}
|
|
650
|
-
initialValue={initialValue}
|
|
651
|
-
onFocusChange={handleInputFocus}
|
|
652
|
-
onKeyDown={handleInputEditorKeyPress}
|
|
653
|
-
enableTab={useTabForCompletions}
|
|
654
|
-
placeholder={placeholder}
|
|
655
|
-
onSelection={onSelection}
|
|
656
|
-
showScrollBar={showScrollBar}
|
|
657
|
-
multiline={multiline}
|
|
658
|
-
onMouseDown={handleInputMouseDown}
|
|
659
|
-
/>
|
|
669
|
+
{codeEditor}
|
|
660
670
|
</ContextOverlay>
|
|
661
671
|
{!!value.current && (
|
|
662
672
|
<span className={BlueprintClassNames.INPUT_ACTION} ref={inputactionsDisplayed}>
|