over_react 2.4.0+dart2 copy "over_react: ^2.4.0+dart2" to clipboard
over_react: ^2.4.0+dart2 copied to clipboard

outdated

A library for building statically-typed React UI components using Dart.

OverReact Changelog #

2.4.0 #

Complete 2.4.0 Changsets:

  • #280 Optimize the over_react builder to avoid unnecessary asset reads. Informal profiling in a large codebase that consumes over_react has shown in the best case a speed up on rebuilds from ~1 minute to ~2 seconds, and in the worst case no difference at all.

2.3.1 #

Complete 2.3.1 Changsets:

  • #272 Add min-height: 0 to ResizeSensor wrapper nodes to fix issues with it not shrinking in a flexbox layout

2.3.0 #

Complete 2.3.0 Changsets:

  • #266 Add ErrorBoundary Component

    This component does not actually hook into any ReactJS 16 lifecycle yet. It won't until support for ReactJS 16 is added to react-dart in version 5.0.0, and to over_react in version 3.0.0.

2.2.0 #

Complete 2.2.0 Changsets:

  • #249 Warn consumers about props / state mutation

    • Directly mutating props and state is an antipattern and can cause unpredictable rendering. Avoiding this will be especially important for components to behave correctly in React 16's concurrent mode.
  • #255 Update for future compatibility with react 5.0.0

2.1.0 #

Complete 2.1.0 Changsets:

  • #249 Warn consumers about props / state mutation

    • Directly mutating props and state is an antipattern and can cause unpredictable rendering. Avoiding this will be especially important for components to behave correctly in React 16's concurrent mode.
  • #254 Add IDE snippets (WebStorm/IntelliJ and VSCode) for Dart2-only component boilerplate.

  • #253 Fix a bug that would cause a runtime exception for consumers that are leveraging the backwards-compatible component boilerplate when mixing in a @PropsMixin or @StateMixin from this package.

  • #256 Workaround a Dart Dev Compiler bug that affects private props/state members and classes.

  • #252 Workaround the following Dart Dev Compiler bug that results in incorrect behavior in certain scenarios when using uninitialized props/state fields: dart-lang/sdk#36052

  • #251 Update the builder's auto_apply option to dependents instead of all_packages. This means it will only run on packages that explicitly declare a dependency on over_react, which makes more sense for the purpose of this builder and is more performant because it runs on fewer packages.

  • #250 Fail CI if changes are detected after running a build via pub run build_runner build. This ensures that we don't forget to commit changes to generated files.

2.0.0 #

Complete 2.0.0 Changeset

This release adds support for Dart 2 while retaining backwards-compatibility with Dart 1, but it requires changes to consumer's component code.

Note: If you intend to consume this version of over_react on Dart 1 and Dart 2 in the same codebase, do not remove the transformers section from your pubspec.yaml. This section is ignored on Dart 2, but will still be needed on Dart 1

Breaking Changes

  • In order to add support for Dart 2, consumers need to update their over_react component code! Please see our Dart 2 migration guide for more information.

    We've created a codemod tool that will automatically update your code:

    # On Dart 2.1.0
    $ pub global activate over_react_codemod ^1.0.2
    
    # If you need backwards-compatibility with Dart 1:
    $ pub global run over_react_codemod:dart2_upgrade --backwards-compat
    
    # Or, if you are okay with dropping Dart 1 support:
    $ pub global run over_react_codemod:dart2_upgrade
    

    The tool (and additional info) can be found here: https://github.com/Workiva/over_react_codemod/

  • Removals:

    • getJsProps() - use getProps() instead
    • $Props and $PropKeys - see the migration guide above

1.33.1 #

  • #272 Add min-height: 0 to ResizeSensor wrapper nodes to fix issues with it not shrinking in a flexbox layout

1.33.0 #

Complete 1.33.0 Changeset

  • #266 Add ErrorBoundary Component

    This component does not actually hook into any ReactJS 16 lifecycle yet. It won't until support for ReactJS 16 is added to react-dart in version 5.0.0, and to over_react in version 3.0.0.

1.32.0 #

Complete 1.32.0 Changeset

  • #249 Warn consumers about props / state mutation
    • Directly mutating props and state is an antipattern and can cause unpredictable rendering. Avoiding this will be especially important for components to behave correctly in React 16's concurrent mode.

1.31.0 #

Complete 1.31.0 Changeset

Deprecations

  • #230 Deprecate the following APIs (they will be removed in 2.0.0):

    • getJsProps() - use getProps() instead.
    • $Props and $PropKeys - see the Dart 2 migration guide for more information.
  • #207 Override call() instead of noSuchMethod() in the UiProps class. This was a requirement for Dart 2 compatibility, but also serves as an improvement - by no longer overriding noSuchMethod(), we will no longer be obscuring certain analyzer errors that should be seen by consumers.

1.30.2 #

Complete 1.30.2 Changeset

Bug Fixes

  • #222 Fix the initializer validation for component factories and the static meta field on props and state classes.

1.30.1 #

Complete 1.30.1 Changeset

Bug Fixes

  • #220 Fix an issue for Dart 2 compatibility with how the transformer handles props and state mixins that have generic type parameters.

Tech-Debt

  • #219 Remove dart:mirrors usages from tests (necessary for Dart 2 compatibility).

Documentation

1.30.0 #

Complete 1.30.0 Changeset

New Features

  • #196 Add componentDefaultProps getter to UiProps for retrieving the immutable map view of a component's default props. This is an alternative to constructing a UiComponent directly and calling getDefaultProps(), which will no longer work in Dart 2.

  • #208 Add typedDefaultPropsFor(factory) utility function to easily obtain a typed view of the immutable default props for any UiFactory. This is effectively a strongly-typed version of the above componentDefaultProps getter.

Improvements

  • #200 #201 #205 #208 Update the transformer to support new over_react component boilerplate that is compatible with both Dart 1 and Dart 2. This is the first step towards Dart 2 compatibility. For more information, see #210.

1.29.0 #

Complete 1.29.0 Changeset

Bug fixes

  • #197 Mount the rem-change-detecting node for a ResizeSensor asynchronously to prevent react from getting into a bad state

New Features

  • #195: Add hooks for Flux component redraws that occur in response to store updates: listenToStoreForRedraw/handleRedrawOn
    • Implements the stuff that was missed in #193

1.28.0 #

Complete 1.28.0 Changeset

Bug fixes

  • #193 Fix missing super calls in Flux component lifecycle methods that prevented disposal and prop validation

New Features

  • #193: Add hooks for Flux component redraws that occur in response to store updates: listenToStoreForRedraw/handleRedrawOn
    • Actually implemented via #195 in 1.29.0

Improvements

  • #192: Make return type of getDartComponent generic
  • #190: Merge style prop into styles applied to the top-level ResizeSensor node

1.27.0 #

Complete 1.27.0 Changeset

New Features

  • #187: New ResizSensorProps.onDetachedMountCheck prop callback and ResizeSensorComponent.forceResetDetachedSensor method

Improvements

  • #188: Use isNotEmpty instead of length == 0 check
    • Thanks @teresy!!!

1.26.2 #

Bug fixes

  • 5fb73f Make rem change sensor container is overflow:hidden so it doesn't interfere with the page layout

1.26.1 #

Dependency Updates

  • e8fc86 Loosen lower bound of built_value
    • built_value >=4.6.1 <5.2.0 (was >=5.1.3 <5.2.0)

1.26.0 #

Complete 1.26.0 Changeset

New Features

Dependency Updates

  • 881c0c Tighten version constraints to speed up pub get
    • analyzer >=0.30.0+4 <=0.31.0 (was >=0.30.0 <=0.31.0)
    • built_redux ^7.4.2 (was ^7.4.1)
    • built_value >=5.1.3 <5.2.0 (was >=4.2.0 <5.2.0)
    • js ^0.6.1+1 (was ^0.6.0)
    • logging >=0.11.3+2 <1.0.0 (was >=0.11.3+1 <1.0.0)
    • meta ^1.1.6 (was ^1.0.4)
    • path ^1.5.1 (was ^1.4.1)
    • react ^4.4.2 (was ^4.4.1)
    • source_span ^1.4.1 (was ^1.4.0)
    • transformer_utils ^0.1.5 (was ^0.1.1)
    • w_common ^1.13.0 (was ^1.10.0)
    • w_flux ^2.9.5 (was ^2.7.1)
    • platform_detect ^1.3.4 (was ^1.3.2)
    • quiver >=0.25.0 <=0.28.0 (was >=0.21.4 <=0.28.0)

Tech Debt

  • #179: Update CI build

1.25.0 #

Complete 1.25.0 Changeset

New Features

  • #167: New ClassNameBuilder.merge method and ClassNameBuilder.merged constructor.
  • #168: Expose react_wrappers library that was previously only available via a src/ import.

1.24.0 #

Complete 1.24.0 Changeset

Dependency Updates

  • #153 react ^4.3.0 (was ^3.7.0)
  • #151
    • built_redux ^7.4.1 (was >=6.1.0 <8.0.0)
    • built_value >=4.2.0 <5.2.0 (was >=4.2.0 <6.0.0)

New Features

  • #154: Expose react_dom.render/react_dom.unmountComponentAtNode from the react library

Tech Debt

  • #151 Prepare for Dart 2 SDK
    • Address Dart 2.x SDK lints / warnings that do not constitute breaking changes
    • Address DisposableManagerV6 deprecation
    • UiProps and UiState now extend from MapBase

1.24.1 #

Complete 1.24.1 Changeset

Dependency Updates

  • w_common ^1.10.0 (was ^1.8.0)
  • react ^4.4.1 (was ^4.3.0)

Tech Debt

  • Address ReactComponentFactory deprecation
  • Address findRenderedComponentWithType deprecation

1.24.0 #

Complete 1.24.0 Changeset

Dependency Updates

  • #153 react ^4.3.0 (was ^3.7.0)
  • #151
    • built_redux ^7.4.1 (was >=6.1.0 <8.0.0)
    • built_value >=4.2.0 <5.2.0 (was >=4.2.0 <6.0.0)

New Features

  • #154: Expose react_dom.render/react_dom.unmountComponentAtNode from the react library

Tech Debt

  • #151 Prepare for Dart 2 SDK
    • Address Dart 2.x SDK lints / warnings that do not constitute breaking changes
    • Address DisposableManagerV6 deprecation
    • UiProps and UiState now extend from MapBase

1.23.1 #

Complete 1.23.1 Changeset

Dependency Updates

  • #149: Dependency Maintenance:
    • Dart SDK now >=1.24.2 <2.0.0, was >=1.24.2
    • Dependencies:
      • analyzer now >=0.30.0 <=0.31.0, was >=0.30.0 <0.31.0
      • barback now >=0.15.2 <=0.15.2+14, was ^0.15.0
      • quiver now >=0.21.4 <=0.28.0, was >=0.21.4 <0.26.0
    • Dev Dependencies:
      • coverage now >=0.7.2 <0.11.0, was ^0.7.2
      • dependency_validator now ^1.1.0, was ^1.0.0
      • mockito now ^2.0.0, was ^0.11.0
      • test now ^0.12.32+1, was ^0.12.24

1.23.0 #

Complete 1.23.0 Changeset

Dependency Updates

  • #145: Widen built_value version constraint: now >=4.2.0 <6.0.0, was ^4.2.0

New Features

  • #144: Move BuiltReduxUiComponent/BuiltReduxUiProps out of @experimental
    • Warning: This will be deprecated in an upcoming release in favor of a different approach to creating a built_redux component.

1.22.0 #

Complete 1.22.0 Changeset

New Features

  • #142: Do not execute prop validation logic in dart2js code

1.21.0 #

Complete 1.21.0 Changeset

New Features

  • #140: Add an option to make BuiltReduxUiComponent "pure"

1.20.2 #

Complete 1.20.2 Changeset

Tech Debt

  • #137: Get rid of dart2js compiler warnings

1.20.1 #

Complete 1.20.1 Changeset

Misc

  • #133: Update logger name standard.

1.20.0 #

Complete 1.20.0 Changeset

New Features

  • #128: Add UiPropsMapView.

Misc

  • #129: Add CODEOWNERS file.

1.19.0 #

Complete 1.19.0 Changeset

Dependency Updates

  • #126: Update minimum Dart SDK version to 1.24.2.

New Features

  • #118: Add BuiltReduxUiComponent and BuiltReduxUiProps.
    • These classes are considered unstable and can be imported via import "package:over_react/experimental.dart";

Tech Debt

  • #126: Use dependency_validator.

1.18.1 #

Complete 1.18.1 Changeset

Bug fixes

  • Fix regression in prop_mixins.dart introduced by #119.

1.18.0 #

Complete 1.18.0 Changeset

Improvements

  • #177: Improve error message when UiState classes aren't set up properly.

New Features

  • #119: More convenient ubiquitous access of DOM/aria props.
  • #120: Transition in/out-specific config, test attributes.

1.17.0 #

Complete 1.17.0 Changeset

New Features

  • #115: Add 4-argument callback utils

1.16.2 #

Complete 1.16.2 Changeset

Bug fixes

  • #110: Revert bugfixes that can cause FluxUiComponent rendering regressions:
    • #108: Fix case where setState and store trigger only result in one FluxUiComponent render
    • #103: FluxUiComponent redraws only once when store triggers along with ancestor rerender.

1.16.1 #

Complete 1.16.1 Changeset

Bug fixes

  • #108: Fix case where setState and store trigger only result in one FluxUiComponent render

1.16.0 #

Complete 1.16.0 Changeset

Dependency Updates

  • w_common ^1.8.0 (was ^1.6.0)
  • w_flux ^2.9.0 (was ^2.7.1)

New Features

  • #104: Update UiComponent to implement DisposableManagerV6.

Improvements

  • #103: FluxUiComponent redraws only once when store triggers along with ancestor rerender.

Tech Debt

  • #105: Add warning for incorrect usage of getDartComponent.

1.15.1 #

Complete 1.15.1 Changeset

Tech Debt

  • #97: Improve some documentation comments.
  • #95: Move internal test utils to over_react_test, and consume them.

1.15.0 #

Complete 1.15.0 Changeset

New Features

  • #88: Add validateProps method to UiComponent
    • Will automatically validate props annotated with @requiredProp within componentWillMount and componentWillReceiveProps

Tech Debt

  • #94: Address deprecations from package:test
  • #98: Fix misleading typo in overridden parameter name

Misc

1.14.0 #

Complete 1.14.0 Changeset

Dependency Updates

  • react ^3.4.3 (was ^3.4.1)
  • w_common ^1.6.0 (new)

New Features

  • #91: Implement DisposableManagerV3 for UiComponent
    • Assists with cleaning up streams and other data structures that won't necessarily be garbage collected without some manual intervention.

Misc

  • #92: Update prop error message to make it more DDC friendly

1.13.0 #

Complete 1.13.0 Changeset

Dependency Updates

  • #89: quiver >=0.21.4 <0.26.0 (was >=0.21.4 <0.25.0)

New Features

  • #87: Make DomProps/SvgProps implement UiProps for more convenient DDC typing

Misc

  • #86: Get tests passing using the DDC
  • #83: Use over_react_test

1.12.1 #

Complete 1.12.1 Changeset

Bug fixes

  • Bump min source_span to version w/ SourceFile.fromString

1.12.0 #

Complete 1.12.0 Changeset

Strong Mode / Dart Dev Compiler

  • #81: Make transformer output strong mode clean.
  • #82: Implement workarounds necessary to make OverReact-based code able to be compiled by the Dart Dev Compiler ("DDC").

1.11.2 #

Complete 1.11.2 Changeset

Bug Fixes

  • e805b7: Null-coalesce isDisposedOrDisposing to ease consumer test breakages.

1.11.1 #

Complete 1.11.1 Changeset

Bug Fixes

  • Revert #77: Update FluxUiComponent subscriptions when new props are received.
    • Reverted since this broke subclasses that weren't calling super in lifecycle methods componentWillReceieveProps and componentDidUpdate
    • Keep @mustCallSuper annotations from this changeset

1.11.0 #

Complete 1.11.0 Changeset

New Features

Bug Fixes

  • #77: Update FluxUiComponent subscriptions when new props are received.

Tech Debt Paid

  • #75: Audit the lib for any memory leak sources, and fortify it against future ones.

Misc

  • #72: Add logging message when a race condition causes BatchedRedraws to mount a FluxUiComponent asynchronously after the store has already been disposed.
    • Thanks @tomconnell-wf!

1.10.0 #

Complete 1.10.0 Changeset

Improvements

  • #69: New top-level getSelectionStart function to normalize selectionStart across browsers for both TextInputElements and TextAreaElements

Tech Debt Paid

  • #68: Declare explicitly-used transitive imports in pubspec.yaml
  • #70: Don't run ValidationUtil-related tests in dart2js

1.9.2 #

Complete 1.9.2 Changeset

Dependency Updates

  • analyzer >=0.26.1+3 <0.31.0 (was >=0.26.1+3 <0.30.0)

1.9.1 #

Complete 1.9.1 Changeset

Bug Fixes

  • #66: Fix regression with transitions not completing in consumers of AbstractTransitionComponent that don't call super.componentDidMount

1.9.0 #

Complete 1.9.0 Changeset

Improvements

  • #60: Provide easy access to DOM node in ValidationUtil.warn messages
  • #61: Export some react library members and add capturing event handlers
    • Export setClientConfiguration and ReactElement
    • Export all Synthetic*Event classes
    • Add capturing event handlers supported by ReactJS

Bug Fixes

  • #58: Fix issue with the transitionend warning (added via #55) sometimes firing when it shouldn't
  • #59: Ensure AbstractTransitionComponent does not call setState while in the process of unmounting
    • Thanks @joshbeam-wf!!!
  • #65 Work around Dart 1.23 strong mode issue with MapViewMixin

1.8.0 #

Complete 1.8.0 Changeset

Bug Fixes

  • #54: Fix strong mode warning
  • #55: Fix issue with AbstractTransitionComponent causing components to hang when the transitionend event never fires.

1.7.0 #

Complete 1.7.0 Changeset

Deprecations

  • #51: Deprecate the @Required() annotation since it conflicts with the meta package. Replaced by:
    • arguments to the Accessor annotation:

      @Accessor(isRequired: true, isNullable: true, requiredErrorMessage: 'foo')
      
    • shorthand aliases: @requiredProp/@nullableRequiredProp

Bug Fixes

  • #52: Eliminate dart2js warnings on component props classes

1.6.0 #

Complete 1.6.0 Changeset

  • #48: Improved getProps() functionality.
    • Allows you to traverse wrapper components by setting the named parameter traverseWrappers to true.

1.5.0 #

Complete 1.5.0 Changeset

Improvements

  • #46: Add ResizeSensorProps.quickMount flag for better performance when sensors are mounted often
  • Make getProp, getProps, and modifyProps conditional based on the named parameter shouldAdd/shouldModify.

Dependency Updates

  • Add missing quiver dependency (now depends on quiver >=0.21.4 <0.25.0)
  • Broaden analyzer dependency range to >=0.26.1+3 <0.30.0 (was >=0.26.1+3 <0.28.0)

1.4.0 #

Complete 1.4.0 Changeset

#40: Sync changes from original private repo library

This is the last time we'll do this - as the original library has now been completely switched over to use over_react

  • Switched dependency from browser_detect to our new platform_detect library!

  • Improved toString method of DebugFriendlyConstant.

  • Improved setSelectionRange polyfill to avoid https://github.com/dart-lang/sdk/issues/22967

  • Added typedef for ElementCallback and ResizeSensorHandler.

  • Added newStyleFromProps utility function.

  • Added getPropKey utility function.

    • Allows you to get a namespaced prop key dynamically!

Miscellaneous

  • #28: Run unit tests in dart2js on CI
  • #37: Update formatting guidelines WRT dartfmt and trailing commas

1.3.0 #

Complete 1.3.0 Changeset

React JS Upgrade

We are now on Gitter!

1.2.0 #

Complete 1.2.0 Changeset

Strong Mode

  • #15: Make over_react code "strong mode" compliant!
    • We will be working in the near future to make the code generated by our transformer compliant as well.

Dependency Updates

  • #23: Update minimum Dart SDK version to 1.19.1.
  • #15: Update minimum react package version to 3.0.1.

Bug Fixes

Documentation

1.1.1 #

Complete 1.1.1 Changeset

  • #6: Add contributor documentation.
  • #7: Allow "unsupported" units to be passed to the toRem and toPx functions.

1.1.0 #

Complete 1.1.0 Changeset

New Features

  • #10: Add FluxUiComponent and FluxUiStatefulComponent.
    • Enables consumers to build UI components with a uni-directional data flow via the w_flux library.

Misc

  • #8: Add a stateful UI component demo.
  • #9: Fix CI build fragility.

1.0.2 #

Complete 1.0.2 Changeset

  • #5: Add some Bootstrap UI components to web/ to demonstrate what can be built using OverReact.

1.0.1 #

Complete 1.0.1 Changeset

  • Add test coverage for the constants, dom_util, guid_util and event_helpers libraries.

1.0.0 #

Initial public release of the library.