diff --git a/.github/workflows/publish-featurefix-prerelease.yml b/.github/workflows/publish-featurefix-prerelease.yml index 5a4ef21a9..00fd26a70 100644 --- a/.github/workflows/publish-featurefix-prerelease.yml +++ b/.github/workflows/publish-featurefix-prerelease.yml @@ -8,6 +8,7 @@ on: - "fix/*" - "bugfix/*" - "hotfix/*" + - "change/*" inputs: confirmation: description: "Create feature tag and publish package" @@ -28,7 +29,7 @@ jobs: uses: tj-actions/branch-names@v8 - name: Allow only for feature/fix branches run: | - if [[ ! ${{ steps.branch-name.outputs.current_branch }} =~ ^(feature|fix|bugfix|hotfix)\/ ]] ; + if [[ ! ${{ steps.branch-name.outputs.current_branch }} =~ ^(feature|fix|bugfix|hotfix|change)\/ ]] ; then echo "Only allowed to get triggered on feature and fix branches!" echo "You started it on '${{ steps.branch-name.outputs.current_branch }}'." diff --git a/.github/workflows/push-tagged-release.yml b/.github/workflows/push-tagged-release.yml index dace7bba3..8ab76f4e2 100644 --- a/.github/workflows/push-tagged-release.yml +++ b/.github/workflows/push-tagged-release.yml @@ -37,7 +37,6 @@ jobs: - uses: actions/setup-node@main with: node-version: "lts/krypton" - registry-url: "https://registry.npmjs.org" - name: Set name vars id: info-vars run: | @@ -68,6 +67,11 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} projectToken: ${{ secrets.chromaticToken }} exitZeroOnChanges: true + - uses: actions/setup-node@main + with: + node-version: "lts/krypton" + registry-url: "https://registry.npmjs.org" + package-manager-cache: false - name: Publish npm package run: yarn publish --access public env: diff --git a/.gitignore b/.gitignore index 28be384d9..ba70b2d04 100644 --- a/.gitignore +++ b/.gitignore @@ -61,3 +61,6 @@ launch.json storybook-static //jest .jest-test-results.json + +# ignore Typescript assets +*.tsbuildinfo diff --git a/.storybook/main.js b/.storybook/main.js index fb5986c91..cbf56f51e 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -1,19 +1,20 @@ const sass = require("sass"); const path = require("path"); const sassRenderSyncConfig = require("./../scripts/sassConfig"); +const { silenceDeprecations } = require("../scripts/sassDeprecationConfig"); module.exports = { stories: ["../src/**/*.stories.@(js|jsx|ts|tsx)"], addons: [ "@storybook/addon-links", - "@storybook/addon-essentials", - "@storybook/addon-jest", + "@storybook/addon-docs", + "@storybook/addon-a11y", { name: "@storybook/preset-scss", options: { sassLoaderOptions: { implementation: sass, - sassOptions: sassRenderSyncConfig, + sassOptions: {...sassRenderSyncConfig, silenceDeprecations}, }, }, }, @@ -98,7 +99,4 @@ module.exports = { }; return config; }, - docs: { - autodocs: true, - }, }; diff --git a/.storybook/preview.js b/.storybook/preview.js index fd350e4b1..be7d5ee23 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -1,32 +1,11 @@ -import { withTests } from "@storybook/addon-jest"; - import "./styles.scss"; -const getJestResults = () => { - try { - return require("../.jest-test-results.json"); - } catch (err) { - return {}; - } -}; - -const jestResults = getJestResults(); - -export const decorators = [ - withTests({ - results: jestResults, - }), -]; - export const parameters = { options: { storySort: { order: ["Configuration", "Components", "Forms", "Extensions", "CMEM", "*"], }, }, - actions: { - argTypesRegex: "^on[A-Z].*", - }, controls: { matchers: { color: /(background|color)$/i, @@ -34,3 +13,12 @@ export const parameters = { }, }, }; + +const preview = { + // Enables auto-generated documentation for all stories + // @see https://storybook.js.org/docs/writing-docs/autodocs + tags: ['autodocs'], + parameters, +}; + +export default preview; diff --git a/.typescript/tsbuild-esm.json b/.typescript/tsbuild-esm.json index fe99631ff..dbd3b7dad 100644 --- a/.typescript/tsbuild-esm.json +++ b/.typescript/tsbuild-esm.json @@ -1,7 +1,16 @@ { "extends": "./../tsconfig.json", "compilerOptions": { - "lib": ["dom", "dom.iterable", "es2015", "es2020", "es2021", "es2022.intl", "es2015.collection", "es2015.iterable"], + "lib": [ + "dom", + "dom.iterable", + "es2015", + "es2020", + "es2021", + "es2022.intl", + "es2015.collection", + "es2015.iterable" + ], "module": "es2015", "target": "es5", "noEmit": false, diff --git a/CHANGELOG.md b/CHANGELOG.md index 06cba5167..1f3d54905 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,117 +6,182 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p ## [Unreleased] +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 v25 to v26 + +- 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 + +- `` + - simple placeholder element that can be used to display info about missing data +- `` + - `forceInline` property: force inline rendering +- `` + - `togglerSize`: replaces the deprecated `togglerLarge` property +- `` + - `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 + +- `` + - 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, 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"` + - 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 matching + +### Deprecated + +- 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 `searchListPredicate`, which is more efficient in some cases + +### Removed + +- 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` +- `MultiSuggestField.ofType`: use `>` +- `StringPreviewContentBlobToggler.firstNonEmptyLineOnly`: use `useOnly="firstNonEmptyLine"` +- 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` instead + +## [25.2.0] - 2026-04-30 + ### Added -- `` - - Add `intent` property. -- new icons: - - `state-confirmed-all` +- `` + - Add `intent` property. +- new icons: + - `state-confirmed-all` ### Fixed -- `` - - improve breakpoints to display widgets for page size and page number inside smaller containers - - male the breakpoints configurable via SCSS +- `` + - improve breakpoints to display widgets for page size and page number inside smaller containers + - male the breakpoints configurable via SCSS ## [25.1.0] - 2026-04-13 ### Added -- `` - - Add parameter `active` to activity control action to set the `active` state of its button. - - action now can have a `active` and `notification` property -- `` - - component for hiding elements in specific media -- `` - - force children to get displayed as inline content -- `` - - similar to `ContextOverlay` component but not directly linked to a React element, it specifies the target in the DOM to get connected lazy -- `` - - `useOnly` property: specify if only parts of the content should be used for the shortened preview, this property replaces `firstNonEmptyLineOnly` -- `` - - `paddingSize` property to add easily some white space -- `` - - toolbar in `markdown` mode provides a user config menu for the editor appearance -- `` - - `hideIndicator` property: hide the radio inout indicator but click on children can be processed via `onChange` event -- `` - - input component for colors - - uses a subset from the configured color palette by default, but it also allows to enter custom colors -- `` - - `MultiSuggestFieldSelectionProps` provides `newlyRemoved` for callbacks set when removing a selected item -- `` - - inline `code` uses same gray background highlighting like code blocks -- CSS custom properties - - beside the color palette we now mirror the most important layout configuration variables as CSS custom properties -- new icons: - - `state-confirmed-all` - - `state-declined-all` - - `data-sourceschema` - - `data-targetschema` - - `operation-ai-generate` - - `operation-filterreset` - - `toggler-pin-empty` - - `toggler-pin-filled` +- `` + - Add parameter `active` to activity control action to set the `active` state of its button. + - action now can have a `active` and `notification` property +- `` + - component for hiding elements in specific media +- `` + - force children to get displayed as inline content +- `` + - similar to `ContextOverlay` component but not directly linked to a React element, it specifies the target in the DOM to get connected lazy +- `` + - `useOnly` property: specify if only parts of the content should be used for the shortened preview, this property replaces `firstNonEmptyLineOnly` +- `` + - `paddingSize` property to add easily some white space +- `` + - toolbar in `markdown` mode provides a user config menu for the editor appearance +- `` + - `hideIndicator` property: hide the radio inout indicator but click on children can be processed via `onChange` event +- `` + - input component for colors + - uses a subset from the configured color palette by default, but it also allows to enter custom colors +- `` + - `MultiSuggestFieldSelectionProps` provides `newlyRemoved` for callbacks set when removing a selected item +- `` + - inline `code` uses same gray background highlighting like code blocks +- CSS custom properties + - beside the color palette we now mirror the most important layout configuration variables as CSS custom properties +- new icons: + - `state-confirmed-all` + - `state-declined-all` + - `data-sourceschema` + - `data-targetschema` + - `operation-ai-generate` + - `operation-filterreset` + - `toggler-pin-empty` + - `toggler-pin-filled` ### Fixed -- `` - - create more whitespace inside `small` tag - - reduce visual impact of border -- `` - - take Markdown rendering into account before testing the maximum preview length -- `` - - fix `disabled` property update -- `` - - fix color of buttons to move to previous/next step - - take Markdown rendering into account before testing the maximum preview length -- `` - - header-menu items are vertically centered now -- `` - - stabilize font size for on hover state - - use correct font sizes when `size` property is set -- `Typography` - - adjust displaying fallback symbols in different browsers -- `` - - use the latest provided `onChange` function -- ``, `