@eccenca/gui-elements 24.0.0-rc.4 → 24.0.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.
Files changed (63) hide show
  1. package/CHANGELOG.md +50 -28
  2. package/dist/cjs/cmem/markdown/Markdown.js +2 -2
  3. package/dist/cjs/cmem/markdown/Markdown.js.map +1 -1
  4. package/dist/cjs/components/Application/helper.js +25 -2
  5. package/dist/cjs/components/Application/helper.js.map +1 -1
  6. package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js +21 -11
  7. package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
  8. package/dist/cjs/components/AutoSuggestion/extensions/markText.js +2 -2
  9. package/dist/cjs/components/AutoSuggestion/extensions/markText.js.map +1 -1
  10. package/dist/cjs/components/Icon/canonicalIconNames.js +3 -1
  11. package/dist/cjs/components/Icon/canonicalIconNames.js.map +1 -1
  12. package/dist/cjs/components/Typography/HtmlContentBlock.js.map +1 -1
  13. package/dist/cjs/extensions/react-flow/handles/HandleContent.js +1 -1
  14. package/dist/cjs/extensions/react-flow/handles/HandleContent.js.map +1 -1
  15. package/dist/cjs/extensions/react-flow/handles/HandleDefault.js +18 -20
  16. package/dist/cjs/extensions/react-flow/handles/HandleDefault.js.map +1 -1
  17. package/dist/cjs/extensions/react-flow/handles/HandleTools.js +4 -3
  18. package/dist/cjs/extensions/react-flow/handles/HandleTools.js.map +1 -1
  19. package/dist/esm/cmem/markdown/Markdown.js +2 -2
  20. package/dist/esm/cmem/markdown/Markdown.js.map +1 -1
  21. package/dist/esm/components/Application/helper.js +25 -2
  22. package/dist/esm/components/Application/helper.js.map +1 -1
  23. package/dist/esm/components/AutoSuggestion/AutoSuggestion.js +32 -22
  24. package/dist/esm/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
  25. package/dist/esm/components/AutoSuggestion/extensions/markText.js +2 -2
  26. package/dist/esm/components/AutoSuggestion/extensions/markText.js.map +1 -1
  27. package/dist/esm/components/Icon/canonicalIconNames.js +3 -1
  28. package/dist/esm/components/Icon/canonicalIconNames.js.map +1 -1
  29. package/dist/esm/components/Typography/HtmlContentBlock.js.map +1 -1
  30. package/dist/esm/extensions/react-flow/handles/HandleContent.js +1 -1
  31. package/dist/esm/extensions/react-flow/handles/HandleContent.js.map +1 -1
  32. package/dist/esm/extensions/react-flow/handles/HandleDefault.js +18 -20
  33. package/dist/esm/extensions/react-flow/handles/HandleDefault.js.map +1 -1
  34. package/dist/esm/extensions/react-flow/handles/HandleTools.js +4 -3
  35. package/dist/esm/extensions/react-flow/handles/HandleTools.js.map +1 -1
  36. package/dist/types/cmem/markdown/Markdown.d.ts +8 -3
  37. package/dist/types/components/AutoSuggestion/AutoSuggestion.d.ts +4 -1
  38. package/dist/types/components/CodeAutocompleteField/CodeAutocompleteField.d.ts +2 -1
  39. package/dist/types/components/Icon/canonicalIconNames.d.ts +3 -1
  40. package/dist/types/components/Tooltip/Tooltip.d.ts +1 -1
  41. package/dist/types/components/Typography/HtmlContentBlock.d.ts +16 -4
  42. package/package.json +5 -2
  43. package/src/cmem/markdown/Markdown.tsx +14 -4
  44. package/src/components/Application/helper.ts +30 -2
  45. package/src/components/Application/stories/Application.stories.tsx +11 -1
  46. package/src/components/AutoSuggestion/AutoSuggestion.tsx +44 -26
  47. package/src/components/AutoSuggestion/extensions/markText.ts +1 -2
  48. package/src/components/CodeAutocompleteField/CodeAutocompleteField.tsx +1 -1
  49. package/src/components/Depiction/stories/Depiction.stories.tsx +18 -1
  50. package/src/components/Icon/canonicalIconNames.tsx +3 -1
  51. package/src/components/OverviewItem/overviewitem.scss +18 -7
  52. package/src/components/OverviewItem/stories/OverviewItem.stories.tsx +1 -1
  53. package/src/components/OverviewItem/stories/OverviewItemDepiction.stories.tsx +25 -7
  54. package/src/components/Pagination/pagination.scss +1 -0
  55. package/src/components/Tooltip/Tooltip.tsx +1 -1
  56. package/src/components/Typography/HtmlContentBlock.tsx +16 -4
  57. package/src/components/Typography/stories/HtmlContentBlock.stories.tsx +50 -0
  58. package/src/components/Typography/stories/WhiteSpaceContainer.stories.tsx +15 -30
  59. package/src/extensions/react-flow/handles/HandleContent.tsx +1 -1
  60. package/src/extensions/react-flow/handles/HandleDefault.tsx +21 -33
  61. package/src/extensions/react-flow/handles/HandleTools.tsx +4 -3
  62. package/src/extensions/react-flow/handles/_handles.scss +2 -1
  63. package/src/extensions/react-flow/handles/stories/HandleDefault.stories.tsx +12 -9
@@ -1,26 +1,23 @@
1
1
  import React from "react";
2
- import { loremIpsum } from "react-lorem-ipsum";
3
2
  import { Meta, StoryFn } from "@storybook/react";
4
3
 
5
- import { WhiteSpaceContainer as WhiteSpaceContainerElement } from "../../../index";
4
+ import { WhiteSpaceContainer } from "../../../index";
5
+
6
+ import { Default as HtmlContentBlockStrory } from "./HtmlContentBlock.stories";
6
7
 
7
8
  const whiteSpaceSizeOptions = {
8
- control: "select",
9
- options: {
9
+ control: { type: "select" },
10
+ options: ["not set", "tiny", "small", "regular", "large", "xlarge"],
11
+ mapping: {
10
12
  "not set": undefined,
11
- tiny: "tiny",
12
- small: "small",
13
- regular: "regular",
14
- large: "large",
15
- xlarge: "xlarge",
16
13
  },
17
14
  };
18
15
 
19
16
  export default {
20
- title: "Components/Typography",
21
- component: WhiteSpaceContainerElement,
17
+ title: "Components/Typography/WhiteSpaceContainer",
18
+ component: WhiteSpaceContainer,
22
19
  argTypes: {
23
- children: { control: "none" },
20
+ children: { control: false },
24
21
  marginTop: { ...whiteSpaceSizeOptions },
25
22
  marginRight: { ...whiteSpaceSizeOptions },
26
23
  marginBottom: { ...whiteSpaceSizeOptions },
@@ -30,27 +27,15 @@ export default {
30
27
  paddingBottom: { ...whiteSpaceSizeOptions },
31
28
  paddingLeft: { ...whiteSpaceSizeOptions },
32
29
  },
33
- } as Meta<typeof WhiteSpaceContainerElement>;
30
+ } as Meta<typeof WhiteSpaceContainer>;
34
31
 
35
- const Template: StoryFn<typeof WhiteSpaceContainerElement> = (args) => (
36
- <WhiteSpaceContainerElement {...args} style={{ background: "#eee" }} />
32
+ const Template: StoryFn<typeof WhiteSpaceContainer> = (args) => (
33
+ <WhiteSpaceContainer {...args} style={{ background: "#eee" }} />
37
34
  );
38
35
 
39
- const testContent = loremIpsum({
40
- p: 2,
41
- avgSentencesPerParagraph: 4,
42
- random: false,
43
- }).toString();
44
-
45
- export const WhiteSpaceContainer = Template.bind({});
46
- WhiteSpaceContainer.args = {
47
- children: [
48
- <p>{testContent}</p>,
49
- <p>
50
- <strong>{testContent.replaceAll(" ", "")}</strong>
51
- </p>,
52
- <p>{testContent}</p>,
53
- ],
36
+ export const Default = Template.bind({});
37
+ Default.args = {
38
+ children: HtmlContentBlockStrory.args.children,
54
39
  paddingTop: "tiny",
55
40
  paddingRight: "small",
56
41
  paddingBottom: "regular",
@@ -26,7 +26,7 @@ export const HandleContent = memo(
26
26
  <></>
27
27
  );
28
28
 
29
- if (extendedTooltip && tooltipProps?.isOpen) {
29
+ if (extendedTooltip) {
30
30
  return (
31
31
  <Tooltip
32
32
  content={extendedTooltip}
@@ -1,6 +1,7 @@
1
1
  import React, { memo } from "react";
2
2
  import { Handle as HandleLegacy, HandleProps as ReactFlowHandleLegacyProps } from "react-flow-renderer";
3
3
  import { Handle as HandleNext, HandleProps as ReactFlowHandleNextProps } from "react-flow-renderer-lts";
4
+ import { Classes as BlueprintClasses } from "@blueprintjs/core";
4
5
 
5
6
  import { intentClassName, IntentTypes } from "../../../common/Intent";
6
7
  import { CLASSPREFIX as eccgui } from "../../../configuration/constants";
@@ -44,34 +45,11 @@ export const HandleDefault = memo(
44
45
  const flowVersionCheck = flowVersion || evaluateFlowVersion;
45
46
  const handleDefaultRef = React.useRef<any>();
46
47
  const [extendedTooltipDisplayed, setExtendedTooltipDisplayed] = React.useState<boolean>(false);
47
- const [handleToolsDisplayed, setHandleToolsDisplayed] = React.useState<boolean>(false);
48
48
 
49
- const routeClickToTools = React.useCallback(
50
- (e: Event) => {
51
- const toolsTarget = handleDefaultRef.current.getElementsByClassName(
52
- `${eccgui}-graphviz__handletools-target`
53
- );
54
- if (toolsTarget.length > 0 && e.target === handleDefaultRef.current) {
55
- setHandleToolsDisplayed(true);
56
- setExtendedTooltipDisplayed(false);
57
- }
58
- },
59
- [handleDefaultRef]
60
- );
61
-
62
- React.useEffect(() => {
63
- const toolsTarget = handleDefaultRef.current.getElementsByClassName(
64
- `${eccgui}-graphviz__handletools-target`
65
- );
66
- if (toolsTarget && toolsTarget[0] && handleToolsDisplayed) {
67
- toolsTarget[0].click();
68
- }
69
- }, [handleToolsDisplayed]);
49
+ let toolsTarget: HTMLElement[];
70
50
 
71
51
  React.useEffect(() => {
72
- const toolsTarget = handleDefaultRef.current.getElementsByClassName(
73
- `${eccgui}-graphviz__handletools-target`
74
- );
52
+ toolsTarget = handleDefaultRef.current.getElementsByClassName(`${eccgui}-graphviz__handletools-target`);
75
53
  if (toolsTarget && toolsTarget[0]) {
76
54
  // Polyfill for FF that does not support the `:has()` pseudo selector until at least version 119 or 120
77
55
  // need to be re-evaluated then
@@ -97,7 +75,7 @@ export const HandleDefault = memo(
97
75
  },
98
76
  intent: intent,
99
77
  className: `${eccgui}-graphviz__handle__tooltip-target`,
100
- isOpen: extendedTooltipDisplayed && !handleToolsDisplayed,
78
+ isOpen: extendedTooltipDisplayed,
101
79
  };
102
80
 
103
81
  const handleContentProps = {
@@ -111,6 +89,8 @@ export const HandleDefault = memo(
111
89
  const handleContent = <HandleContent {...handleContentProps}>{children}</HandleContent>;
112
90
 
113
91
  let switchTooltipTimerOn: ReturnType<typeof setTimeout>;
92
+ let switchToolsTimerOff: ReturnType<typeof setTimeout>;
93
+
114
94
  const handleConfig = {
115
95
  ...handleProps,
116
96
  ...tooltipTitle,
@@ -119,18 +99,26 @@ export const HandleDefault = memo(
119
99
  if (handleProps.onClick) {
120
100
  handleProps.onClick(e);
121
101
  }
122
- routeClickToTools(e);
102
+ if (toolsTarget.length > 0 && e.target === handleDefaultRef.current) {
103
+ setExtendedTooltipDisplayed(false);
104
+ toolsTarget[0].click();
105
+ }
123
106
  },
124
107
  "data-category": category,
125
- onMouseEnter: () => {
126
- switchTooltipTimerOn = setTimeout(
127
- () => setExtendedTooltipDisplayed(true),
128
- data?.tooltipProps?.hoverOpenDelay ?? 500
129
- );
130
- setHandleToolsDisplayed(false);
108
+ onMouseEnter: (e: any) => {
109
+ if (switchToolsTimerOff) clearTimeout(switchToolsTimerOff);
110
+ if (e.target === handleDefaultRef.current) {
111
+ switchTooltipTimerOn = setTimeout(
112
+ () => setExtendedTooltipDisplayed(true),
113
+ data?.tooltipProps?.hoverOpenDelay ?? 500
114
+ );
115
+ }
131
116
  },
132
117
  onMouseLeave: () => {
133
118
  if (switchTooltipTimerOn) clearTimeout(switchTooltipTimerOn);
119
+ if (toolsTarget.length > 0 && toolsTarget[0].classList.contains(BlueprintClasses.POPOVER_OPEN)) {
120
+ switchToolsTimerOff = setTimeout(() => toolsTarget[0].click(), 500);
121
+ }
134
122
  setExtendedTooltipDisplayed(false);
135
123
  },
136
124
  };
@@ -18,8 +18,9 @@ export const HandleTools = ({ children, ...otherContextOverlayProps }: HandleToo
18
18
  const configToolsDisplayed = toolsDisplayed
19
19
  ? {
20
20
  defaultIsOpen: true,
21
- autoFocus: true,
22
- interactionKind: BlueprintPopoverInteractionKind.HOVER,
21
+ autoFocus: false,
22
+ interactionKind: BlueprintPopoverInteractionKind.CLICK,
23
+ openOnTargetFocus: true,
23
24
  onClosing: () => setToolsDisplayed(false),
24
25
  }
25
26
  : {
@@ -38,7 +39,7 @@ export const HandleTools = ({ children, ...otherContextOverlayProps }: HandleToo
38
39
  popoverClassName={`${eccgui}-graphviz__handletools-overlay`}
39
40
  >
40
41
  <div
41
- className={`${eccgui}-graphviz__handletools-target`}
42
+ className={`${eccgui}-graphviz__handletools-placeholder`}
42
43
  data-test-id={otherContextOverlayProps["data-test-id"]}
43
44
  data-testid={otherContextOverlayProps["data-testid"]}
44
45
  />
@@ -230,7 +230,8 @@ div.react-flow__handle-bottom {
230
230
  }
231
231
  }
232
232
 
233
- .#{$eccgui}-graphviz__handletools-target {
233
+ .#{$eccgui}-graphviz__handletools-target,
234
+ .#{$eccgui}-graphviz__handletools-placeholder {
234
235
  position: absolute;
235
236
  top: 0;
236
237
  left: 0;
@@ -1,5 +1,6 @@
1
1
  import React, { useCallback, useEffect, useState } from "react";
2
2
  import { Elements, ReactFlowProvider } from "react-flow-renderer";
3
+ import { OverlaysProvider } from "@blueprintjs/core";
3
4
  import { Meta, StoryFn } from "@storybook/react";
4
5
 
5
6
  import { Definitions } from "../../../../common/Intent";
@@ -63,15 +64,17 @@ const HandleDefaultExample = (args: any) => {
63
64
  );
64
65
 
65
66
  return (
66
- <ReactFlowProvider>
67
- <ReactFlow
68
- elements={elements}
69
- style={{ height: "400px" }}
70
- onLoad={onLoad}
71
- edgeTypes={edgeTypes}
72
- defaultZoom={1}
73
- />
74
- </ReactFlowProvider>
67
+ <OverlaysProvider>
68
+ <ReactFlowProvider>
69
+ <ReactFlow
70
+ elements={elements}
71
+ style={{ height: "400px" }}
72
+ onLoad={onLoad}
73
+ edgeTypes={edgeTypes}
74
+ defaultZoom={1}
75
+ />
76
+ </ReactFlowProvider>
77
+ </OverlaysProvider>
75
78
  );
76
79
  };
77
80