@eccenca/gui-elements
Version:
GUI elements based on other libraries, usable in React application, written in Typescript.
877 lines (734 loc) • 57.7 kB
Markdown
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/).
## [Unreleased]
### Added
- `<ChatContent />`
- displays single chat contents in a bubble, including options to add status line and avatar
- `<ChatContentCollapsed />`
- can collapse (and expand) `<ChatContent />` automatically for convenience
- `<ChatField />`
- let the user input texts, calls `onSubmit` handler on enter key and submit button
- `<ChatArea />`
- combine a list of chat contents and user input box
- `<TextReducer />`
- reduces HTML to simple text and can display it as one ellipsed line
- `<Tooltip />`
- prove useage of `usePlaceholder` by jest test coverage
## [24.4.1] - 2025-08-25
### Fixed
- React flow v12:
- add missing styles from react flow library to ensure proper functionality of new connection lines
- `<Tooltip />`
- re-check hover state after swapping the placeholder before triggering the event bubbling
### Changed
- `<IconButton/>`
- increase the default delay before swapping the tooltip placeholder of the icon, reducing unwanted swaps because of mouseovers that were not intended
- `IntentBaseTypes` now available via root export
- some `intent` properties support less or more intent types, in case you need to test supported types before, then you can use it directly from the component interface, e.g. `TextFieldProps["intent"]`
### Added
- `application-colors` and `data-color` icons, both represented by the Carbon `ColorPalette` icon
## [24.3.1] - 2025-08-21
### Fixed
- React flow v12:
- add missing styles from react flow library to ensure proper functionality of new connection lines
## [24.4.0] - 2025-08-07
### Added
- `<ExtendedCodeEditor />`
- `height` and `readOnly` properties to forward them to `<CodeEditor/>`
- `<CodeAutocompleteField />`:
- `outerDivAttributes` property: allows to set parameter of the container element
- `height` and `readOnly` properties to forward them to `<ExtendedCodeEditor/>`
- `<ActivityControlWidget />`
- `additionalActions` property to include other more complex components between the action buttons and the context menu of the widget
- `<Tooltip />`
- `swapPlaceholderDelay` property to allow configuration of the delay time before the placeholder element is replaced by the actual tooltip component
### Fixed
- `<CodeEditor />`
- Editor is re-created after certain property changes and is reset, i.e. loses it current state.
- Enter key handling (adding new line) was broken when `onKeyDown` is defined.
- `<CodeAutocompleteField />`
- First auto-completion item not marked as active when drop down first shown.
- Read-only mode does not work correctly. It is still possible to change the value via pressing Enter (in multiline mode) or clicking the clear button.
### Changed
- `<NodeContent />`
- prevent start of a react flow drag action of a node when user clicks in the node menu section
### Deprecated
- `<CodeEditor />`
- `onChange` property: support for `(v: any) => void` type will be exchanged to more specific `(v: string) => void`
## [24.3.0] - 2025-06-05
### Added
- added support for React Flow v12
- `<NodeContent />` can used with `flowVersion="v12"`
- more v12-only components: `EdgeDefaultV12`, `NodeDefaultV12`, `EdgeDefs`
- they may be removed in future version when v12 elements are available direcly via `<EdgeDefault />` and `<NodeDefault />`
### Deprecated
- `<EdgeDefaultV12 />` and `<NodeDefaultV12 />` will be removed when React Flow v12 is supported directly by `<EdgeDefault />` and `<NodeDefault />`
- `flowVersion` property: `legacy` and `next` will be removed/replaced by `v##` values
## [24.2.0] - 2025-06-04
### Added
- `<ContextOverlay />`
- `usePlaceholder` property: can be used to display the target but include the component later when the first interaction happens, this can improve performance
- `<ContextMenu />`
- `preventPlaceholder` property to prevent the default usage of placeholders waiting for the first user interaction before inserting the full context menu
- `<Tooltip />`
- `usePlaceholder` property: can be used to display the target but include the full component later when the first interaction happens, this can improve performance. It is turned on for text tooltips by default.
- `<OverviewItemActions />`
- `delayDisplayChildren` property: set a time (in ms) to delay the actual rendering of elements inside the actions container. When enabled the containing `OverviewItem` can be displayed faster. Can be used e.g. to boost performance when rendering `OverviewItemActions` with `hiddenInteractions` set to `true`.
- `delaySkeleton` property to set the placeholder/skeleton as long as the delayed display is waiting to get processed
- `<Button />`, `<FieldItem />`, `<FieldSet />`, `<Notification />`, `<Spinner />`
- `intent` property: align intent state usage with other components
### Deprecated
- `<Markdown />`
- `reHypePlugins` property now use `PluggableList` from the unified package. This may require changes if you previously used plugins not conforming to the stricter unified typings. Backward compatibility with the old plugin list type will be removed in the next major version.
- `<FieldSet />`, `<FieldItem />`, `<MultiSelect />`, `<Button />`
- `hasStatePrimary`, `hasStateSuccess`, `hasStateWarning` and `hasStateDanger` properties will be removed, use `intent` property instead
- `<Notification />`
- `neutral`, `success`, `warning` and `danger` properties will be removed, use `intent` property instead
- `<MultiSelect />`
- `data-test-id` for clearance button won't be set automatically, only if a test id for `MultiSelect` is given
### Fixed
- `<CodeAutocompleteField />` and `<AutoSuggestion />`:
- Error highlighting is always visible by underlining the respective text
### Changed
- some more interfaces are exposed:
- `IntentBlueprint`: BlueprintJS intent types, also available by `DefinitionsBlueprint`
- `TableDataContainerProps`, `TableSimpleContainerProps`, `TableHeadProps`, `TableBodyProps`, `TableExpandedRowProps`, `TableHeaderProps` and `DataTableRenderProps` as interfaces for diverse table components
- `<CodeAutocompleteField />`
- memorize `handleChange` handler to prevent unwanted re-renders
### Usage with old application bundlers
Old bundlers like webpack4 do not support the `exports` field from `package.json`, so it cannot resolve the correct files that need to be imported from the packages if they do not come with alternate configs like `modules` or `main`. Our latest markdown update introduced a few of those packages. So you need to extend your aliases (in webpack4 it is managed in `config.resolve.alias`) like:
```
{
"devlop": "devlop/lib/default.js",
"unist-util-visit-parents/do-not-use-color": "unist-util-visit-parents/lib/color.js",
"vfile/do-not-use-conditional-minpath": "vfile/lib/minpath.browser.js",
"vfile/do-not-use-conditional-minproc": "vfile/lib/minproc.browser.js",
"vfile/do-not-use-conditional-minurl": "vfile/lib/minurl.browser.js",
}
```
If you use Jest then you can use the same aliases for the `moduleNameMapper` config, if necessary.
## [24.1.0] - 2025-04-16
### Added
- `<CardActions />`
- `noWrap` property to display them without wrapping its children on multiple lines
- `<ContentGroup />` component
- Manage display of a grouped content section.
- Add info, actions and context annotations by using its properties.
- Can be nested into each other.
- `<CodeEditor />`
- implemented support for linting which is enabled via `useLinting` prop
- `turtle` and `javascript` are currently supported languages for linting
- `useToolbar` property to display toolbar if the `mode` is supported
- currently `markdown` mode is integrated, including support for headlines `<h1-6>`, `<blockquote>`, `<code>` block and inline, `<b>` bold, `<i>`, italic, `<del>` strike through, `<ul>`, `<ol>` and checkbox lists, `<a>` links and `<img>` images
- editor is focused on load if `autoFocus` prop is set to `true`
- implemented support for `disabled` state in code editor
- implemented support for `intent` states in code editor
- `<Label />`
- `additionalElements` property to display elements at the end of the label
- `inline` property to display the label component as inline block
- `<MenutItem />`
- `tooltip` property to dislay tooltip on menu item label
- `<NodeContent />`
- `resizeDirections` to specifiy the axis that can be used to resize the node
- `resizeMaxDimensions` to add maximum values for resizing height/width
- `<OverviewItem />`
- `hasCardWrapper` property to use a `Card` component as wrapper around it, simplifies the process to put it in a box, use `cardProps` to forward basic properties to that `Card` wrapper
- `<SimpleDialog />`
- `actionsProps` property to forward `CardActions` properties, e.g. `noWrap`
- New icons:
- `artefact-task-concatenatetofile`
- `artefact-task-pivot`
- `artefact-task-unpivot`
- `item-magic-edit`
- `operation-format-text-code`
- `operation-format-text-bold`
- `operation-format-text-italic`
- `operation-format-text-strikethrough`
- `operation-format-list-bullet`
- `operation-format-list-checked`
- `operation-format-list-numbered`
### Fixed
- `<CodeAutocompleteField />`:
- Code editor resets to initial value on every code editor instance re-init
- `<CodeEditor />`
- re-render the component if the `wrapLines` property is changed after the component's render
- only fire `onChange` event when the document has actually changed
- `<OverviewItem />`
- whitespace after `Depiction` element when the `OverviewItem` ist used with `densityHigh` and `hasSpacing`
- `<OverviewItemActions />`
- `hiddenInteractions` stay visible if they contain focused elements or opened overlays (e.g. context menus)
- `<TagList />`
- do not create empty list items
- `<SearchField />`
- allow to use `onClearanceHandler` and `rightElement` together
- fix display of `Icon` with `tooltipText` as direct child in `rightElement`
### Changed
- `<ActivityControlWidget />`
- display running time after label if there is an status info to prevent a third line
- `<ReactFlow />`
- property color for `graph` configuration was adjusted
- `<SearchField />`
- internally forced to be managed controlled to keep `onClearanceHandler` independent from outer `value` property
- `<Switch />`
- use always `<Label/>` component for `label` value
- `<StickyNoteNode />`
- Refactored data structure position and dimension (breaking change)
### Deprecated
- `<CodeEditor />`
- fallback of static test id is removed, need then always to be set if necessary
- `<OverflowText />`
- component won't accept properties of any name in future, only data attributes for test IDs and basic HTML element properties
- `<OverviewItemList />`
- `densityHigh` property will be removed, use it directly on `OverviewItem` children
## [24.0.1] - 2025-02-06
### Changed
- `eslint` libraries were upgraded to v9, so `node` v18.18 or higher is required
### Fixed
- `MultiSelect`:
- Old suggestions might be shown for a very short time when typing in a new search query.
- `CodeEditor`:
- Broken highlighting for editor modes that leveraged adapted legacy modes.
## [24.0.0] - 2024-12-17
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 v23 to v24
- upgrade Typescript to v5
- upgrade Node to at least v18, see **Changed** section for more info about it
- 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
- `<GridColumn/>`
- `full`: was deprecated and now removed because it always uses full width if it is the only column and does not have any othe size config
- `<Notification/>`
- `fullWidth`: was deprecated and now removed, use `flexWidth` as replacement
- `iconName`: was deprecated and now removed, use `icon` property
- `<Table/>`
- `size`: use only "small", "medium" or "large" as value
- `<Tag/>`
- `emphasized`: was deprecated and now removed, use `minimal=false` plus `emphasis="stronger"` instead
- `IconSized` type: use `CarbonIconType`
- `TimeUnits` type: use `ElapsedDateTimeDisplayUnits`
- `MarkdownParserProps` interface: use `MarkdownProps`
- `elapsedTimeSegmented` function: use `elapsedDateTimeDisplayUtils.elapsedTimeSegmented`
- `simplifiedElapsedTime` function: use `elapsedDateTimeDisplayUtils.simplifiedElapsedTime`
### Added
- `<StringPreviewContentBlobToggler />`:
- `noTogglerContentSuffix`: Allows to add non-string elements at the end of the content if the full description is shown, i.e. no toggler is necessary. This allows to add non-string elements to both the full-view content and the pure string content.
- `<MultiSuggestField />`
- An optional custom search function property has been added, it defines how to filter elements.
- Added a prop `limitHeightOpened` to limit the height of the dropdown by automatically calculating the available height in vh.
- `<FlexibleLayoutContainer />` and `<FlexibleLayoutItem />`
- helper components to create flex layouts for positioning sub elements
- stop misusing `Toolbar*` components to do that (anti pattern)
- `<PropertyValueList />` and `<PropertyValuePair />`
- `singleColumn` property to display label and value below each other
- `<Label />`
- `emphasis` property to control visual appearance of the label text
- basic Storybook example for `<Application* />` components
- `<CodeEditor />`
- `setEditorView` option for compatibility to Codemirror v6
- `supportCodeFolding` optional property to fold code for the supported modes e.g: `xml`, `json`, etc.
- `shouldHighlightActiveLine` optional property to highlight active line where the cursor is currently in.
- `shouldHaveMinimalSetup` optional property that imports codemirror's base minimal configurations.
- `additionalExtensions` optional property for additional extensions to customize the editor further.
- `<Markdown />`
- `htmlContentBlockProps` can now be used to configure the wrapper around the Markdown content
- `$eccgui-selector-text-spot-highlight` SCSS config variable to specify selector that is used to create shortly highlighted spots
- it is highlighted when the selector is also active local anchor target or if it has the `.eccgui-typography--spothighlight` class attached to it
### Fixed
- toggling on/off the `<HandleTools/>` was corrected, they kept displayed after re-entering with the cursor
- `<Pagination/>`
- change text overflow for selectors to `clip` because Firefox rendered `ellipsis` a bit too early
- `<ApplicationContainer />`:
- `useDropzoneMonitor` helper hook process was improved so that less events are processed and the dropzone monitoring is more stable
### Changed
- GUI elements library needs node 18 or an higher version because dependencies were upgraded
- you may run into problems if you try it with Node v16 or v17, or Webpack v4, mainly because of a Node bugfix regarding the OpenSSL provider
- if you cannot upgrade your dependencies then you could workaround that by patching the `crypto` package or using Node with `--openssl-legacy-provider` option
- see https://github.com/webpack/webpack/issues/14532 and https://stackoverflow.com/questions/69692842/ for more info and possible solutions
- upgrade to `@carbon/react` package
- almost all Carbon related packages were replaced by using only `@carbon/react`
- some component interfaces partly lack documentation in our Storybook because their base interfaces from `@carbon/react` are currently not exported: `AccordionItemProps`, `ApplicationHeaderProps`, `ApplicationToolbarProps`, `ApplicationToolbarActionProps`, `ApplicationToolbarPanelProps`, `CarbonIconType`, `TableCellProps`, `TableExpandRowProps`, `TableProps`
- upgrade to Typescript v5
- your package should be compatible to Typescript 5 patterns
- upgrade to Storybook v8
- include a few patches for actions, see https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#implicit-actions-can-not-be-used-during-rendering-for-example-in-the-play-function
- allow `next` and `legacy` as branch names
- `<CodeEditor />`
- `setInstance` interface changed to `setEditorView` for semantic compatibility to Codemirror v6
- `<BreadcrumbItem/>`
- link color and separation char were adjusted
- `<Markdown/>`
- align blocks for language specific code to default code blocks
- switch icons for `item-clone` and `item-copy` to Carbon's `<Replicate/>` and `<Copy/>`
- Remove duplicated icon names `artefact-customtask*` and only keep `artefact-task*` names.
- `<OverviewItemDepiction/>`
- improve examples in storybook
- improve display for images that are to large for the available space (fully show them)
- `<CodeAutocompleteField />`:
- Add parameter `reInitOnInitialValueChange`, to allow the field to re-initialize if the initial value changes.
### Deprecated
- `<Icon/>` and `<TestIcon/>`
- `description` and `iconTitle`: use `title` as replacement.
- `TableRowHeightSize` type: use `TableProps["size"]` directly
- `IRenderModifiers` interface: use `SuggestFieldItemRendererModifierProps`
- `IElementWidth` type: use `SuggestFieldItemRendererModifierProps["styleWidth"]`
- `MultiSelectSelectionProps` interface: use `MultiSuggestFieldSelectionProps`
- `MultiSelectProps` interface: use `MultiSuggestFieldProps`
- `nodeTypes` and `edgeTypes`
- will be removed without replacement, define it yourself or use `<ReactFlow/` with `configuration` option
- `AutoCompleteFieldProps` and `IAutoCompleteFieldProps` interfaces: use `SuggestFieldProps`
- `<CodeAutocompleteField/>`
- `AutoSuggestionProps`: use `CodeAutocompleteFieldProps` instead
- we renamed `ISuggestionBase`, `ISuggestionWithReplacementInfo`, `IReplacementResult`, `IPartialAutoCompleteResult`, `IValidationResult` to `CodeAutocompleteFieldSuggestionBase`, `CodeAutocompleteFieldSuggestionWithReplacementInfo`, `CodeAutocompleteFieldReplacementResult`, `CodeAutocompleteFieldPartialAutoCompleteResult`, `CodeAutocompleteFieldValidationResult`
- all legacy support components are going to be removed, you need to replace them by activily maintained components
- `<ButtonReplacement/>`: switch to `<Button />`
- `<AffirmativeButtonReplacement/>`: switch to `<Button affirmative />`
- `<DismissiveButtonReplacement/>`: switch to `<Button dismissive />`
- `<DisruptiveButtonReplacement/>`: switch to `<Button disruptive />`
- `<CheckboxReplacement/>`: switch to `<Checkbox />`
- `<RadioButtonReplacement/>`: switch to `<RadioButton />`
- `<TabsReplacement/>`: switch to `<Tabs />`
- `<TextFieldReplacement/>`: switch to `<TextField />`, `<TextArea />`, `<FieldItem />`
- `MultiSuggestField.ofType` method:
- instead of `MyMultiSuggest = MultiSuggestField.ofType<MyType>()` use directly `<MultiSuggestField<MyType> {...props} />`
- `MultiSuggestField.ofType` also returns the original BlueprintJS `MultiSelect` element, not our version!
## [23.8.0] - 2024-08-19
### Added
- `<ApplicationContainer />`:
- `monitorDropzonesFor` property can be used to monitor application wide dropzones for dragged elements via data attributes attached to body element containing the data transfer type of drag over events.
- `<ReactFlow />`
- `dropzoneFor` property can be used to mark react flow canvas as matching area to drop dragged elements.
- `<Accordion />`, `<AccordionItem />`
- `whitespaceSize` property to define how much whitespace is used on top and bottom inside the header and content of an accordion item.
- `separationSize` property defines how much space is used for the separation between an accordion item and the next one.
- class name prefixes are now available by variables with more readable names:
- BlueprintJS: `$prefix-blueprintjs` (current value is `bp5`)
- Carbon Design System: `$prefix-carbon` (current value is `cds`)
- eccenca GUI elements: `$prefix-eccgui` (current value is `eccgui`)
### Fixed
- `<ElapsedDateTimeDisplay />`
- negative values are not shown (e.g. in case server and browser clocks are apart)
### Changed
- `<TextArea />`
- improve visual alignment to `TextField` regarding whitespace and colors
- basic styles for Uppy widget were improved and moved to its own component folder
### Deprecated
- `<Accordion />`
- `size` property in favour of `whitespaceSize`
- `<AccordionItem />`
- `condensed` property in favour of `whitespaceSize="none"`
## [23.7.0] - 2024-06-26
### Added
- `<ReactFlow/>`, `<StickyNoteModal/>`, `<EdgeDefault/>`, `<EdgeLabel/>`, `<HandleContent/>`, `<HandleTools/>`, `<MiniMap/>`
- all react flow components are now be able to process test ids as data attributes, e.g. `data-test-id` and `data-testid`, sometimes as direct property, in other cases as part of properties routed to the wrapper elements
- storybook documentation was enhanced by demonstration the usage of test ids
- `<Markdown />`
- Do syntax highlighting when a class name is set in the form `language-<LANGUAGE_NAME>`.
- `<StickyTarget/>`
- Element wraps the content that need to be displayed sticky.
- `utils`
- `getScrollParent`: method to find the scroll parent of an element
- `<SuggestField />`
- Support loading more results when scrolling to the end of the result list.
- `<TextArea />`
- `intent` property to set the state, formerly used `hasStatePrimary`, `hasStateSuccess`, `hasStateWarning` and `hasStateDanger` properties are now deprecated
- `leftIcon`: set the left aligned icon
- `rightElement`: renders on right side
- `<Depiction />`
- `disabled` property could be used if the element is used inside a disabled interactive element or form control but the state is not adapted automatically to the depiction
- new icons: `navigation-extern`, `toggler-list`, `toggler-table`, `data-boolean`
### Fixed
- `<MultiSuggestField />`
- Updated the interface with the ability to use either `selectedItems` or `prePopulateWithItems` properties, which is more logical.
- Fixed deferred `selectedItems` setting.
- `<StickyNoteModal/>`
- static test id `data-test-id="sticky-note-modal"` will be removed with next major version
- `<BreadcrumbsList />`
- `onItemClick` handler is only executed if breadcrumb has `href` set because this is one callback parameter and the handler would not have any information otherwise
- `<Depiction />`
- position fixed when element is used as icon in `<Button />`
- `<Tooltip />`
- fix font sizes and background colors
- `<NodeContent />`
- node introduction is only processed one time even if a node update still provides a `introductionTime` property
### Changed
- `<BreadcrumbsList />`
- `onItemClick` handler is only executed when the breadcrumb has no own `onClick` handler defined
- `<Card />`
- `elevation` allows now `-1` as value, the card is borderless then
- `<MultiSuggestField />`
- use "Search for item, or enter term to create new one..." as default `placeholder` if `createNewItemFromQuery` is given
- `<SilkActivityControl />`
- interface of `initialStatus` property has been updated with the so far missing `lastUpdateTime` property. If you run in problems because of that you could use `Date.now()` as fix. Or consider to use `<ActivityControlWidget />` directly, what is probably even better.
- `<Depiction />`
- opcaity is reduced automatically when element is used as icon in a disabled `<Button />`
### Deprecated
- `<TextArea />`
- `hasStatePrimary`, `hasStateSuccess`, `hasStateWarning` and `hasStateDanger` properties: use the `intent` property instead.
## [23.6.0] - 2024-04-17
### Added
- `<BreadcrumbList/>`, `<MultiSuggestField/>`, `<Notification/>`, `<Select/>`, `<Tabs/>`
- `data-test-id` (and `data-testid` as alias of it): can be defined to add test ids to the DOM elements
- `wrapperProps`: can be defined by using `div` attributes, and if given a `div` element with wrap the component. This wrapper is also used for test ids because the underlaying BlueprintJS components do not forward data attributes to the DOM.
- if a test id is used on `<Select/>` or `<MultiSuggestField/>` then the toggle button, the dropdown and the search filter get automatically their own test id, suffixed by `_togger`, `_drowpdown` and `_searchinput`.
- `<CodeMirror />`:
- Added support for N-triples and Mathematica modes.
- Allow direct access to the underlying code mirror instance.
- Allow to register a scroll handler.
- Support code folding for some modes, e.g. xml, json.
- `<Modal/>`, `<SimpleDialog/>`, `<AlertDialog/>`
- `data-test-id` (and `data-testid` as alias of it): can be defined to add test ids to the DOM elements
- `<MultiSuggestField />`
- `selectedItems` can be used to set default selected items
- new use hook
- `useApplicationHeaderOverModals`: forces the application header to be displayed over modal backgrounds
- `ClassNames` now forwards all BlueprintJS CSS class names
- ```
import { ClassNames } from "@eccenca/gui-elements";
export const bpButtonClass = ClassNames.Blueprint.BUTTON;
```
- new icons: `state-locked`, `state-unlocked`, `application-notification`
### Fixed
- `<Card />`
- fix styles for `selected=true`, allow it without interactive functionality on card element
- align colors with active menu items
- `<MultiSuggestField />`
- reset the list of options when the query is cleared but nothing from the list is selected
- add the created element to the list of filtered elements immediately after its creation
- block input if `disabled` property is set
- `<TagList />`
- vertical alignment fixed in nowrap containers and for tags with icons
### Changed
- BlueprintJS libraries was updated to v5
- Popover2 lib was removed because we can now again use the internal component from core lib again
- `<ApplicationContainer />`
- `<OverlaysProvider />` from BlueprintJS is now used
- @see https://github.com/palantir/blueprint/wiki/Overlay2-migration
- `<Tag />`
- included icons are always limited to the height of the text label
### Deprecated
- `<Button />`
- interface `AnchorOrButtonProps` is currently exported together with the component but it will be removed with the next major version
- there won't be a replacement or alternate interface because `ButtonProps` should be enough
- `<BreadcrumbList/>`
- property `htmlUlProps`: this is going to be removed because the BlueprintJS `Breadcrumbs` component does not support native `ul` attributes. The element provides a new `wrapperProps` property.
- `<MultiSuggestField />`
- static usage of `data-test-id="clear-all-items"` for the clearance button is deprecated, will be replaced by a test id later that is created from the given test id for the component plus a `_clearance` suffix
## [23.5.0] - 2024-02-15
### Added
- `<CodeEditor />`
- visualize the usage of tabulator chars by background color and arrow symbol
- new `tabIntentSize`, `tabIntentStyle`, `tabForceSpaceForModes` properties to give better control over tabulator usage
### Fixed
- `<Depiction />`
- images representing SVG without `width` property on their root element are displayed with a minimal forced dimension to prevent that they are hidden in some browsers
## [23.4.1] - 2024-02-08
### Fixed
- icons
- use older version of icon library to prevent typescript issues after changes in recent versions
## [23.4.0] - 2024-02-07
### Added
- `<PropertyValuePair />`, `<PropertyName />`, `<PropertyValue />`
- `nowrap`: force display on one line without breaks
- `<Skeleton />`
- provides a loading state display of its children elements
- `<TableCell />`
- `alignHorizontal`: allow to center cell contents
- `<ActivityControlWidget />`
- added extra line to show timer for execution period
- `<ExtendedCodeEditor />`
- replaces `<SingleLineCodeEditor />` to get used for the `<CodeAutocompleteField />` component
- new icons
- `data-string`, `data-url`, `data-date`, `data-time`, `data-datetime`, `data-number`
### Fixed
- `<Pagination />`
- adjust color of arrow in disabled navigation button
## [23.3.1] - 2023-11-15
### Fixed
- `<ContextOverlay />`
- remove always white space at start of `portalClassName` to prevent runtime error in BlueprintJS
## [23.3.0] - 2023-11-09
### Added
- `<PropertyName />`
- `labelProps`: configure the automatically injected `Label` element when `PropertyName` is only a string
- `<TextField />`
- `escapeToBlur`: if set to true the input field blurs/de-focuces when the `Escape` key is pressed.
- `<CodeEditor />`
- support for additional modes: `jinja2`, `yaml` and `json`
- add read-only mode
- `height`: set a fixed height of the editor
- `wrapLines`: control auto-wrapping long lines (the default for wrap long lines is set to false now)
- `<Modal />`
- `modalFocusable`: when `true` the outer `div` element of the modal can be focused by clicking on it.
This is needed e.g. when key (down, up) events should trigger on the modal in order to bubble up to its parent elements.
- `forceTopPosition`: when `true` then the `z-index` of the modal's portal element is recalculated, so that the modal is always displayed on top of all other visible elements. Use with care, see documentation.
- `<ContextOverlay />`
- `preventTopPosition`: when true then the `z-index` is decreased to the value for modals. Use it when you need to display modal dialogs out of the context overlay. Type of counter property to `Modal.forceTopPosition`.
- `<ReactFlow />`
- support disabling the react-flow hot keys via a React context, e.g. `Delete` etc.
- `<HandleDefault />`
- new `category` options that lead to different handle layouts: `dependency`, `fixed`, `flexible` and `unknown`
- `intent` option with defined colors for: primary, accent, info, success, warning, danger
- `<HandleTools />`
- can be used as single handle content to add an context menu to handles
- `<NodeContent />`
- `introductionTime`: can be used to visualize the node was added or updated
- `<EdgeLabel />`
- `loose`: can be set to `true` to prevent the box with border on the label component
- `<TableExpandHeader />`
- `toggleIcon`: optional icon that should be displayed instead of the default ones.
- `utils`
- `getGlobalVar` and `setGlobalVar`: can be used to manage global variables indepentently from component states. They are stored to the `window` object under a `eccgui` "namespace". Can be used for example to manage globally increased counters. Do not use them if you need to store user session properties or confidential data!
- canonical icons for `artefact-chatlog`, `entity-human`, `entity-robot` and `operation-magic`
### Changed
- `<SimpleDialog />`
- by default, prevent certain (React) events from bubbling up through the dialog (backdrop is not affected):
- event handler: `onContextMenu`, `onDrag`, `onDragStart`, `onDragEnd`, `onMouseDown`, `onMouseUp`, `onClick`
- handlers can be overwritten via `wrapperDivProps`
- `<ApplicationHeader />`
- it is now possible to overwrite the background color by setting `--eccgui-appheader-color-background` in its `style` attribute
- `<Modal />`
- new `xlarge` size option
- re-configure appearance of the sizes, `small` is displayed a bit smaller, `large` a bit larger than before
### Fixed
- `<Modal />`
- `Escape` key to close does not work anymore after clicking on the backdrop for `canOutsideClickClose=false` and `canEscapeKeyClose=true`.
- `<Spacing />`
- allow other `div` attributes, e.g. `style`
- tooltips of Carbon based elements are displayed correctly in position and layout
- `<PropertyValuePair />`
- force maximum width for situation when the block could be wider, e.g. inside a flex layout, otherwise name and value could be wrongly aligned in a list with other property value pairs
## [23.2.0] - 2023-07-14
### Added
- linting the code automatically via git hook on commit action
- `<SuggestField />`
- will replace `<AutoCompleteField />`
- match dropdown to element width when `fill=true`
- display dropdown toggler when `onlyDropdownWithQuery=false`
- `<MultiSuggestField />`: will replace `<MultiSelect />`
- `clearQueryOnSelection` option to set an empty query after selections
- match dropdown to element width when `fullWidth=true`
- `<CodeAutocompleteField />`: will replace `<AutoSuggestion />`
- `<Select />`:
- has now a default target when it is not controlled directly by its children
- `onClearanceHandler` and `onClearanceText` as options to include automatically a dedicated clearance button to the element
- `<PropertyName />`
- `size` option to increase/decrease width consumed by its display
- `<EdgeLabel />`: use `title` property on its text sub element
- `<Application* />` elements now have defined and exposed interfaces
- `<FieldSet />` element now have a defined and exposed interface
- `<PropertyValue* />` elements now have defined and exposed interfaces
- `<GridColumn />`
- `carbonSizeConfig` property to overwrite automatically set column sizes by using the original size config from the Carbon component
- `<TitleSubsection />` element now have a defined and exposed interface
- all inferfaces of the main elements in `src/components` are now exposed via `@eccenca/gui-elements`
- all inferfaces of the main elements in `src/extensions` are now exposed via `@eccenca/gui-elements`
- all inferfaces of the main elements in `src/cmem` are now exposed via `@eccenca/gui-elements`
- `<ApplicationToolbarPanel />`
- event handler `onLeave` and `onOutsideClick`, could be used to close the menu panel automatically
### Changed
- `<Select />`:
- match dropdown to element width when `fill=true`
- use rounded input for query input to align it with `<SearchField />`
- Upgraded dependencies
- BlueprintJS was upgraded to the recent version (and a few method calls fixed after)
- Carbon was upgraded to the recent version
- almost all other dependencies were upgraded to their recent minor and major versions
- Removed dependencies
- `package-json-validator` (not maintained anymore and disfunctional) - so currently there is not automatic check and validation of the `package.json` file
- `eslint`, `eslint-config-react-app`, `@typescript-eslint/eslint-plugin`, `@typescript-eslint/parser` - not directly necessary, they may be still installed by other sub packages
- Changed version resolutions
- set `postcss` to at recent version to fix a moderate security vulnerability
- remove resolutions for `node-gyp`, `glob-parent`, `trim`, `trim-newlines`, `minimist` - packages are not use, or resolution is not necessary anymore
- `<ActivityControlWidget />`
- `IActivityAction` interface was renamed to `ActivityControlWidgetAction`
- `<AutoSuggestion />`
- `IProps` interface was renamed to `AutoSuggestionProps`
- `<AutoSuggestionList />`
- `IDropdownProps` interface was renamed to `AutoSuggestionListProps`
- `<MultiSelect />`
- `SelectedParamsType` interface was renamed to `MultiSelectSelectionProps`
- `<SingleLineCodeEditor />`
- `IEditorProps` interface was renamed to `SingleLineCodeEditorProps`
- `<AlertDialog />`
- `IAlertDialogProps` interface was renamed to `AlertDialogProps`
- `<WorkspaceHeader />`
- `IWorkspaceHeaderProps` interface was renamed to `WorkspaceHeaderProps`
- `<NodeDefault />`
- `NodeProps` interface was renamed to `NodeDefaultProps` to justify naming convention
- `<NodeContent />`
- `IHandleProps` interface was renamed to `NodeContentHandleProps` to justify naming convention
- `Utilities` obejct was renamed to `utils` and enhanced with new functions: `getColorConfiguration`, `invisibleZeroWidthCharacters`
- improve style imports, now it is a bit easier to inlcude all parts separately
- `<IconButton />`
- prevent double tab index when it comes with an extra tooltip element attached to it
- prevent tooltip tab selection when button is disabled or has set inactive tabindex itself
- `<SimpleDialog />`
- `enforceFocus: false` is set by default, so that searchable selects keep focus on their search input field
### Fixed
- use correct import for codemirror stylesheetss
- `<BreadcrumbItem />` is not displayed clickable when it has no `href` or `onClick` property set
### Deprecated
- `Select.ofType` method:
- instead of `MyTypeSelect = Select.ofType<MyType>()` use directly `<Select<MyType> {...props} />`
- `<AutoCompleteField />`: use `<SuggestField />`
- `<MultiSelect />`
- `SelectedParamsType`: renamed to `MultiSelectSelectionProps`
- element will be re-implemented, use `<MultiSuggestField />` instead
- `Utilities` object is now deprecated, use `utils` instead
- `HelperClasses` object is now deprecated, use `ClassNames` instead
- `<ActivityControlWidget />`
- `IActivityAction`: renamed to `ActivityControlWidgetAction`
- `<AutoCompleteField />`
- `IRenderModifiers`: import from `src/components/AutocompleteField/interfaces`
- `IElementWidth`: import from `src/components/AutocompleteField/interfaces`
- `<AutoSuggestion />`
- elemenat was renamed, use `<CodeAutocompleteField />` instead
- `IProps` interface is now deprecated, use `CodeAutocompleteFieldProps` instead
- `<AutoSuggestionList />`
- `IDropdownProps` interface is now deprecated, use `AutoSuggestionListProps` instead
- `<SingleLineCodeEditor />`
- `IEditorProps` interface is now deprecated, use `SingleLineCodeEditorProps` instead
- `<AlertDialog />`
- `IAlertDialogProps` interface is now deprecated, use `AlertDialogProps` instead
- `<WorkspaceHeader />`
- `IWorkspaceHeaderProps` interface is now deprecated, use `WorkspaceHeaderProps` instead
- `<NumericInput />`
- It will be removed because beside the special arrow buttons it does not add any special. Could be done also with `<TextField />` combined with correct `type`.
- `<Highlighter />`
- `HighlighterFunctions` renamed to `highlighterUtils`
- `extractSearchWords` moved to `highlighterUtils.extractSearchWords`
- `matchesAllWords` moved to `highlighterUtils.matchesAllWords`
- `createMultiWordRegex` moved to `highlighterUtils.createMultiWordRegex`
- `<Icon />`
- `findExistingIconName`: use `iconUtils.findExistingIconName`
- `<Spinner />`
- `SpinnerPosition`: use `SpinnerProps['position']`
- `SpinnerSize`: use `SpinnerProps['size']`
- `SpinnerStroke`: use `SpinnerProps['stroke']`
- `ReactFlow` extensions
- `NodeProps`: renamed to `NodeDefaultProps`
- `minimapNodeClassName`: moved to `miniMapUtils.nodeClassName`
- `minimapNodeColor`: moved to `miniMapUtils.nodeColor`
- `nodeUtils`: renamed to `nodeDefaultUtils`
- `IHandleProps`: renamed to `NodeContentHandleProps`
- `NodeDimensions`: use `NodeContentProps<any>['nodeDimensions']`
- `HighlightingState`: use `NodeContentProps<any>['highlightedState']` (or import from `src/extensions/react-flow/nodes/sharedTypes`)
- `ActivityControl` components:
- `IActivityControlLayoutProps`: renamed to `SilkActivityControlLayoutProps`
- `IActivityExecutionReport`: renamed to `SilkActivityExecutionReportProps`
- `ActivityControlTranslationKeys`: renamed to `SilkActivityControlTranslationKeys`
- `ActivityAction`: renamed to `SilkActivityControlAction`
- `IActivityControlProps`: renamed to `ActivityControlWidgetProps`
- `IActivityStatus`: renamed to `SilkActivityStatusProps`
- `ConcreteActivityStatus`: renamed to `SilkActivityStatusConcrete`
- `ContentBlobToggler` components:
- `firstNonEmptyLine`: moved to `stringPreviewContentBlobTogglerUtils.firstNonEmptyLine`
- `Markdown` components:
- `highlightSearchWordsPluginFactory` moved to `markdownUtils.highlightSearchWordsPluginFactory`
## [23.1.0] - 2023-04-20
### Added
- `<Badge />` element
- add more context like icons, text or numbers to another element
- `<Button />` and `<IconButton />` now have a `badge` property for simple attachment
- `<ConfidenceValue/>` element
- combines a value and a bar
- `<Depiction />` element
- include different types of images controlling of resizing, ratio, shape
- `<EdgeLabel />` (react flow) element
- can be used for custom edge labels, provides support for depiction, text, actions and intent states
- `<Table />`, `<TableExpandHeader />`, `<TableRow />`, `<TableExpandRow />` and `<TableCell />` elements
- Carbon based elements
- other table elements are still used directly from the Carbon library
- `<TestIcon />`: test icons without the need to define them via a canonical name before.
- `<Card />` property
- `whitespaceAmount`: controls how much whitespace is displayed within the card subelements
- `<CardContent />` (react flow) property
- `noFlexHeight`: changes the behaviour how the component uses the remaining space inside the Card element
- `<Divider />` properties
- `width`: width of the horizontal rule
- `alignment`: horizontal alignment of the horizontal rule
- `<EdgeDefault />` (react flow) properties
- `strokeType`: overwrites the default style how the edge stroke is displayed
- `intent`: visual feedback about the current state of the edge
- `highlightColor`: color(s) of used highlights to mark the edge
- `<Markdown />` property
- `linkTargetName`: browser target name to open links from the Markdown content
- `<MultiSelect />` property
- `requestDelay`: To delay requests on query changes and only fire the most recent request.
- `<NodeContent />` (react flow) properties
- `leftElement`: any element that should be displayed before the node label
- `labelSubline`: displayed under the label in the header
- `fullWidth`: stretches the node to the full available width, e.g. when used outside React Flow context
- `enlargeHeader`: increase hight of header
- `border`: property to overwrite default styles
- `intent`: visual feedback about the current state of the node
- `highlightColor`: color(s) of used highlights to mark the node, together with `intent` it replaces `highlightedState`
- `<Pagination />` property
- `hideBorders`: element is displayed without dividing borders
- `<Tag />` property
- add support for `intent` property
- `<TextField />` and `<TextArea />` property
- `invisibleCharacterWarning`: callback to warn of invisible, hard to spot characters in the input text.
- `intent`: state of the text field
- `<ReactFlow />` property
- `scrollOnDrag`: Support to scroll the pane when going beyond the pane borders on all drag and connection operations.
- `<SilkActivityControl />` property
- `executePrioritized` that is executed when the 'start prioritized' button is clicked while an activity is waiting for execution.
- `<WhiteSpaceContainer />` property
- `linebreakForced`: insert line breaks within an otherwise unbreakable string to prevent text from overflowing the container
### Changed
- use option `--outputCss` for `yarn compile-scss` to get the transpiled CSS echoed out
- upgrade to Carbon icons v11
- switch from `carbon-components` to `@carbon/styles`
- `<GridRow />` property `dontWrapColumns=true` only works for grids on medium sized and larger viewports
- `<NodeContent />` animation is now displayed on the border, not by a pulsing shadow anymore
- `<NodeDefault />`, `<NodeContent />` and `<HandleDefault />` support now React Flow 9 and 10
### Fixed
- `<WorkspaceContent />`: do not prevent wrapping the columns of the included grid
- `<SingleLineCodeEditor />`: Convert multi-line initial value to a single line value.
- `<MenuItem />`: do not display empty icon wrapper.
- `<MultiSelect />`: Requests e.g. on slow networks could get mixed up, resulting in not showing the most recent results.
### Deprecated
- `<Grid />` property `fullWidth` is now deprecated as grids are always used for the full viewport width
- `<NodeContent />` property `highlightedState` is replaced by `intent` and `highlightColor` and should not be used anymore
- `<CardHeader />` properties `densityHigh` and `hasSpacing` are now deprecated, use `Card.whitespaceAmount` now
- `<TextField />` properties `hasStatePrimary`, `hasStateSuccess`, `hasStateWarning` and `hasStateDanger` are now deprecated, use `intent` now
## [23.0.0] - 2022-11-18
### Added
- `<CodeEditor />` element based on `CodeMirror` library, supporting Markdown, Python, Sparql, SQL, Turtle and XML syntax
- `<HoverToggler />` element that allows to switch elements when hovered over.
- `<InteractionGate />` element that can wrap content that need to be blocked from user interactions, it also has options to display a spinner as overlay
- `<Tree />` component
- `<TabPanel />` component that can be used if `<Tabs />` is used in uncontrolled mode.
- `<ReactFlowMarkers />` custom markers for ReactFlow edges, currently one new marker `arrowClosed-inverse` available
- `<StickyNoteNode />`, usable by `stickynote` type in react flow editors for workflows and linking rules
- `CssCustomProperties` and `getColorConfiguration` utilities can be used to exchange color configurations between SCSS and JS
- `decideContrastColorValue` method to get a second color related to the lightness of the testes input color
- `<SimpleDialog />`: properties `showFullScreenToggler` and `startInFullScreenMode`
- `<EdgeDefault />`: new properties for the edge data
- `markerStart` allows to add a marker to the edge starting point
- `inversePath` allows to inverse the edge direction
- `renderLabel` function to render fully custom edge label including any ReactNode
- `<NodeContent />`: property `footerContent` to add footer content to a react flow node
- `<AutoSuggestion>`: properties `autoCompletionRequestDelay` and `validationRequestDelay`, to configure the delay when a request is sent after nothing is typed in anymore.
- `<FieldItemRow`: property `justifyItemWidths` to display all children using equal width inside the row
- `<BreadcrumbList />`: properties `ignoreOverflow` and `latenOverflow`, that can be used to implement a second overflow strategy beside BlueprintJS overflow list, for example in case the overflow list leads to re-rendering loops
- `<Spinner />`: `showLocalBackdrop` property to include backdrop behind spinner making the background less visible
- `<ContextMenu />`: `disabled` property that disables the button to open the menu.
- `<Tooltip />`: properties `markdownEnabler` and `markdownProps` to enable better formatted tooltips with options for line breaks, etc.
- `<AutoCompleteField />`: `onlyDropdownWithQuery` property to prevent dropdown as long as the input field is empty
- large addition to the Storybook, we almost doubled available components and stories
### Fixed
- allow children of `<Accordion />` item to get calculated based on their DOM sizes
- add borders to CodeMirror editor area and include display of focused state
- GUI elements library can be now used easier in applications because it does not force usage of SCSS modules via JS/Webpack4
- fixed ReactFlow stories re-rerender on configuration change
- fix used font family and layout of `<AutoSuggestion />` element, and justify it with the other single line text inputs
- fix condition to include the class name of a `<TagList />` and set maximum width for the items
- fixed `<MultiSelect />` to correctly update created items that are selected while still maintaining a cache of all newly created items
- do not change cursor to pointer by default on tooltip targets
### Changed
- move style imports of CodeMirror layout to `extensions`
- color configurations for react flow editor are not exported as modules anymore, they need to be fetched by `getColorConfiguration` method in JS directly
- BlueprintJS was upgraded to a recent v4
- elements were also upg