@eccenca/gui-elements 23.1.0-easynav.0 → 23.1.0-easynav.2
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 +5 -0
- package/dist/cjs/components/Depiction/Depiction.js +13 -13
- package/dist/cjs/components/Depiction/Depiction.js.map +1 -1
- package/dist/cjs/extensions/react-flow/edges/EdgeDefault.js +20 -5
- package/dist/cjs/extensions/react-flow/edges/EdgeDefault.js.map +1 -1
- package/dist/cjs/extensions/react-flow/edges/EdgeLabel.js +74 -0
- package/dist/cjs/extensions/react-flow/edges/EdgeLabel.js.map +1 -0
- package/dist/cjs/extensions/react-flow/edges/edgeTypes.js +10 -9
- package/dist/cjs/extensions/react-flow/edges/edgeTypes.js.map +1 -1
- package/dist/cjs/extensions/react-flow/handles/HandleDefault.js +10 -2
- package/dist/cjs/extensions/react-flow/handles/HandleDefault.js.map +1 -1
- package/dist/cjs/extensions/react-flow/index.js +13 -3
- package/dist/cjs/extensions/react-flow/index.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/NodeContent.js +86 -15
- package/dist/cjs/extensions/react-flow/nodes/NodeContent.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/NodeDefault.js +2 -1
- package/dist/cjs/extensions/react-flow/nodes/NodeDefault.js.map +1 -1
- package/dist/cjs/extensions/react-flow/versionsupport.js +17 -0
- package/dist/cjs/extensions/react-flow/versionsupport.js.map +1 -1
- package/dist/esm/components/Depiction/Depiction.js +15 -14
- package/dist/esm/components/Depiction/Depiction.js.map +1 -1
- package/dist/esm/extensions/react-flow/edges/EdgeDefault.js +20 -4
- package/dist/esm/extensions/react-flow/edges/EdgeDefault.js.map +1 -1
- package/dist/esm/extensions/react-flow/edges/EdgeLabel.js +63 -0
- package/dist/esm/extensions/react-flow/edges/EdgeLabel.js.map +1 -0
- package/dist/esm/extensions/react-flow/edges/edgeTypes.js +10 -9
- package/dist/esm/extensions/react-flow/edges/edgeTypes.js.map +1 -1
- package/dist/esm/extensions/react-flow/handles/HandleDefault.js +10 -2
- package/dist/esm/extensions/react-flow/handles/HandleDefault.js.map +1 -1
- package/dist/esm/extensions/react-flow/index.js +2 -1
- package/dist/esm/extensions/react-flow/index.js.map +1 -1
- package/dist/esm/extensions/react-flow/nodes/NodeContent.js +94 -21
- package/dist/esm/extensions/react-flow/nodes/NodeContent.js.map +1 -1
- package/dist/esm/extensions/react-flow/nodes/NodeDefault.js +2 -1
- package/dist/esm/extensions/react-flow/nodes/NodeDefault.js.map +1 -1
- package/dist/esm/extensions/react-flow/versionsupport.js +31 -1
- package/dist/esm/extensions/react-flow/versionsupport.js.map +1 -1
- package/dist/types/extensions/react-flow/edges/EdgeDefault.d.ts +16 -1
- package/dist/types/extensions/react-flow/edges/EdgeLabel.d.ts +44 -0
- package/dist/types/extensions/react-flow/edges/edgeTypes.d.ts +10 -9
- package/dist/types/extensions/react-flow/index.d.ts +2 -2
- package/dist/types/extensions/react-flow/nodes/NodeContent.d.ts +40 -3
- package/dist/types/extensions/react-flow/versionsupport.d.ts +2 -1
- package/package.json +1 -1
- package/src/cmem/react-flow/ReactFlow/ReactFlow.stories.tsx +2 -2
- package/src/cmem/react-flow/_edges.scss +3 -2
- package/src/components/Depiction/Depiction.tsx +11 -10
- package/src/extensions/react-flow/_config.scss +8 -4
- package/src/extensions/react-flow/edges/EdgeDefault.tsx +60 -5
- package/src/extensions/react-flow/edges/EdgeLabel.tsx +127 -0
- package/src/extensions/react-flow/edges/_edges.scss +206 -31
- package/src/extensions/react-flow/edges/edgeTypes.ts +13 -9
- package/src/extensions/react-flow/edges/stories/EdgeDefault.stories.tsx +34 -13
- package/src/extensions/react-flow/edges/stories/EdgeLabel.stories.tsx +39 -0
- package/src/extensions/react-flow/handles/HandleDefault.tsx +18 -11
- package/src/extensions/react-flow/index.ts +3 -2
- package/src/extensions/react-flow/nodes/NodeContent.tsx +161 -26
- package/src/extensions/react-flow/nodes/NodeDefault.tsx +2 -2
- package/src/extensions/react-flow/nodes/_nodes.scss +220 -60
- package/src/extensions/react-flow/nodes/stories/NodeContent.stories.tsx +62 -1
- package/src/extensions/react-flow/versionsupport.ts +17 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
.react-flow__edge {
|
|
2
|
+
--#{$eccgui}-reactflow-node-color-default: #{$reactflow-edge-stroke-color-default};
|
|
3
|
+
--#{$eccgui}-reactflow-node-color-hover: #{$reactflow-edge-stroke-color-hover};
|
|
4
|
+
--#{$eccgui}-reactflow-node-color-selected: #{$reactflow-edge-stroke-color-selected};
|
|
2
5
|
|
|
3
6
|
path, rect {
|
|
4
7
|
shape-rendering: optimizeSpeed;
|
|
5
|
-
|
|
6
|
-
transition: $reactflow-transition-time * 0.5 $reactflow-transition-function;
|
|
7
|
-
*/
|
|
8
|
-
stroke-opacity: $reactflow-edge-stroke-opacity;
|
|
8
|
+
stroke-opacity: $reactflow-edge-stroke-opacity-default;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
text {
|
|
12
|
-
opacity: $reactflow-edge-stroke-opacity;
|
|
12
|
+
opacity: $reactflow-edge-stroke-opacity-default;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
&:hover {
|
|
@@ -31,11 +31,24 @@
|
|
|
31
31
|
opacity: $reactflow-edge-stroke-opacity-selected;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
+
stroke: var(--#{$eccgui}-reactflow-node-color-default);
|
|
35
|
+
color: var(--#{$eccgui}-reactflow-node-color-default);
|
|
36
|
+
|
|
37
|
+
&:hover {
|
|
38
|
+
stroke: var(--#{$eccgui}-reactflow-node-color-hover);
|
|
39
|
+
color: var(--#{$eccgui}-reactflow-node-color-hover);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&.selected {
|
|
43
|
+
stroke: var(--#{$eccgui}-reactflow-node-color-selected);
|
|
44
|
+
color: var(--#{$eccgui}-reactflow-node-color-selected);
|
|
45
|
+
}
|
|
34
46
|
}
|
|
35
47
|
|
|
36
48
|
path.react-flow__edge-path {
|
|
37
49
|
stroke-width: 2;
|
|
38
50
|
stroke: currentColor;
|
|
51
|
+
stroke-opacity: $reactflow-edge-stroke-opacity-default;
|
|
39
52
|
|
|
40
53
|
.react-flow__edge.selected & {
|
|
41
54
|
stroke-width: 2;
|
|
@@ -49,9 +62,12 @@ path.react-flow__edge-path-glow {
|
|
|
49
62
|
fill: none;
|
|
50
63
|
stroke-linecap: round;
|
|
51
64
|
|
|
52
|
-
.react-flow__edge:hover
|
|
65
|
+
.react-flow__edge:hover & {
|
|
66
|
+
stroke-opacity: $reactflow-edge-stroke-opacity-hover * 0.2;
|
|
67
|
+
}
|
|
68
|
+
|
|
53
69
|
.react-flow__edge.selected & {
|
|
54
|
-
stroke-opacity: 0.
|
|
70
|
+
stroke-opacity: $reactflow-edge-stroke-opacity-selected * 0.2;
|
|
55
71
|
}
|
|
56
72
|
|
|
57
73
|
.react-flow__edge.animated & {
|
|
@@ -70,12 +86,6 @@ path.react-flow__edge-path-glow {
|
|
|
70
86
|
}
|
|
71
87
|
}
|
|
72
88
|
|
|
73
|
-
.react-flow__edge-textwrapper {
|
|
74
|
-
/* TODO: transitions currently do not work like expected
|
|
75
|
-
transition: $reactflow-transition-time * 0.5 $reactflow-transition-function;
|
|
76
|
-
*/
|
|
77
|
-
}
|
|
78
|
-
|
|
79
89
|
.react-flow__edge-text {
|
|
80
90
|
fill: currentColor;
|
|
81
91
|
stroke: none;
|
|
@@ -84,39 +94,127 @@ path.react-flow__edge-path-glow {
|
|
|
84
94
|
.react-flow__edge-textbg {
|
|
85
95
|
}
|
|
86
96
|
|
|
97
|
+
// Stroke types
|
|
98
|
+
|
|
99
|
+
path.react-flow__edge-path--stroke-solid {
|
|
100
|
+
stroke-dasharray: unset;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
path.react-flow__edge-path--stroke-dashed,
|
|
104
|
+
.react-flow__edge.animated path.react-flow__edge-path--stroke-dashed {
|
|
105
|
+
stroke-dasharray: 5;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
path.react-flow__edge-path--stroke-dotted,
|
|
109
|
+
.react-flow__edge.animated path.react-flow__edge-path--stroke-dotted {
|
|
110
|
+
stroke-dasharray: 2;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
path.react-flow__edge-path--stroke-double {
|
|
114
|
+
stroke: #fff !important;
|
|
115
|
+
stroke-opacity: 1 !important;
|
|
116
|
+
filter: drop-shadow(1px 1px 1px currentColor) drop-shadow(-1px -1px 1px currentColor);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
path.react-flow__edge-path--stroke-doubledashed {
|
|
120
|
+
stroke: #fff !important;
|
|
121
|
+
stroke-opacity: 1 !important;
|
|
122
|
+
filter: drop-shadow(1px 1px 1px currentColor) drop-shadow(-1px -1px 1px currentColor);
|
|
123
|
+
stroke-dasharray: 5;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Intent states
|
|
127
|
+
|
|
128
|
+
g[class*="#{$eccgui}-intent--"] {
|
|
129
|
+
color: var(--edge-intent-color);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
g[class*="#{$eccgui}-intent--"] > path.react-flow__edge-path,
|
|
133
|
+
g[class*="#{$eccgui}-intent--"] > path.react-flow__edge-path-glow {
|
|
134
|
+
stroke: var(--edge-intent-color);
|
|
135
|
+
|
|
136
|
+
.react-flow__edge.selected & {
|
|
137
|
+
stroke: var(--edge-intent-color);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
g.#{$eccgui}-intent--primary {
|
|
142
|
+
--edge-intent-color: #{$eccgui-color-primary};
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
g.#{$eccgui}-intent--accent {
|
|
146
|
+
--edge-intent-color: #{$eccgui-color-accent};
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
g.#{$eccgui}-intent--info {
|
|
150
|
+
--edge-intent-color: #{$eccgui-color-info-text};
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
g.#{$eccgui}-intent--success {
|
|
154
|
+
--edge-intent-color: #{$eccgui-color-success-text};
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
g.#{$eccgui}-intent--warning {
|
|
158
|
+
--edge-intent-color: #{$eccgui-color-warning-text};
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
g.#{$eccgui}-intent--danger {
|
|
162
|
+
--edge-intent-color: #{$eccgui-color-danger-text};
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// Highlightning
|
|
166
|
+
|
|
167
|
+
path.react-flow__edge-path-highlight {
|
|
168
|
+
stroke-opacity: 1;
|
|
169
|
+
fill: none;
|
|
170
|
+
stroke-linecap: round;
|
|
171
|
+
stroke: #fff;
|
|
172
|
+
filter:
|
|
173
|
+
drop-shadow(2px -2px 1px var(--edge-highlight-default-color))
|
|
174
|
+
drop-shadow(-2px 2px 1px var(--edge-highlight-alternate-color, var(--edge-highlight-default-color)));
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.#{$eccgui}-graphviz__edge--highlight-default {
|
|
178
|
+
--edge-highlight-default-color: #{$eccgui-color-accent};
|
|
179
|
+
--edge-highlight-alternate-color: #{$eccgui-color-accent};
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.#{$eccgui}-graphviz__edge--highlight-alternate {
|
|
183
|
+
--edge-highlight-default-color: #{$eccgui-color-primary};
|
|
184
|
+
--edge-highlight-alternate-color: #{$eccgui-color-primary};
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.#{$eccgui}-graphviz__edge--highlight-default.#{$eccgui}-graphviz__edge--highlight-alternate {
|
|
188
|
+
--edge-highlight-default-color: #{$eccgui-color-accent};
|
|
189
|
+
--edge-highlight-alternate-color: #{$eccgui-color-primary};
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
87
194
|
// Type colors
|
|
88
195
|
|
|
89
196
|
.react-flow__edge-default,
|
|
90
197
|
.react-flow__edge-straight,
|
|
91
198
|
.react-flow__edge-smoothstep,
|
|
92
199
|
.react-flow__edge-step {
|
|
93
|
-
stroke: $reactflow-edge-stroke-color;
|
|
94
|
-
color: $reactflow-edge-stroke-color;
|
|
95
|
-
|
|
96
|
-
&:hover {
|
|
97
|
-
stroke: $reactflow-edge-stroke-color-hover;
|
|
98
|
-
color: $reactflow-edge-stroke-color-hover;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
&.selected {
|
|
102
|
-
stroke: $reactflow-edge-stroke-color-selected;
|
|
103
|
-
color: $reactflow-edge-stroke-color-selected;
|
|
104
|
-
}
|
|
105
200
|
}
|
|
106
201
|
|
|
107
202
|
.react-flow__edge-success {
|
|
108
|
-
|
|
109
|
-
color: $eccgui-color-success-text;
|
|
203
|
+
--#{$eccgui}-reactflow-node-color-default: #{$eccgui-color-success-text};
|
|
204
|
+
--#{$eccgui}-reactflow-node-color-hover: #{$eccgui-color-success-text};
|
|
205
|
+
--#{$eccgui}-reactflow-node-color-selected: #{$eccgui-color-success-text};
|
|
110
206
|
}
|
|
111
207
|
|
|
112
208
|
.react-flow__edge-warning {
|
|
113
|
-
|
|
114
|
-
color: $eccgui-color-warning-text;
|
|
209
|
+
--#{$eccgui}-reactflow-node-color-default: #{$eccgui-color-warning-text};
|
|
210
|
+
--#{$eccgui}-reactflow-node-color-hover: #{$eccgui-color-warning-text};
|
|
211
|
+
--#{$eccgui}-reactflow-node-color-selected: #{$eccgui-color-warning-text};
|
|
115
212
|
}
|
|
116
213
|
|
|
117
214
|
.react-flow__edge-danger {
|
|
118
|
-
|
|
119
|
-
color: $eccgui-color-danger-text;
|
|
215
|
+
--#{$eccgui}-reactflow-node-color-default: #{$eccgui-color-danger-text};
|
|
216
|
+
--#{$eccgui}-reactflow-node-color-hover: #{$eccgui-color-danger-text};
|
|
217
|
+
--#{$eccgui}-reactflow-node-color-selected: #{$eccgui-color-danger-text};
|
|
120
218
|
}
|
|
121
219
|
|
|
122
220
|
// Tools overlay
|
|
@@ -154,3 +252,80 @@ path.react-flow__edge-path-glow {
|
|
|
154
252
|
transform: scale(1.75, 0.75);
|
|
155
253
|
}
|
|
156
254
|
}
|
|
255
|
+
|
|
256
|
+
// Custom label
|
|
257
|
+
|
|
258
|
+
.#{$eccgui}-graphviz__edge-label {
|
|
259
|
+
border: 0.5*$reactflow-node-border-width solid currentColor;
|
|
260
|
+
border-radius: $reactflow-node-border-radius;
|
|
261
|
+
background: #fff; // TODO color
|
|
262
|
+
color: currentColor;
|
|
263
|
+
display: inline-flex;
|
|
264
|
+
align-items: center;
|
|
265
|
+
width: auto;
|
|
266
|
+
max-width: 20rem;
|
|
267
|
+
height: 0.5 * $reactflow-node-largesize;
|
|
268
|
+
font-size: $reactflow-node-font-size;
|
|
269
|
+
|
|
270
|
+
&.#{$eccgui}-intent--primary {
|
|
271
|
+
color: $eccgui-color-primary;
|
|
272
|
+
border-color: $eccgui-color-primary;
|
|
273
|
+
}
|
|
274
|
+
&.#{$eccgui}-intent--accent {
|
|
275
|
+
color: $eccgui-color-accent;
|
|
276
|
+
border-color: $eccgui-color-accent;
|
|
277
|
+
}
|
|
278
|
+
&.#{$eccgui}-intent--success {
|
|
279
|
+
color: $eccgui-color-success-text;
|
|
280
|
+
border-color: $eccgui-color-success-text;
|
|
281
|
+
}
|
|
282
|
+
&.#{$eccgui}-intent--info {
|
|
283
|
+
color: $eccgui-color-info-text;
|
|
284
|
+
border-color: $eccgui-color-info-text;
|
|
285
|
+
}
|
|
286
|
+
&.#{$eccgui}-intent--warning {
|
|
287
|
+
color: $eccgui-color-warning-text;
|
|
288
|
+
border-color: $eccgui-color-warning-text;
|
|
289
|
+
}
|
|
290
|
+
&.#{$eccgui}-intent--danger {
|
|
291
|
+
color: $eccgui-color-danger-text;
|
|
292
|
+
border-color: $eccgui-color-danger-text;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
.#{$eccgui}-graphviz__edge-label--large {
|
|
296
|
+
height: $reactflow-node-largesize;
|
|
297
|
+
}
|
|
298
|
+
.#{$eccgui}-graphviz__edge-label--fullwidth {
|
|
299
|
+
max-width: none;
|
|
300
|
+
width: 100%;
|
|
301
|
+
}
|
|
302
|
+
.#{$eccgui}-graphviz__edge-label__depiction {
|
|
303
|
+
margin: $eccgui-size-block-whitespace * 0.25;
|
|
304
|
+
flex-grow: 0;
|
|
305
|
+
flex-shrink: 0;
|
|
306
|
+
.#{$eccgui}-depiction__image {
|
|
307
|
+
height: calc(#{0.5 * $reactflow-node-largesize} - #{$eccgui-size-block-whitespace * 0.25});
|
|
308
|
+
|
|
309
|
+
.#{$eccgui}-graphviz__edge-label--large & {
|
|
310
|
+
height: calc(#{$reactflow-node-largesize} - #{$eccgui-size-block-whitespace * 0.25});
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
.#{$eccgui}-graphviz__edge-label__text {
|
|
315
|
+
margin: $eccgui-size-block-whitespace * 0.25;
|
|
316
|
+
flex-grow: 1;
|
|
317
|
+
flex-shrink: 1;
|
|
318
|
+
white-space: nowrap;
|
|
319
|
+
overflow: hidden;
|
|
320
|
+
text-overflow: ellipsis;
|
|
321
|
+
text-align: center;
|
|
322
|
+
|
|
323
|
+
.#{$eccgui}-graphviz__edge-label--fullwidth & {
|
|
324
|
+
text-align: left;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
.#{$eccgui}-graphviz__edge-label__aux {
|
|
328
|
+
margin: $eccgui-size-block-whitespace * 0.25;
|
|
329
|
+
flex-grow: 0;
|
|
330
|
+
flex-shrink: 0;
|
|
331
|
+
}
|
|
@@ -12,13 +12,17 @@ export const edgeTypes = {
|
|
|
12
12
|
default: EdgeDefault,
|
|
13
13
|
straight: EdgeDefault,
|
|
14
14
|
step: EdgeStep,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
|
|
16
|
+
success: EdgeDefault,
|
|
17
|
+
warning: EdgeDefault,
|
|
18
|
+
danger: EdgeDefault,
|
|
19
|
+
|
|
20
|
+
implicit: EdgeDefault,
|
|
21
|
+
import: EdgeDefault,
|
|
22
|
+
subclass: EdgeDefault,
|
|
23
|
+
subproperty: EdgeDefault,
|
|
24
|
+
rdftype: EdgeDefault,
|
|
25
|
+
|
|
26
|
+
value: EdgeStep,
|
|
27
|
+
score: EdgeStep,
|
|
24
28
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useState, useEffect, useCallback } from "react";
|
|
2
2
|
import { ComponentStory, ComponentMeta } from "@storybook/react";
|
|
3
|
-
import { ReactFlow,
|
|
3
|
+
import { ReactFlow, EdgeLabel, EdgeLabelObject } from "./../../../../../index";
|
|
4
4
|
import { ArrowHeadType, Elements, getMarkerEnd, ReactFlowProvider } from 'react-flow-renderer';
|
|
5
5
|
|
|
6
6
|
import { EdgeDefault, EdgeDefaultDataProps as EdgeData } from "./../EdgeDefault";
|
|
@@ -16,6 +16,10 @@ export default {
|
|
|
16
16
|
component: EdgeDefault,
|
|
17
17
|
subcomponents: { EdgeDefaultDataProps },
|
|
18
18
|
argTypes: {
|
|
19
|
+
type: {
|
|
20
|
+
control: "select",
|
|
21
|
+
options: [...(Object.keys(edgeTypes))],
|
|
22
|
+
},
|
|
19
23
|
},
|
|
20
24
|
} as ComponentMeta<typeof EdgeDefault>;
|
|
21
25
|
|
|
@@ -74,7 +78,7 @@ const Template: ComponentStory<typeof EdgeDefault> = (args) => (
|
|
|
74
78
|
export const Default = Template.bind({});
|
|
75
79
|
Default.args = {
|
|
76
80
|
id: 'default',
|
|
77
|
-
type: '
|
|
81
|
+
type: 'dangerStep',
|
|
78
82
|
label: "edge",
|
|
79
83
|
arrowHeadType: "arrowclosed",
|
|
80
84
|
source: 'node-1',
|
|
@@ -88,21 +92,14 @@ CustomLabel.args = {
|
|
|
88
92
|
...Default.args,
|
|
89
93
|
id: "customlabel",
|
|
90
94
|
arrowHeadType: undefined,
|
|
95
|
+
label: undefined,
|
|
91
96
|
data: {
|
|
92
97
|
renderLabel: (
|
|
93
98
|
edgeCenter: [number, number, number, number]
|
|
94
99
|
) => (
|
|
95
|
-
<
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
x={edgeCenter[0] - 50}
|
|
99
|
-
y={edgeCenter[1] - 10}
|
|
100
|
-
requiredExtensions="http://www.w3.org/1999/xhtml"
|
|
101
|
-
>
|
|
102
|
-
<body>
|
|
103
|
-
<Tag>Custom label</Tag>
|
|
104
|
-
</body>
|
|
105
|
-
</foreignObject>
|
|
100
|
+
<EdgeLabelObject edgeCenter={edgeCenter}>
|
|
101
|
+
<EdgeLabel text="Custom label that is very long" />
|
|
102
|
+
</EdgeLabelObject>
|
|
106
103
|
)
|
|
107
104
|
}
|
|
108
105
|
};
|
|
@@ -119,3 +116,27 @@ InverseEdge.args = {
|
|
|
119
116
|
),
|
|
120
117
|
}
|
|
121
118
|
};
|
|
119
|
+
|
|
120
|
+
export const AdjustStrokeType = Template.bind({});
|
|
121
|
+
AdjustStrokeType.args = {
|
|
122
|
+
...Default.args,
|
|
123
|
+
data: {
|
|
124
|
+
strokeType: "double",
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
export const AdjustIntent = Template.bind({});
|
|
129
|
+
AdjustIntent.args = {
|
|
130
|
+
...Default.args,
|
|
131
|
+
data: {
|
|
132
|
+
intent: "warning",
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
export const AdjustHighlight = Template.bind({});
|
|
137
|
+
AdjustHighlight.args = {
|
|
138
|
+
...Default.args,
|
|
139
|
+
data: {
|
|
140
|
+
highlightColor: ["default", "alternate"]
|
|
141
|
+
}
|
|
142
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ComponentStory, ComponentMeta } from "@storybook/react";
|
|
3
|
+
import { loremIpsum } from 'react-lorem-ipsum';
|
|
4
|
+
import { EdgeLabel, IconButton, Badge } from "./../../../../../index";
|
|
5
|
+
import canonicalIcons from "./../../../../components/Icon/canonicalIconNames";
|
|
6
|
+
import { helpersArgTypes } from "../../../../../.storybook/helpers";
|
|
7
|
+
|
|
8
|
+
export default {
|
|
9
|
+
title: "Extensions/React Flow/Custom EdgeLabel",
|
|
10
|
+
component: EdgeLabel,
|
|
11
|
+
argTypes: {
|
|
12
|
+
depiction: {
|
|
13
|
+
control: "select",
|
|
14
|
+
options: [...(Object.keys(canonicalIcons))],
|
|
15
|
+
},
|
|
16
|
+
actions: {
|
|
17
|
+
control: "select",
|
|
18
|
+
options: ["Not set", "Icon button", "Icon button small", "Info badge"],
|
|
19
|
+
mapping: {
|
|
20
|
+
"Not set": undefined,
|
|
21
|
+
"Icon button": <IconButton name="item-info" text="Icon button" onClick={()=>alert("Click info")} />,
|
|
22
|
+
"Icon button small": <IconButton small name="item-info" text="Icon button" onClick={()=>alert("Click info")} />,
|
|
23
|
+
"Info badge": <Badge intent="info">Info</Badge>,
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
intent: {
|
|
27
|
+
...helpersArgTypes.exampleIntent,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
} as ComponentMeta<typeof EdgeLabel>;
|
|
31
|
+
|
|
32
|
+
const Template: ComponentStory<typeof EdgeLabel> = (args) => (
|
|
33
|
+
<EdgeLabel {...args} />
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
export const Default = Template.bind({});
|
|
37
|
+
Default.args = {
|
|
38
|
+
text: loremIpsum({ p: 1, avgSentencesPerParagraph: 1, avgWordsPerSentence: 8, random: false }).toString(),
|
|
39
|
+
};
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
Handle as HandleNext,
|
|
9
9
|
} from "react-flow-renderer-lts";
|
|
10
10
|
import { HandleContent, HandleContentProps } from "./HandleContent";
|
|
11
|
-
import { ReacFlowVersionSupportProps } from "../versionsupport";
|
|
11
|
+
import { ReacFlowVersionSupportProps, useReactFlowVersion } from "../versionsupport";
|
|
12
12
|
|
|
13
13
|
interface HandleExtensionProps extends ReacFlowVersionSupportProps {
|
|
14
14
|
data?: HandleContentProps;
|
|
@@ -24,7 +24,7 @@ export interface HandleNextProps extends HandleExtensionProps, ReactFlowHandleNe
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
export const HandleDefault = memo(({
|
|
27
|
-
flowVersion =
|
|
27
|
+
flowVersion = useReactFlowVersion(),
|
|
28
28
|
data,
|
|
29
29
|
tooltip,
|
|
30
30
|
children,
|
|
@@ -38,13 +38,20 @@ export const HandleDefault = memo(({
|
|
|
38
38
|
</HandleContent>
|
|
39
39
|
);
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
41
|
+
switch (flowVersion) {
|
|
42
|
+
case "legacy":
|
|
43
|
+
return (
|
|
44
|
+
<HandleLegacy {...handleProps} {...tooltipTitle}>
|
|
45
|
+
{ handleContent }
|
|
46
|
+
</HandleLegacy>
|
|
47
|
+
);
|
|
48
|
+
case "next":
|
|
49
|
+
return (
|
|
50
|
+
<HandleNext {...handleProps} {...tooltipTitle}>
|
|
51
|
+
{ handleContent }
|
|
52
|
+
</HandleNext>
|
|
53
|
+
);
|
|
54
|
+
default:
|
|
55
|
+
return <></>;
|
|
56
|
+
}
|
|
50
57
|
});
|
|
@@ -3,10 +3,10 @@ export { NodeContent } from "./nodes/NodeContent";
|
|
|
3
3
|
export { NodeContentExtension } from "./nodes/NodeContentExtension";
|
|
4
4
|
export { NodeTools } from "./nodes/NodeTools";
|
|
5
5
|
export { nodeTypes } from "./nodes/nodeTypes";
|
|
6
|
-
export { EdgeDefault } from "./edges/EdgeDefault";
|
|
7
6
|
export { EdgeStep } from "./edges/EdgeStep";
|
|
8
7
|
export { EdgeTools } from "./edges/EdgeTools";
|
|
9
8
|
export { edgeTypes } from "./edges/edgeTypes";
|
|
9
|
+
export * from "./edges/EdgeLabel";
|
|
10
10
|
export { MarkerArrowClosedInverse } from "./markers/MarkerArrowClosedInverse";
|
|
11
11
|
export { ReactFlowMarkers } from "./markers/ReactFlowMarkers";
|
|
12
12
|
export { MiniMap } from "./minimap/MiniMap";
|
|
@@ -17,6 +17,7 @@ export type { NodeProps } from "./nodes/NodeDefault";
|
|
|
17
17
|
export type { NodeContentProps } from "./nodes/NodeContent";
|
|
18
18
|
export type { NodeContentExtensionProps } from "./nodes/NodeContentExtension";
|
|
19
19
|
export type { NodeToolsProps } from "./nodes/NodeTools";
|
|
20
|
-
export type { EdgeDefaultProps } from "./edges/EdgeDefault";
|
|
21
20
|
export type { EdgeStepProps } from "./edges/EdgeStep";
|
|
22
21
|
export type { MiniMapProps } from "./minimap/MiniMap";
|
|
22
|
+
|
|
23
|
+
export * from "./edges/EdgeDefault";
|