Skip to content

v24.0.0

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 17 Dec 12:28
· 13 commits to develop since this release

NPM package: https://www.npmjs.com/package/@eccenca/gui-elements/v/24.0.0
Storybook: https://62150dbccb2d77003a2a5093-auumvvztlk.chromatic.com/

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 webpack/webpack#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
  • 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!