From 9ac875e7cd0d39f50ddbdd525ce7ef0bb229624c Mon Sep 17 00:00:00 2001 From: haschek Date: Tue, 9 Jun 2026 09:29:23 +0000 Subject: [PATCH 01/21] Prepare release v26.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9873ae7a..03d42849 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@eccenca/gui-elements", "description": "GUI elements based on other libraries, usable in React application, written in Typescript.", - "version": "25.2.0", + "version": "26.0.0", "license": "Apache-2.0", "homepage": "https://github.com/eccenca/gui-elements", "bugs": "https://github.com/eccenca/gui-elements/issues", From 6ce804c2fb689fe1a94992aafec4e8efe0937411 Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Tue, 9 Jun 2026 14:04:32 +0200 Subject: [PATCH 02/21] add migration note for new major version --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6eb665ad..c7280d4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p ## [Unreleased] +This is a major release, and it might be not compatible with your current usage of our library. Please read about the necessary changes in the section about how to migrate. + +### Migration from v24 to v25 + +- remove deprecated components, properties and imports from your project, if the info cannot be found here then it was already mentioned in **Deprecated** sections of the past changelogs +- apply changes mentioned in the **Changed** subsection + ### Added - `` @@ -30,6 +37,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p - `color` library was upgraded from v4 to v5, so the types changed - if you forward properties then they cannot have `Color` as type, use `ColorLike` - `@blueprintjs/core` library was updated to v6 + - if you use an explicit BlueprintJS import in your project you need to set `"@blueprintjs/core": "6.8.1"` and `"@blueprintjs/select": "6.1.1"` - you may need to update class names in your tests (the new prefix is `bp6-`) - `Toaster.create` is now an async function - `` From d6a5f08271d22e3fd9557ba9332010b11e08dd1e Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Tue, 9 Jun 2026 14:27:04 +0200 Subject: [PATCH 03/21] start to remove code that was previously marked as deprecated and to get removed in v26 --- CHANGELOG.md | 7 ++++++- src/components/SuggestField/index.ts | 3 --- src/extensions/react-flow/handles/HandleDefault.tsx | 4 ++-- src/extensions/react-flow/nodes/NodeContent.tsx | 9 ++------- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7280d4d..d40ffd00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,6 +50,11 @@ This is a major release, and it might be not compatible with your current usage - `` - `searchPredicate`: replaced by the -- in some cases -- more efficient `searchListPredicate` +### Removed + +- `NodeContentHandleProps`: use `HandleDefaultProps` +- `autoCompleteFieldUtils`: use `suggestFieldUtils` + ## [25.2.0] - 2026-04-30 ### Added @@ -437,7 +442,7 @@ If you use Jest then you can use the same aliases for the `moduleNameMapper` con - `HandleV9Props` and `HandleV10Props` export will be removed, use only `HandleDefaultProps` - `` - - `businessDate`: will be removed because it is already not used + - `businessData`: will be removed because it is already not used - ``: use `` ### Migration from v24 to v25 diff --git a/src/components/SuggestField/index.ts b/src/components/SuggestField/index.ts index 8714d862..6fdac7ae 100644 --- a/src/components/SuggestField/index.ts +++ b/src/components/SuggestField/index.ts @@ -6,6 +6,3 @@ export * from "./../AutocompleteField/interfaces"; export const suggestFieldUtils = { createNewItemRendererFactory, }; - -// @deprecated (v26) use `suggestFieldUtils` -export const autoCompleteFieldUtils = suggestFieldUtils; diff --git a/src/extensions/react-flow/handles/HandleDefault.tsx b/src/extensions/react-flow/handles/HandleDefault.tsx index 621bf9c9..95746c41 100644 --- a/src/extensions/react-flow/handles/HandleDefault.tsx +++ b/src/extensions/react-flow/handles/HandleDefault.tsx @@ -35,11 +35,11 @@ interface HandleExtensionProps } /** - * @deprecated (v26) use only `HandleDefaultProps` + * @deprecated (v27) use only `HandleDefaultProps` */ export interface HandleV9Props extends HandleExtensionProps, ReactFlowHandleV9Props {} /** - * @deprecated (v26) use only `HandleDefaultProps` + * @deprecated (v27) use only `HandleDefaultProps` */ export interface HandleV12Props extends HandleExtensionProps, ReactFlowHandleV12Props {} diff --git a/src/extensions/react-flow/nodes/NodeContent.tsx b/src/extensions/react-flow/nodes/NodeContent.tsx index 2e023a68..c7343fac 100644 --- a/src/extensions/react-flow/nodes/NodeContent.tsx +++ b/src/extensions/react-flow/nodes/NodeContent.tsx @@ -12,16 +12,11 @@ import OverflowText from "../../../components/Typography/OverflowText"; import { CLASSPREFIX as eccgui } from "../../../configuration/constants"; import { ReacFlowVersionSupportProps, ReactFlowVersions, useReactFlowVersion } from "../versionsupport"; -import { HandleDefault, HandleDefaultProps } from "./../handles/HandleDefault"; +import { HandleDefault, HandleDefaultProps } from "../handles/HandleDefault"; import { NodeContentExtensionProps } from "./NodeContentExtension"; import { NodeDefaultProps } from "./NodeDefault"; import { NodeHighlightColor } from "./sharedTypes"; -/** - * @deprecated (v26) use `HandleDefaultProps` - */ -export type NodeContentHandleProps = HandleDefaultProps; - export type NodeDimensions = { width?: number; height?: number; @@ -229,7 +224,7 @@ type MemoHandlerProps = HandleDefaultProps & { type HandleStack = { [key: string]: HandleDefaultProps[] }; -const defaultHandles = (flowVersion: ReacFlowVersionSupportProps["flowVersion"]): NodeContentHandleProps[] => { +const defaultHandles = (flowVersion: ReacFlowVersionSupportProps["flowVersion"]): HandleDefaultProps[] => { switch (flowVersion) { case "v9": case "v12": From 8f16ec1689f04a983527b6fadf940d4610b1326a Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Tue, 9 Jun 2026 14:35:37 +0200 Subject: [PATCH 04/21] remove formerly deprecated CodeMirror.outerDivAttributes --- CHANGELOG.md | 1 + src/extensions/codemirror/CodeMirror.tsx | 14 +------------- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d40ffd00..30c796ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,7 @@ This is a major release, and it might be not compatible with your current usage - `NodeContentHandleProps`: use `HandleDefaultProps` - `autoCompleteFieldUtils`: use `suggestFieldUtils` +- `CodeMirror.outerDivAttributes`: use all properties directly on `CodeEditor` ## [25.2.0] - 2026-04-30 diff --git a/src/extensions/codemirror/CodeMirror.tsx b/src/extensions/codemirror/CodeMirror.tsx index 34192472..bf0d77da 100644 --- a/src/extensions/codemirror/CodeMirror.tsx +++ b/src/extensions/codemirror/CodeMirror.tsx @@ -108,15 +108,6 @@ export interface CodeEditorProps /** Optional height of the component */ height?: number | string; - /** - * Add properties to the `div` used as wrapper element. - * @deprecated (v26) You can now use all properties directly on `CodeEditor`. - */ - outerDivAttributes?: Omit< - React.HTMLAttributes, - "id" | "data-test-id" | "data-testid" | "translate" | "onChange" | "onKeyDown" | "onMouseDown" | "onScroll" - >; - /** * Size in spaces that is used for a tabulator key. */ @@ -235,7 +226,6 @@ export const CodeEditor = ({ setEditorView, supportCodeFolding = false, shouldHighlightActiveLine = false, - outerDivAttributes, tabIntentSize = 2, tabIntentStyle = "tab", placeholder, @@ -598,15 +588,13 @@ export const CodeEditor = ({ return (
From d0a56cb73ea108a62bce8c7451ad6930536325d2 Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Tue, 9 Jun 2026 15:15:52 +0200 Subject: [PATCH 05/21] disable formerly used SCSS color configuration variables --- CHANGELOG.md | 5 +++++ README.md | 6 +----- src/configuration/_variables.scss | 26 ++++++++++++-------------- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30c796ca..518d1cfd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,6 +55,11 @@ This is a major release, and it might be not compatible with your current usage - `NodeContentHandleProps`: use `HandleDefaultProps` - `autoCompleteFieldUtils`: use `suggestFieldUtils` - `CodeMirror.outerDivAttributes`: use all properties directly on `CodeEditor` +- color configuration is not possible anymore via previously used SCSS variables + - `$eccgui-color-primary`, `$eccgui-color-primary-contrast`, `$eccgui-color-accent`, `$eccgui-color-accent-contrast`, + `$eccgui-color-success-text`, `$eccgui-color-success-background`, `$eccgui-color-info-text`, `$eccgui-color-info-background`, + `$eccgui-color-warning-text`, `$eccgui-color-warning-background`, `$eccgui-color-danger-text`, `$eccgui-color-danger-background` + - use `$eccgui-color-palette-light` now ## [25.2.0] - 2026-04-30 diff --git a/README.md b/README.md index d7dc2049..fc2d6a99 100644 --- a/README.md +++ b/README.md @@ -74,12 +74,8 @@ $eccgui-color-palette-light: ( All palette colors will be transformed into CSS custom properties automatically and can be referenced by name scheme `--eccgui-color-palette-{groupname}-{colortint}-{colorweight}`, e.g. `--eccgui-color-palette-identity-brand-100`. -All other colors are based on the palette but it is still possible to set them before the default values are used by importing the configuration or the full library. +All other colors are based on the palette, but it is still possible to set a few special color configurations before the default values are used by importing the configuration or the full library. -- `$eccgui-color-primary`: color for very important buttons and switches -- `$eccgui-color-primary-contrast`: readable text color used on primary color areas -- `$eccgui-color-accent`: color for most conformation buttons, links, etc -- `$eccgui-color-accent-contrast`: readable text color used on accent color areas - `$eccgui-color-applicationheader-text` - `$eccgui-color-applicationheader-background` - `$eccgui-color-workspace-text` diff --git a/src/configuration/_variables.scss b/src/configuration/_variables.scss index 7921a848..291a96be 100644 --- a/src/configuration/_variables.scss +++ b/src/configuration/_variables.scss @@ -18,20 +18,18 @@ // -- Configuration stack of colors -------------------------------------------- -// @deprecated (v26) those variable cannot be set by other SCSS, the will only set here (no `default!` anymore) - -$eccgui-color-primary: eccgui-color-var("identity", "brand", "900") !default; -$eccgui-color-primary-contrast: eccgui-color-var("identity", "brand", "100") !default; -$eccgui-color-accent: eccgui-color-var("identity", "accent", "900") !default; -$eccgui-color-accent-contrast: eccgui-color-var("identity", "accent", "100") !default; -$eccgui-color-success-text: eccgui-color-var("semantic", "success", "900") !default; -$eccgui-color-success-background: eccgui-color-var("semantic", "success", "100") !default; -$eccgui-color-info-text: eccgui-color-var("semantic", "info", "900") !default; -$eccgui-color-info-background: eccgui-color-var("semantic", "info", "100") !default; -$eccgui-color-warning-text: eccgui-color-var("semantic", "warning", "900") !default; -$eccgui-color-warning-background: eccgui-color-var("semantic", "warning", "100") !default; -$eccgui-color-danger-text: eccgui-color-var("semantic", "danger", "900") !default; -$eccgui-color-danger-background: eccgui-color-var("semantic", "danger", "100") !default; +$eccgui-color-primary: eccgui-color-var("identity", "brand", "900"); +$eccgui-color-primary-contrast: eccgui-color-var("identity", "brand", "100"); +$eccgui-color-accent: eccgui-color-var("identity", "accent", "900"); +$eccgui-color-accent-contrast: eccgui-color-var("identity", "accent", "100"); +$eccgui-color-success-text: eccgui-color-var("semantic", "success", "900"); +$eccgui-color-success-background: eccgui-color-var("semantic", "success", "100"); +$eccgui-color-info-text: eccgui-color-var("semantic", "info", "900"); +$eccgui-color-info-background: eccgui-color-var("semantic", "info", "100"); +$eccgui-color-warning-text: eccgui-color-var("semantic", "warning", "900"); +$eccgui-color-warning-background: eccgui-color-var("semantic", "warning", "100"); +$eccgui-color-danger-text: eccgui-color-var("semantic", "danger", "900"); +$eccgui-color-danger-background: eccgui-color-var("semantic", "danger", "100"); $eccgui-color-applicationheader-text: eccgui-color-var("identity", "text", "900") !default; $eccgui-color-applicationheader-background: eccgui-color-var("identity", "background", "500") !default; $eccgui-color-workspace-text: eccgui-color-var("identity", "text", "700") !default; From 6d14cca655efd0187c335d004da291a8c683f880 Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Tue, 9 Jun 2026 15:38:54 +0200 Subject: [PATCH 06/21] only export MiniMapProps and MiniMap --- CHANGELOG.md | 4 +++- src/extensions/react-flow/index.ts | 1 - src/extensions/react-flow/minimap/MiniMap.tsx | 11 +++++++---- src/extensions/react-flow/minimap/MiniMapV12.tsx | 7 +++++-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 518d1cfd..b720c55a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,7 +52,9 @@ This is a major release, and it might be not compatible with your current usage ### Removed -- `NodeContentHandleProps`: use `HandleDefaultProps` +- renamed react flow types and components, use the new names directly: + - `NodeContentHandleProps`: use `HandleDefaultProps` + - `MiniMapV9Props`, `MiniMapV9`, `MiniMapV12Props` and `MiniMapV12`: use `MiniMapProps` and `MiniMap`, use `flowVersion` if the React Flow version is not recognized automatically - `autoCompleteFieldUtils`: use `suggestFieldUtils` - `CodeMirror.outerDivAttributes`: use all properties directly on `CodeEditor` - color configuration is not possible anymore via previously used SCSS variables diff --git a/src/extensions/react-flow/index.ts b/src/extensions/react-flow/index.ts index f0d96aa2..c2aa9b32 100644 --- a/src/extensions/react-flow/index.ts +++ b/src/extensions/react-flow/index.ts @@ -19,6 +19,5 @@ export * from "./edges/EdgeDefs"; export * from "./edges/EdgeDefaultV12"; export * from "./markers/ReactFlowMarkers"; export * from "./minimap/MiniMap"; -export * from "./minimap/MiniMapV12"; export * from "./minimap/utils"; export * from "./versionsupport"; diff --git a/src/extensions/react-flow/minimap/MiniMap.tsx b/src/extensions/react-flow/minimap/MiniMap.tsx index 5c28e55c..ca5e968f 100644 --- a/src/extensions/react-flow/minimap/MiniMap.tsx +++ b/src/extensions/react-flow/minimap/MiniMap.tsx @@ -26,7 +26,10 @@ export interface MiniMapBasicProps { >; } -export interface MiniMapV9Props extends MiniMapBasicProps, ReactFlowMiniMapV9Props { +/** + * @deprecated (v27) will be removed when React Flow v9 can be removed + */ +interface MiniMapV9Props extends MiniMapBasicProps, ReactFlowMiniMapV9Props { /** * React-Flow instance */ @@ -67,10 +70,10 @@ export const MiniMap = memo(({ flowVersion, ...otherProps }: MiniMapProps) => { }); /** - * Mini-map support for for React Flow v9. - * @deprecated (v26) will be removed, use when `MiniMap` directly + * Mini-map support for React Flow v9. + * @deprecated (v27) will be removed when React Flow v9 can be removed */ -export const MiniMapV9 = memo( +const MiniMapV9 = memo( ({ flowInstance, enableNavigation = false, diff --git a/src/extensions/react-flow/minimap/MiniMapV12.tsx b/src/extensions/react-flow/minimap/MiniMapV12.tsx index 5d727f7e..67ac0377 100644 --- a/src/extensions/react-flow/minimap/MiniMapV12.tsx +++ b/src/extensions/react-flow/minimap/MiniMapV12.tsx @@ -4,11 +4,14 @@ import { MiniMap as ReactFlowMiniMap, MiniMapProps as ReactFlowMiniMapProps } fr import { MiniMapBasicProps } from "./MiniMap"; import { miniMapUtils } from "./utils"; +/** + * @deprecated (v27) will be removed when React Flow v9 can be removed + */ export interface MiniMapV12Props extends MiniMapBasicProps, Omit {} /** - * Mini-map support for for React Flow v12. - * @deprecated (v26) will be removed when `MiniMap` supports v12 directly + * Mini-map support for React Flow v12. + * @deprecated (v27) will be removed when React Flow v9 can be removed */ export const MiniMapV12 = memo( ({ From b5cdadb68585f77c0c94a0af80f2017567791555 Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Tue, 9 Jun 2026 16:58:58 +0200 Subject: [PATCH 07/21] update deprecation note for React Flow types/components, remove some of them --- CHANGELOG.md | 4 ++ src/cmem/react-flow/ReactFlow/ReactFlow.tsx | 5 -- .../react-flow/edges/EdgeBezier.tsx | 2 +- .../react-flow/edges/EdgeDefault.tsx | 9 ++-- .../react-flow/edges/EdgeDefaultV12.tsx | 8 ++- src/extensions/react-flow/edges/EdgeDefs.tsx | 33 ------------ src/extensions/react-flow/edges/EdgeStep.tsx | 4 +- src/extensions/react-flow/index.ts | 4 +- .../markers/MarkerArrowClosedInverse.tsx | 2 +- .../react-flow/nodes/NodeContent.tsx | 1 - .../react-flow/nodes/NodeDefaultV12.tsx | 53 ------------------- .../nodes/stories/NodeContentV12.stories.tsx | 4 +- 12 files changed, 20 insertions(+), 109 deletions(-) delete mode 100644 src/extensions/react-flow/edges/EdgeDefs.tsx delete mode 100644 src/extensions/react-flow/nodes/NodeDefaultV12.tsx diff --git a/CHANGELOG.md b/CHANGELOG.md index b720c55a..f146061a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,7 @@ This is a major release, and it might be not compatible with your current usage ### Deprecated +- support for React Flow v9 is extended, but will be removed in v27 - `` - `togglerLarge`: replaced by the more versatile `togglerSize` property - `` @@ -54,7 +55,10 @@ This is a major release, and it might be not compatible with your current usage - renamed react flow types and components, use the new names directly: - `NodeContentHandleProps`: use `HandleDefaultProps` + - `ReactFlow`: use `ReactFlowExtended` - `MiniMapV9Props`, `MiniMapV9`, `MiniMapV12Props` and `MiniMapV12`: use `MiniMapProps` and `MiniMap`, use `flowVersion` if the React Flow version is not recognized automatically + - `EdgeDefaultV9` and `EdgeDefaultV12`: use `EdgeDefault` + - `EdgeDefs`: use `ReactFlowMarkers` - `autoCompleteFieldUtils`: use `suggestFieldUtils` - `CodeMirror.outerDivAttributes`: use all properties directly on `CodeEditor` - color configuration is not possible anymore via previously used SCSS variables diff --git a/src/cmem/react-flow/ReactFlow/ReactFlow.tsx b/src/cmem/react-flow/ReactFlow/ReactFlow.tsx index f881d552..5b1cb79b 100644 --- a/src/cmem/react-flow/ReactFlow/ReactFlow.tsx +++ b/src/cmem/react-flow/ReactFlow/ReactFlow.tsx @@ -208,10 +208,5 @@ export const ReactFlowExtended = React.forwardRef(ReactFlowExtendedPlain) as }, ) => ReactElement; -/** - * @deprecated (v26) use `ReactFlowExtended` - */ -export const ReactFlow = ReactFlowExtended; - /** Classes that when set for an element, prevent that they trigger react-flow dragging, wheel and panning actions. */ export const preventReactFlowActionsClasses = "nodrag nopan nowheel"; diff --git a/src/extensions/react-flow/edges/EdgeBezier.tsx b/src/extensions/react-flow/edges/EdgeBezier.tsx index 16689913..bdd2d9c1 100644 --- a/src/extensions/react-flow/edges/EdgeBezier.tsx +++ b/src/extensions/react-flow/edges/EdgeBezier.tsx @@ -11,7 +11,7 @@ interface EdgeBezierDataV12Props extends EdgeDefaultV12DataProps { } /** - * @deprecated (v26) v9 support is removed after v25 + * @deprecated (v27) v9 support is removed after v26 */ export interface EdgeBezierV12Props extends Omit, EdgeProps> {} diff --git a/src/extensions/react-flow/edges/EdgeDefault.tsx b/src/extensions/react-flow/edges/EdgeDefault.tsx index 64476685..ad08e059 100644 --- a/src/extensions/react-flow/edges/EdgeDefault.tsx +++ b/src/extensions/react-flow/edges/EdgeDefault.tsx @@ -47,18 +47,18 @@ export interface EdgeDefaultDataProps { } /** - * @deprecated (v26) v9 support is removed after v25 + * @deprecated (v27) v9 support is removed after v26 */ export interface EdgeDefaultV9DataProps extends EdgeDefaultDataProps { /** * Reference link to the SVG marker used for the start of the edge - * @deprecated (v26) only necessary for react flow v9 + * @deprecated (v27) only necessary for react flow v9 */ markerStart?: string; } /** - * @deprecated (v26) v9 support is removed after v25 + * @deprecated (v27) v9 support is removed after v26 */ export interface EdgeDefaultV9Props extends ReactFlowEdgeProps { /** @@ -73,6 +73,9 @@ export interface EdgeDefaultV9Props extends ReactFlowEdgeProps { export type EdgeDefaultProps = EdgeDefaultV9Props | EdgeDefaultV12Props; +/** + * @deprecated (v27) will be removed v9 support is dropped + */ const EdgeDefaultV9 = memo( ({ data = {}, drawSvgPath = drawEdgeStraight, ...edgeOriginalProperties }: EdgeDefaultV9Props) => { const { pathGlowWidth = 10, markerStart, strokeType, intent, highlightColor, edgeSvgProps } = data; diff --git a/src/extensions/react-flow/edges/EdgeDefaultV12.tsx b/src/extensions/react-flow/edges/EdgeDefaultV12.tsx index 82c5ce6c..155317a3 100644 --- a/src/extensions/react-flow/edges/EdgeDefaultV12.tsx +++ b/src/extensions/react-flow/edges/EdgeDefaultV12.tsx @@ -8,7 +8,7 @@ import { EdgeDefaultDataProps, edgeDefaultUtils } from "./EdgeDefault"; import { getStraightPath } from "./utils"; /** - * @deprecated (v26) use EdgeDefaultDataProps + * @deprecated (v27) use EdgeDefaultDataProps */ export interface EdgeDefaultV12DataProps extends Record, EdgeDefaultDataProps { /** @@ -18,7 +18,7 @@ export interface EdgeDefaultV12DataProps extends Record, EdgeDe } /** - * @deprecated (v26) use EdgeDefaultProps + * @deprecated (v27) use EdgeDefaultProps */ export type EdgeDefaultV12Props = EdgeProps> & { /** @@ -30,9 +30,7 @@ export type EdgeDefaultV12Props = EdgeProps> & { }; /** - * This element cannot be used directly, it must be connected via a `edgeTypes` definition. - * @see https://reactflow.dev/docs/api/nodes/ - * @deprecated (v26) will be removed when `EdgeDefault` supports v12 directly + * @deprecated (v27) will be removed v9 support is dropped */ export const EdgeDefaultV12 = memo( ({ diff --git a/src/extensions/react-flow/edges/EdgeDefs.tsx b/src/extensions/react-flow/edges/EdgeDefs.tsx deleted file mode 100644 index bc77e038..00000000 --- a/src/extensions/react-flow/edges/EdgeDefs.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from "react"; - -/** - * @deprecated (v26) use `` - */ -export const EdgeDefs = React.memo(() => ( - - - - - - - - - - -)); diff --git a/src/extensions/react-flow/edges/EdgeStep.tsx b/src/extensions/react-flow/edges/EdgeStep.tsx index a0137bde..a80d920f 100644 --- a/src/extensions/react-flow/edges/EdgeStep.tsx +++ b/src/extensions/react-flow/edges/EdgeStep.tsx @@ -15,13 +15,13 @@ interface EdgeStepDataV12Props extends EdgeDefaultV12DataProps { } /** - * @deprecated (v26) v9 support is removed after v25 + * @deprecated (v27) v9 support is removed after v26 */ export interface EdgeStepV9Props extends EdgeDefaultV9Props { data?: EdgeStepDataV9Props; } /** - * @deprecated (v26) v9 support is removed after v25 + * @deprecated (v27) v9 support is removed after v26 */ export interface EdgeStepV12Props extends Omit, EdgeProps> {} diff --git a/src/extensions/react-flow/index.ts b/src/extensions/react-flow/index.ts index c2aa9b32..6eaaa28c 100644 --- a/src/extensions/react-flow/index.ts +++ b/src/extensions/react-flow/index.ts @@ -9,14 +9,12 @@ export * from "./handles/HandleTools"; export * from "./edges/EdgeBezier"; export * from "./edges/EdgeDefault"; export * from "./edges/EdgeDefaultV12"; -export * from "./edges/EdgeDefs"; export * from "./edges/EdgeStep"; export * from "./edges/EdgeStraight"; export * from "./edges/EdgeNew"; export * from "./edges/EdgeTools"; export * from "./edges/EdgeLabel"; -export * from "./edges/EdgeDefs"; -export * from "./edges/EdgeDefaultV12"; +export type { EdgeDefaultV12DataProps, EdgeDefaultV12Props } from "./edges/EdgeDefaultV12"; export * from "./markers/ReactFlowMarkers"; export * from "./minimap/MiniMap"; export * from "./minimap/utils"; diff --git a/src/extensions/react-flow/markers/MarkerArrowClosedInverse.tsx b/src/extensions/react-flow/markers/MarkerArrowClosedInverse.tsx index 67bc0db6..0189ec1a 100644 --- a/src/extensions/react-flow/markers/MarkerArrowClosedInverse.tsx +++ b/src/extensions/react-flow/markers/MarkerArrowClosedInverse.tsx @@ -1,7 +1,7 @@ import React, { FC } from "react"; /** - * @deprecated (v26) only necessary for react flow v9, support will be removed + * @deprecated (v27) only necessary for react flow v9, support will be removed */ export const MarkerArrowClosedInverse: FC = () => { return ( diff --git a/src/extensions/react-flow/nodes/NodeContent.tsx b/src/extensions/react-flow/nodes/NodeContent.tsx index c7343fac..33352a69 100644 --- a/src/extensions/react-flow/nodes/NodeContent.tsx +++ b/src/extensions/react-flow/nodes/NodeContent.tsx @@ -172,7 +172,6 @@ export interface NodeContentProps /** * Additional data stored in the node. - * @deprecated (v26) is not used anymore. */ businessData?: never; diff --git a/src/extensions/react-flow/nodes/NodeDefaultV12.tsx b/src/extensions/react-flow/nodes/NodeDefaultV12.tsx deleted file mode 100644 index f70dd24e..00000000 --- a/src/extensions/react-flow/nodes/NodeDefaultV12.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React, { memo } from "react"; -import { NodeProps as ReactFlowNodeProps, Position } from "react-flow-renderer"; - -import Tooltip from "../../../components/Tooltip/Tooltip"; - -import { NodeContent, NodeContentProps } from "./NodeContent"; - -export interface NodeDefaultProps extends ReactFlowNodeProps { - /** - * Contains all properties for our implementation of the React-Flow node. - * For details pls see the `NodeContent` element documentation. - */ - data: NodeContentProps; -} - -/** - * This element cannot be used directly, it must be connected via a `nodeTypes` definition. - * @see https://reactflow.dev/docs/api/nodes/ - * @deprecated (v26) will be removed when `NodeDefault` supports v12 directly - */ -export const NodeDefaultV12 = memo((node: NodeDefaultProps) => { - const { - data, - targetPosition = Position.Left, - sourcePosition = Position.Right, - isConnectable = true, - selected, - } = node; - - const nodeEl = ( - - ); - - if (!selected && data?.minimalShape !== "none" && !!data?.getMinimalTooltipData) { - const tooltipData = data?.getMinimalTooltipData(node); - if (!!tooltipData.label || !!tooltipData.content) { - return ( - - {tooltipData.label &&
{tooltipData.label}
} - {tooltipData.content &&
{tooltipData.content}
} - - } - > - {nodeEl} -
- ); - } - } - - return nodeEl; -}); diff --git a/src/extensions/react-flow/nodes/stories/NodeContentV12.stories.tsx b/src/extensions/react-flow/nodes/stories/NodeContentV12.stories.tsx index 2485a9ff..b3595bf6 100644 --- a/src/extensions/react-flow/nodes/stories/NodeContentV12.stories.tsx +++ b/src/extensions/react-flow/nodes/stories/NodeContentV12.stories.tsx @@ -4,7 +4,7 @@ import { Meta, StoryFn } from "@storybook/react"; import { Node, ReactFlow, ReactFlowProvider, useNodesState } from "@xyflow/react"; import { Definitions } from "../../../../common/Intent"; -import { NodeDefaultV12 } from "../NodeDefaultV12"; +import { NodeDefault } from "../NodeDefault"; import canonicalIcons from "./../../../../components/Icon/canonicalIconNames"; import { @@ -140,7 +140,7 @@ export default { let forcedUpdateKey = 0; // @see https://github.com/storybookjs/storybook/issues/13375#issuecomment-1291011856 -const nodeTypes = { default: NodeDefaultV12 }; +const nodeTypes = { default: NodeDefault }; const NodeContentExample = (args: any) => { const [reactflowInstance, setReactflowInstance] = useState(null); From 3406c72ad7557b71f6ec5799d51be5995f9a18f0 Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Tue, 9 Jun 2026 17:03:29 +0200 Subject: [PATCH 08/21] postpone removal --- src/cmem/react-flow/extensions/scrollOnDragHook.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmem/react-flow/extensions/scrollOnDragHook.ts b/src/cmem/react-flow/extensions/scrollOnDragHook.ts index 80306f47..2725f09f 100644 --- a/src/cmem/react-flow/extensions/scrollOnDragHook.ts +++ b/src/cmem/react-flow/extensions/scrollOnDragHook.ts @@ -281,6 +281,6 @@ export const useReactFlowScrollOnDragV9 = ({ reactFlowProps, scrollOnDrag }: IPr }; /** - * @deprecated (v26) Currently it ony supports ReactFlow v9. Better to `useReactFlowScrollOnDragV9` for now. + * @deprecated (v27) Currently it only supports ReactFlow v9. Better to `useReactFlowScrollOnDragV9` for now. */ export const useReactFlowScrollOnDrag = useReactFlowScrollOnDragV9; From d8a64fdc76fb7a4a01bd0cb3de560ca5b75c7667 Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Tue, 9 Jun 2026 17:06:34 +0200 Subject: [PATCH 09/21] remove helper function that should not be used anymore --- CHANGELOG.md | 1 + src/components/MultiSelect/MultiSelect.tsx | 8 -------- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f146061a..415a738f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,6 +61,7 @@ This is a major release, and it might be not compatible with your current usage - `EdgeDefs`: use `ReactFlowMarkers` - `autoCompleteFieldUtils`: use `suggestFieldUtils` - `CodeMirror.outerDivAttributes`: use all properties directly on `CodeEditor` +- `MultiSuggestField.ofType`: use `>` - color configuration is not possible anymore via previously used SCSS variables - `$eccgui-color-primary`, `$eccgui-color-primary-contrast`, `$eccgui-color-accent`, `$eccgui-color-accent-contrast`, `$eccgui-color-success-text`, `$eccgui-color-success-background`, `$eccgui-color-info-text`, `$eccgui-color-info-background`, diff --git a/src/components/MultiSelect/MultiSelect.tsx b/src/components/MultiSelect/MultiSelect.tsx index 0ffcfb09..5971b33d 100644 --- a/src/components/MultiSelect/MultiSelect.tsx +++ b/src/components/MultiSelect/MultiSelect.tsx @@ -617,11 +617,3 @@ export function MultiSuggestField({ <>{contentMultiSelect} ); } - -// we still return the Blueprint element here because it was already used like that -/** - * @deprecated (v26) use directly > (`ofType` also returns the original BlueprintJS element, not ours!) - */ -MultiSuggestField.ofType = BlueprintMultiSelect.ofType; - -export default MultiSuggestField; From 413217f3cfe203e2d018dff6a673f5a611f859de Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Tue, 9 Jun 2026 17:12:06 +0200 Subject: [PATCH 10/21] remove deprecated property --- CHANGELOG.md | 1 + .../StringPreviewContentBlobToggler.tsx | 15 +-------------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 415a738f..916e144b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,7 @@ This is a major release, and it might be not compatible with your current usage - `autoCompleteFieldUtils`: use `suggestFieldUtils` - `CodeMirror.outerDivAttributes`: use all properties directly on `CodeEditor` - `MultiSuggestField.ofType`: use `>` +- `StringPreviewContentBlobToggler.firstNonEmptyLineOnly`: use `useOnly="firstNonEmptyLine"` - color configuration is not possible anymore via previously used SCSS variables - `$eccgui-color-primary`, `$eccgui-color-primary-contrast`, `$eccgui-color-accent`, `$eccgui-color-accent-contrast`, `$eccgui-color-success-text`, `$eccgui-color-success-background`, `$eccgui-color-info-text`, `$eccgui-color-info-background`, diff --git a/src/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.tsx b/src/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.tsx index fb8247ea..e536156d 100644 --- a/src/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.tsx +++ b/src/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.tsx @@ -22,7 +22,6 @@ export interface StringPreviewContentBlobTogglerProps extends Omit< /** * Use only parts of `content` in the preview. * `firstMarkdownSection` uses the content until the first double line return. - * Currently overwritten by `firstNonEmptyLineOnly`. */ useOnly?: "firstNonEmptyLine" | "firstMarkdownSection"; /** @@ -38,12 +37,6 @@ export interface StringPreviewContentBlobTogglerProps extends Omit< * This allows to add non-string elements to both the full-view content and the pure string content. */ noTogglerContentSuffix?: React.JSX.Element; - /** - * If only the first non-empty line should be shown in the preview. - * This will in addition also be shortened according to `previewMaxLength`. - * @deprecated (v26) use `useOnly="firstNonEmptyLine"` instead - */ - firstNonEmptyLineOnly?: boolean; } /** Version of the content toggler for text centric content. */ @@ -59,16 +52,10 @@ export function StringPreviewContentBlobToggler({ renderPreviewAsMarkdown = false, allowedHtmlElementsInPreview, noTogglerContentSuffix, - firstNonEmptyLineOnly, ...otherContentBlobTogglerProps }: StringPreviewContentBlobTogglerProps) { - // need to test `firstNonEmptyLineOnly` until property is removed - const useOnlyTest: StringPreviewContentBlobTogglerProps["useOnly"] = firstNonEmptyLineOnly - ? "firstNonEmptyLine" - : useOnly; - let previewString = content; - switch (useOnlyTest) { + switch (useOnly) { case "firstNonEmptyLine": previewString = useOnlyPart(content, regexFirstNonEmptyLine); break; From 9297e5cf25a555426675908187aebb088754fa94 Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Tue, 9 Jun 2026 17:43:00 +0200 Subject: [PATCH 11/21] fix story --- .../react-flow/nodes/stories/NodeDefault.stories.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/extensions/react-flow/nodes/stories/NodeDefault.stories.tsx b/src/extensions/react-flow/nodes/stories/NodeDefault.stories.tsx index 38e13b05..c476d46a 100644 --- a/src/extensions/react-flow/nodes/stories/NodeDefault.stories.tsx +++ b/src/extensions/react-flow/nodes/stories/NodeDefault.stories.tsx @@ -2,7 +2,7 @@ import React, { useCallback, useEffect, useState } from "react"; import { Elements, Node } from "react-flow-renderer"; import { Meta, StoryFn } from "@storybook/react"; -import { ReactFlow } from "./../../../../cmem"; +import { ReactFlowExtended } from "./../../../../cmem"; import { NodeDefault } from "./../NodeDefault"; import { Default as NodeContentExample } from "./NodeContent.stories"; import { nodeTypes } from "./nodeTypes"; @@ -114,7 +114,7 @@ const NodeDefaultExample = (args: Node) => { ); return ( - Date: Tue, 9 Jun 2026 17:43:53 +0200 Subject: [PATCH 12/21] fix story --- .../react-flow/nodes/stories/NodeContent.stories.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/extensions/react-flow/nodes/stories/NodeContent.stories.tsx b/src/extensions/react-flow/nodes/stories/NodeContent.stories.tsx index 0f223b58..80179f16 100644 --- a/src/extensions/react-flow/nodes/stories/NodeContent.stories.tsx +++ b/src/extensions/react-flow/nodes/stories/NodeContent.stories.tsx @@ -63,8 +63,8 @@ export default { {loremIpsum({ p: 1, avgSentencesPerParagraph: 1, avgWordsPerSentence: 5, random: false }) .toString() .split(" ") - .map((term) => ( - {term} + .map((term, id) => ( + {term} ))} ), From 6f2bdfc55df2c024188a2d07b9c89278fbe86908 Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Tue, 9 Jun 2026 17:44:18 +0200 Subject: [PATCH 13/21] fix properties --- src/extensions/react-flow/markers/ReactFlowMarkers.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/extensions/react-flow/markers/ReactFlowMarkers.tsx b/src/extensions/react-flow/markers/ReactFlowMarkers.tsx index 37cbdae8..2b6f5eba 100644 --- a/src/extensions/react-flow/markers/ReactFlowMarkers.tsx +++ b/src/extensions/react-flow/markers/ReactFlowMarkers.tsx @@ -28,7 +28,7 @@ interface ReactFlowMarkerProps extends React.SVGProps { const ReactFlowMarker = ({ className, appearance = "arrow-closed", intent, reverse }: ReactFlowMarkerProps) => { const markerDisplay: Record = { "arrow-closed": ( - + ), }; @@ -59,11 +59,11 @@ const ReactFlowMarkers: FC = () => { - {intents.map((intent) => ( - <> + {intents.map((intent, index) => ( + - + ))} From 83ad747f7b5f5ab2e1cac55702e33bfe7fbd0694 Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Wed, 10 Jun 2026 12:12:40 +0200 Subject: [PATCH 14/21] improve changelog texts --- CHANGELOG.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 916e144b..1f3d5490 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,11 +6,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p ## [Unreleased] -This is a major release, and it might be not compatible with your current usage of our library. Please read about the necessary changes in the section about how to migrate. +This is a major release, and it might not be compatible with your current usage of our library. Please read about the necessary changes in the migration section below. -### Migration from v24 to v25 +### Migration from v25 to v26 -- remove deprecated components, properties and imports from your project, if the info cannot be found here then it was already mentioned in **Deprecated** sections of the past changelogs +- remove deprecated components, properties and imports from your project; if the info cannot be found here, it was already mentioned in the **Deprecated** sections of past changelogs - apply changes mentioned in the **Changed** subsection ### Added @@ -22,52 +22,52 @@ This is a major release, and it might be not compatible with your current usage - `` - `togglerSize`: replaces the deprecated `togglerLarge` property - `` - - `searchListPredicate` property: Allows to filter the complete list of search options at once. - - Following optional BlueprintJs properties are forwarded now to override default behaviour: `noResults`, `createNewItemRenderer` and `itemRenderer` - - `isValidNewOption` property: Checks if an input string is or can be turned into a valid new option. + - `searchListPredicate` property: allows filtering of the complete list of search options at once + - the following optional BlueprintJS properties are now forwarded to override default behaviour: `noResults`, `createNewItemRenderer` and `itemRenderer` + - `isValidNewOption` property: checks if an input string is or can be turned into a valid new option ### Fixed - `` - - border of the BlueprintJS `Tag` elements were fixed + - borders of the BlueprintJS `Tag` elements were fixed ### Changed - **React and its types were updated to v18, so you may hit incompatibilities if you run it with React 16 or 17.** - `color` library was upgraded from v4 to v5, so the types changed - - if you forward properties then they cannot have `Color` as type, use `ColorLike` + - if you forward properties, they can no longer have `Color` as their type; use `ColorLike` instead - `@blueprintjs/core` library was updated to v6 - - if you use an explicit BlueprintJS import in your project you need to set `"@blueprintjs/core": "6.8.1"` and `"@blueprintjs/select": "6.1.1"` + - if you use an explicit BlueprintJS import in your project, you need to set `"@blueprintjs/core": "6.8.1"` and `"@blueprintjs/select": "6.1.1"` - you may need to update class names in your tests (the new prefix is `bp6-`) - `Toaster.create` is now an async function - `` - - by default, if no searchPredicate or searchListPredicate is defined, the filtering is done via case-insensitive multi-word filtering. + - by default, if no `searchPredicate` or `searchListPredicate` is defined, the filtering is done via case-insensitive multi-word matching ### Deprecated -- support for React Flow v9 is extended, but will be removed in v27 +- support for React Flow v9 is retained for now, but will be removed in v27 - `` - `togglerLarge`: replaced by the more versatile `togglerSize` property - `` - - `searchPredicate`: replaced by the -- in some cases -- more efficient `searchListPredicate` + - `searchPredicate`: replaced by `searchListPredicate`, which is more efficient in some cases ### Removed -- renamed react flow types and components, use the new names directly: +- renamed React Flow types and components; use the new names directly: - `NodeContentHandleProps`: use `HandleDefaultProps` - `ReactFlow`: use `ReactFlowExtended` - - `MiniMapV9Props`, `MiniMapV9`, `MiniMapV12Props` and `MiniMapV12`: use `MiniMapProps` and `MiniMap`, use `flowVersion` if the React Flow version is not recognized automatically + - `MiniMapV9Props`, `MiniMapV9`, `MiniMapV12Props` and `MiniMapV12`: use `MiniMapProps` and `MiniMap`; use `flowVersion` if the React Flow version is not recognized automatically - `EdgeDefaultV9` and `EdgeDefaultV12`: use `EdgeDefault` - `EdgeDefs`: use `ReactFlowMarkers` - `autoCompleteFieldUtils`: use `suggestFieldUtils` - `CodeMirror.outerDivAttributes`: use all properties directly on `CodeEditor` - `MultiSuggestField.ofType`: use `>` - `StringPreviewContentBlobToggler.firstNonEmptyLineOnly`: use `useOnly="firstNonEmptyLine"` -- color configuration is not possible anymore via previously used SCSS variables +- color configuration is no longer possible via the previously used SCSS variables - `$eccgui-color-primary`, `$eccgui-color-primary-contrast`, `$eccgui-color-accent`, `$eccgui-color-accent-contrast`, `$eccgui-color-success-text`, `$eccgui-color-success-background`, `$eccgui-color-info-text`, `$eccgui-color-info-background`, `$eccgui-color-warning-text`, `$eccgui-color-warning-background`, `$eccgui-color-danger-text`, `$eccgui-color-danger-background` - - use `$eccgui-color-palette-light` now + - use `$eccgui-color-palette-light` instead ## [25.2.0] - 2026-04-30 From 3454cd7d45f774ed73e4818807c6cd2c68f38182 Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Wed, 8 Jul 2026 09:46:08 +0200 Subject: [PATCH 15/21] add icon for marketplace module --- CHANGELOG.md | 2 ++ src/components/Icon/canonicalIconNames.tsx | 1 + 2 files changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 300d83c0..411b47ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,8 @@ This is a major release, and it might not be compatible with your current usage - `searchListPredicate` property: allows filtering of the complete list of search options at once - the following optional BlueprintJS properties are now forwarded to override default behaviour: `noResults`, `createNewItemRenderer` and `itemRenderer` - `isValidNewOption` property: checks if an input string is or can be turned into a valid new option +- new icons: + - `module-marketplace` ### Fixed diff --git a/src/components/Icon/canonicalIconNames.tsx b/src/components/Icon/canonicalIconNames.tsx index d253a0bd..704cbfea 100644 --- a/src/components/Icon/canonicalIconNames.tsx +++ b/src/components/Icon/canonicalIconNames.tsx @@ -120,6 +120,7 @@ const canonicalIcons = { "module-dashboard": icons.Dashboard, "module-gdprsearch": icons.UserProfile, "module-integrations": icons.AppConnectivity, + "module-marketplace": icons.ShoppingCatalog, "module-linkedrules": icons.Connect, "module-reports": icons.ReportData, "module-search": icons.Search, From 4ebb31686dc6f38a5efd27e49d04385d88ab6610 Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Wed, 8 Jul 2026 09:58:36 +0200 Subject: [PATCH 16/21] fix high security issue, set package resolution --- package.json | 3 ++- yarn.lock | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 03d42849..2e116920 100644 --- a/package.json +++ b/package.json @@ -184,7 +184,8 @@ "hast-util-from-parse5": "8.0.0", "**/lodash": "^4.18.1", "**/minimatch": "^3.1.4", - "**/serialize-javascript": "^7.0.5" + "**/serialize-javascript": "^7.0.5", + "**/ws": "^8.21.0" }, "husky": { "hooks": { diff --git a/yarn.lock b/yarn.lock index f4a8bd06..9d1e1a2a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12302,10 +12302,10 @@ write-file-atomic@^7.0.1: dependencies: signal-exit "^4.0.1" -ws@^8.18.0: - version "8.18.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" - integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== +ws@^8.18.0, ws@^8.21.0: + version "8.21.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.21.0.tgz#012e413fc07429945121b0c153158c4343086951" + integrity sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g== wsl-utils@^0.1.0: version "0.1.0" From 5dcbecbf3daca40116372168ab83a28c8d0a84b2 Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Wed, 8 Jul 2026 11:08:21 +0200 Subject: [PATCH 17/21] use only our own exported type/enum of blueprint intent states --- src/common/Intent/index.ts | 6 ++++-- src/components/Button/Button.tsx | 8 ++++---- src/components/MultiSelect/MultiSelect.tsx | 5 +++-- src/components/TextField/TextArea.tsx | 5 ++--- src/components/TextField/TextField.tsx | 5 ++--- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/common/Intent/index.ts b/src/common/Intent/index.ts index a0434103..d01c53d8 100644 --- a/src/common/Intent/index.ts +++ b/src/common/Intent/index.ts @@ -2,13 +2,15 @@ import { Intent as BlueprintIntent } from "@blueprintjs/core"; import { CLASSPREFIX as eccgui } from "../../configuration/constants"; -export type IntentBlueprint = BlueprintIntent; +/** @deprecated (v27) use `IntentBlueprint` instead */ export const DefinitionsBlueprint = BlueprintIntent; +export const IntentBlueprint = BlueprintIntent; +export type IntentBlueprint = BlueprintIntent; export type IntentTypes = IntentBlueprint | "neutral" | "accent" | "info"; export const Definitions: { [key: string]: IntentTypes } = { - ...DefinitionsBlueprint, + ...IntentBlueprint, ACCENT: "accent", NEUTRAL: "neutral", INFO: "info", diff --git a/src/components/Button/Button.tsx b/src/components/Button/Button.tsx index dd80fcda..471e6cb7 100644 --- a/src/components/Button/Button.tsx +++ b/src/components/Button/Button.tsx @@ -4,9 +4,9 @@ import { AnchorButtonProps as BlueprintAnchorButtonProps, Button as BlueprintButton, ButtonProps as BlueprintButtonProps, - Intent as BlueprintIntent, } from "@blueprintjs/core"; +import { IntentBlueprint } from "../../common/Intent"; import { CLASSPREFIX as eccgui } from "../../configuration/constants"; import { ValidIconName } from "../Icon/canonicalIconNames"; import Icon from "../Icon/Icon"; @@ -33,7 +33,7 @@ interface AdditionalButtonProps { /** * Intent state visualized by color. */ - intent?: BlueprintIntent | "accent"; + intent?: IntentBlueprint | "accent"; /** * Content displayed in a badge that is attached to the button. * By default it is displayed `{ size: "small", position: "top-right", maxLength: 2 }` and with the same intent state of the button. @@ -94,7 +94,7 @@ export const Button = ({ intentByFunction = "accent"; break; case disruptive: - intentByFunction = BlueprintIntent.DANGER; + intentByFunction = IntentBlueprint.DANGER; break; default: break; @@ -111,7 +111,7 @@ export const Button = ({ : icon} rightIcon={typeof rightIcon === "string" ? : rightIcon} > diff --git a/src/components/MultiSelect/MultiSelect.tsx b/src/components/MultiSelect/MultiSelect.tsx index db035e6a..497151d5 100644 --- a/src/components/MultiSelect/MultiSelect.tsx +++ b/src/components/MultiSelect/MultiSelect.tsx @@ -1,5 +1,5 @@ import React, { useRef } from "react"; -import { HTMLInputProps as BlueprintHTMLInputProps, Intent as BlueprintIntent } from "@blueprintjs/core"; +import { HTMLInputProps as BlueprintHTMLInputProps } from "@blueprintjs/core"; import { ItemRendererProps as BlueprintItemRendererProps, MultiSelect as BlueprintMultiSelect, @@ -7,6 +7,7 @@ import { } from "@blueprintjs/select"; import classNames from "classnames"; +import { IntentBlueprint } from "../../common/Intent"; import { removeExtraSpaces } from "../../common/utils/stringUtils"; import { CLASSPREFIX as eccgui } from "../../configuration/constants"; import { TestableComponent } from "../interfaces"; @@ -97,7 +98,7 @@ export interface MultiSuggestFieldCommonProps /** * Intent state of the multi select. */ - intent?: BlueprintIntent | "accent"; + intent?: IntentBlueprint | "accent"; /** * Disables the input element */ diff --git a/src/components/TextField/TextArea.tsx b/src/components/TextField/TextArea.tsx index c97fed0c..741a6549 100644 --- a/src/components/TextField/TextArea.tsx +++ b/src/components/TextField/TextArea.tsx @@ -1,13 +1,12 @@ import React from "react"; import { Classes as BlueprintClassNames, - Intent as BlueprintIntent, MaybeElement, TextArea as BlueprintTextArea, TextAreaProps as BlueprintTextAreaProps, } from "@blueprintjs/core"; -import { Definitions as IntentDefinitions, IntentTypes } from "../../common/Intent"; +import { Definitions as IntentDefinitions, IntentBlueprint, IntentTypes } from "../../common/Intent"; import { CLASSPREFIX as eccgui } from "../../configuration/constants"; import { Icon } from "../Icon"; import { ValidIconName } from "../Icon/canonicalIconNames"; @@ -155,7 +154,7 @@ export const TextArea = ({ } intent={ intent && !["info", "edited", "removed", "neutral", "accent"].includes(intent) - ? (intent as BlueprintIntent) + ? (intent as IntentBlueprint) : undefined } spellCheck={intent === "removed" ? false : undefined} diff --git a/src/components/TextField/TextField.tsx b/src/components/TextField/TextField.tsx index 98a1c822..6f764e54 100644 --- a/src/components/TextField/TextField.tsx +++ b/src/components/TextField/TextField.tsx @@ -4,11 +4,10 @@ import { HTMLInputProps, InputGroup as BlueprintInputGroup, InputGroupProps as BlueprintInputGroupProps, - Intent as BlueprintIntent, MaybeElement, } from "@blueprintjs/core"; -import { Definitions as IntentDefinitions, IntentTypes } from "../../common/Intent"; +import { Definitions as IntentDefinitions, IntentBlueprint, IntentTypes } from "../../common/Intent"; import { CLASSPREFIX as eccgui } from "../../configuration/constants"; import { ValidIconName } from "../Icon/canonicalIconNames"; import Icon from "../Icon/Icon"; @@ -108,7 +107,7 @@ export const TextField = ({ } intent={ intent && !["info", "edited", "removed", "neutral", "accent"].includes(intent) - ? (intent as BlueprintIntent) + ? (intent as IntentBlueprint) : undefined } fill={fullWidth} From ef5867f0cd71e5f8ad7bc6418202f0ee6707c5e0 Mon Sep 17 00:00:00 2001 From: Michael Haschke Date: Wed, 8 Jul 2026 11:09:00 +0200 Subject: [PATCH 18/21] improve changelog, fix errors --- CHANGELOG.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32d96a30..d33de591 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,20 +25,21 @@ This is a major release, and it might not be compatible with your current usage - `searchListPredicate` property: allows filtering of the complete list of search options at once - the following optional BlueprintJS properties are now forwarded to override default behaviour: `noResults`, `createNewItemRenderer` and `itemRenderer` - `isValidNewOption` property: checks if an input string is or can be turned into a valid new option -- `ActivityControlWidge` +- `ActivityControlWidget` - Support `badge` on activity control menu button. - new icons: - `module-marketplace` + - `artefact-ruleblock` ### Fixed - `` - - border of the BlueprintJS `Tag` elements were fixed + - borders of the BlueprintJS `Tag` elements were fixed - `extendedTooltip` of a handle in the ReactFlow (v12) component does not show the tooltip. - `` - `readOnly` appearance uses same borders like read-only text fields and it does not display a blinking cursor - `