@eccenca/gui-elements 25.0.0-rc.2 → 25.1.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +64 -18
- package/dist/cjs/cmem/ActivityControl/SilkActivityControl.js +1 -3
- package/dist/cjs/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
- package/dist/cjs/cmem/ContentBlobToggler/ContentBlobToggler.js +1 -0
- package/dist/cjs/cmem/ContentBlobToggler/ContentBlobToggler.js.map +1 -1
- package/dist/cjs/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js +34 -11
- package/dist/cjs/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js.map +1 -1
- package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlowV12.js.map +1 -1
- package/dist/cjs/common/Intent/index.js +1 -1
- package/dist/cjs/common/Intent/index.js.map +1 -1
- package/dist/cjs/common/index.js +3 -1
- package/dist/cjs/common/index.js.map +1 -1
- package/dist/cjs/common/utils/reduceToText.js +26 -1
- package/dist/cjs/common/utils/reduceToText.js.map +1 -1
- package/dist/cjs/components/Application/ApplicationViewability.js +33 -0
- package/dist/cjs/components/Application/ApplicationViewability.js.map +1 -0
- package/dist/cjs/components/Application/index.js +1 -0
- package/dist/cjs/components/Application/index.js.map +1 -1
- package/dist/cjs/components/ContextOverlay/ContextMenu.js +2 -2
- package/dist/cjs/components/ContextOverlay/ContextMenu.js.map +1 -1
- package/dist/cjs/components/ContextOverlay/ContextOverlay.js +62 -24
- package/dist/cjs/components/ContextOverlay/ContextOverlay.js.map +1 -1
- package/dist/cjs/components/Icon/IconButton.js.map +1 -1
- package/dist/cjs/components/TextReducer/TextReducer.js +15 -3
- package/dist/cjs/components/TextReducer/TextReducer.js.map +1 -1
- package/dist/cjs/components/Typography/InlineText.js +29 -0
- package/dist/cjs/components/Typography/InlineText.js.map +1 -0
- package/dist/cjs/components/Typography/index.js +1 -0
- package/dist/cjs/components/Typography/index.js.map +1 -1
- package/dist/cjs/extensions/codemirror/CodeMirror.js +2 -2
- package/dist/cjs/extensions/codemirror/CodeMirror.js.map +1 -1
- package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +1 -1
- package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -1
- package/dist/cjs/extensions/codemirror/tests/codemirrorTestHelper.js +2 -2
- package/dist/cjs/extensions/codemirror/tests/codemirrorTestHelper.js.map +1 -1
- package/dist/cjs/extensions/react-flow/edges/EdgeNew.js +1 -1
- package/dist/cjs/extensions/react-flow/edges/EdgeNew.js.map +1 -1
- package/dist/cjs/extensions/react-flow/handles/HandleDefault.js +1 -1
- package/dist/cjs/extensions/react-flow/handles/HandleDefault.js.map +1 -1
- package/dist/cjs/extensions/react-flow/minimap/MiniMap.js +1 -1
- package/dist/cjs/extensions/react-flow/minimap/MiniMap.js.map +1 -1
- package/dist/cjs/extensions/react-flow/minimap/MiniMapV12.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/nodeUtils.js.map +1 -1
- package/dist/esm/cmem/ActivityControl/SilkActivityControl.js +1 -3
- package/dist/esm/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
- package/dist/esm/cmem/ContentBlobToggler/ContentBlobToggler.js +1 -0
- package/dist/esm/cmem/ContentBlobToggler/ContentBlobToggler.js.map +1 -1
- package/dist/esm/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js +32 -9
- package/dist/esm/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js.map +1 -1
- package/dist/esm/cmem/react-flow/ReactFlow/ReactFlowV12.js.map +1 -1
- package/dist/esm/common/Intent/index.js +1 -1
- package/dist/esm/common/Intent/index.js.map +1 -1
- package/dist/esm/common/index.js +3 -1
- package/dist/esm/common/index.js.map +1 -1
- package/dist/esm/common/utils/reduceToText.js +37 -1
- package/dist/esm/common/utils/reduceToText.js.map +1 -1
- package/dist/esm/components/Application/ApplicationViewability.js +28 -0
- package/dist/esm/components/Application/ApplicationViewability.js.map +1 -0
- package/dist/esm/components/Application/index.js +1 -0
- package/dist/esm/components/Application/index.js.map +1 -1
- package/dist/esm/components/ContextOverlay/ContextMenu.js +2 -2
- package/dist/esm/components/ContextOverlay/ContextMenu.js.map +1 -1
- package/dist/esm/components/ContextOverlay/ContextOverlay.js +66 -28
- package/dist/esm/components/ContextOverlay/ContextOverlay.js.map +1 -1
- package/dist/esm/components/Icon/IconButton.js.map +1 -1
- package/dist/esm/components/TextReducer/TextReducer.js +14 -3
- package/dist/esm/components/TextReducer/TextReducer.js.map +1 -1
- package/dist/esm/components/Typography/InlineText.js +33 -0
- package/dist/esm/components/Typography/InlineText.js.map +1 -0
- package/dist/esm/components/Typography/index.js +1 -0
- package/dist/esm/components/Typography/index.js.map +1 -1
- package/dist/esm/extensions/codemirror/CodeMirror.js +3 -3
- package/dist/esm/extensions/codemirror/CodeMirror.js.map +1 -1
- package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +1 -1
- package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -1
- package/dist/esm/extensions/codemirror/tests/codemirrorTestHelper.js +3 -3
- package/dist/esm/extensions/codemirror/tests/codemirrorTestHelper.js.map +1 -1
- package/dist/esm/extensions/react-flow/edges/EdgeNew.js +1 -1
- package/dist/esm/extensions/react-flow/edges/EdgeNew.js.map +1 -1
- package/dist/esm/extensions/react-flow/handles/HandleDefault.js +1 -1
- package/dist/esm/extensions/react-flow/handles/HandleDefault.js.map +1 -1
- package/dist/esm/extensions/react-flow/minimap/MiniMap.js +1 -1
- package/dist/esm/extensions/react-flow/minimap/MiniMap.js.map +1 -1
- package/dist/esm/extensions/react-flow/minimap/MiniMapV12.js.map +1 -1
- package/dist/esm/extensions/react-flow/nodes/nodeUtils.js.map +1 -1
- package/dist/types/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.d.ts +26 -10
- package/dist/types/common/index.d.ts +2 -0
- package/dist/types/common/utils/reduceToText.d.ts +1 -1
- package/dist/types/components/Application/ApplicationViewability.d.ts +36 -0
- package/dist/types/components/Application/index.d.ts +1 -0
- package/dist/types/components/ContextOverlay/ContextMenu.d.ts +1 -1
- package/dist/types/components/Icon/IconButton.d.ts +1 -1
- package/dist/types/components/Structure/TitleSubsection.d.ts +1 -1
- package/dist/types/components/Tabs/Tab.d.ts +2 -2
- package/dist/types/components/TextReducer/TextReducer.d.ts +13 -1
- package/dist/types/components/Typography/InlineText.d.ts +13 -0
- package/dist/types/components/Typography/index.d.ts +1 -0
- package/dist/types/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.d.ts +1 -1
- package/dist/types/extensions/codemirror/tests/codemirrorTestHelper.d.ts +1 -1
- package/package.json +54 -53
- package/src/cmem/ActivityControl/SilkActivityControl.tsx +1 -1
- package/src/cmem/ContentBlobToggler/ContentBlobToggler.tsx +1 -1
- package/src/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.tsx +66 -18
- package/src/cmem/ContentBlobToggler/stories/StringPreviewContentBlobToggler.stories.tsx +27 -0
- package/src/cmem/ContentBlobToggler/tests/StringPreviewContentBlobToggler.test.tsx +98 -0
- package/src/cmem/react-flow/ReactFlow/ReactFlowV12.tsx +1 -0
- package/src/common/Intent/index.ts +2 -1
- package/src/common/index.ts +6 -2
- package/src/common/utils/reduceToText.tsx +30 -2
- package/src/components/Application/ApplicationViewability.tsx +61 -0
- package/src/components/Application/_content.scss +7 -0
- package/src/components/Application/_header.scss +12 -3
- package/src/components/Application/_viewability.scss +13 -0
- package/src/components/Application/application.scss +1 -0
- package/src/components/Application/index.ts +1 -0
- package/src/components/Application/stories/ApplicationViewability.stories.tsx +37 -0
- package/src/components/Application/tests/ApplicationViewability.test.tsx +43 -0
- package/src/components/AutoSuggestion/tests/ExtendedCodeEditor.test.tsx +1 -1
- package/src/components/Card/card.scss +6 -0
- package/src/components/Checkbox/checkbox.scss +14 -2
- package/src/components/ContentGroup/_contentgroup.scss +9 -0
- package/src/components/ContextOverlay/ContextMenu.tsx +4 -1
- package/src/components/ContextOverlay/ContextOverlay.tsx +74 -24
- package/src/components/ContextOverlay/tests/ContextMenu.test.tsx +43 -0
- package/src/components/ContextOverlay/tests/ContextOverlay.test.tsx +71 -0
- package/src/components/Depiction/depiction.scss +6 -0
- package/src/components/Dialog/stories/Modal.stories.tsx +12 -150
- package/src/components/Dialog/stories/ModalContext.stories.tsx +153 -0
- package/src/components/FlexibleLayout/flexiblelayout.scss +16 -0
- package/src/components/Grid/grid.scss +17 -0
- package/src/components/Grid/stories/Grid.stories.tsx +10 -7
- package/src/components/Grid/stories/GridRow.stories.tsx +13 -7
- package/src/components/Icon/IconButton.tsx +1 -1
- package/src/components/Notification/notification.scss +6 -0
- package/src/components/OverviewItem/overviewitem.scss +9 -0
- package/src/components/OverviewItem/stories/OverviewItem.stories.tsx +28 -0
- package/src/components/OverviewItem/stories/OverviewItemActions.stories.tsx +2 -2
- package/src/components/OverviewItem/stories/OverviewItemDescription.stories.tsx +1 -1
- package/src/components/OverviewItem/stories/OverviewItemLine.stories.tsx +1 -1
- package/src/components/PropertyValuePair/propertyvalue.scss +23 -1
- package/src/components/Separation/separation.scss +6 -0
- package/src/components/Table/table.scss +22 -0
- package/src/components/Tabs/stories/TabTitle.stories.tsx +7 -2
- package/src/components/Tag/stories/TagList.stories.tsx +2 -2
- package/src/components/Tag/tag.scss +19 -9
- package/src/components/TextReducer/TextReducer.stories.tsx +2 -1
- package/src/components/TextReducer/TextReducer.test.tsx +44 -0
- package/src/components/TextReducer/TextReducer.tsx +14 -4
- package/src/components/Typography/InlineText.tsx +24 -0
- package/src/components/Typography/_reset.scss +1 -0
- package/src/components/Typography/index.ts +1 -0
- package/src/components/Typography/stories/InlineText.stories.tsx +27 -0
- package/src/components/Typography/typography.scss +28 -2
- package/src/extensions/codemirror/CodeMirror.tsx +4 -4
- package/src/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.ts +1 -2
- package/src/extensions/codemirror/tests/codemirrorTestHelper.ts +3 -3
- package/src/extensions/react-flow/edges/EdgeNew.tsx +2 -1
- package/src/extensions/react-flow/handles/HandleDefault.tsx +2 -2
- package/src/extensions/react-flow/minimap/MiniMap.tsx +2 -1
- package/src/extensions/react-flow/minimap/MiniMapV12.tsx +1 -1
- package/src/extensions/react-flow/nodes/_nodes.scss +4 -3
- package/src/extensions/react-flow/nodes/nodeUtils.tsx +1 -0
- package/src/extensions/react-flow/nodes/stories/NodeContent.stories.tsx +2 -2
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
.#{$eccgui}-propertyvalue__pair {
|
|
8
|
+
clear: both;
|
|
8
9
|
display: block;
|
|
9
10
|
width: 100%;
|
|
10
|
-
clear: both;
|
|
11
11
|
|
|
12
12
|
&.#{$eccgui}-propertyvalue__pair--hasdivider {
|
|
13
13
|
&:not(:last-child) {
|
|
@@ -94,3 +94,25 @@
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
|
+
|
|
98
|
+
@media print {
|
|
99
|
+
.#{$eccgui}-propertyvalue__pair,
|
|
100
|
+
.#{$eccgui}-propertyvalue__property,
|
|
101
|
+
.#{$eccgui}-propertyvalue__value {
|
|
102
|
+
position: relative;
|
|
103
|
+
float: none !important;
|
|
104
|
+
display: block;
|
|
105
|
+
width: auto;
|
|
106
|
+
height: auto;
|
|
107
|
+
min-height: 0 !important;
|
|
108
|
+
padding: 0;
|
|
109
|
+
margin: 0 !important;
|
|
110
|
+
|
|
111
|
+
&:is(.#{$eccgui}-propertyvalue__property) {
|
|
112
|
+
margin-bottom: 0.25 * $eccgui-size-block-whitespace !important;
|
|
113
|
+
}
|
|
114
|
+
&:is(.#{$eccgui}-propertyvalue__pair) {
|
|
115
|
+
margin-bottom: 0.5 * $eccgui-size-block-whitespace !important;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -356,3 +356,25 @@ tr.#{$prefix}--parent-row.#{$prefix}--expandable-row + tr[data-child-row] {
|
|
|
356
356
|
min-height: $eccgui-size-tablecell-height-regular;
|
|
357
357
|
}
|
|
358
358
|
}
|
|
359
|
+
|
|
360
|
+
@media print {
|
|
361
|
+
.#{$eccgui}-simpletable:has(.#{$eccgui}-simpletable__cell > .#{$eccgui}-typography__overflowtext) {
|
|
362
|
+
// allow 2 lines of text in `<OverflowText />` elements that are direct children of table cells
|
|
363
|
+
.#{$eccgui}-simpletable__cell {
|
|
364
|
+
& > .#{$eccgui}-typography__overflowtext,
|
|
365
|
+
& > .#{$eccgui}-typography__overflowtext--passdown {
|
|
366
|
+
display: inline;
|
|
367
|
+
overflow: visible;
|
|
368
|
+
text-overflow: unset;
|
|
369
|
+
white-space: unset;
|
|
370
|
+
}
|
|
371
|
+
& > .#{$eccgui}-typography__overflowtext {
|
|
372
|
+
display: -webkit-box;
|
|
373
|
+
overflow: hidden;
|
|
374
|
+
-webkit-line-clamp: 2;
|
|
375
|
+
line-clamp: 2;
|
|
376
|
+
-webkit-box-orient: vertical;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Meta, StoryFn } from "@storybook/react";
|
|
3
3
|
|
|
4
|
-
import { Tabs, TabTitle as TabTitleOrg } from "./../../../";
|
|
4
|
+
import { Tabs, TabTitle as TabTitleOrg, TabTitleProps } from "./../../../";
|
|
5
5
|
|
|
6
6
|
export default {
|
|
7
7
|
title: "Components/Tabs/TabTitle",
|
|
@@ -9,7 +9,7 @@ export default {
|
|
|
9
9
|
argTypes: {},
|
|
10
10
|
} as Meta<typeof TabTitleOrg>;
|
|
11
11
|
|
|
12
|
-
const TabTitle = (args) => {
|
|
12
|
+
const TabTitle = (args: React.JSX.IntrinsicAttributes & TabTitleProps) => {
|
|
13
13
|
return (
|
|
14
14
|
<Tabs
|
|
15
15
|
id="titledemo"
|
|
@@ -31,3 +31,8 @@ TabTitleElement.args = {
|
|
|
31
31
|
titlePrefix: "[",
|
|
32
32
|
titleSuffix: <span>]</span>,
|
|
33
33
|
};
|
|
34
|
+
|
|
35
|
+
export const TabTitleSymbolElement = TemplateFull.bind({});
|
|
36
|
+
TabTitleSymbolElement.args = {
|
|
37
|
+
text: "★",
|
|
38
|
+
};
|
|
@@ -8,7 +8,7 @@ export default {
|
|
|
8
8
|
component: TagList,
|
|
9
9
|
argTypes: {
|
|
10
10
|
children: {
|
|
11
|
-
control:
|
|
11
|
+
control: false,
|
|
12
12
|
},
|
|
13
13
|
},
|
|
14
14
|
} as Meta<typeof TagList>;
|
|
@@ -18,5 +18,5 @@ const Template: StoryFn<typeof TagList> = (args) => <TagList {...args} />;
|
|
|
18
18
|
export const List = Template.bind({});
|
|
19
19
|
List.args = {
|
|
20
20
|
label: "Tag list",
|
|
21
|
-
children: [<Tag>Short</Tag>, <Tag>List</Tag>, <Tag>Of</Tag>, <Tag>Tags</Tag>],
|
|
21
|
+
children: [<Tag small>Short</Tag>, <Tag>List</Tag>, <Tag>Of</Tag>, <Tag large>Tags</Tag>],
|
|
22
22
|
};
|
|
@@ -30,12 +30,15 @@ $tag-round-adjustment: 0 !default;
|
|
|
30
30
|
@import "~@blueprintjs/core/src/components/tag/tag";
|
|
31
31
|
|
|
32
32
|
.#{$eccgui}-tag__item {
|
|
33
|
+
--eccgui-tag-border-width: 1px;
|
|
34
|
+
|
|
33
35
|
flex-grow: 0;
|
|
34
36
|
flex-shrink: 0;
|
|
35
37
|
min-width: calc(#{$tag-height} - 2px);
|
|
36
38
|
min-height: calc(#{$tag-height} - 2px);
|
|
37
39
|
max-height: calc(#{$tag-height} - 2px);
|
|
38
40
|
padding: 0 $tag-padding-top;
|
|
41
|
+
line-height: calc(#{$tag-height} - 2px);
|
|
39
42
|
|
|
40
43
|
&.#{$ns}-round {
|
|
41
44
|
border-radius: $tag-height * 0.5;
|
|
@@ -55,11 +58,12 @@ $tag-round-adjustment: 0 !default;
|
|
|
55
58
|
}
|
|
56
59
|
|
|
57
60
|
&.#{$eccgui}-tag--small {
|
|
58
|
-
min-width: calc(#{$tag-height-small} + #{$tag-padding-small}
|
|
59
|
-
min-height: calc(#{$tag-height-small} + #{$tag-padding-small}
|
|
60
|
-
max-height: calc(#{$tag-height-small} + #{$tag-padding-small}
|
|
61
|
+
min-width: calc(#{$tag-height-small} + #{$tag-padding-small});
|
|
62
|
+
min-height: calc(#{$tag-height-small} + #{$tag-padding-small});
|
|
63
|
+
max-height: calc(#{$tag-height-small} + #{$tag-padding-small});
|
|
61
64
|
padding: 0 $tag-padding-small;
|
|
62
|
-
|
|
65
|
+
font-size: calc(#{$eccgui-size-typo-tag} - 1px);
|
|
66
|
+
line-height: calc(#{$tag-height-small} + #{$tag-padding-small});
|
|
63
67
|
|
|
64
68
|
&.#{$ns}-round {
|
|
65
69
|
border-radius: $tag-height-small * 0.5;
|
|
@@ -75,7 +79,7 @@ $tag-round-adjustment: 0 !default;
|
|
|
75
79
|
min-height: calc(#{$tag-height-large} + #{$tag-padding-large} - 2px);
|
|
76
80
|
max-height: calc(#{$tag-height-large} + #{$tag-padding-large} - 2px);
|
|
77
81
|
font-size: $eccgui-size-typo-tag-large;
|
|
78
|
-
line-height: calc(#{$tag-height-large} - 2px);
|
|
82
|
+
line-height: calc(#{$tag-height-large} + #{$tag-padding-large} - 2px);
|
|
79
83
|
|
|
80
84
|
&.#{$ns}-round {
|
|
81
85
|
border-radius: $tag-height-large * 0.5;
|
|
@@ -138,7 +142,7 @@ $tag-round-adjustment: 0 !default;
|
|
|
138
142
|
|
|
139
143
|
.#{$ns}-tag {
|
|
140
144
|
border-style: solid;
|
|
141
|
-
border-width:
|
|
145
|
+
border-width: var(--eccgui-tag-border-width);
|
|
142
146
|
|
|
143
147
|
&:not([class*="#{$ns}-intent-"]) {
|
|
144
148
|
--eccgui-tag-bg: #{$tag-default-color};
|
|
@@ -151,7 +155,7 @@ $tag-round-adjustment: 0 !default;
|
|
|
151
155
|
var(--eccgui-tag-bg) var(--eccgui-tag-emfactor),
|
|
152
156
|
eccgui-color-var("identity", "background", "100")
|
|
153
157
|
);
|
|
154
|
-
border-color: var(--eccgui-tag-border);
|
|
158
|
+
border-color: eccgui-color-rgba(var(--eccgui-tag-border), calc(0.25 * var(--eccgui-tag-emfactor)));
|
|
155
159
|
|
|
156
160
|
&.#{$eccgui}-tag--strongeremphasis {
|
|
157
161
|
--eccgui-tag-emfactor: 95%;
|
|
@@ -211,7 +215,7 @@ $tag-round-adjustment: 0 !default;
|
|
|
211
215
|
var(--eccgui-tag-bg) var(--eccgui-tag-emfactor),
|
|
212
216
|
eccgui-color-var("identity", "background", "100")
|
|
213
217
|
);
|
|
214
|
-
border-color: var(--eccgui-tag-border);
|
|
218
|
+
border-color: eccgui-color-rgba(var(--eccgui-tag-border), calc(0.25 * var(--eccgui-tag-emfactor)));
|
|
215
219
|
|
|
216
220
|
&.#{$eccgui}-tag--strongeremphasis {
|
|
217
221
|
--eccgui-tag-emfactor: 100%;
|
|
@@ -231,7 +235,7 @@ $tag-round-adjustment: 0 !default;
|
|
|
231
235
|
|
|
232
236
|
&[class*="#{$eccgui}-intent--"] {
|
|
233
237
|
color: eccgui-color-rgba(var(--eccgui-tag-text), var(--eccgui-tag-emfactor));
|
|
234
|
-
border-color: eccgui-color-rgba(var(--eccgui-tag-border), var(--eccgui-tag-emfactor));
|
|
238
|
+
border-color: eccgui-color-rgba(var(--eccgui-tag-border), calc(0.25 * var(--eccgui-tag-emfactor)));
|
|
235
239
|
}
|
|
236
240
|
|
|
237
241
|
&.#{$eccgui}-intent--primary {
|
|
@@ -267,3 +271,9 @@ $tag-round-adjustment: 0 !default;
|
|
|
267
271
|
}
|
|
268
272
|
}
|
|
269
273
|
}
|
|
274
|
+
|
|
275
|
+
@media print {
|
|
276
|
+
.#{$eccgui}-tag__item {
|
|
277
|
+
print-color-adjust: exact;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
@@ -18,8 +18,9 @@ Default.args = {
|
|
|
18
18
|
<LoremIpsum p={1} avgSentencesPerParagraph={1} random={false} />,
|
|
19
19
|
"Simple text with URL http://example.com/ that should not get parsed.",
|
|
20
20
|
"a < b to test equations in text like b > a.",
|
|
21
|
+
`Something with a "quote" in it.`,
|
|
21
22
|
<>
|
|
22
|
-
<Markdown>{`* This\n* is\n* a\n* list\n\nwritten in Markdown.`}</Markdown>
|
|
23
|
+
<Markdown>{`* This\n* is\n* a\n* list\n\nwritten in Markdown\n* containing a few HTML 'entities' & "quotes".`}</Markdown>
|
|
23
24
|
<HtmlContentBlock>
|
|
24
25
|
<h1>Block with sub elements</h1>
|
|
25
26
|
<LoremIpsum p={3} avgSentencesPerParagraph={3} random={false} />
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { render, RenderResult } from "@testing-library/react";
|
|
3
|
+
|
|
4
|
+
import "@testing-library/jest-dom";
|
|
5
|
+
|
|
6
|
+
import { Markdown, TextReducer } from "./../../";
|
|
7
|
+
import { Default as TextReducerStory } from "./TextReducer.stories";
|
|
8
|
+
|
|
9
|
+
describe("TextReducer", () => {
|
|
10
|
+
const textMustExist = (queryByText: RenderResult["queryByText"], text: string) => {
|
|
11
|
+
expect(queryByText(text, { exact: false })).not.toBeNull();
|
|
12
|
+
};
|
|
13
|
+
const textMustNotExist = (queryByText: RenderResult["queryByText"], text: string) => {
|
|
14
|
+
expect(queryByText(text, { exact: false })).toBeNull();
|
|
15
|
+
};
|
|
16
|
+
it("should display encoded HTML entities by default if they are used in the transformed markup", () => {
|
|
17
|
+
const { queryByText } = render(<TextReducer {...TextReducerStory.args} />);
|
|
18
|
+
textMustExist(queryByText, "'entities' & "quotes"");
|
|
19
|
+
textMustNotExist(queryByText, `'entities' & "quotes"`);
|
|
20
|
+
});
|
|
21
|
+
it("should not display encoded HTML entities if `decodeHtmlEntities` is enabled", () => {
|
|
22
|
+
const { queryByText } = render(<TextReducer {...TextReducerStory.args} decodeHtmlEntities />);
|
|
23
|
+
textMustNotExist(queryByText, "'entities' & "quotes"");
|
|
24
|
+
textMustExist(queryByText, `'entities' & "quotes"`);
|
|
25
|
+
});
|
|
26
|
+
it("should only decode if correct encoded HTML entities are found (strict mode)", () => {
|
|
27
|
+
const { queryByText } = render(
|
|
28
|
+
<TextReducer decodeHtmlEntities>
|
|
29
|
+
<Markdown>&</Markdown>& foo&bar
|
|
30
|
+
</TextReducer>
|
|
31
|
+
);
|
|
32
|
+
textMustExist(queryByText, "& & foo&bar");
|
|
33
|
+
textMustNotExist(queryByText, "& & foo&bar");
|
|
34
|
+
});
|
|
35
|
+
it("should allow decoding non-strict encoded HTML entities", () => {
|
|
36
|
+
const { queryByText } = render(
|
|
37
|
+
<TextReducer decodeHtmlEntities decodeHtmlEntitiesOptions={{ strict: false }}>
|
|
38
|
+
<Markdown>&</Markdown>& foo&bar
|
|
39
|
+
</TextReducer>
|
|
40
|
+
);
|
|
41
|
+
textMustNotExist(queryByText, "& & foo&bar");
|
|
42
|
+
textMustExist(queryByText, "& & foo&bar");
|
|
43
|
+
});
|
|
44
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { DecodeHtmlEntitiesOptions, utils } from "../../common";
|
|
4
4
|
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
|
|
5
5
|
|
|
6
6
|
import { OverflowText, OverflowTextProps } from "./../Typography";
|
|
@@ -24,6 +24,17 @@ export interface TextReducerProps extends Pick<React.HTMLAttributes<HTMLElement>
|
|
|
24
24
|
* Specify more `OverflowText` properties used when `useOverflowTextWrapper` is set to `true`.
|
|
25
25
|
*/
|
|
26
26
|
overflowTextProps?: Omit<OverflowTextProps, "passDown">;
|
|
27
|
+
/**
|
|
28
|
+
* If you transform HTML markup to text then the result could contain HTML entity encoded strings.
|
|
29
|
+
* By enabling this option they are decoded back to it's original char.
|
|
30
|
+
*/
|
|
31
|
+
decodeHtmlEntities?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Set the options used to decode the HTML entities, if `decodeHtmlEntities` is enabled.
|
|
34
|
+
* Internally we use `he` library, see their [documentation on decode options](https://www.npmjs.com/package/he#hedecodehtml-options).
|
|
35
|
+
* If not set we use `{ isAttributeValue: true, strict: true }` as default value.
|
|
36
|
+
*/
|
|
37
|
+
decodeHtmlEntitiesOptions?: DecodeHtmlEntitiesOptions;
|
|
27
38
|
}
|
|
28
39
|
|
|
29
40
|
/**
|
|
@@ -32,16 +43,15 @@ export interface TextReducerProps extends Pick<React.HTMLAttributes<HTMLElement>
|
|
|
32
43
|
*/
|
|
33
44
|
export const TextReducer = ({
|
|
34
45
|
children,
|
|
35
|
-
maxNodes,
|
|
36
|
-
maxLength,
|
|
37
46
|
useOverflowTextWrapper,
|
|
38
47
|
overflowTextProps,
|
|
48
|
+
...reduceToTextOptions
|
|
39
49
|
}: TextReducerProps) => {
|
|
40
50
|
if (typeof children === "undefined") {
|
|
41
51
|
return <></>;
|
|
42
52
|
}
|
|
43
53
|
|
|
44
|
-
const shrinkedContent = reduceToText(children,
|
|
54
|
+
const shrinkedContent = utils.reduceToText(children, reduceToTextOptions);
|
|
45
55
|
|
|
46
56
|
return useOverflowTextWrapper ? (
|
|
47
57
|
<OverflowText
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
|
|
4
|
+
import { TestableComponent } from "../interfaces";
|
|
5
|
+
|
|
6
|
+
export interface InlineTextProps extends React.HTMLAttributes<HTMLElement>, TestableComponent {
|
|
7
|
+
/**
|
|
8
|
+
* Additional CSS class name.
|
|
9
|
+
*/
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Forces all children to be displayed as inline content.
|
|
15
|
+
*/
|
|
16
|
+
export const InlineText = ({ className = "", children, ...otherProps }: InlineTextProps) => {
|
|
17
|
+
return (
|
|
18
|
+
<div {...otherProps} className={`${eccgui}-typography__inlinetext` + (className ? " " + className : "")}>
|
|
19
|
+
{children}
|
|
20
|
+
</div>
|
|
21
|
+
);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default InlineText;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Meta, StoryFn } from "@storybook/react";
|
|
3
|
+
|
|
4
|
+
import { InlineText } from "../InlineText";
|
|
5
|
+
|
|
6
|
+
import overflowTextConfig from "./OverflowText.stories";
|
|
7
|
+
|
|
8
|
+
const config = {
|
|
9
|
+
title: "Components/Typography/InlineText",
|
|
10
|
+
component: InlineText,
|
|
11
|
+
argTypes: {
|
|
12
|
+
children: overflowTextConfig.argTypes?.children,
|
|
13
|
+
},
|
|
14
|
+
} as Meta<typeof InlineText>;
|
|
15
|
+
export default config;
|
|
16
|
+
|
|
17
|
+
const Template: StoryFn<typeof InlineText> = (args) => <InlineText {...args} />;
|
|
18
|
+
|
|
19
|
+
export const Default = Template.bind({});
|
|
20
|
+
Default.args = {
|
|
21
|
+
children: (
|
|
22
|
+
<div>
|
|
23
|
+
<div>Block line 1.</div>
|
|
24
|
+
<div>Block line 2.</div>
|
|
25
|
+
</div>
|
|
26
|
+
),
|
|
27
|
+
};
|
|
@@ -17,6 +17,11 @@ body {
|
|
|
17
17
|
text-rendering: optimizelegibility;
|
|
18
18
|
-webkit-font-smoothing: antialiased;
|
|
19
19
|
-moz-osx-font-smoothing: grayscale;
|
|
20
|
+
// User-facing text may contain Unicode symbols (e.g. "★") that fall outside the primary font stack.
|
|
21
|
+
// Browsers pick different system fallback fonts for such characters, causing glyphs to render at
|
|
22
|
+
// different optical sizes (smaller in Firefox). font-size-adjust normalises the fallback font size
|
|
23
|
+
// by matching the primary font's x-height, reducing the visual size discrepancy across browsers.
|
|
24
|
+
font-size-adjust: from-font;
|
|
20
25
|
}
|
|
21
26
|
|
|
22
27
|
code {
|
|
@@ -68,6 +73,11 @@ mark {
|
|
|
68
73
|
line-height: $eccgui-size-typo-caption-lineheight;
|
|
69
74
|
}
|
|
70
75
|
|
|
76
|
+
.#{$eccgui}-typography__contentblock.#{$eccgui}-typography--large {
|
|
77
|
+
font-size: $eccgui-size-typo-subtitle;
|
|
78
|
+
line-height: $eccgui-size-typo-subtitle-lineheight;
|
|
79
|
+
}
|
|
80
|
+
|
|
71
81
|
h1 {
|
|
72
82
|
.#{$eccgui}-typography__contentblock &,
|
|
73
83
|
&.#{$eccgui}-typography__text {
|
|
@@ -223,9 +233,9 @@ table {
|
|
|
223
233
|
max-width: 100%;
|
|
224
234
|
overflow: hidden;
|
|
225
235
|
text-overflow: ellipsis;
|
|
236
|
+
vertical-align: middle;
|
|
226
237
|
overflow-wrap: normal;
|
|
227
238
|
white-space: nowrap;
|
|
228
|
-
vertical-align: middle;
|
|
229
239
|
}
|
|
230
240
|
|
|
231
241
|
.#{$eccgui}-typography__overflowtext--inline {
|
|
@@ -241,8 +251,8 @@ table {
|
|
|
241
251
|
}
|
|
242
252
|
|
|
243
253
|
.#{$eccgui}-typography__overflowtext--ellipsis-reverse {
|
|
244
|
-
text-align: left;
|
|
245
254
|
text-overflow: ellipsis;
|
|
255
|
+
text-align: left;
|
|
246
256
|
direction: rtl;
|
|
247
257
|
unicode-bidi: embed;
|
|
248
258
|
|
|
@@ -263,6 +273,22 @@ table {
|
|
|
263
273
|
}
|
|
264
274
|
}
|
|
265
275
|
|
|
276
|
+
// InlineText
|
|
277
|
+
|
|
278
|
+
.#{$eccgui}-typography__inlinetext {
|
|
279
|
+
display: inline;
|
|
280
|
+
|
|
281
|
+
* {
|
|
282
|
+
display: inline;
|
|
283
|
+
|
|
284
|
+
& + * {
|
|
285
|
+
&::before {
|
|
286
|
+
content: " ";
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
266
292
|
// helpers
|
|
267
293
|
|
|
268
294
|
.#{$eccgui}-typography--nooverflow {
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import React, { useMemo, useRef } from "react";
|
|
2
2
|
import { defaultKeymap, indentWithTab } from "@codemirror/commands";
|
|
3
3
|
import { defaultHighlightStyle, foldKeymap } from "@codemirror/language";
|
|
4
|
-
import { EditorState, Extension
|
|
4
|
+
import { Compartment,EditorState, Extension } from "@codemirror/state";
|
|
5
5
|
import { DOMEventHandlers, EditorView, KeyBinding, keymap, Rect, ViewUpdate } from "@codemirror/view";
|
|
6
6
|
import { minimalSetup } from "codemirror";
|
|
7
7
|
|
|
8
|
+
import { Markdown } from "../../cmem/markdown/Markdown";
|
|
8
9
|
import { IntentTypes } from "../../common/Intent";
|
|
9
10
|
import { markField } from "../../components/AutoSuggestion/extensions/markText";
|
|
10
11
|
import { TestableComponent } from "../../components/interfaces";
|
|
11
|
-
import { MarkdownToolbar } from "./toolbars/markdown.toolbar";
|
|
12
|
-
import { Markdown } from "../../cmem/markdown/Markdown";
|
|
13
12
|
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
|
|
14
13
|
|
|
15
14
|
//hooks
|
|
@@ -31,9 +30,10 @@ import {
|
|
|
31
30
|
adaptedLineNumbers,
|
|
32
31
|
adaptedLintGutter,
|
|
33
32
|
adaptedPlaceholder,
|
|
34
|
-
compartment,
|
|
35
33
|
adaptedSyntaxHighlighting,
|
|
34
|
+
compartment,
|
|
36
35
|
} from "./tests/codemirrorTestHelper";
|
|
36
|
+
import { MarkdownToolbar } from "./toolbars/markdown.toolbar";
|
|
37
37
|
import { ExtensionCreator } from "./types";
|
|
38
38
|
|
|
39
39
|
export interface CodeEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "translate" | "onChange" | "onKeyDown" | "onMouseDown" | "onScroll">, TestableComponent {
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
//adapted v6 modes imports
|
|
2
|
+
import {html} from "@codemirror/lang-html"
|
|
2
3
|
import { javascript } from "@codemirror/lang-javascript";
|
|
3
4
|
import { json } from "@codemirror/lang-json";
|
|
4
5
|
import { markdown } from "@codemirror/lang-markdown";
|
|
5
6
|
import { sql } from "@codemirror/lang-sql";
|
|
6
7
|
import { xml } from "@codemirror/lang-xml";
|
|
7
8
|
import { yaml } from "@codemirror/lang-yaml";
|
|
8
|
-
import {html} from "@codemirror/lang-html"
|
|
9
|
-
|
|
10
9
|
import { defaultHighlightStyle, LanguageSupport, StreamLanguage, StreamParser } from "@codemirror/language";
|
|
11
10
|
//legacy mode imports
|
|
12
11
|
import { jinja2 } from "@codemirror/legacy-modes/mode/jinja2";
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
*/
|
|
8
8
|
//Todo this should become redundant with later patches that avoid this error
|
|
9
9
|
|
|
10
|
-
import {
|
|
11
|
-
import { syntaxHighlighting, foldGutter, codeFolding } from "@codemirror/language";
|
|
12
|
-
import {Extension, Compartment, StateEffect, EditorState} from "@codemirror/state";
|
|
10
|
+
import { codeFolding,foldGutter, syntaxHighlighting } from "@codemirror/language";
|
|
13
11
|
import { lintGutter } from "@codemirror/lint";
|
|
12
|
+
import {Compartment, EditorState,Extension, StateEffect} from "@codemirror/state";
|
|
13
|
+
import { EditorView, highlightActiveLine,highlightSpecialChars, lineNumbers, placeholder } from "@codemirror/view";
|
|
14
14
|
|
|
15
15
|
/** placeholder extension, current error '_view.placeholder is not a function' */
|
|
16
16
|
export const adaptedPlaceholder = (text?: string) =>
|
|
@@ -3,10 +3,11 @@ import {
|
|
|
3
3
|
ConnectionLineComponentProps,
|
|
4
4
|
ConnectionLineType,
|
|
5
5
|
} from "@xyflow/react";
|
|
6
|
-
import { EdgeStraight, EdgeStep, EdgeBezier, EdgeDefaultV12Props } from "./../index";
|
|
7
6
|
|
|
8
7
|
import { CLASSPREFIX as eccgui } from "../../../configuration/constants";
|
|
9
8
|
|
|
9
|
+
import { EdgeBezier, EdgeDefaultV12Props,EdgeStep, EdgeStraight } from "./../index";
|
|
10
|
+
|
|
10
11
|
export const EdgeNew = (edgeNewProps: ConnectionLineComponentProps) => {
|
|
11
12
|
|
|
12
13
|
const {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React, { memo } from "react";
|
|
2
2
|
import { Handle as HandleV9, HandleProps as ReactFlowHandleV9Props } from "react-flow-renderer";
|
|
3
|
-
import { Handle as HandleV12, HandleProps as ReactFlowHandleV12Props } from "@xyflow/react";
|
|
4
3
|
import { Classes as BlueprintClasses } from "@blueprintjs/core";
|
|
4
|
+
import {Intent} from "@blueprintjs/core/src/common/intent";
|
|
5
|
+
import { Handle as HandleV12, HandleProps as ReactFlowHandleV12Props } from "@xyflow/react";
|
|
5
6
|
|
|
6
7
|
import { intentClassName, IntentTypes } from "../../../common/Intent";
|
|
7
8
|
import { CLASSPREFIX as eccgui } from "../../../configuration/constants";
|
|
@@ -9,7 +10,6 @@ import { TooltipProps } from "../../../index";
|
|
|
9
10
|
import { ReacFlowVersionSupportProps, useReactFlowVersion } from "../versionsupport";
|
|
10
11
|
|
|
11
12
|
import { HandleContent, HandleContentProps } from "./HandleContent";
|
|
12
|
-
import {Intent} from "@blueprintjs/core/src/common/intent";
|
|
13
13
|
|
|
14
14
|
export type HandleCategory = "configuration" | "flexible" | "fixed" | "unknown" | "dependency";
|
|
15
15
|
|
|
@@ -6,9 +6,10 @@ import {
|
|
|
6
6
|
} from "react-flow-renderer";
|
|
7
7
|
import { FlowTransform } from "react-flow-renderer/dist/types";
|
|
8
8
|
|
|
9
|
-
import { miniMapUtils } from "./utils";
|
|
10
9
|
import { ReacFlowVersionSupportProps, ReactFlowVersions, useReactFlowVersion } from "../versionsupport";
|
|
10
|
+
|
|
11
11
|
import { MiniMapV12, MiniMapV12Props } from "./MiniMapV12";
|
|
12
|
+
import { miniMapUtils } from "./utils";
|
|
12
13
|
|
|
13
14
|
export interface MiniMapBasicProps {
|
|
14
15
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React, { memo } from "react";
|
|
2
2
|
import { MiniMap as ReactFlowMiniMap, MiniMapProps as ReactFlowMiniMapProps } from "@xyflow/react";
|
|
3
3
|
|
|
4
|
-
import { miniMapUtils } from "./utils";
|
|
5
4
|
import { MiniMapBasicProps } from "./MiniMap";
|
|
5
|
+
import { miniMapUtils } from "./utils";
|
|
6
6
|
|
|
7
7
|
export interface MiniMapV12Props extends MiniMapBasicProps, Omit<ReactFlowMiniMapProps, "maskColor"> {
|
|
8
8
|
}
|
|
@@ -53,7 +53,8 @@
|
|
|
53
53
|
border-radius: $reactflow-node-border-radius;
|
|
54
54
|
|
|
55
55
|
&:hover {
|
|
56
|
-
box-shadow: 0 0 0 6 * $reactflow-node-border-width
|
|
56
|
+
box-shadow: 0 0 0 6 * $reactflow-node-border-width
|
|
57
|
+
eccgui-color-rgba($reactflow-edge-stroke-color-selected, 0.05);
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
&.was-resized.is-resizable-vertical {
|
|
@@ -147,8 +148,10 @@
|
|
|
147
148
|
|
|
148
149
|
.#{$eccgui}-graphviz__node__header-depiction,
|
|
149
150
|
.#{$eccgui}-graphviz__node__header-menu {
|
|
151
|
+
display: flex;
|
|
150
152
|
flex-grow: 0;
|
|
151
153
|
flex-shrink: 0;
|
|
154
|
+
align-items: center;
|
|
152
155
|
max-height: calc(#{$reactflow-node-basesize} - #{2 * $reactflow-node-border-width});
|
|
153
156
|
margin: 0 $eccgui-size-block-whitespace * 0.25;
|
|
154
157
|
|
|
@@ -158,8 +161,6 @@
|
|
|
158
161
|
}
|
|
159
162
|
|
|
160
163
|
.#{$eccgui}-graphviz__node__header-depiction {
|
|
161
|
-
display: flex;
|
|
162
|
-
align-items: center;
|
|
163
164
|
justify-content: center;
|
|
164
165
|
|
|
165
166
|
/* TODO: does not work correctly with tooltips around
|
|
@@ -2,6 +2,7 @@ import { CSSProperties } from "react";
|
|
|
2
2
|
import {Node as NodeV9, XYPosition as XYPositionV9} from "react-flow-renderer";
|
|
3
3
|
import {Node as NodeV12, XYPosition as XYPositionV12} from "@xyflow/react";
|
|
4
4
|
import Color from "color";
|
|
5
|
+
|
|
5
6
|
import {NodeDimensions} from "./NodeContent";
|
|
6
7
|
|
|
7
8
|
interface StickyNoteBase {
|
|
@@ -12,11 +12,11 @@ import {
|
|
|
12
12
|
HtmlContentBlock,
|
|
13
13
|
IconButton,
|
|
14
14
|
MenuItem,
|
|
15
|
+
NodeContent,
|
|
16
|
+
NodeContentExtension,
|
|
15
17
|
OverflowText,
|
|
16
18
|
Tag,
|
|
17
19
|
TagList,
|
|
18
|
-
NodeContent,
|
|
19
|
-
NodeContentExtension,
|
|
20
20
|
} from "./../../../../index";
|
|
21
21
|
import {
|
|
22
22
|
Default as ContentExtensionExample,
|