Skip to content

Commit 63a23f2

Browse files
authored
Merge pull request #403 from eccenca/maintain/mergeReleaseTag-v26.0.0
Release process changes from v26.0.0
2 parents 6008782 + a3f8a99 commit 63a23f2

34 files changed

Lines changed: 128 additions & 226 deletions

CHANGELOG.md

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,15 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
66

77
## [Unreleased]
88

9+
## [26.0.0] - 2026-07-08
10+
11+
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.
12+
13+
### Migration from v25 to v26
14+
15+
- 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
16+
- apply changes mentioned in the **Changed** subsection
17+
918
### Added
1019

1120
- `<NotAvailable />`
@@ -15,34 +24,38 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
1524
- `<ContextMenu />`
1625
- `togglerSize`: replaces the deprecated `togglerLarge` property
1726
- `<MultiSelect />`
18-
- `searchListPredicate` property: Allows to filter the complete list of search options at once.
19-
- Following optional BlueprintJs properties are forwarded now to override default behaviour: `noResults`, `createNewItemRenderer` and `itemRenderer`
20-
- `isValidNewOption` property: Checks if an input string is or can be turned into a valid new option.
21-
- `ActivityControlWidge`
27+
- `searchListPredicate` property: allows filtering of the complete list of search options at once
28+
- the following optional BlueprintJS properties are now forwarded to override default behaviour: `noResults`, `createNewItemRenderer` and `itemRenderer`
29+
- `isValidNewOption` property: checks if an input string is or can be turned into a valid new option
30+
- `ActivityControlWidget`
2231
- Support `badge` on activity control menu button.
32+
- new icons:
33+
- `module-marketplace`
34+
- `artefact-ruleblock`
2335

2436
### Fixed
2537

2638
- `<MultiSelect />`
27-
- border of the BlueprintJS `Tag` elements were fixed
39+
- borders of the BlueprintJS `Tag` elements were fixed
2840
- `extendedTooltip` of a handle in the ReactFlow (v12) component does not show the tooltip.
2941
- `<CodeEditor />`
3042
- `readOnly` appearance uses same borders like read-only text fields and it does not display a blinking cursor
3143
- `<Button />`, `<IconButton />`
32-
- outlines for focus by keyboard navigation are better recognizable on buttons with colored backgrounds (intent states)
44+
- outlines for focus by keyboard navigation are more recognizable on buttons with colored backgrounds (intent states)
3345
- `<Tooltip />`
3446
- given `popoverClassName` is added
3547

3648
### Changed
3749

3850
- **React and its types were updated to v18, so you may hit incompatibilities if you run it with React 16 or 17.**
3951
- `color` library was upgraded from v4 to v5, so the types changed
40-
- if you forward properties then they cannot have `Color` as type, use `ColorLike`
52+
- if you forward properties, they can no longer have `Color` as their type; use `ColorLike` instead
4153
- `@blueprintjs/core` library was updated to v6
54+
- 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"`
4255
- you may need to update class names in your tests (the new prefix is `bp6-`)
4356
- `Toaster.create` is now an async function
4457
- `<MultiSelect />`
45-
- by default, if no searchPredicate or searchListPredicate is defined, the filtering is done via case-insensitive multi-word filtering.
58+
- by default, if no `searchPredicate` or `searchListPredicate` is defined, the filtering is done via case-insensitive multi-word matching
4659
- `<ProgressBar />`, `<MenuItem />`, `<FieldSet />`, `<FieldItem />`, `<Tooltip />`, `<MultiSuggestField />`
4760
- color for `intent="primary"` was changed to our brand color
4861
- new option `accent` for `intent` uses the accent color
@@ -51,10 +64,30 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
5164

5265
### Deprecated
5366

67+
- support for React Flow v9 is retained for now, but will be removed in v27
5468
- `<ContextMenu />`
5569
- `togglerLarge`: replaced by the more versatile `togglerSize` property
5670
- `<MultiSelect />`
57-
- `searchPredicate`: replaced by the -- in some cases -- more efficient `searchListPredicate`
71+
- `searchPredicate`: replaced by `searchListPredicate`, which is more efficient in some cases
72+
- `DefinitionsBlueprint`: use `IntentBlueprint`, this is now usable as type and enum var
73+
74+
### Removed
75+
76+
- renamed React Flow types and components; use the new names directly:
77+
- `NodeContentHandleProps`: use `HandleDefaultProps`
78+
- `ReactFlow`: use `ReactFlowExtended`
79+
- `MiniMapV9Props`, `MiniMapV9`, `MiniMapV12Props` and `MiniMapV12`: use `MiniMapProps` and `MiniMap`; use `flowVersion` if the React Flow version is not recognized automatically
80+
- `EdgeDefaultV9` and `EdgeDefaultV12`: use `EdgeDefault`
81+
- `EdgeDefs`: use `ReactFlowMarkers`
82+
- `autoCompleteFieldUtils`: use `suggestFieldUtils`
83+
- `CodeMirror.outerDivAttributes`: use all properties directly on `CodeEditor`
84+
- `MultiSuggestField.ofType`: use `<MultiSuggestField<TYPE>>`
85+
- `StringPreviewContentBlobToggler.firstNonEmptyLineOnly`: use `useOnly="firstNonEmptyLine"`
86+
- color configuration is no longer possible via the previously used SCSS variables
87+
- `$eccgui-color-primary`, `$eccgui-color-primary-contrast`, `$eccgui-color-accent`, `$eccgui-color-accent-contrast`,
88+
`$eccgui-color-success-text`, `$eccgui-color-success-background`, `$eccgui-color-info-text`, `$eccgui-color-info-background`,
89+
`$eccgui-color-warning-text`, `$eccgui-color-warning-background`, `$eccgui-color-danger-text`, `$eccgui-color-danger-background`
90+
- use `$eccgui-color-palette-light` instead
5891

5992
## [25.2.0] - 2026-04-30
6093

@@ -69,7 +102,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
69102

70103
- `<Pagination />`
71104
- improve breakpoints to display widgets for page size and page number inside smaller containers
72-
- male the breakpoints configurable via SCSS
105+
- make the breakpoints configurable via SCSS
73106

74107
## [25.1.0] - 2026-04-13
75108

@@ -443,7 +476,7 @@ If you use Jest then you can use the same aliases for the `moduleNameMapper` con
443476

444477
- `HandleV9Props` and `HandleV10Props` export will be removed, use only `HandleDefaultProps`
445478
- `<NodeContent />`
446-
- `businessDate`: will be removed because it is already not used
479+
- `businessData`: will be removed because it is already not used
447480
- `<ReactFlow />`: use `<ReactFlowExtended />`
448481

449482
### Migration from v24 to v25

README.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,8 @@ $eccgui-color-palette-light: (
7474

7575
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`.
7676

77-
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.
77+
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.
7878

79-
- `$eccgui-color-primary`: color for very important buttons and switches
80-
- `$eccgui-color-primary-contrast`: readable text color used on primary color areas
81-
- `$eccgui-color-accent`: color for most conformation buttons, links, etc
82-
- `$eccgui-color-accent-contrast`: readable text color used on accent color areas
8379
- `$eccgui-color-applicationheader-text`
8480
- `$eccgui-color-applicationheader-background`
8581
- `$eccgui-color-workspace-text`

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@eccenca/gui-elements",
33
"description": "GUI elements based on other libraries, usable in React application, written in Typescript.",
4-
"version": "25.2.0",
4+
"version": "26.0.0",
55
"license": "Apache-2.0",
66
"homepage": "https://github.com/eccenca/gui-elements",
77
"bugs": "https://github.com/eccenca/gui-elements/issues",
@@ -184,7 +184,8 @@
184184
"hast-util-from-parse5": "8.0.0",
185185
"**/lodash": "^4.18.1",
186186
"**/minimatch": "^3.1.4",
187-
"**/serialize-javascript": "^7.0.5"
187+
"**/serialize-javascript": "^7.0.5",
188+
"**/ws": "^8.21.0"
188189
},
189190
"husky": {
190191
"hooks": {

src/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.tsx

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ export interface StringPreviewContentBlobTogglerProps extends Omit<
2222
/**
2323
* Use only parts of `content` in the preview.
2424
* `firstMarkdownSection` uses the content until the first double line return.
25-
* Currently overwritten by `firstNonEmptyLineOnly`.
2625
*/
2726
useOnly?: "firstNonEmptyLine" | "firstMarkdownSection";
2827
/**
@@ -38,12 +37,6 @@ export interface StringPreviewContentBlobTogglerProps extends Omit<
3837
* This allows to add non-string elements to both the full-view content and the pure string content.
3938
*/
4039
noTogglerContentSuffix?: React.JSX.Element;
41-
/**
42-
* If only the first non-empty line should be shown in the preview.
43-
* This will in addition also be shortened according to `previewMaxLength`.
44-
* @deprecated (v26) use `useOnly="firstNonEmptyLine"` instead
45-
*/
46-
firstNonEmptyLineOnly?: boolean;
4740
}
4841

4942
/** Version of the content toggler for text centric content. */
@@ -59,16 +52,10 @@ export function StringPreviewContentBlobToggler({
5952
renderPreviewAsMarkdown = false,
6053
allowedHtmlElementsInPreview,
6154
noTogglerContentSuffix,
62-
firstNonEmptyLineOnly,
6355
...otherContentBlobTogglerProps
6456
}: StringPreviewContentBlobTogglerProps) {
65-
// need to test `firstNonEmptyLineOnly` until property is removed
66-
const useOnlyTest: StringPreviewContentBlobTogglerProps["useOnly"] = firstNonEmptyLineOnly
67-
? "firstNonEmptyLine"
68-
: useOnly;
69-
7057
let previewString = content;
71-
switch (useOnlyTest) {
58+
switch (useOnly) {
7259
case "firstNonEmptyLine":
7360
previewString = useOnlyPart(content, regexFirstNonEmptyLine);
7461
break;

src/cmem/react-flow/ReactFlow/ReactFlow.tsx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -208,10 +208,5 @@ export const ReactFlowExtended = React.forwardRef(ReactFlowExtendedPlain) as <T
208208
p: T & { ref?: Ref<HTMLDivElement> },
209209
) => ReactElement;
210210

211-
/**
212-
* @deprecated (v26) use `ReactFlowExtended`
213-
*/
214-
export const ReactFlow = ReactFlowExtended;
215-
216211
/** Classes that when set for an element, prevent that they trigger react-flow dragging, wheel and panning actions. */
217212
export const preventReactFlowActionsClasses = "nodrag nopan nowheel";

src/cmem/react-flow/extensions/scrollOnDragHook.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,6 @@ export const useReactFlowScrollOnDragV9 = ({ reactFlowProps, scrollOnDrag }: IPr
281281
};
282282

283283
/**
284-
* @deprecated (v26) Currently it ony supports ReactFlow v9. Better to `useReactFlowScrollOnDragV9` for now.
284+
* @deprecated (v27) Currently it only supports ReactFlow v9. Better to `useReactFlowScrollOnDragV9` for now.
285285
*/
286286
export const useReactFlowScrollOnDrag = useReactFlowScrollOnDragV9;

src/common/Intent/index.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ import { Intent as BlueprintIntent } from "@blueprintjs/core";
22

33
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
44

5-
export type IntentBlueprint = BlueprintIntent;
5+
/** @deprecated (v27) use `IntentBlueprint` instead */
66
export const DefinitionsBlueprint = BlueprintIntent;
7+
export const IntentBlueprint = BlueprintIntent;
8+
export type IntentBlueprint = BlueprintIntent;
79

810
export type IntentTypes = IntentBlueprint | "neutral" | "accent" | "info";
911

1012
export const Definitions: { [key: string]: IntentTypes } = {
11-
...DefinitionsBlueprint,
13+
...IntentBlueprint,
1214
ACCENT: "accent",
1315
NEUTRAL: "neutral",
1416
INFO: "info",

src/common/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { openInNewTab } from "./utils/openInNewTab";
1111
import { reduceToText } from "./utils/reduceToText";
1212
export type { DecodeOptions as DecodeHtmlEntitiesOptions } from "he";
1313
export type { IntentTypes as IntentBaseTypes } from "./Intent";
14+
export { IntentBlueprint } from "./Intent";
1415

1516
export const utils = {
1617
openInNewTab,

src/components/Button/Button.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import {
44
AnchorButtonProps as BlueprintAnchorButtonProps,
55
Button as BlueprintButton,
66
ButtonProps as BlueprintButtonProps,
7-
Intent as BlueprintIntent,
87
} from "@blueprintjs/core";
98

9+
import { IntentBlueprint } from "../../common/Intent";
1010
import { CLASSPREFIX as eccgui } from "../../configuration/constants";
1111
import { ValidIconName } from "../Icon/canonicalIconNames";
1212
import Icon from "../Icon/Icon";
@@ -33,7 +33,7 @@ interface AdditionalButtonProps {
3333
/**
3434
* Intent state visualized by color.
3535
*/
36-
intent?: BlueprintIntent | "accent";
36+
intent?: IntentBlueprint | "accent";
3737
/**
3838
* Content displayed in a badge that is attached to the button.
3939
* 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 = ({
9494
intentByFunction = "accent";
9595
break;
9696
case disruptive:
97-
intentByFunction = BlueprintIntent.DANGER;
97+
intentByFunction = IntentBlueprint.DANGER;
9898
break;
9999
default:
100100
break;
@@ -111,7 +111,7 @@ export const Button = ({
111111
<ButtonType
112112
{...restProps}
113113
className={`${eccgui}-button ` + className}
114-
intent={(intent || intentByFunction) as BlueprintIntent}
114+
intent={(intent || intentByFunction) as IntentBlueprint}
115115
icon={typeof icon === "string" ? <Icon name={icon} {...iconSize} /> : icon}
116116
rightIcon={typeof rightIcon === "string" ? <Icon name={rightIcon} {...iconSize} /> : rightIcon}
117117
>

src/components/Icon/canonicalIconNames.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ const canonicalIcons = {
121121
"module-dashboard": icons.Dashboard,
122122
"module-gdprsearch": icons.UserProfile,
123123
"module-integrations": icons.AppConnectivity,
124+
"module-marketplace": icons.ShoppingCatalog,
124125
"module-linkedrules": icons.Connect,
125126
"module-reports": icons.ReportData,
126127
"module-search": icons.Search,

0 commit comments

Comments
 (0)